IEB+Capacitación · Desarrollo Web
Todos los módulos
02

Prompt Engineering para desarrollo web

El músculo central del curso. Pedir bien es el 80% del resultado. Anatomía de un buen prompt, generación de componentes y cómo mantener consistencia.

25 minCómo pedir una web correctamentePrompts para generar componentesCómo iterar sin romper el códigoMantener consistencia durante todo el proyecto

El músculo central

Pedir bien es el 80% del resultado

En vibe coding vos no escribís el código: lo pedís. La IA hace lo que le decís, no lo que tenés en la cabeza. Por eso la diferencia entre una web amateur y una premium casi nunca está en la IA: está en cómo le pediste.

La buena noticia: prompetear no es magia ni código. Es ser claro, ordenado y específico, igual que cuando le pasás un brief a un diseñador. Este módulo es el que más vas a usar en todo el curso. Llevátelo a fondo.

La mentalidad correcta

Tratá a la IA como a un pasante brillante pero literal: hace exactamente lo que le pedís, no adivina lo que querías. Si el resultado falló, casi siempre falló el pedido.

La fórmula

Anatomía de un buen prompt

Un buen prompt tiene cuatro partes. Memorizá estas cuatro y ya estás adelante del 90% de la gente. Tocá cada una en el ejemplo para ver qué hace y por qué importa:

Sos un diseñador web senior. Trabajo en el equipo de marketing de IEB, una fintech. Estoy armando una landing para captar leads de un nuevo fondo de inversión.Necesito el componente Hero: un título con la promesa principal, un subtítulo, un botón de CTA que diga "Quiero invertir" y una imagen a la derecha.Usá la paleta navy + teal de la marca. Que sea responsive (mobile primero). No agregues librerías nuevas. No toques otros archivos.Devolvé un único componente React en TypeScript con Tailwind, listo para pegar. Antes del código, explicame en 2 líneas qué decisiones tomaste.

Tocá una parte arriba (o pasá el mouse por el prompt) para ver qué hace cada pieza y por qué importa. Un buen prompt tiene las cuatro.

No siempre necesitás las cuatro

Para pedidos chicos alcanza con objetivo + restricción. Pero cuando algo te sale mal, revisá: casi siempre falta una de estas cuatro piezas (lo más olvidado: las restricciones).

Eje 1

Cómo pedir una web correctamente

Nunca arranques con “hacéme una web”. Primero dale el brief (el que armaste en el módulo anterior) y pedile que te haga preguntas antes de escribir nada. Eso solo ya mejora todo.

Arranque de proyecto — que pregunte antes de codear
Soy del equipo de marketing de {{empresa}}. Quiero construir {{qué: ej. una landing para captar leads de un fondo nuevo}}.

Antes de escribir una sola línea de código, hacéme las preguntas que necesites para entender: objetivo, público, acción principal (CTA), estilo visual y referencias que me gusten.

Cuando tengas todo claro, proponé un plan de secciones. Recién después armamos el código.

Cuando ya tengas el plan acordado, definí el marco técnico de una vez para que todo lo que genere sea coherente:

Setear el stack y las reglas del proyecto
Vamos a construir el proyecto con este stack: Next.js (App Router), React, TypeScript, Tailwind CSS y componentes shadcn/ui.

Reglas para todo el proyecto:
- Diseño minimalista y premium, mobile primero.
- Paleta: {{color principal}} + {{color de acento}}. Tipografía: {{fuente}}.
- Componentes chicos y reutilizables, un archivo por componente.
- Nada de librerías nuevas sin avisarme antes.

Confirmame que entendiste y arrancamos por la primera sección.

Pedí de a una sección

Aunque tengas el plan entero, pedí una sección por vez (Hero, luego beneficios, luego formulario…). Es más fácil de revisar y mucho más difícil de romper.

Eje 2

Prompts para generar componentes

El cuerpo del trabajo: pedir cada pieza. La receta es siempre la misma — qué componente, qué tiene adentro, cómo se ve, qué restricciones. Acá va una biblioteca lista para copiar y adaptar a tu caso.

Hero (la sección principal)
Generá la sección Hero de la landing.

Contenido:
- Título grande con la promesa: "{{promesa, ej. Invertí desde tu celular, sin vueltas}}"
- Subtítulo de una línea que lo refuerce.
- Un botón CTA principal que diga "{{CTA, ej. Quiero invertir}}".
- A la derecha, un espacio para una imagen/mockup.

Estilo: minimalista, mucho aire, mobile primero. Usá la paleta de la marca.
Devolvé un único componente React + Tailwind, listo para pegar.
Navbar
Hacé un Navbar responsive para la landing.

