## Por qué es importante

Describir un puesto en voz alta lleva un minuto. Escribir la oferta lleva una hora. Un asistente de IA puede encargarse de la escritura: título, cuerpo, banda salarial, etapas y credenciales, creados en tu cuenta como **borrador** y con la URL de edición de vuelta. Nada llega a tu página de empleo hasta que una persona pulsa **Publicar**.

## Dos superficies

| | Asistente integrado | Cliente MCP externo |
|---|---|---|
| Configuración | Ninguna: el chat está en todas las páginas de [Contratación](/hiring/job_postings) | Una conexión inicial: [Conectar asistentes de IA](/docs/connecting-ai-assistants) |
| Clientes | El agente propio de Kit | Claude Code, Claude Desktop, Codex CLI, OpenCode o el tuyo |
| Permisos | Administrador de Hiring, suscripción activa | Lo mismo, más `hiring_write` en la conexión |
| Etapas | Solo plantilla | Plantilla **o** etapas escritas para esta oferta concreta |
| Editar un borrador | Sí | Sí |

Ambos actúan **como tú**. Ninguno puede llegar a una oferta que tú no puedas abrir, ni hacer algo que el formulario web te negaría.

## Un prompt, un borrador

```
Crea una oferta de empleo en borrador: Ingeniero sénior de Rails, remoto en
Polonia, jornada completa. Usa nuestra plantilla de Ingeniero de Software para
las etapas. Busca una referencia salarial de mercado antes de escribir cifras.
Contexto: Rails 8, Hotwire, Postgres; equipo de seis personas; quien entre se
hará cargo del dominio de facturación y de la migración a Stripe.
```

Lo que el asistente hace con eso:

| Paso | Herramienta | Resultado |
|------|-------------|-----------|
| 1 | `hiring_get_setup_guide` | El estado de la cuenta y qué permite tu rol. En una cuenta sin ofertas devuelve además el esquema de tipos de etapa |
| 2 | `hiring_list_templates` | Las plantillas de tu cuenta más las del sistema de Kit, con el número de etapas de cada una |
| 3 | `compensation_get_salary_benchmark` | Una banda calculada a partir de ofertas de empleo reales que Kit indexa: requiere el módulo Compensation Research |
| 4 | `hiring_list_credentials` | Las claves de credencial que una oferta puede recomendar |
| 5 | `hiring_create_job_posting` | Borrador creado. Devuelve el ID de la oferta y su URL de edición |

Sáltate el paso 3 y el modelo se inventará un salario de memoria. Pide la referencia salarial por su nombre.

## Dale material de partida

El asistente conoce tu stack y tu equipo solo si se lo cuentas. Lo que eleva un borrador de genérico a contratable:

- La última oferta con la que quedaste contento: pégala y di «mismo tono, puesto nuevo»
- Tus notas de la reunión de arranque, sin editar
- Las restricciones reales del equipo: zona horaria, guardias, techo salarial y lo que esta persona asumirá el primer mes

El cuerpo debe cumplir dos reglas, y las herramientas se las indican al modelo:

- **Markdown**, no HTML.
- **Sin el título del puesto en el cuerpo.** Kit ya renderiza el título por su cuenta: empieza por «Sobre el puesto» o por tu primera sección real, o los candidatos leerán el título dos veces.

## Etapas: plantilla o en línea

`process_template_id` y `stages` son mutuamente excluyentes: pasar los dos es un error.

**Plantilla.** Los ID salen de `hiring_list_templates`. Un asistente sin cuenta en Kit puede consultar antes el catálogo público de Kit en `https://startupkit.app/mcp` (sin autenticación, `list_catalog_templates`).

**Etapas en línea**, solo para clientes MCP, cuando esta oferta concreta necesita su propio proceso:

```json
"stages": [
  {"name": "Candidatura", "type": "application_form"},
  {"name": "Tarea para casa", "type": "portfolio_upload",
   "config": {"payout": {"enabled": true, "amount": 500, "currency": "USD"}}},
  {"name": "Evaluación del equipo", "type": "team_review",
   "reviewers": [{"email": "ana@example.com", "role": "lead"}]},
  {"name": "Oferta", "type": "offer"}
]
```

Diez tipos: `application_form`, `code_assignment`, `portfolio_upload`, `questionnaire`, `video`, `video_recording`, `team_review`, `live_interview`, `reference_check`, `offer`. Todos admiten un bloque `payout`. Los correos de los revisores tienen que ser ya miembros del equipo.

> [!NOTE]
> Una plantilla construye las etapas **solo en el momento de la creación**. Cambiar la plantilla más tarde no alcanza nunca a una oferta ya creada: edita sus etapas.

