MPH Development. Get in touch

NoshSpot

Specials platform, crawler and console

Restaurants publish their happy hours as prose, inconsistently, and change them without telling anyone. NoshSpot reads those pages at scale, turns them into a canonical schema, and answers one question: what is on near me right now.

Visit noshspot.app

The NoshSpot site

What the hard part was

Three systems, not one app

A Node pipeline discovers restaurants and fetches their sites headlessly. A consumer PWA answers what is active now near you. An operator console sits behind both, running 24/7 behind a Cloudflare tunnel, with a crawler control panel and a data-quality queue.

The gate matters more than the model

Extraction carries a reliability rating. Hours that parse cleanly are written; hours that do not are flagged for human review rather than overwriting a good record with a guess. A wrong closing time is worse than a missing one.

Most of the work is the messy middle

Day-name normalisation, timezone derivation from the resolved place rather than the page, place-ID de-duplication and merging. Batch jobs are rate-limited, checkpointed and resumable, and degrade across LLM usage limits instead of failing.

Owners outrank the crawler

A business owner can claim their listing and edit it, and those edits are locked against being overwritten on the next crawl. The machine defers to the person who actually knows.

The site

NoshSpot on a phone
On a phone

Built with

  • Node
  • Playwright
  • Claude Sonnet with Gemini fallback
  • Supabase
  • Cloudflare edge SSR
  • Google Places
  • React + Vite