Building MatchDay AI: a memory-aware autopilot for event travel
I built MatchDay AI for the Qwen Cloud Global AI and the OpenAI Build Week Hackathon and submitted it **only to Track 4: Autopilot Agent*\*. Its persistent-memory capabilities also align with Track 1, but they are the differentiator inside one Track 4 submissionânot a second-track entry. The core breakthrough is the complete workflow: understand a messy request, recall relevant preferences, invoke typed tools, detect a trip-breaking conflict, repair the plan, and independently verify the result.
[View the Architecture]

architecture

architecture-frontend

architecture-memory

architecture-autopilot
The problem and its value
Travel search is not the same as dependable trip planning. A flight can look cheap yet arrive too late once airport transfer time and a fan's safety buffer are applied. A familiar preference can disappear between sessions. A stale seller link can return zero results. A route estimate can be mistaken for a fare, or incomplete provider data can become an unjustified booking claim.
For a high-stakes event, those are not cosmetic failures: one bad recommendation can make the entire trip worthless. MatchDay turns them into explicit constraints, evidence states, and verification checks before showing a plan as complete.
How MatchDay works
The production path is:
\\`text
Fan â Next.js on Vercel â signed server facade â Alibaba ECS
â Caddy + FastAPI + PostgreSQL + durable workers
â Qwen Cloud + typed travel/context tools
â normalize â rank â detect conflict â repair â verify
â immutable trip version and privacy-safe share
\\`
Qwen Cloud's \qwen3.7-plus\ is the production planning controller. It interprets natural language, classifies each turn, resolves ambiguity, selects typed tools, proposes grounded memory changes, chooses from allowlisted repair candidates, and explains the result. The bounded gateway is implemented in \`[qwen.py\](../backend/matchday/qwen.py), while the durable tool loop lives in [\agent.py`](../backend/matchday/agent.py).
The model never certifies its own answer. Deterministic code owns schemas, fixture binding, evidence validation, package arithmetic, constraint enforcement, conflict detection, repair application, and the independent 14-check release contract in \`[safety.py`](../backend/matchday/safety.py). This was the most important architecture decision: **use the model for judgment, but use code for truth*\*.
Persistent memory follows the same principle. Explicit user facts and repeated verified behavior enter one owner-scoped source of truth, but one unusual trip does not silently become a permanent preference. Behavior is promoted only after reinforcement across distinct root trips. Memory supports bounded recall, trip-specific namespaces, current-message precedence, correction, expiry, supersession, deletion, disablement, and auditable reuse in \`[memory.py`](../backend/matchday/memory.py).
Autonomy is durable, not unbounded. PostgreSQL leases, fencing tokens, checkpoints, retries, cancellation, idempotency, and cumulative time/model/tool/cost limits let interrupted work resume without running forever or spending the same budget twice. The runtime is in \`[runs.py\](../backend/matchday/runs.py), and the Alibaba deployment starts separate API, run-worker, fixture-refresh, PostgreSQL, and Caddy services in [\docker-compose.yml`](../deploy/alibaba/docker-compose.yml).
Where Codex accelerated the work
Qwen is MatchDay's runtime intelligence. **Codex with the GPT-5.6 Sol Max configuration was my engineering accelerator.*\* I used a bounded hybrid version of OpenClaw's Peter-style loopâdefine, build, attack, check, fixâon small, independently verifiable slices.
Codex accelerated architecture tracing, implementation, regression-test generation, root-cause analysis, adversarial review, browser QA, and deployment verification. It helped expose issues that a happy-path demo would miss: memory source-of-truth disagreement after manual edits, incorrect cross-session recall, stale or zero-result flight handoffs, prompt and indirect injection, SSRF and unsafe redirects, replay attacks, tenant isolation, concurrency races, stale checkpoints, and degraded map or 3D rendering.
The key product decisions remained explicit: I chose the Qwen-versus-deterministic trust boundary, the two-trip memory-promotion threshold, the evidence taxonomy, human checkpoints for unsupported or high-risk claims, and a no-purchase release boundary. Codex shortened the feedback cycle and attacked each claim; it did not replace those product and safety decisions.
How it maps to the judging criteria
- **Innovation and AI creativity:*\* MatchDay combines cross-session memory with a durable Autopilot, evidence-gated repair, and an independent verifier. The visible \
Remembered â Conflict detected â Plan repaired â Result verified\rail makes that architecture inspectable rather than hiding it behind a chat response.
- **Technical depth and engineering:*\* Qwen Cloud drives typed decisions; Alibaba ECS runs the FastAPI/PostgreSQL control and execution plane; Vercel provides the signed frontend boundary. The repository includes source-blind evals, provider contract tests, PostgreSQL concurrency checks, and Playwright journeys across Chromium, Firefox, and WebKit.
- **Problem value and impact:*\* The current B2C product protects fans planning expensive, time-critical event travel. The future B2B path is an embeddable or white-label planning agent for travel agencies, using their inventory, policies, approval rules, and customer channels. The AGPL-3.0 provider architecture also supports open-source adoption.
- **Presentation and documentation:*\* Judges can try the live app without credentials, inspect the factual decision trace, use the map and illustrative stadium lens with explicit evidence boundaries, watch the short demo, and regenerate every architecture diagram from its Graphviz source.
MatchDay is currently focused on World Cup travel planning and does not purchase travel. Live commercial evidence depends on configured provider access; missing prices, inventory, availability, or refund terms stay visibly unknown. Broader event travel and agency embedding are product directions, not claims about the current release.
The goal is simple: **an autonomous travel agent should not merely produce an answerâit should remember responsibly, act within evidence, repair what is unsafe, and prove the final plan.*\[#QWEN](https://x.com/search?q=%23QWEN&src=hashtag_click) [#ALIBABA](https://x.com/search?q=%23ALIBABA&src=hashtag_click) [#CODEX](https://x.com/search?q=%23CODEX&src=hashtag_click) [#OPENAI](https://x.com/search?q=%23OPENAI&src=hashtag_click) [#HACKATHON](https://x.com/search?q=%23HACKATHON&src=hashtag_click) [#CLOUD*](https://x.com/search?q=%23CLOUD&src=hashtag_click





