docs.vario.lat
Esta página foi traduzida automaticamente e está pendente de revisão humana.

Referência do objeto response — POST /analyze

O endpoint POST /analyze retorna um objeto JSON com o resultado da análise de risco. O objeto é stateless: reflete exclusivamente a análise daquela chamada específica. O vario não armazena o texto enviado nem o resultado — o objeto response é o único produto da chamada.


Tabela de campos

CampoTipoDescrição
combined_scorefloat [0–10]Score de risco agregado. 0 indica ausência de sinal; 10 indica sinal máximo.
should_alertbooleantrue se o sistema recomenda revisão humana para esta comunicação.
severitystringCategoria de risco: "critical" | "high" | "medium" | "low".
reasoningstringExplicação narrativa da análise, no idioma definido pelo campo language da requisição. Vazio se a análise profunda não esteve disponível.
key_phrasesarray[string]Frases do texto identificadas como relevantes para a conduta analisada.
regulatory_frameworksarray[string]Marcos regulatórios identificados como potencialmente aplicáveis (por exemplo: "FCPA", "DL 211", "MAR").
conduct_typestringConduta detectada pelo pipeline. Classificação aberta: pode diferir do playbook solicitado. Domínio fechado de 7 valores: "price_fixing" · "bid_rigging" · "bribery" · "market_manipulation" · "information_exchange" · "group_boycott" · "none". Sempre "none" em l1_discard. Ausente em screening.
recommended_actionstringAção sugerida. Domínio fechado dependente do tier — modos fast/l2_pass/degradado: "no_action" | "monitoring" | "legal_review"; modo full (L3 completo): adiciona "open_case" | "dismiss" | "immediate_escalation". Recomendação do sistema; o revisor decide.
confidencestringNível de confiança da análise completa: "high" | "medium" | "low".
processing_pathstring | nullEtapa do pipeline que produziu a resposta. Campo não-breaking: clientes que não o conhecem ignoram-no sem erro. Veja a tabela em POST /analyze.
mode_usedstringModo efetivamente executado: "screening" | "fast" | "full". No modo screening o schema da resposta é diferente — veja a seção ao final desta página.
analyzed_atstring (ISO 8601)Timestamp UTC da análise.
pipeline_versionstringVersão do motor de análise (string opaca — não parsear nem depender de sua estrutura interna).
bedrock_availablebooleanfalse se a análise profunda não esteve disponível nessa chamada. Quando false, a resposta é parcial.

Como interpretar combined_score

combined_score é um número de ponto flutuante no intervalo 0 a 10:

  • 0 — nenhum sinal detectado para a conduta analisada.
  • 10 — sinal máximo; a comunicação apresenta indicadores muito fortes da conduta.

A escala é ordinal, não linear: a distância entre 7 e 8 não é equivalente à distância entre 3 e 4. Não compare scores de chamadas distintas como se fossem magnitudes absolutas; use-os para priorizar dentro de um corpus.

O campo severity expressa o mesmo resultado em categorias qualitativas, mais úteis para tomar decisões de triagem. O campo should_alert é o indicador binário recomendado para integrar em fluxos automatizados.


Como interpretar severity

severity categoriza o nível de risco da comunicação:

ValorSignificado
"critical"Sinal muito forte. A comunicação apresenta indicadores consistentes e diretos da conduta analisada. Revisão urgente recomendada.
"high"Sinal significativo. Os indicadores são claros, embora não tão concentrados. Revisão prioritária recomendada.
"medium"Sinal moderado. Há elementos de interesse, mas o contexto é ambíguo.
"low"Sinal fraco. A comunicação não apresenta indicadores fortes.

A determinação de severity é responsabilidade do sistema; a decisão de agir sobre ela é sempre responsabilidade do revisor humano.


Como usar reasoning e key_phrases

reasoning é uma explicação narrativa gerada no idioma do texto analisado. Descreve quais elementos da comunicação contribuíram para o resultado. Seu propósito é dar contexto ao revisor humano — não é um parecer jurídico nem uma conclusão definitiva.

key_phrases é um array de fragmentos extraídos do texto que o sistema identificou como relevantes para a conduta analisada. Podem ser usados para localizar rapidamente as partes da mensagem que motivaram o score.

Considerações importantes:

  • Tanto reasoning quanto key_phrases são ferramentas de orientação para o revisor, não substitutos da análise jurídica.
  • Quando bedrock_available é false, reasoning pode estar vazio ou ser menos detalhado.
  • key_phrases pode ser um array vazio ([]) se o sistema não identificou fragmentos específicos com confiança suficiente.

Como usar regulatory_frameworks

regulatory_frameworks lista os marcos regulatórios que o sistema identificou como potencialmente relevantes para a comunicação analisada. Exemplos de valores possíveis: "FCPA", "DL 211", "MAR", "Lei Anticorrupção 12.846/2013", "CADE", "COFECE".

