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.

Walkup

How Walkup works, and where it stops

Walkup plans the street team for one booked show: the areas where this bill's crowd stands out from the room's usual crowd, and the local places that crowd already likes. This page says what it calls, what it stores, what it won't do and where it is known to fail.

The hosted sheets were 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.

Purpose and operator

Walkup helps the people selling one booked show (a promoter, a venue marketer, a street-team lead) decide where to put posters, ticket drops and calls for the seats that are left. It works one show at a time, after booking.

It is a planning tool. It does not sell tickets, set prices or rank shows, and it shows no sales data for any show. Seats left and capacity are what-ifs the operator enters, marked as what-ifs. The sample presets use invented bills; the live sheets use two real Ticketmaster bills at The Anthem, Washington DC, and two at The Salt Shed, Chicago. No preset carries a seats-left count.

Models and versions

  • Claude claude-haiku-5-5 through OpenRouter when that key is set (no server-side refusal fallback on that route), otherwise claude-opus-5-5 through the Anthropic Messages API.
  • Narration: effort low, structured output against a JSON schema built per run. It may cite only entity ids and numbers returned in that run; a deterministic guard drops anything else and the sheet shows the count.
  • Revisions: effort medium. The model reads the operator's change note and a short summary of the sheet (no partner names or contacts) and chooses among six strict tools: all ages, leave out place types, skip areas on the sheet, street-team days, search radius (5 to 60 km), or ask one question. The tools only set inputs; the plan then runs again through Qloo and the same code, and requests whose inputs didn't change come from the cache.
  • Without a model key, or when the model call fails, fixed rules read common notes (“all ages”, “no bars”, “skip an area”, “only Saturday”, “within 10 km”) into the same tools, and the revised sheet says the rules read it. A note they can't read gets a question and no change.
  • Above the daily spend cap, narration falls back to a deterministic template, labelled on the sheet.
  • The model is called only to parse free-text show input, to narrate and to read a change note. Resolution, lift, partner ranking and scoring are Qloo responses plus deterministic code.

Qloo endpoints

Base URL https://hackathon.api.qloo.com, key in a server-side header only. About 16 to 32 calls per fresh run on the sample data: the sample bill A at The Truth, Nashville, makes 32 from cold, including the signal check, the 4 map-check heatmaps, 3 usual-crowd partner searches and 3 popularity searches; the Super Funny, Tacoma sample, with no lift map, makes 16. The live runs recorded on Oct 21 2026 made about 30 each from cold (29 and 21 at The Salt Shed, the second reusing cached answers). The hackathon key's monthly limit read 50,000 calls. Every call is a GET with plain entity ids.

Every request shape below was checked against the live Qloo host on Oct 15 2026, the day the key arrived; what it did is listed after this list. Both hero sheets were run live and recorded on the hosted site on Oct 21 2026 (see Evals).

  • Act lookup · 1 to 4Which acts match; Walkup asks you when a name is ambiguousGET /entities?external.spotify.ids=… or typed /search
  • Signal check · 1 per 25 ids checked, plus 1 per Spotify-matched act Qloo drops. A 200 is reused for a week; a 400 isn't cachedWhich acts Qloo has taste data for; an entry it has none for is swapped, asked about or left out, and the sheet says whichfilter.type=urn:entity:place with every seed as the signal, at the venue, 1,500 m, take=1
  • Venue lookup · 1The venue, else the Ticketmaster map pointGET /search types=urn:entity:place near the venue
  • The room's usual acts · 1 to 3 per venue a weekThe room's usual crowd (its top 12 headliners)GET /entities for the venue's Ticketmaster roster
  • Heatmap, bill · 1Where this bill's crowd is, per areaGET /v2/insights filter.type=urn:heatmap
  • Heatmap, usual crowd · 0 or 1Where the usual crowd is, per areaThe same heatmap with the room's usual acts
  • Heatmap, popularity check · 0 or 1A check only: does lift just follow general popularityThe same heatmap with a generic tag
  • Map check · up to 4Whether the map holds up when the bill is split in twoThe bill and usual-crowd heatmaps again, each for one half of the acts
  • Age mix · 1Age mix, this bill and the usual crowdGET /v2/insights filter.type=urn:demographics
  • Crowd compare · 1, or 3 if it falls back to two tag listsHow this crowd differs; copy-line candidatesGET /v2/analysis/compare (bill and usual crowd)
  • Partner search · 3, one per partner areaThe partnersfilter.type=urn:entity:place per numbered area, stacked filters, explainability
  • Partner search, usual crowd · 3, one per partner areaThe usual-crowd rank on partner rowsEach partner search again with the usual crowd's signal (same area, radius and filters)
  • Spots near the venue · 1, plus 1 a weekSpots for before and after the show, and how the usual crowd ranks themPlaces within 1.5 km of the venue, and the same for the usual crowd
  • Your partners · 1Call order for your own partnersfilter.results.entities with the operator's list
  • Podcasts · 1Podcasts for a host readfilter.type=urn:entity:podcast with signal.location
  • Sponsor · 1One sponsorfilter.type=urn:entity:brand with signal.location
  • Copy-line tags · 1The tags copy lines may usefilter.type=urn:tag, namespace-scoped, diversify.by=subtype
  • Tag list · none at runtime; build time onlyPins every tag id; no free-text tags at runtimeGET /v2/tags

