Event data platform case studyScattered event pages became a searchable catalog, collected and de-duplicated automatically.
A client needed a continuously updated, searchable database of industry events — without a copy-paste team.

The real product, shown with demo data.
A client needed a continuously updated database of industry events from thousands of inconsistent sites. I built a full SaaS with a two-stage pipeline and a local AI model for extraction — clean, de-duplicated records at a sustainable cost.
Event data is scattered and goes stale fast.
Finding relevant industry events is manual and never-ending: the data is scattered across thousands of differently-built sites, goes stale fast, and is unstructured.
Thousands of inconsistent pages, at an affordable cost.
Collect data reliably from thousands of inconsistent, often JavaScript-heavy, anti-bot-protected pages; and extract clean records from messy free-text — at a volume where paying a hosted AI per page would be far too expensive.
An end-to-end event SaaS.
Discovers event pages via targeted search, collects them at scale, understands each page with a local AI model, validates and de-duplicates the results, and serves them through a fast, filterable web app — plus an admin back office for non-engineers.




Screens from the real product, captured with demo data. No client or customer data is shown.
Two stages that scale independently
- 01DiscoverTargeted search for event pages
- 02CollectProxies, retries, rendered pages
- 03Pre-filterReject junk before AI
- 04AILocal LLMPhi-3, run locally
- 05Clean & dedupDates, prices, fuzzy matching
- 06Catalog + adminFilterable app, back office
Two stages, one local model.
“Join us for FinServ Leaders Summit — 14th Oct, ExCeL London. Early-bird passes £495 until Sept 30! Speakers TBA…”
{
"name": "FinServ Leaders Summit",
"start_date": "2026-10-14",
"city": "London",
"venue": "ExCeL",
"price": { "amount": 495, "currency": "GBP" },
"topics": ["fintech"]
}✓ repaired, validated, scoredTwo-stage pipeline
Fast network-bound collection separated from slow AI extraction, so each scales independently.
Local LLM, checked output
Microsoft Phi-3 run locally through llama.cpp. Its JSON is repaired and validated, and a record is saved only above a confidence threshold.
Relevance pre-filter
Rejects junk pages before the expensive AI step, plus cleaning, normalisation and fuzzy de-duplication.
Resilient scraping
Rotating residential proxies, retries with backoff, rendered pages for JavaScript-heavy sites, and error monitoring.
The calls that shaped the build
At this volume, paying a hosted AI per page would be far too expensive. A local model keeps costs sustainable.
Its JSON is repaired and validated, dates and prices are sanity-checked, and each record gets a confidence score. Only records above the threshold are saved.
