← Back to Blog
RAG & AI Systems2 min read

Letting AI Match Messy Human Input Without Making Everything an LLM Call

Human input is messy.

People misspell words, use different forms of the same name, leave out accents, mix languages and enter things that are almost — but not quite — what the application expects.

It is tempting to solve all of that by sending every input to an LLM. The model is good at understanding fuzzy human language, so why not let it decide what the user meant?

Because sometimes a much simpler solution already handles most cases.

For one feature I was working on, I needed to match free-form user answers against known values. I ended up thinking about the problem in layers.

First, normalise what can be normalised cheaply: lowercase, whitespace, punctuation, accents and obvious variants. Then try exact or fuzzy matching. Only when the deterministic approaches are not confident enough does it become useful to ask an AI model.

Conceptually:

user input
↓
normalisation
↓
exact / fuzzy match
↓
confident?
   yes → use result
   no  → ask AI

I like this approach because it keeps the predictable cases predictable.

Calling an LLM for every answer would be slower, more expensive and harder to debug. It also introduces unnecessary uncertainty into inputs that can already be resolved with normal code.

AI becomes much more valuable when it handles the ambiguous tail of the problem rather than replacing logic that already works.

This is a pattern I increasingly like in AI products: use deterministic software where the rules are clear, and AI where interpretation is actually needed.

Not every intelligent-looking feature needs an LLM at every step.

Topics

matchingnormalizationLLM architecture