Each line gives the calls in one fresh run. On a sheet, receipt ids (Q1, Q2 …) number that run's calls in the order they were made.

Verified on hackathon.api.qloo.com, Oct 15 2026

Each request shape a run sends, checked against the live host. Only statuses, counts and field names are listed, no response data. “Changed” means the check changed what Walkup sends or how it reads the answer; “removed” means the code path is gone.

  • Acts and the room's usual acts · verified, changedMost musicians come back twice under one name, an artist and a person entry; the run counts them as one act.Typed /search for artists and people, exact name
  • Signal check · addedNames each seed Qloo has no taste data for in a not_found warning.Place insights with every seed as the signal, at the venue, take=1
  • Venue, pick list for your partners · verifiedOne room found 5 m from its point within 1 mile; another is not in the catalog./search for places near a point (lat,lon and a radius in miles)
  • Acts and the room's roster · verified, changedIds come back under properties.external. The roster-wide check waits for the Ticketmaster key./entities by Spotify id
  • Bill and usual-crowd maps, map check · verifiedRadius honoured. A seed Qloo has no taste data for is dropped without a warning, and a map of only such seeds still comes back with areas, hence the signal check.Heatmap with entity signals, a point and a radius
  • Popularity check · verifiedAnswers as expected.Heatmap with a place tag (restaurant) as the signal
  • Genre baseline when the roster is short · changedThe stand-up comedy tag returned 0 areas near a comedy club. Comedy gets no genre baseline; no music genre tag is pinned yet.Heatmap with a genre tag as the signal
  • Age mix · verifiedOne block per signal, 6 age buckets, 2 gender keys.urn:demographics
  • How this crowd differs · verified, changedtake has no effect, so each list is cut on our side./v2/analysis/compare, bill against usual crowd
  • Partners, their usual-crowd rank, spots near the venue · verifiedfilter.hours honoured: 5 places closed that day without it, 0 with it. Exclusion filters not checked yet.Place insights per area: radius, pinned category tags (union), filter.hours, price cap, explainability, take=50
  • Partner and spot categories · verified, changed11 of 14 pinned (5 to 10 places within 25 km, each carrying the tag); record store, Irish pub and place of worship dropped.Pinned category tags
  • Call order for your partners · verifiedA 10-entity shortlist came back fully scored.filter.results.entities with the bill as the signal
  • Podcasts · verified15 rows with a usable seed; the day-one errors came from a seed Qloo had no taste data for. Location effect not shown, so labelled national.Podcasts with signal.location
  • Sponsor · verified, changed15 rows with a usable seed. No alcohol brand tag found to exclude, so a name and tag filter keeps those brands off shows that aren't 21+.Brands with signal.location
  • Copy-line tags · verifiedAt most 5 tags per namespace.urn:tag with tag types and diversify.by=subtype
  • Pinning tag ids at build time · verifiedAnswers as expected.GET /v2/tags
  • Weighting an act against its stand-ins · removedHTTP 400.POST /v2/insights with weighted signals
  • Scoring a typed list without a pick list · removedHTTP 400. Never sent.filter.results.entities.query (names instead of ids)
  • Age-tuned partner ranking · removedIts check ran on a seed Qloo had no taste data for, so it showed nothing. Never sent.signal.demographics.age on place calls
  • Declared group segments · removedNothing came back for either test query.GET /v2/audiences

