Exhaustive check of all 72,825 indexed addresses: 72,811 exact (99.98%),
14 partial (malformed house units, e.g. '27с1', '32 к 1/4-1/6'), 0 not_found,
0 ambiguous.
- match: require candidate ordinal to equal the query ordinal in fuzzy search
(deterministic typo recall 73% -> 80%, no wrong houses)
- resolver: compatibleVariant guard — LLM may only fix street spelling, keeping
the same words, ordinal and house unit; damerau distance for transpositions
- llm: prompt moved out of code (go:embed default_prompt.txt) with
llm.system_prompt / llm.system_prompt_file overrides; guided JSON parsing
tolerant of thinking blocks
- address: recognize ordinals appearing after the street name
- tests: first coverage for the LLM adapter and config prompt loading; README
Measured (sample 200): deterministic 94.7-95.8% exact / 0 wrong across 4 seeds;
LLM+guard typo 90.7-89.8% / 0 wrong. LLM fallback latency ~1.2-1.9s.