The part that doesn't fit on a souvenir.

Vancouver is a 2026 World Cup host city. Every host city gets a kit: a logo, a skyline, a feel-good drop on sale at the airport. We built the other version. VANCOUVER MADE is a protest-kit collection and the AI pipeline that makes it, where one cited public-record receipt about who pays becomes three artifacts at once.

The method is the entry: mimic, invert, cite.

We rebuilt the visual grammar of an official World Cup drop, loaded it with the part the broadcast leaves off, and stitched the citation into the hem so you can check our math. No real FIFA, club, or sponsor marks. We forge a counterfeit-official system and turn it on itself. The patron saint of the move is Nardwuar the Human Serviette, the Vancouver interviewer who does the homework then asks power the question it's dodging. Research is the protest. The receipt is the weapon. We turned his discipline into software.

One receipt, three rooms (this is the process, and it's live).

The Receipts Engine at /engine is the whole pitch in one screen. Pick a real Vancouver number and watch it land three ways, source attached:

  • On the kit: stitched into the hem where the sponsor logo goes. (MADE ON, vancouver-made.vercel.app)
  • On the wall: the bill, pasted up as a poster nobody approved. (feefa.ai)
  • On the body: shot like couture, captioned like evidence. (world-cup-fashion-cake.vercel.app)

Three separate live sites, three house voices, one source of truth. All auto-deploy on every push.

The receipts, cited.

  • $685M to $729M gross BC cost for seven games; $242M of it security; up to $114M net to BC taxpayers. (Government of BC; CBC; Globe and Mail, May 2026)
  • California's host cities funded most of their budget privately. BC went nearly 100% public. (Globe and Mail, June 2026)
  • Homelessness more than doubled before the 2010 Olympics, 628 to 1,576, behind a "no displacement" pledge. (UBC Olympic Games Impact report; Pivot Legal)
  • "Forsaken twice." The Oppal inquiry found the missing women were failed by society and by police. (Missing Women Commission of Inquiry, 2012)
  • The VSE, branded the "Scam Capital of the World." (Forbes, 1989)
  • Hogan's Alley, the Black neighbourhood paved for the viaduct. (City of Vancouver anti-Black cultural redress record)

Every claim ships with its source. Anything unverified is flagged and held until a human clears it against a primary record.

How we built it: voice in, judgment out.

The human bookends the machine. We built tooling, not just prompts:

  • a research-and-verification spine, where every fact is a source card with a citation and a rights note;
  • an ingest pipeline (scanner to manifest to SQLite) that turned roughly 246 raw Midjourney generations for the flagship kit into a rated, searchable library instead of a junk drawer;
  • code-drawn jersey flats: deterministic SVG rendered from one spec file, so the design is data, and the same data fills the tech pack;
  • the Receipts Engine: one civic fact rendered across three house voices;
  • several models in parallel and several agents on one branch with handoff docs, with Devin handling dev-track scaffolding.

Not using AI. Conducting a roomful of it. AI did the volume; cited public records and human taste held the line. No statistic was invented by a model.

What we're judged on, and where to look.

  • Novelty of process and output: a protest kit nobody saw coming, on a repeatable mimic-invert-cite method. The system is the pitch. (/#hero-kits)
  • Best Vancouver narrative: unceded ground, Hogan's Alley, the $729M bill, cited not sloganed. (/#collection)
  • Show your process: it is /engine. One receipt, three artifacts, source attached. (/engine)
  • Use of AI and tools: FIFA's official system rebuilt with AI design tools, disciplined by Vancouver public-record data. (/hall-of-fame)

Built at BCIT Tech Collider, on the unceded territories of the xʷməθkʷəy̓əm, Sḵwx̱wú7mesh and səlilwətaɬ peoples.

Everyone made a souvenir. We made the receipt, and the source is on the hem. Check our math.

Built With

Share this project:

Updates