Fill the room, not the feed.

Walkup, the Fill-the-Room Agent: for one booked show with seats left, it finds where this bill's crowd stands out from the room's usual crowd, ranks the local places that crowd already likes, and puts them on one page for your street team. Qloo picks the places; Claude writes the sentences and reads your change notes. Every claim links to its request.

Try it, no login: https://walkup-eight.vercel.app. Two real Ticketmaster bills at The Anthem, Washington DC, run live on Qloo, share none of their top 5 areas or partners. Rhiannon Giddens' crowd stands out most on H Street NE, about 2.2 times the room's usual crowd; FLO's in U Street / Shaw, about 2.8 times. 25 of their 33 partners are not in a popularity list of the same areas.

Video (85 s): https://www.youtube.com/watch?v=68SfhIpwNos

Code (MIT): https://github.com/TAUIL-Abd-Elilah/walkup

Company: a solo builder, no company yet. If chosen, I'll incorporate and take the $25K on a SAFE. Planned prices: $79 per show, or $599 per room per month.

The problem

A promoter with seats left decides every week where the street team goes, which shops get posters and ticket drops, and which podcasts get a pitch. The usual inputs: the venue's email list, which already reaches the regular crowd; paid social with a radius; memory; discounts, which teach buyers to wait. None answers the question for this show: where does this bill's crowd differ from the room's usual crowd, and which places nearby does that crowd already go to?

Qloo workflows and why

A live run makes about 30 Qloo calls. Each gates one decision and has a fallback that shows on its section.

  • Resolve. /entities by the Spotify ids on the Ticketmaster listing, else typed /search with an exact name match; two candidates pause the run and ask. A one-row place call catches acts Qloo lists but has no taste data for, which heatmaps would drop.
  • The room's usual crowd. The venue's next 60 Ticketmaster events, resolved to Qloo.
  • Lift. Two urn:heatmap calls, bill and usual crowd; lift is the bill's percentile rank over the usual crowd's, per area. A raw heatmap mostly shows where people are; lift shows where this crowd stands out.
  • Partners. urn:entity:place in each top area with the bill as the signal, pinned category tags, filter.hours on the street-team day, a price cap and explainability. The same search with the usual crowd as the signal marks down places that crowd likes as much. With no signal it comes back in popularity order, and the sheet counts how many partners that list would miss.
  • The rest. urn:demographics for the age skew, /v2/analysis/compare for what's different tonight, filter.results.entities to put your own partner list in call order, podcasts and a sponsor with signal.location (labelled national), and urn:tag for copy words.

Code ranks; Claude never does. Claude (Haiku 5.5 through OpenRouter, or Opus 5.5 through the Anthropic API) narrates under a schema that allows only ids and numbers from this run, and reads change notes. On FLO's sheet, "All ages, no bars" became two tool calls, set_all_ages and exclude_partner_categories; the plan ran again, 5 partners came off, and all 30 Qloo requests were answered from cache. Without a model key, fixed rules read common notes.

A redacted request, end to end

The partner call:

GET /v2/insights?filter.type=urn:entity:place
  &signal.interests.entities=<bill entity IDs>
  &filter.location=POINT(<tile lon> <tile lat>)&filter.location.radius=2000
  &filter.tags=<pinned category URNs>&operator.filter.tags=union
  &filter.hours=<street-team weekday>&filter.price_level.max=3
  &filter.exclude.entities=<venue ID>&feature.explainability=true&take=50
Host: hackathon.api.qloo.com
X-Api-Key: $QLOO_API_KEY

From each result the code reads the id, name, location, tags, affinity, distance, explainability, hours, is_closed, address, phone and website. Places closed on the street-team day are dropped. The rest are scored by Qloo rank times area lift, national chains after local places. The ledger keeps the request with the key redacted, its status and cache flag, and each partner's footnote opens it.

Demo without credentials

  • Hosted: https://walkup-eight.vercel.app. Recorded from live Qloo and Ticketmaster runs on Oct 21 2026. Live runs are paused for judging; these sheets are what a live run produced. Open either hero sheet, click any footnote to see its request, and download the PDF, CSVs or sheet.json. The revised FLO sheet lists what "All ages, no bars" changed: https://walkup-eight.vercel.app/plan/57cd1eda-95bd-4917-a3a7-13b4d7bedb51. Send opens the confirm dialog; nothing is sent.
  • Agents: claude mcp add --transport http walkup https://walkup-eight.vercel.app/mcp, then get_sheet with a plan id. An Agent Skill and CLI are in skills/walkup.
  • Local, no keys: with an empty .env, four presets run end to end on a synthetic stand-in for Qloo and Ticketmaster, marked as sample data. One stops on a one-word act name and asks you to pick.

Setup from a clean environment

Node 22+ and npm:

git clone https://github.com/TAUIL-Abd-Elilah/walkup.git
cd walkup
npm ci
cp .env.example .env
npm run dev

Open http://localhost:3000. An empty .env gives sample mode. For live runs set QLOO_API_KEY and TICKETMASTER_API_KEY; add OPENROUTER_API_KEY or ANTHROPIC_API_KEY for Claude and RESEND_API_KEY to send email.

Known limitations

  • One room, two live bills. They show the pipeline working on live data, not that the picks sell tickets or hold in other rooms.
  • Nothing measures sales. Affinities are tastes, not purchases; the map shows where a bill's fans stand out, not where buyers live.
  • No list made without Qloo. The popularity check compares two Qloo lists; hours, addresses, phones and the closed check come from Qloo only.
  • Live runs are paused on the hosted site. Fresh runs need your own Qloo and Ticketmaster keys.
  • Thin signal. Comedians, small acts and smaller metros return fewer areas and places; sections say partial and why. A comedy room with a short roster gets no lift map.
  • Podcasts and the sponsor are labelled national. Location hasn't been shown to move those rankings.
  • Change notes set five things: all ages, place types, areas, street-team days and radius. Anything else gets a question back.
  • Partners are suggested, not affiliated.

Built With

Share this project:

Updates

Submission history