How the top pick is chosen

“Start in this area” or “Start with this place” at the top of a sheet comes from a fixed rule, never from the model. The area rule goes first: of the numbered areas on the map (the 1 to 5 the area list and the partner table share), the highest-lift one that ranks at least 5 places lower when you look at this crowd on its own. If none qualifies, the partner rule: the best-scoring partner in a top area that isn't a national chain or the most common type on the list (ties all count as most common) and that the room's usual crowd ranks at least 5 places lower, or not at all. If neither finds one, the sheet has no top pick. Both need the room's own crowd as the baseline, and the area rule needs a map that passed its checks.

Data sources and licences

  • Qloo: every taste decision, and the partner and spot details on the sheet (address, phone, website, hours, closed or open). Response bodies are never committed (git hook and CI check); private cache only.
  • Claude, through OpenRouter or the Anthropic API: narration, free-text parsing and change notes. No personal data is sent.
  • Google: nothing. The product makes no Google request.
  • Ticketmaster Discovery: bill, venue, date, age policy and the venue roster. Attribution and deep links, within rate limits.
  • OpenStreetMap via OpenFreeMap: base map tiles, ODbL attribution on every map.
  • U.S. Census Bureau ACS 5-year: adults per ZCTA for the budget heuristic and tile floors. Public domain.
  • Supporters'-club home-bar lists (eval only): facts only, attributed, linked and date-stamped, robots.txt respected, the full table not redistributed.

What we store and what we don't

  • No fan data and no personal data. Inputs are the bill, the venue, the date and counts or lists the operator types.
  • No cookies beyond one functional cookie.
  • The optional "send a copy to" address is used once for that send and never stored. The ledger records that a copy was requested, not the address.
  • Already-reached ZIPs, when supplied, are aggregate counts from the operator's own report. No names.
  • Tags about individual people are removed before anything is stored.
  • Ad exports (ZIP and pin lists) carry no audience labels. The operator sets targeting in their own ad account. A race-share audit (one aggregate number, never per show or tile) has not been run, so none is reported.

Policy enforced in code

  • Aggregate affinities only. Walkup never infers identity, ethnicity, religion, health, finance, politics or sexuality.
  • Lift is always said against a named baseline ("about 1.8 times the room's usual crowd"), never as where a group lives.
  • Community channels (alumni chapters, fraternities and sororities, congregations) appear only when the operator types them.
  • Alcohol and 21+ rules come from the Ticketmaster age policy, never from Qloo. Unknown counts as all-ages for fan-facing lists.
  • Partners are suggested, not affiliated. No email goes to anyone the operator did not type. Contact details are never scraped.
  • Copy uses only allowlisted tag words: no jokes, no likeness, nothing in an artist's voice.

Tag namespaces that never reach copy or storage:

  • urn:tag:ethnicity:*
  • urn:tag:inclusivity:*
  • urn:tag:credit_card:*
  • urn:tag:hotel_rating:*
  • urn:tag:cost_description:*
  • urn:tag:wikipedia_category:*
  • urn:tag:religion:*
  • urn:tag:political*
  • urn:tag:sexuality:*
  • urn:tag:customer_identity:*

Plus any tag whose id or name contains: ethnic, religio, christian, muslim, jewish, catholic, political, democrat, republican, lgbt, gay, lesbian, race.

Evals

