

{
"version": "stage1.v1",
"user_question_raw": "...",
"user_question_norm": "...",
"meta": {
"note": "normalized",
"parser": "rule_based"
}
}
Prefilter Candidates (SQL)
Plan A Embedding Query Builder
OpenAI Query Embedder (Plan A)
Embedding Extractor -> Message (Fixed)
Postgres Hybrid Retriever (Plan A)
Cohere ReRanker (Plan A)
DF -> JSON Message (Candidates)
Case Grouper (by sub_code)
Evidence Pack Builder (Plan A)

OpenAI Query Embedder (Plan B)
Embedding Extractor (B)
Postgres Hybrid Retriever (Plan B)
Cohere ReRanker (B)
DF → JSON(Message) Safe (B)
Case Grouper (Meta Lift, MinUI)
Evidence Pack Builder (Plan B)

Plan C Action Hints Extractor
Postgres Hybrid Retriever (Plan C)
Cohere ReRanker
Case Grouper (Plan C: Action→sub_code)
Evidence Pack Builder (Plan C)
ABC Guard → Final Bundle
Prompt Template Switch (Stage4)
OpenAI