- Izquierda: el logo (texto "{{marca}}" por ahora).
- Centro: links a Inicio, Beneficios, Preguntas, Contacto.
- Derecha: un botón CTA "{{CTA}}".
- En mobile: menú hamburguesa que abre los links.

Que sea sticky arriba y tenga un fondo levemente translúcido al hacer scroll. Un solo componente.
Cards de beneficios
Generá una sección de 3 cards de beneficios en grilla (1 columna en mobile, 3 en desktop).

Cada card: un ícono (de lucide-react), un título corto y 1-2 líneas de descripción.
Beneficios: {{beneficio 1}}, {{beneficio 2}}, {{beneficio 3}}.

Estilo limpio, bordes suaves, leve sombra. Hover sutil. Paleta de la marca.
Formulario de captación de leads
Armá un formulario de contacto para captar leads.

Campos: Nombre, Email, WhatsApp y un select "{{tema, ej. ¿Qué te interesa?}}".
Al enviar, mostrá un estado de "Enviando…" y después un mensaje de éxito.
Validá que el email tenga formato válido y que los campos requeridos estén completos.

Por ahora, en el submit solo hacé un console.log de los datos (después lo conectamos).
Diseño acorde al resto de la landing.
Sección de preguntas frecuentes (FAQ)
Generá una sección de Preguntas Frecuentes con un acordeón (se expande/colapsa al clickear).

Usá estas 4 preguntas: {{pregunta 1}}, {{pregunta 2}}, {{pregunta 3}}, {{pregunta 4}}.
Solo una abierta a la vez. Animación suave al abrir/cerrar. Estilo de la marca.
Footer
Hacé un footer simple y prolijo.

- Logo "{{marca}}" + una línea de descripción.
- Columnas de links: Producto, Empresa, Legales.
- Redes sociales (íconos).
- Abajo: copyright con el año actual.

Responsive, paleta de la marca, sobrio.

Pedí ejemplos de contenido, no lorem ipsum

Sumá al final del prompt: “Usá textos de ejemplo realistas para una fintech argentina, no lorem ipsum”. El resultado se siente mil veces más cerca de lo final.

Eje 3

Cómo iterar sin romper el código

Acá es donde la mayoría se frustra: pedís un cambio y la IA reescribe medio proyecto. La cura es una sola regla: un cambio acotado por vez, y decirle explícitamente qué NO tocar. Recorré la demo:

Lo que pedís

Generá la sección Hero de la landing del fondo, con título, subtítulo y un botón CTA.

Hero listo. Título + subtítulo + botón.

Arrancás de a una pieza. Lo dejás funcionando ANTES de seguir.

El patrón que tenés que repetir hasta el cansancio:

El prompt anti-desastre (memorizalo)
En el {{componente, ej. Hero}} que ya tenemos, cambiá SOLO {{lo que querés, ej. el color del botón a teal}}.

No modifiques ningún otro archivo ni otra parte del componente.
No reescribas lo que ya funciona.
Mostrame únicamente lo que cambiaste.

Otros movimientos útiles cuando estás iterando:

Cuando algo se rompió: volver atrás
El último cambio rompió {{qué se rompió, ej. el layout en mobile}}.

Volvé el {{componente}} a como estaba antes de ese cambio y, esta vez, hacé SOLO {{el cambio mínimo}} sin tocar el resto.
Pedir un cambio de a poco (no todo junto)
Quiero hacer varios cambios al {{componente}}, pero vamos de a uno.

Empecemos por el primero: {{cambio 1}}.
Cuando lo confirme, te paso el siguiente. No adelantes los demás.
Entender antes de aceptar
Antes de aplicar el cambio, explicame en 2-3 líneas y en lenguaje simple:
- Qué vas a modificar.
- Qué archivos toca.
- Si hay algún riesgo de romper algo que ya funciona.

Si todo está claro, te digo que avances.

La trampa del 'mientras estás ahí'

Nunca digas “cambiá el botón y de paso mejorá lo que quieras”. Ese “de paso” es una invitación a que la IA reescriba todo. Pedí exactamente lo que querés, ni más ni menos.

Eje 4

Mantener consistencia en todo el proyecto

Si cada prompt arranca de cero, cada sección sale con otro estilo: distintos botones, distintos espaciados, distinto tono. La web termina pareciendo un Frankenstein. El truco es reutilizar un mismo contexto base a lo largo de todo el proyecto.

1) Armá un prompt base / de sistema con las reglas de la marca y pegalo (o referencialo) en cada pedido nuevo:

