How this works
Tobin is fiction. The plumbing is not. This site is an ordinary Node server with no special access to Ave Q — it talks to it the way any outside site would, through two public surfaces.
Cards arrive in an iframe
The dish card on the front page is not markup Tobin wrote. It is an Ave Q card, rendered by Ave Q, framed here:
<iframe src="https://aveq.io/embed/s/<embed-id>?chrome=0">
Ave Q sets frame-ancestors * on that route specifically so third-party pages
can do this. No key is involved — the card's own share flag decides whether it renders — so
the markup is safe to hand to a browser. It re-runs server-side each time it is opened, which
is why the pick changes without anyone editing this site. The frame sizes itself: the embed
posts its content height to us and we resize to match.
It carries Ave Q's own mark along the top, and that is deliberate on both sides. Ave Q shows that header on a public embed and hides it on your own private board — attribution is for the people who didn't put the card there. Tobin doesn't suppress it: when someone else's service is doing the work inside your page, saying so is the correct default.
The Order button on that card is the interesting part. Press it and you leave Tobin entirely, landing in that restaurant's own Ave Q chat, mid-order, where you can ask about the food and pay in the same conversation.
Answers arrive over REST
Everything on Ask Tobin and Nutrition comes
from /api/v1. Two endpoints, chosen deliberately:
POST /api/v1/queries— hands the visitor's own sentence to Ave Q's resolver. Costs two model calls, so it is used only where the input really is free text.POST /api/v1/calls— a fully-formed action spec. No resolver, no model cost. Used everywhere Tobin already knows which function it wants.
These calls never happen in your browser. Ave Q sends no CORS headers, so they can't — and
shouldn't, because they carry a credential. Tobin's server exchanges a long-lived
ak_… key for a one-hour token, refreshes it before expiry, and keeps both well
away from this page.
Tobin doesn't know where anything is
The first version of this site had a station id in its config. Fifteen minutes later a worker restarted somewhere on the mesh, that station's helpers were no longer loaded, and every question returned an error — while a different station had quietly picked the same helpers up.
So Tobin no longer stores addresses. It asks Ave Q what is live
(GET /api/v1/auth/whoami, which reports the surface this credential can reach),
then picks the best available route for what it needs. Looking for a meal, it tries the Tobin
aggregator first — one call, ranked across every restaurant — and falls back to the Workflow
orchestrator, and then to a single restaurant's own pick. Every answer on this site tells you
which route it took. If none are live, Tobin says so rather than pretending.
That is the part worth copying if you build on Ave Q: the mesh is not a fixed set of endpoints, and treating it like one produces a site that breaks quietly.
What this site is not doing
No database of restaurants. No copy of a menu. No scraped nutrition table. Tobin stores three essays and a picture of himself; every fact on the site is fetched when you ask for it, which is the entire point of the exercise.