Cualificación y puntuación de leads con IA desde tu CRM

Un agente lee un lead y su empresa desde un CRM de solo lectura, lo puntúa según tu perfil de cliente ideal y propone la siguiente acción.

  • Archivos
  • Conexión de solo lectura
  • Callback
  • Límite de presupuesto

Mira una ejecución real

Una ejecución real del 7 oct 2026, reproducida. Modelo: openai/gpt-6-luna.

Entrada
{
  "lead_id": "lead_501"
}
Completadarun_6635489edcf97c044f218cc28b041a6d$0.0036 de $0.03
  1. En colapresupuesto de $0.03 reservado
  2. MicroVMmicroVM ready
  3. MicroVMworker started · shell off · web off
  4. Conexióncrm GET /leads/lead_501
  5. Archivoread icp.md
  6. Resultadocrm GET → 200
  7. Conexióncrm GET /accounts/acct_91
  8. Resultadocrm GET → 200
  9. MicroVMmicroVM destroyed
  10. Completada3 llamadas al modelo, 4,687 tokensResultado grabado (en inglés)
    json
    {
      "score": 95,
      "tier": "A",
      "reasons": [
        "Company has 1,200 employees, within the 100–5,000 employee ICP range.",
        "VP of Engineering wants to run agents over carrier APIs and requested a demo for 8 engineers.",
        "Lead mentioned a security review and a Q4 budget."
      ],
      "risks": [],
      "next_action": "Contact within a day to follow up on the demo request and discuss the security review."
    }
  11. Worker destruido$0.0036 cobrados, $0.0264 liberados
Modelo $0.0004 · Web $0.00 · Cómputo $0.0032

Ejecútalo tú mismo

Abre el ejemplo en el playground con la solicitud completa ya rellenada. Se ejecuta en tu propia cuenta, dentro del presupuesto indicado, contra los mismos sistemas de ejemplo de solo lectura.

Presupuesto de este ejemplo: $0.03

Cómo funciona

El perfil de cliente ideal es un archivo que tu equipo de ventas puede editar. El agente lee el lead y la cuenta a través de una conexión con el CRM que solo permite GET, devuelve una puntuación con motivos y riesgos, y nunca escribe de vuelta en el CRM.

Lo que el agente puede y no puede hacer

Los permisos forman parte de la solicitud. Todo lo que no figura aquí no está disponible para la ejecución.

AjustePermitido
Conexiones
crm: solo GET, en ephemer.al/api/samples/crm-api
WebDesactivado
ShellDesactivado
Archivosicp.md (solo lectura)
Retención cero de datosDesactivada: el registro se conserva 30 días
Presupuesto$0.03, límite estricto
Tiempo límite60 segundos

Las credenciales nunca entran en la máquina: un broker las añade a cada llamada y aplica los métodos indicados arriba.

El código

Esta es la solicitud exacta que envía el ejemplo. Define EPHEMERAL_API_KEY con una clave de miembro de tu organización.

curl -X POST $EPHEMERAL_URL/v1/runs \
  -H "Authorization: Bearer $EPHEMERAL_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d @request.json

Archivos de la solicitud

Se pasan en línea, así que no hay que subir nada antes. El agente ve cada uno como un archivo de solo lectura.

icp.md
icp.md
# Ideal customer profile

Good fit (score up):
- Engineering or operations teams at companies with 100 to 5,000 employees.
- Wants to automate work over its own APIs (support, finance operations, monitoring).
- Mentions a security review, data retention needs, a budget or a timeline.
- Role: VP or head of engineering, operations, support or finance; or a founder with budget.

Poor fit (score down):
- Students, hobby projects, no budget or timeline.
- Individuals evaluating for someone else.
- Procurement cycles longer than 6 months for a first purchase.

Score 0 to 100. Tier A (70+): contact within a day. Tier B (40 to 69): nurture. Tier C (below 40): no sales time.
Cuerpo completo de la solicitud request.json

El mismo cuerpo, con los archivos en línea.

request.json
{
  "prompt": "Qualify the CRM lead in input.lead_id. Read the lead with GET /leads/{id} and its company with GET /accounts/{account_id}, then score it against icp.md. Reply with one JSON object and nothing else: {\"score\": number, \"tier\": \"A\"|\"B\"|\"C\", \"reasons\": string[] (max 3), \"risks\": string[] (max 2), \"next_action\": string}. Use only what the data returns and never guess; if a call fails or a field is missing, say so.",
  "input": {
    "lead_id": "lead_501"
  },
  "files": [
    {
      "path": "icp.md",
      "content": "# Ideal customer profile\n\nGood fit (score up):\n- Engineering or operations teams at companies with 100 to 5,000 employees.\n- Wants to automate work over its own APIs (support, finance operations, monitoring).\n- Mentions a security review, data retention needs, a budget or a timeline.\n- Role: VP or head of engineering, operations, support or finance; or a founder with budget.\n\nPoor fit (score down):\n- Students, hobby projects, no budget or timeline.\n- Individuals evaluating for someone else.\n- Procurement cycles longer than 6 months for a first purchase.\n\nScore 0 to 100. Tier A (70+): contact within a day. Tier B (40 to 69): nurture. Tier C (below 40): no sales time.\n"
    }
  ],
  "connections": {
    "crm": {
      "type": "http",
      "url": "https://ephemer.al/api/samples/crm-api",
      "auth": {
        "type": "bearer",
        "token": "sample_read_key"
      },
      "allowed_methods": [
        "GET"
      ],
      "instructions": "A CRM. GET /leads lists leads. GET /leads/{id} returns a lead with notes and activity. GET /accounts/{id} returns the company (industry, employees, country, revenue, tech, customer, open_deals)."
    }
  },
  "shell": false,
  "timeout_seconds": 60,
  "max_cost_micros": 30000
}

Más información

Ejemplos relacionados

esc

Nada coincide con “”.