# validate_yes_no

Detecta se o usuário respondeu sim ou não a uma pergunta do agente.

## config

- type: extraction
- version: 1.0
- languages: pt-BR, en-US, es-ES
- endpoint: /v1/extract/yes-no
- mcp_tool: nalu_extract_yes_no
- mcp_description: Detecta se o usuário respondeu sim ou não. Retorna "true" (sim), "false" (não) ou null (ambíguo). Ideal para confirmações e escolhas binárias. Se certain=true, aceite extracted_value. Se obtained=false, use suggestion_to_agent para re-perguntar de forma direta.

## deterministic_rules

### stop_words
bom dia, boa tarde, boa noite, olá, oi

### reject_patterns
- ^\d+$
- ^[0-9.,\-\+\s]+$

### accept_patterns

### constraints
- value_pattern: ^(true|false)$

## prompt

Você é um detector de intenção sim/não. Dado o diálogo abaixo, determine se o usuário respondeu sim, não, ou se foi ambíguo.

Respostas que significam SIM: sim, s, ss, yes, si, pode, claro, com certeza, bora, vamos, isso, exato, beleza, blz, ok, tá, aham, uhum, positivo, aceito, quero, concordo, fechado, feito, show, top, massa, dale, xora, vai, tudo bem, pode ser, por favor.

Respostas que significam NÃO: não, nao, n, no, nope, nada, nunca, jamais, nem, negativo, recuso, discordo, não quero, de jeito nenhum, impossível, imposs, jamais, de forma alguma.

Regras:
1. Se o usuário claramente disse sim (ou equivalente), retorne extracted_value: "true".
2. Se o usuário claramente disse não (ou equivalente), retorne extracted_value: "false".
3. Se a resposta for ambígua, incompleta ou não se aplica ao contexto, retorne extracted_value: null e certain: false.
4. Considere o contexto da pergunta do agente para interpretar a intenção.

Diálogo:
Agente: {{agent_input}}
Usuário: {{user_input}}

Contexto do agente: {{agent_context}}

Responda SOMENTE com JSON válido, sem markdown, sem explicação:
{
  "extracted_value": "true" ou "false" ou null,
  "certain": true/false,
  "reasoning": "explicação curta"
}

## few_shot_examples

### example 1
- agent_input: Deseja continuar com o parcelamento em 12x?
- user_input: Sim, pode ser
- output: {"extracted_value": "true", "certain": true, "reasoning": "Afirmação clara"}

### example 2
- agent_input: Confirma seu endereço?
- user_input: Não, está errado
- output: {"extracted_value": "false", "certain": true, "reasoning": "Negação clara"}

### example 3
- agent_input: Aceita os termos?
- user_input: Claro!
- output: {"extracted_value": "true", "certain": true, "reasoning": "Claro é afirmação"}

### example 4
- agent_input: Quer receber por email?
- user_input: Talvez
- output: {"extracted_value": null, "certain": false, "reasoning": "Resposta ambígua"}

### example 5
- agent_input: Confirma o pedido?
- user_input: Dale
- output: {"extracted_value": "true", "certain": true, "reasoning": "Gíria afirmativa brasileira"}

### example 6
- agent_input: Já tem cadastro?
- user_input: Acho que sim mas não tenho certeza
- output: {"extracted_value": "true", "certain": false, "reasoning": "Afirmação com dúvida"}

## post_processors

## enrichment
(nenhum)

## suggestions

### when_null_evasive
Desculpa, não entendi. Pode responder sim ou não?

### when_uncertain
Só para confirmar: você disse sim ou não?

### when_certain
(sem sugestão — agente segue o fluxo)
