Summary for judges

Video (2 min): https://youtu.be/aziYKguh2BE · Live demo: https://crowdspawn.vercel.app · Source (MIT): https://github.com/divyanshu-patil/Crowdspawn

Criterion Crowdspawn Check it
Qloo integration and technical work An agent picks one of 8 Qloo tools per step. It uses 7 kinds of Qloo calls (search, entities, game insights, heatmaps, demographics, cross-domain partners, compare). Every number in a plan carries the id of the Qloo call behind it. With no Qloo key, nothing is produced. 146 API tests (94% coverage) and 35 web tests run in CI on recorded Qloo responses Live call trace: /sample/trace. Kill-switch and LLM-swap tests: apps/api/tests/test_api.py
Beats an LLM alone? On partners, yes; on countries, no. All measured and published. Partners: given the same inputs for 20 games, an LLM repeats the same names: 32% of its artist picks recur in 3+ games vs 5% of Qloo's (films 15% vs 3%, podcasts 32% vs 20%; brands are the exception, 67% vs 51%). Audience: Qloo's gender skew matches a 270,000-gamer survey (ρ 0.997; LLM 0.991). Countries: on 23 held-out games the LLM did better (4/23 vs 1/23). Every plan shows Qloo and the LLM side by side /sample → "Compare with an LLM alone", /accuracy, docs/partner-check.md
Design and usability One text box, live streamed steps, citation chips, a one-minute Tour, a pixel world map. Plans are explained in plain-language charts for non-technical developers, and a chat answers questions from the plan's data only. Lighthouse accessibility 100 on every page; works at 360 px https://crowdspawn.vercel.app
Impact The plan ends in decisions a studio makes before launch: languages to localise into, geo-targets, local partners, as a checklist or CSV /sample → Launch actions
Originality Culture anchors turn a game's setting (its films, shows and music) into geography. Cross-domain partners are ranked by how much more these fans like them than gamers in general, globally and per city. "Where to market first" ranks music, podcasts, films and brands by how much these fans stand out in each. A built-in LLM-only baseline shows, on every plan, what taste data adds over general knowledge /sample/delhi: Mumbai first through culture fit 2.45

Inspiration

About 20,000 games launched on Steam in 2025 (How To Market A Game). Most are made by small teams with little marketing budget, who have to decide where to spend it before they have any data of their own.

Today studios choose localisation languages from Steam's wishlists by country, read with "gut feel and common knowledge" (GameDiscoverCo case study, Game Developer, 2021). Before launch there are few wishlists to read. Store tags describe the game ("roguelike", "cozy"), not the people who will play it.

I'm a student, and I build mobile apps and games myself, so this is my problem too. When I ship something, I'm the developer and the whole marketing team, and I have no data on who my players are or where they live.

Qloo knows what people love across games, film, music, podcasts and brands, and where they are. We built Crowdspawn to turn that into the answer a small studio needs: which cities to launch in, and who to partner with there.

What it does

Crowdspawn has one front door and three tools behind it.

1. Plan my launch: the agent (/)

Describe your game and your question in plain words, for example "a cozy farming game for PC and Switch: where should I launch, and who should I partner with?". The agent then plans on its own, choosing one Qloo tool per step:

Tool What it does with Qloo
search_games Finds comparable games
search_culture Finds films, shows and artists from the game's setting
find_place Resolves any town or city
rank_cities Scores cities with the spawn score (heatmaps)
scout_place Reads what works in one place (genre panels, local favourites)
audience Age and gender skew (demographics)
find_partners Artists, podcasts, films and brands the audience loves, globally or in one city
finish Writes the answer, which must cite its steps

Each step streams live with the agent's reasoning and what Qloo returned. The agent can't make anything up:

  • Handles, not ids. It refers to entities by handles the server issued (g1, p2), so it never sees, or invents, a Qloo id.
  • Cited answers. Every city, name and number in the answer must appear in a tool result, and its sentence must cite the step it came from ([s3]). Citations render as chips that jump to that step. After two failed checks, a template built from the Qloo ranking replaces the answer.
  • Bounded. At most 10 steps, 12 LLM calls and 150 Qloo calls per run.

One click turns the agent's picks into a full launch plan.