Prompt base reutilizable (guardalo y reusalo siempre)
[CONTEXTO DEL PROYECTO — usar en todos los pedidos]

Proyecto: landing de {{empresa}} para {{objetivo}}.
Stack: Next.js + React + TypeScript + Tailwind + shadcn/ui.

Marca y diseño:
- Estilo: minimalista, premium, con mucho aire. Mobile primero.
- Colores: principal {{navy/#____}}, acento {{teal/#____}}.
- Tipografía: {{fuente}} para textos, mono para números/código.
- Botones: {{describí el estilo, ej. redondeados, sólidos en color de acento}}.
- Tono de los textos: {{ej. cercano, claro, sin jerga financiera}}.

Reglas: componentes chicos y reutilizables; no agregar librerías sin avisar;
respetar SIEMPRE esta guía visual.

Tené esto presente en todo lo que generes a partir de ahora.

2) Hacé un glosario de marca para que los textos y nombres sean siempre iguales:

Glosario de marca
Usá SIEMPRE estos términos tal cual, sin variaciones:
- Nombre del producto: "{{nombre exacto}}"
- Cómo nos referimos al usuario: "{{ej. inversor / cliente}}"
- CTA principal: "{{texto exacto del botón}}"
- Tagline: "{{frase exacta}}"
- Palabras a EVITAR: {{ej. "barato", "fácil y rápido"}}.

3) Cuando pidas algo nuevo, referenciá lo ya hecho para que herede el mismo estilo en vez de inventar uno nuevo:

Que un componente nuevo herede el estilo de los anteriores
Necesito una nueva sección de {{qué}}.

Usá EXACTAMENTE el mismo estilo que ya tienen el Hero y las cards de beneficios:
mismos colores, mismos botones, mismos espaciados y la misma tipografía.
No inventes un estilo nuevo: que se sienta parte de la misma página.

Test rápido de consistencia

Mirá tres botones de tu web de un pantallazo. ¿Son iguales (color, forma, tamaño)? Si no, tu contexto base no se está aplicando: volvé a pegarlo y pedí que unifique.

Un buen brief inicial bien estructurado evita el 80% de las inconsistencias. Algo así de ordenado:

brief
PROYECTO: Landing fondo "Renta IEB"
OBJETIVO: captar leads (formulario → CRM)
PÚBLICO: ahorristas 25-45, primeros pasos en inversiones
TONO: cercano, claro, cero jerga
CTA PRINCIPAL: "Quiero invertir"

SECCIONES (en orden):
  1. Navbar
  2. Hero (promesa + CTA)
  3. Beneficios (3 cards)
  4. Cómo funciona (3 pasos)
  5. FAQ (acordeón)
  6. Formulario de captación
  7. Footer

MARCA:
  color principal: navy #1B2A4A
  color acento:    teal
  fuente:          Inter
  estilo:          minimalista, premium, mobile primero

Para evitar

Errores que se pagan caro

Cuatro formas casi garantizadas de perder tiempo. Si te frustraste con la IA, probablemente caíste en alguna:

Pedir todo junto

“Hacéme la landing completa con 7 secciones y animaciones.” Sale un bodrio imposible de corregir. Pedí de a una sección.

Ser vago

“Mejoralo”, “hacelo más lindo”. La IA no sabe qué es lindo para vos. Decí qué y cómo: “más espaciado entre secciones y botones más grandes”.

No poner límites

Sin un “no toques el resto”, la IA reescribe de más. Cerrá siempre el alcance.

No verificar antes de seguir

Encadenás 5 cambios sin mirar y cuando algo falla no sabés cuál fue. Revisá después de cada cambio.

Y cómo se ve la diferencia en la práctica:

vago vs afilado
✗ VAGO     →  "Hacé un hero lindo para mi web"
✓ AFILADO  →  "Generá un Hero: título con la promesa 'Invertí
              desde tu celular', subtítulo, botón 'Quiero
              invertir' y mockup a la derecha. Minimalista,
              paleta navy+teal, mobile primero. React+Tailwind."

✗ VAGO     →  "Cambiá algunas cosas y mejoralo"
✓ AFILADO  →  "Cambiá SOLO el color del botón a teal. No toques
              nada más del componente."

Para tener a mano

Checklist del prompteador

Antes de mandar un prompt importante, pasá esta lista mental. Con el tiempo se vuelve automático:

¿Mi prompt tiene…?

0/6

Lo único que te tenés que llevar

Si te acordás de una sola cosa de este módulo, que sea esta: pedí una cosa por vez, con contexto y con límites. Eso es el 80% del resultado.