Live system map · source of truth: docs/architecture.md, ADR-001/002/003/004, services/agent/graph.py
Dashed + faded = planned, no code yet. A badge names anything not yet deployed. Everything else runs today.
Your browser could not start WebGL. The architecture in text:
User (browser)
|
+-- Next.js chat UI, apps/web [built; Vercel deploy planned]
| +-- Clerk sign-in + Cloudflare Turnstile
| +-- airport.guydvorkin.com -> Vercel CNAME [planned]
|
+-- Cloud Run (europe-west3) - FastAPI + LangGraph agent [LIVE]
| | POST /chat (SSE stream)
| |
| | START -> agent -> route() -> tools -> agent -> ... -> END
| | agent node : one LLM call per turn, tool-bound
| | tools node : runs tools concurrently, lifts assumptions into state
| | checkpointer: AsyncPostgresSaver -> Neon
| |
| +-- tools: rank_airports, compare_airports, airport_metrics,
| | unmet_demand_estimate, resolve_airport,
| | investment_context, faa_live_status
| +-- Langfuse traces
|
+-- Neon Postgres
| tables: airports, regions, bts_t100, bts_ontime, airport_financials
| views : v_airport_metrics, v_congestion, v_opportunity_score,
| v_unmet_demand_est, v_carrier_concentration, v_roi_proxy
| state : LangGraph checkpoints | queries log table
|
+-- OpenRouter - AGENT_MODEL=anthropic/claude-sonnet-4.5
fallback default openai/gpt-4o-mini
Ingestion (snapshot-first): BTS T-100 + BTS on-time + OurAirports/FAA -> Neon
Live (not snapshotted): FAA NAS status feed - faa_live_status only, 5-min cache
chrome://settings/system.docs/adr/