2. The launch plan (/sample)

  • Spawn points: where to launch. Every city ranked by spawn score, with a confidence level, a pixel world map, a budget split and a "Scout this city" link.
  • Rivals: 20 games your comps' fans also love, with Qloo's reasons.
  • Who's in the party: the audience's age and gender skew.
  • Allies: partners to recruit. Artists, podcasts, films and brands, ranked by lift: how much more your comps' fans like each one than gamers in general. Ranked globally and in each top city; anything at or below ×1 is dropped.
  • Launch actions for the top 3 cities: languages, a geo-target (centre and radius), local partners and the audience skew, as a checklist or CSV.
  • Battle plan: a brief written only from the plan's facts. Each claim has a chip that opens the exact Qloo call behind it.
  • Where to market first: music, podcasts, films and brands ranked by the median lift of each list: the medium where these fans stand out most.
  • Qloo vs an LLM alone: one click asks an LLM the same question with no Qloo data, looks up every name it gives in Qloo and scores it the same way, side by side. For the Delhi-set sample the LLM suggests Travis Scott, Drake and Nike; for the trucking sim, Joe Rogan, whom these fans like less than gamers in general do (×0.95). The LLM's answers are labelled and never used in the plan.
  • Your plan at a glance: five plain charts under the city list, written for a developer who doesn't read statistics. Why these cities ("+12% vs the average gamer" instead of "×1.12"), where the money goes, where to promote, which cities others overlook, and what happens after launch: a roll-out in three waves with a reminder to track wishlists and sales per city and move budget to what works. Each chart ends with a one-line "In short". They redraw the plan's own numbers and predict nothing.
  • Ask AI: a chat on every plan, and on every scouted place in the region scout. Ask in your own words; the LLM answers from that plan's Qloo facts only, with citation chips, and the answer passes the same grounding check as the brief or is withheld. Asked about revenue, it says the plan doesn't answer that.
  • Recent launches: every plan you opened in this browser, one click away.
  • Limits, stated next to the result: "an affinity index, not a sales forecast".

3. The region scout (/scout)

A pixel world map shaded by gamer taste match. Click any place to see which genres over-index there and which games locals love, or ask "Will my game work here?" for a verdict (Legendary to Common) against 8 world cities. "Ask AI about this place" answers follow-up questions from that place's Qloo readings only. 50 popular places are pre-scouted and answer instantly.

How Qloo powers it

Qloo is the only source of data. The LLM proposes names, which Qloo must resolve or they are dropped, and it writes prose, which is checked against Qloo's results. Remove Qloo and nothing is left: the kill-switch test proves it.

Feature Qloo calls
Comparable games, culture anchors, places /search, /entities
Similar games and why /v2/insights video games with explainability
City ranking, scout map, genre heat /v2/insights urn:heatmap with location and radius
Audience /v2/insights urn:demographics
Cross-domain partners /v2/insights artists, podcasts, movies, brands; signal.location for local lists; re-scored against all gamers with filter.entities
Gap view /v2/analysis/compare

The spawn score gives each city one transparent number, built only from Qloo affinity ranks with no tuned weights:

spawn score = taste lift × platform fit × culture fit

  • Taste lift: how much fans of your comparable games concentrate in the city, against all gamers there (the mean of PC, console and mobile hit-game panels).
  • Platform fit: how strong your platforms are there.
  • Culture fit: how concentrated fans of your setting's films, shows and music are (1.0 when the game has no setting).

Worked example: for Delhi Gullies, an open-world game set in Delhi, Mumbai = 1.05 × 0.97 × 2.45 = 2.49, ahead of Delhi (2.12) and Dubai (2.06). Culture anchors such as Gully Boy and Arijit Singh carry the setting abroad, which genre tags can't do.

Does it beat an LLM alone? We measured it

Qloo's brief asks that an agent "outperform generic LLM-only approaches", so we tested that rather than assume it.

  • Partners: Qloo is specific where an LLM is generic. For 20 games, an LLM (gemma4:31b, no Qloo data) and Qloo each named 6 artists, podcasts, films and brands. The LLM gave the same names for many games: 32% of its artist picks recur in 3 or more games (Aphex Twin, Carpenter Brut, Perturbator), against 5% of Qloo's; films 15% vs 3%; podcasts 32% vs 20%, and Qloo could find only 51 of its 103 podcasts. Brands are the exception: Qloo's brand lists repeat more (67% vs 51%). This measure doesn't use Qloo's scores. Design fixed before any call.
  • Audience: Qloo matches the survey. For 10 genres, Qloo's female index for a panel of well-known games puts the genres in the same order as Quantic Foundry's survey of over 270,000 gamers, from Match 3 (69% female) to Sports (2%): Spearman ρ 0.997. The design was fixed before any call. An LLM's guess also matched (ρ 0.991), probably from memory of that published survey. Qloo measures the skew for whatever mix of comparable games a studio picks, including mixes no survey covers.
  • Country ranking: the LLM did better, and we publish it. We wrote 23 test games with no home-country setting and froze them before scoring. The truth is Google Trends interest by country for a real shipped game like each one, never used as an input:
Method True #1 is our #1 True #1 in our top 3 Mean ρ
Crowdspawn (Qloo spawn score) 1 / 23 1 / 23 0.11
LLM only (gemma4:31b) 4 / 23 7 / 23 0.54
Popularity (all gamers) 0 / 23 1 / 23 -0.33

We traced the cause to a city-level bias, then tried the obvious fixes on all 33 games. None closed the gap, so the shipped scorer is unchanged and every number is published, in the app and in the repo. The ranking does best where Qloo's cross-domain signal is strongest: games with a real-world setting, where culture anchors carry it (4 of 5 hits on the tuning set).

What we take from it: Qloo's value here is not guessing a country an LLM already knows. It's audience-specific partners where an LLM falls back on the same famous names, the measured audience, and a trace for every number.

How we built it

  • Backend: FastAPI on Python 3.12, storing plans, agent runs, the call trace and the Qloo cache in SQLite, or in Postgres when DATABASE_URL is set.
  • Qloo client: a rate limiter under Qloo's 5 requests per second, retries, a response cache, per-run call caps, a daily budget cap and a full call trace. The key is never logged, traced or sent to the browser.
  • LLM layer: provider-agnostic, using prompt-and-validate JSON. The live app runs Ollama Cloud (gemma4:31b); Gemini or any OpenAI-compatible endpoint work through one setting. Only one folder may name a provider, and a test enforces it.
  • Grounding: a validator rejects any city, name, number or citation that isn't in the Qloo results. The brief, the agent's answer and every chat answer go through it.
  • Frontend: Next.js 16 and React with live Server-Sent Events, pixel maps generated from Natural Earth data, and sound synthesised with the Web Audio API.
  • Quality: a Turborepo monorepo with types generated from the API's OpenAPI schema. 146 API tests at 94% coverage on recorded Qloo responses, plus 35 web tests (they fail if the evaluation numbers in the app and the README disagree), all in GitHub Actions CI.
  • Hosting: Vercel for the web app, Render for the API.

Challenges we ran into

  • Verifying the API before writing code. We checked every Qloo parameter with a live call and recorded it (docs/qloo-contract.md):
    • heatmap affinity is normalised per request, so only affinity_rank is comparable across calls;
    • some filters are silently ignored for some entity types, so our client detects that and refuses them;
    • locality names come back in local script (Київ, القاهرة).
  • An agent that can't hallucinate. Server-issued handles, cited answers and hard caps keep the agent honest without taking away its freedom to choose its own path.
  • Finding out the ranking isn't good enough yet. Our first scorer put London first for a game set in Delhi. We rebuilt it, tested it on games it had never seen, lost to an LLM, and published that instead of tuning on the test set.
  • The Qloo budget. 10,000 calls a month meant caching, per-run caps, week-long panel caches and bundled snapshots. Development, 33 evaluation games, a backtest and a 50-place snapshot all fit inside it.

Accomplishments that we're proud of

  • An agent that plans with Qloo tools and shows its work, but can't invent data.
  • Every number in a plan traces to the Qloo call behind it.
  • Culture anchors: a new way to turn films and music into geography.
  • An LLM-only baseline built into the product, and measured: Qloo's partner lists are far more specific to each game than an LLM's for artists, films and podcasts.
  • An honest evaluation: a frozen held-out set, two baselines, an independent survey check and a partner check, with the losses published in the product.
  • A plan a non-technical developer can read: plain charts with one-line takeaways, and a chat that won't answer beyond the data.
  • Lighthouse accessibility 100 on every page.

What we learned

  • Taste data shines on audiences and partners, with the right baseline. Raw affinity let names every gamer likes lead every list; ranking by lift against all gamers made the lists specific.
  • Measure before you claim. Qloo's audience data matched a large survey almost exactly; its country ranking didn't beat an LLM. Both results changed what we lead with.
  • The guard rails matter most. Grounding and citations make the difference between a demo and something a studio could trust.

What's next

  • Studio pilots: run plans for upcoming indie games, then compare them with each game's Steamworks sales by country after launch (apps/api/scripts/studio_validation.py is ready).
  • Other entertainment launches: the same pipeline for a tour (comparable artists in, cities out), a film's release markets or a podcast's ad markets.
  • Better confidence: report how much the comparable games agree, city by city.

Built With

  • claude
  • fastapi
  • nextjs
  • ollama
  • turborepo
Share this project:

Updates

Submission history