Tobin

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.

That is a real Ave Q card, rendered by Ave Q inside this page — not markup Tobin wrote.

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:

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.