uNation · Application development · 2024

Rebuilding event discoveryso a whole city fits in one feed

Client
uNation
Services
App development, Data
Duration
7 months
Team
1 lead, 4 engineers
  • 3.4×

    faster event search across the full catalogue

  • 41%

    more events saved per session

  • 9→1

    days to ship, down from a fortnightly train

  • 0

    P1 incidents in the 90 days after launch

01 — The challenge

Growth had outrun the search index, and everybody knew it.

The catalogue had grown past what the original query layer was built for. Discovery pages timed out at peak, ranking was a hand-tuned list of rules nobody wanted to touch, and every release needed a two-week freeze.

The team knew what was wrong. What they didn't have was the bandwidth to fix the foundations while shipping to a seasonal calendar that never paused.

Constraint

No downtime window before festival season

Constraint

Existing team of four stayed on feature work

Constraint

Hand over fully within seven months

Working session

02 — What we did

Four moves, in the order that de-risked the next one.

  1. 01

    Instrument before touching anything

    Two weeks of tracing showed the real cost sat in a fan-out query nobody suspected. That finding rewrote the plan we'd been hired to execute.

  2. 02

    A read model beside the old one

    New search served a slice of traffic behind a flag while the legacy path stayed live. Rollback was one toggle for the whole migration.

  3. 03

    Ranking that people can reason about

    Learned relevance with an explainability panel, so the content team could see why a result placed where it did — and challenge it.

  4. 04

    Handover as a deliverable, not an email

    Runbooks, load tests and a fortnight of pairing. The client's own team ran the final cutover while we watched the dashboards.

"They found the actual bottleneck in week two — it wasn't the thing we'd hired them for."

Nathan Reyes

CTO

Got a bottleneck you can't quite name yet?

That's usually the best time to talk. Thirty minutes, no pitch deck.