## Lo que la IA no puede hacer

- **Publicar.** Ninguna herramienta de Kit saca una oferta del borrador. Es deliberado, no una carencia.
- Asignar el equipo de contratación, ni los revisores de una etapa que ya existe: interfaz web.
- Subir la imagen para compartir en redes (`og_image`): interfaz web.
- Volver a aplicar una plantilla de proceso después de crear la oferta.
- Borrar una cifra salarial o un booleano. En las herramientas de actualización, `null` significa «déjalo como está», así que vaciar un campo es cosa de la interfaz web. (`recommended_credential_keys` es la excepción: `[]` lo vacía.)

## Corregir el borrador

Las dos superficies pueden editar lo que se ha creado: `hiring_update_job_posting` para la oferta y `hiring_update_stage` para una etapa concreta.

Crear una oferta exige ser **administrador de Hiring**: el chat integrado ni siquiera ofrece la herramienta a nadie más. Editarla exige administrador de Hiring **o** responsable de contratación de esa oferta, de modo que quien lleva un puesto puede iterar sobre él sin ser administrador.

Las dos herramientas son parciales: las claves que omites quedan como estaban y las que envías sobrescriben. Conviene conocer dos detalles antes de dejar a un agente iterando sobre un borrador:

- **`description` sustituye el cuerpo entero.** No existe forma de añadir al final. Haz que el asistente lea la oferta, la reescriba completa y la vuelva a escribir.
- **Las secciones de configuración de una etapa se sustituyen enteras, no se fusionan en profundidad.** Pasar `config.code_assignment` sobrescribe todas las claves de esa sección, así que envía también las que quieras conservar. (`reference_check` es la única sección que sí se fusiona.)

La respuesta de la actualización trunca la descripción a 500 caracteres. Para comprobar el cuerpo completo, vuelve a leerlo con `hiring_get_job_posting`.

## La letra pequeña

**Los puestos remotos necesitan un país.** Con `remote: true`, Kit marca la oferta como `TELECOMMUTE` en sus datos estructurados solo si consigue resolver un país: a partir de `applicant_location_country` («Polonia», «España») o, en su defecto, de la cadena de ubicación. Si no resuelve ninguno, Google Jobs nunca sabrá que el puesto es remoto.

**Las credenciales recomendadas son una invitación, nada más.** Las claves salen de `hiring_list_credentials`. Todo candidato que se postule *después* de que las fijes recibe un correo pidiéndole que comparta un justificante; a los anteriores no se les escribe nunca. Kit no verifica, ni puntúa, ni ordena, ni filtra a nadie por lo que llegue de vuelta.

**El periodo del salario y la moneda son año y USD por defecto.** Di la moneda en voz alta en tu prompt si el puesto no está en Estados Unidos.

## Antes de publicar

Lee el borrador. Un asistente que escribe sobre tu empresa escribe a partir de lo que le diste, más lo que supuso por su cuenta.

> [!WARNING]
> La **descripción de la etapa** es pública: se muestra en tu página de empleo para cualquiera que la visite. El **enunciado** es privado y solo lo lee un candidato que haya llegado a esa etapa. Si un asistente ha escrito una tarea para casa con un enlace a un conjunto de datos, confirma que ese enlace está en el enunciado. Consulta [Descripción de la etapa frente al enunciado](/docs/creating-a-job-posting#descripción-de-la-etapa-frente-al-enunciado).

## En resumen

- [ ] Administrador de Hiring y suscripción activa, más `hiring_write` si usas un cliente externo
- [ ] Pegar material real: la oferta anterior, las notas de la reunión de arranque, las restricciones
- [ ] Pedir una referencia salarial de forma explícita, antes de que se escriban las cifras
- [ ] Elegir una plantilla, o entregar etapas en línea con los revisores indicados por correo
- [ ] Comprobar que el cuerpo no repite el título y que suena a tu equipo
- [ ] Confirmar que los enlaces de la tarea están en el **Enunciado**, no en la descripción de la etapa
- [ ] Fijar el equipo de contratación en la interfaz web si el puesto es restringido
- [ ] Publicarla tú

## Y ahora qué

- [Crear una oferta de empleo](/docs/creating-a-job-posting) — cada campo, cada estado y cada ajuste de etapa en la interfaz web
- [Agente de IA y herramientas MCP](/docs/hiring-ai-agent-mcp) — el resto del conjunto de herramientas de contratación: triaje, revisiones y respuestas a candidatos
- [Conectar asistentes de IA](/docs/connecting-ai-assistants) — configuración MCP, OAuth y ámbitos
- [Referencia de herramientas MCP](/docs/mcp-tools-reference) — parámetros de todas las herramientas