« All posts

When an LLM's Training Data Expires: Fixing a Car Pricing Engine

An AI car-pricing engine broke because its LLM recalled stale exchange rates, revealing risks of mandatory retrieval and cache provenance in LLM apps.

AutoValue, a platform that values used Nigerian cars from photos, hit a strange bug when it let an LLM (Claude Haiku) generate the price: nearly every car, regardless of make or condition, priced out between ₦20 and ₦25 million. The cause was that the model's training data reflected an exchange rate of roughly ₦450 to the dollar, while the actual rate had climbed to around ₦1,500. The model wasn't hallucinating randomly, it was accurately recalling prices from an economy that no longer existed.

The fix wasn't better prompting but a change in the model's job. The system now performs a live web search (via Serper, with Google Custom Search as fallback) to fetch real current asking prices first, and treats that result as a mandatory price anchor the model cannot override. The LLM's role shifted from generating absolute prices to applying relative adjustments for mileage, condition, and faults on top of that anchor.

A second bug emerged from caching the model's own guesses as anchors: when live search found nothing, the model's estimate got saved and labeled as data, then resurfaced on the next identical query as if it were verified market information, a feedback loop compounding hallucinated prices. The fix was tracking provenance on every cached value and never letting model-generated output re-enter its own context as ground truth. Brand-and-year price floor tables were added as a final sanity check against implausible anchors.

The broader lesson applies to any LLM product quoting prices, salaries, or rents in a volatile economy: retrieval must be mandatory rather than advisory, models should handle relative judgments instead of absolute recall, and every cached value needs traceable provenance to prevent silent data poisoning.