Considerações importantes:

  • Esta lista reflete os marcos que o sistema associou ao sinal detectado. Não é uma opinião jurídica.
  • Não substitui assessoria jurídica especializada.
  • O array pode estar vazio ([]) se o sistema não identificou marcos com confiança suficiente.

Privacidade

O vario não armazena nem retém o texto analisado. O pipeline é completamente stateless: nenhum dado do campo text nem de thread_context persiste no banco de dados do vario.


Degradação: quando bedrock_available é false

Se a análise profunda não esteve disponível no momento da chamada, o endpoint retorna 200 com bedrock_available: false. Nesse caso:

  • reasoning pode estar vazio.
  • confidence pode ser "low". Para receber um erro explícito em vez de uma resposta parcial, inclua o header Prefer: deep-analysis-required. Nesse caso, o endpoint retorna 503 DEEP_ANALYSIS_UNAVAILABLE quando a análise profunda não está disponível.

Exemplo de resposta completa

Sinal alto de fixação de preços, analisado no modo full:

{
  "combined_score": 8.4,
  "should_alert": true,
  "severity": "critical",
  "reasoning": "El mensaje contiene una indicación explícita de coordinar el precio mínimo de venta con un competidor. La referencia directa a un valor de precio y la expectativa de que otros actores del mercado lo respetarán son indicadores consistentes con coordinación horizontal de precios.",
  "key_phrases": [
    "no bajamos de $450 la unidad",
    "los demás van a hacer lo mismo",
    "acordamos no competir por precio"
  ],
  "regulatory_frameworks": [
    "DL 211 (Chile)",
    "Lei Anticorrupção 12.846/2013 (Brasil)",
    "COFECE — Ley Federal de Competencia Económica"
  ],
  "recommended_action": "legal_review",
  "confidence": "high",
  "mode_used": "full",
  "analyzed_at": "2026-06-02T14:32:00Z",
  "pipeline_version": "1.0",
  "bedrock_available": true
}

Exemplo no modo fast com sinal baixo

{
  "combined_score": 1.2,
  "should_alert": false,
  "severity": "low",
  "reasoning": "No se identificaron indicadores relevantes de la conducta analizada en el texto proporcionado.",
  "key_phrases": [],
  "regulatory_frameworks": [],
  "recommended_action": "no_action",
  "confidence": "high",
  "mode_used": "fast",
  "analyzed_at": "2026-06-02T14:33:10Z",
  "pipeline_version": "1.0",
  "bedrock_available": true
}

Exemplo com degradação (bedrock_available: false)

{
  "combined_score": 3.1,
  "should_alert": false,
  "severity": "medium",
  "reasoning": "",
  "key_phrases": [],
  "regulatory_frameworks": [],
  "recommended_action": "monitoring",
  "confidence": "low",
  "mode_used": "fast",
  "analyzed_at": "2026-06-02T15:01:42Z",
  "pipeline_version": "1.0",
  "bedrock_available": false
}

Resposta no modo screening

Quando mode_used é "screening", o objeto response tem um schema diferente dos modos fast e full. Inclui apenas resultados da camada L1 (keyword + embedding). Os campos combined_score, should_alert, severity, reasoning, key_phrases, regulatory_frameworks, recommended_action, confidence e bedrock_available não estão presentes.

CampoTipoDescrição
mode_usedstring"screening"
l1_scorefloat [0–1]Pontuação agregada L1: max(l1_keyword_score, l1_embedding_score).
l1_keyword_scorefloat [0–1]Score de detecção por palavras-chave.
l1_embedding_scorefloat [0–1]Score de similaridade semântica por embeddings.
l1_matched_termsarray[string]Termos do texto que ativaram a detecção na L1.
l1_embedding_availablebooleantrue se o serviço de embeddings esteve disponível.
playbookstringEcho do campo playbook da requisição.
playbook_versionstringVersão do playbook utilizado.
pipeline_versionstringVersão do motor de análise.
analyzed_atstring (ISO 8601)Timestamp UTC da análise.
external_idstring | nullEcho do external_id enviado na requisição.

Exemplo de resposta no modo screening:

{
  "mode_used": "screening",
  "l1_score": 0.82,
  "l1_keyword_score": 0.75,
  "l1_embedding_score": 0.82,
  "l1_matched_terms": ["combinamos não mexer no preço", "preço"],
  "l1_embedding_available": true,
  "playbook": "price_fixing",
  "playbook_version": "1.0",
  "pipeline_version": "1.0",
  "analyzed_at": "2026-06-04T10:15:00Z",
  "external_id": "email-msg-00842"
}
ℹ

Para uma análise completa dos documentos que superarem o limiar de l1_score, envie uma nova requisição no modo fast ou full.


Notas finais

  • O output de POST /analyze é um sinal de risco, não uma determinação legal. Não substitui a revisão por parte de um advogado nem constitui evidência perante reguladores.
  • O vario alerta; o CCO decide. O princípio de revisão humana faz parte do design do sistema.
O output da API é um sinal de risco, não uma determinação legal. Não substitui a revisão de um advogado nem constitui, por si só, evidência perante reguladores.