← All work

Case study 03 · Portfolio build

Make My Gate

You land at D33 from Bangkok and fly out of A63 in 50 minutes. Will you make it? A Zurich connection planner that answers yes, tight or no, shows the route, and cites the public rule behind every checkpoint.

Role
Solo: design, build, eval
Stack
Claude Haiku 4.5, FastAPI, Railway
Status
Live · Zurich only
Data
Public sources only
The airport as a graph: 22 places joined by 27 walks, split across the Schengen border
01

Background

A tight connection is a real traveller problem and a hard test for RAG. The answer depends on geography (which pier, which level), rules (Schengen or not, security again or not) and arithmetic (walking plus queues against the minimum connection time).

Text retrieval can find the right paragraph and still get the route wrong. At Zurich, B and D are one pier: the same physical door gets a B number for Schengen flights and a D number for non-Schengen ones, and that is exactly where passport control hides.

02

Solution

Decide which step needs a model before choosing a retriever. Here it was one step out of six. Everything after reading the question is code.

  • Question reader: Claude Haiku 4.5 turns a messy question into structured slots: arrival, departure, minutes, origin, status.
  • Orchestrator: routes by question shape, and asks or declines when a question is ambiguous or out of scope.
  • Five workers: gate mapping, checkpoint rules, shortest route on a 22-node airport graph, minimum connection time, lounge eligibility.
  • Validator and composer: six checks, then the answer is filled into templates. "The validator can prove every route edge exists; it can't prove a paragraph."
03

Receipts

100%graph + orchestrator workflow, all four checks right on 25 test questions
76%agent with the same five tools (72% on 50 held-out rewordings)
28%naive vector RAG. Hybrid search plus reranker: 24%
~15¢one full eval run of the systems on all 25 questions

An answer only counts as right if behaviour, verdict, exact route and cited rules all match. Six of the 25 questions expect the system to ask or decline, and each question carries a named trap: same zone, passport, lookalike gates, minimum connection time.

  • Better retrieval made routing worse: the reranked system answered more often and flipped more verdicts.
  • The agent missed 20 of 75 questions, mostly by skipping checkpoint rules on non-Schengen arrivals (9 cases). The validator caught every one.
  • The graph system reads a quarter of the baseline's input tokens, because the model only reads the question.

The 100% is inflated by design: the expected routes come from the same graph the planner searches, so it proves internal consistency, not real-world accuracy. The 50 rewordings were written after prompt tuning stopped.

04

Not done yet

  • Live data. Delays, gate changes and queue lengths aren't public, so the re-planning loop is built and tested on 12 simulated events (75% fully right) but not switched on.
  • Weakest source. The 40-minute minimum connection time is commonly cited and unsourced, and seven verdicts depend on it.
  • Ground truth. Walking times are estimates from gate geometry, marked as such on the site.
  • Next layer. Live position, turn-by-turn directions, reading the sign in front of you, audio. The rules layer built here stays the part that's hard to copy.