Live, recorded Oct 21 2026. Two real Ticketmaster bills at The Anthem, Washington DC (an independent room, I.M.P.). A fixed rule from the spec picked them: the first Americana, country or folk bill from Dec 20 2026 to Feb 28 2027, and the bill in that window whose genre is most distant from it. Rhiannon Giddens on Feb 28 was the only Americana, country or folk bill in that window on The Anthem's Ticketmaster calendar; FLO's R&B show was the most distant. Both were run live, about 30 Qloo calls per fresh run. The two sheets share none of their top 5 areas and none of their suggested partners. 25 of their 33 partners are not in the popularity list for their area (the same Qloo place search without the bill as the signal); that compares two lists, not ticket sales. The change note “All ages, no bars” was read by Claude as two tool calls on FLO's sheet, removed 5 partners and made no new Qloo call. A separate check on Oct 20, that lift is not just foot traffic, passed for two bills at The Truth, Nashville, with that room's real roster. One room and two bills show the pipeline runs on live data, not that a sheet sells tickets. The same rule at a second independent room, The Salt Shed in Chicago (owned and run by 16" On Center, a member of the Chicago Independent Venue League), picked Greensky Bluegrass and The Roots (a two-night pass listed first was skipped as a ticket package, not a show). Those two sheets share none of their top 5 areas and none of their partners; 29 of their 41 partners are not in the popularity list for their area. Neither signal is thin. The numbers.

The product eval (20 cases) passes on the sample data. It checks that the pipeline behaves as described, not that Qloo's picks are better. A second test, the Fan-Bar Test, ran on Oct 21 2026 under a plan sealed before any data: a football club's Qloo signal did not rank the club's official bar above Qloo's popularity order (top 50 in 25% of 325 club-and-city pairs against 27%; one-sided p = 0.89). So no claim that Walkup's picks beat popularity is made. See the eval page.

Known failure modes

  • Thin signal for comedians and smaller acts: fewer map cells, film or TV titles standing in for an act Qloo has little on, and sections marked partial.
  • A comedy room whose roster matches fewer than 5 comedians has no lift map: Qloo's comedy-wide map came back empty, so nothing can stand in for the room's crowd. The map section says so and partners are picked near the venue.
  • A map that ranks areas almost like the bill's own crowd shows where the crowd is, not where it stands out. The map section says so and partners are picked near the venue.
  • Qloo can list an act it has no taste data for. The signal check swaps in the next usable entry from the same search and says so, asks when several fit, or leaves the act out.
  • New venues not yet in the catalog: the run uses the Ticketmaster point instead.
  • Sparse small metros: the radius widens and the sheet says so.
  • A sparse map in a big metro: on FLO's live sheet only 159 areas came back, so the search widened to 60 km and the map is marked partial. Some suburban areas then carry national chains when no local place fits; they are listed after local places and labelled.
  • API notes we handled: explainability shares can sum to less than 1, so the sheet uses them only to name the act behind a place; and a demographics call can leave out an act Qloo has no age data for, so the age card is marked partial and names it.
  • Empty or generic compare results: two tag lists compared by rank stand in, and the section says so.
  • signal.location has not been shown to move podcast or brand rankings: those picks are labelled national.
  • One-word act names: always stop for a pick, never resolved silently.

Human gates

  • Ambiguous acts wait for the operator's pick.
  • A revision starts only from the operator's own note and makes a new plan; the original stays. All ages only adds restrictions: Ticketmaster's 21+ still holds.
  • Nothing is sent without an explicit Confirm. The default recipient is a test inbox.
  • Promo codes are exported for the operator to create in their own ticketing platform; Walkup never mints them.

Cost caps

  • Qloo: fresh runs stop when the monthly quota falls to 1,500; presets are served from cache. Fresh runs are capped at 3 per connection and 15 per day in total.
  • Claude (OpenRouter or Anthropic): a daily spend cap; above it, narration uses the labelled template and change notes are read by the fixed rules.
  • Revisions: on a live server a revision that runs again counts as a fresh run (same caps), and at most 12 per connection per hour; 30 per hour in sample mode.
  • Email: the provider's free tier, test inbox by default.

Contact

Open an issue at github.com/TAUIL-Abd-Elilah/walkup. For a security or data concern, open an issue titled “security” without details and we will reply with a private channel.