vitacodex
Roadmap × gaps reais · cruzamento

A direção está certa. A ordem está invertida em dois pontos.

Léxicos, clusters, confiança visível e linguagem humana — tudo certo. O problema: a Fase 1 original (expandir SNPs) está na posição errada, e o fix mais urgente não está em nenhuma fase.

Fases no roadmap original
4
SNPs → Léxicos → Clusters → Confiança
Score composto atual
40%
Meta mínima: 75% para produção
Alinhamento roadmap/backend
Parcial
Ordem das fases precisa de revisão
Gap crítico não endereçado
1
Lookup index (RSID/gene/cat = 0%)

Roadmap original — avaliação por fase

Fase 1 Expandir base de SNPs
Relevante mas na posição errada. O problema atual não é quantidade de SNPs — é como os 33 existentes são recuperados. Adicionar marcadores sobre um sistema de busca com 0% de precisão por rsID só aumenta ruído. Esta fase deve ser a última.
Fase 2 Criar a camada de léxicos
A v4 já tentou léxico injetado no texto de embedding — e os testes mostraram que não funcionou: sinônimos concatenados no embed_text degradam a semântica sem melhorar a precisão. A Fase 2 precisa de uma abordagem diferente: léxico como campo separado, só para o BM25.
Fase 3 Clusters descritivos
Prioridade correta. É a peça que conecta o NutriNest backend à tela DNA Explorer do Vitacodex. Requer cluster_definitions.json + cluster scorer. Com isso pronto, a UI para de usar mocks.
Fase 4 Confiança e narrativa
Alinhado com o que o backend já tem (confidence_weight). A penalidade atual (s -= 0.25) precisa virar dois tiers explícitos: primary / exploratory. Conecta à lógica de incerteza do produto.

O que os testes revelam além do roadmap

Gap não endereçado em nenhuma fase
O lookup index dedicado — rsID → docs, gene → docs, category → docs — não está previsto no roadmap. É o que impede RSID (0%), cromossomo (0%) e categoria (0%) de funcionar. Sem ele, o intent router detecta o tipo de consulta mas não tem para onde mandar.

Performance clínica por área (v5)

Envelhecimento
65%
Nutrição
61%
Suplementação
54%
Cardiovascular
50%
Comportamental
25%
Performance
20%
Cardiovascular e Performance falham por ausência de category alias map — não por falta de SNPs.
Abordagem atual vs. correta para léxicos
Atual (não funciona)
Léxico concatenado no embed_text. Semântica degradada, precisão igual.
Correta
embed_text limpo para semântica. bm25_text rico com sinônimos. Campos separados.

Ordem de build revisada

cruzando roadmap × gaps reais
Antes de tudo · Fase 0
Fix estrutural
snp_lookup.py
Dict rsid/gene/cat/chr. Early-exit no search. 1 tarde.
Não estava no roadmap
Category alias map
"cardiovascular" → lipidios. Resolve 0% sem novo SNP.
Não estava no roadmap
Split embed / BM25
Léxico sai do embed_text, vai ao bm25_text.
Implícito na Fase 2
Fase 1 revisada
Léxicos corretos
Léxico como campo separado
embed_text limpo. bm25_text rico. Dois campos no JSONL.
Fase 2 original
Aliases de genes e rsIDs
FTO → "gene da obesidade". Gene lookup 20% → ~80%.
Fase 2 original
Two-tier confidence
Primary (≥0.6) + Exploratory. Conecta ao UI de incerteza.
Antecipa Fase 4
Fase 2
Cluster layer
cluster_definitions.json
6 clusters. SNP membership + weights.
Fase 3 original
Cluster scorer
Genótipo → score por cluster via conf_weight.
Fase 3 original
DNA Explorer bridge
Backend retorna cluster states. UI mostra % real, não mock.
Liga UI ao backend
Fase 3
Modelo descritivo + expansão
Priority ranker semanal
Cluster scores + labs + contexto → top 3 sinais.
Fase 4 original
LLM renderer
Cluster state → linguagem humana. "Seu perfil mostra…"
Fase 4 original
Expansão de SNPs
Agora sim: infraestrutura pronta, expansão com critério.
Fase 1 → move para cá

Diagnóstico consolidado

A direção estratégica do roadmap está correta: léxicos, clusters, confiança visível, linguagem humana. Mas a ordem de execução precisa de dois ajustes. Primeiro: inserir uma Fase 0 de correções estruturais antes de qualquer expansão — o lookup index dedicado não está em nenhuma fase e é o que impede rsID, gene e categoria de funcionar. Segundo: mover a expansão de SNPs para o final, não o começo. Adicionar marcadores sobre um sistema de recuperação com falhas críticas só amplifica o ruído. Com a Fase 0 feita, o score composto sai de 40% para ~70%+ sem um único SNP novo.