Case 02 / 04
AI / Data
AI Matching Businesses
Project brief
An LLM-powered pipeline that turns messy business data into structured profiles, then matches and recommends partners — with every score explainable.

The problem
Business data arrives in every shape imaginable: free-text descriptions, half-filled forms, inconsistent categories, websites that say one thing and registries that say another. Matching companies on top of that — and recommending who should talk to whom — breaks down fast if you only compare keywords.
What I built
I designed and implemented the matching pipeline end to end:
- Normalisation with an LLM. Heterogeneous inputs become one structured representation of each business — what it does, who it serves, what it needs.
- Retrieval. Structured profiles are searchable by meaning, so match candidates are pulled semantically instead of by exact terms.
- Scoring. Candidates are ranked by combining semantic similarity with explicit business signals.
- Enrichment. Missing fields are filled where the data allows, so sparse profiles still get reasonable matches.
The decision that mattered: explainability
A match nobody can explain is a match nobody trusts. Every recommendation keeps a trail — which attributes aligned, what was retrieved, how the score was composed — so the people acting on it can check the reasoning instead of taking the model’s word for it. It also made debugging honest: when a match was wrong, the trail showed which stage was wrong.
Stack
OpenAI for understanding and structuring, Python for the pipeline, PostgreSQL as the system of record.