A chatbot will agree with any launch plan you give it. Oraqul checks it against what audiences actually like, and shows you the receipt for every claim.
Inspiration
Launch plans in media and entertainment rest on audience assumptions that nobody writes down: "our audience is 25–34 and loves X", "lead with this city". They are borrowed from a few comparable titles and instinct. When a launch underperforms, the team can see what happened but not which assumption was wrong.
Today a launch team pieces its audience plan together from a few comparable titles, a dashboard that answers one question at a time, a chat answer nobody can check, and instinct. A chatbot will agree with the plan it is given, and a generic AI planner writes scores and confidence from memory, so nobody can tell which claims are measured and which are invented. The money is spent before anyone finds the wrong assumption.
We wanted an agent that makes those assumptions explicit and checks each one against real taste data. Qloo's taste graph made that possible. Without it, a chat model can write a launch plan from training data, but it cannot know where an audience lives, what else they love, or which brands they trust.
What it does
Oraqul is a culturally grounded launch agent for teams that launch films, series, music, books, podcasts, games and live shows. The user describes what they are launching, where, and what they already have. Oraqul works out the category and the job:
- Build: a launch plan with positioning, audience, markets, partnerships, creative placement, publicity, community, timeline, a content calendar worked back from the release date, budget split, what to measure and risks. A full plan is one plan per territory, home market first.
- Audit: bring an existing plan and Oraqul pulls out each audience and taste assumption, tests it against Qloo, and marks it holds, weak, breaks, or could not test, quoting the sentence of the plan that makes the claim.
- Fix: audits the plan under the hood, then writes a better one that says what changed. After launch, the team adds aggregate results (sales or streams by region, age bands) and Oraqul rebuilds the plan around the audience that is really there.
Beyond the plan, it finds sponsors (the brands Qloo ranks for each territory) and open funds, runs scenario tests ("what if the opening audience is older?"), watches the plan for rival releases and slipping dates, and drafts pitches. Anything that leaves Oraqul goes out only after a person approves it. Other agents can plan through Oraqul over a hosted MCP server.
It works across markets: a Korean series, a Mexican album or a Nigerian novel is a normal entity, and cities everywhere are ranked in one list.
Who it's for and why now
Oraqul is for the teams that take culture to market: distributors, sales agents and studios releasing films and series; labels, managers and promoters releasing music and booking tours; publishers and publicists; podcast networks; game publishers and indie studios; and promoters and venues putting on live shows. Their questions are concrete. Is our core audience real? Which cities should we open in? Which artist, brand or cinema fits this audience? Does this territory need its own plan?
Today they answer those questions from a few comparable titles, a dashboard that answers one question at a time, and instinct. The money is spent before anyone learns which assumption was wrong, and the relaunch often repeats it. Generic AI planners make this worse, because they write confident audience claims from memory and nothing checks them.
Two things make a better answer possible now. Taste data such as Qloo's can say what an audience likes across film, music, books, brands and places, city by city and age band by age band, in every market, not only the US. And agents can now run the dozens of questions a launch needs in a minute. Oraqul joins the two, and keeps the model honest by letting only code set a number.
How we use Qloo
Qloo supplies the taste data: entity search, cross-domain affinity, tags, aggregate age and gender skews, location signals and audience comparison. Qloo is a taste graph, not a release catalogue, so Oraqul does not look up the launch by title. It describes the launch by comparable titles, talent, themes, partner brands and places, and asks Qloo about those.
On top of Qloo's values, code computes published formulas (lift over a baseline, partner fit, segment fit, rival overlap). The model never sets a number.
How we built it
Architecture. Oraqul is a TypeScript monorepo (pnpm, Turborepo). A Next.js web app on Vercel talks to a NestJS API on a VPS, with Postgres through Drizzle. The agent runtime is a module inside the API, and runs stream to the browser over server-sent events. Every Qloo call goes through one typed client in packages/engine, and each category's rules live in packages/packs.
Agents. A router reads the brief and picks the category and the job: build a plan, audit an existing one, or fix it. Each of the six categories (film and series, music, books, podcasts, games, live shows) has its own agent and rules, and they share one toolbox: resolve comparable titles, rank places, score partner brands, score rivals and compare audiences. Plans run a fixed pipeline, so the same brief runs the same tests. Only in open conversation does the model choose the next tool. Other agents can start and read plans through our hosted MCP server, and a local MCP server exposes the Qloo tools themselves.
Models. We are model-agnostic through the Vercel AI SDK. A fast model (Gemini Flash-Lite) reads the brief and plans the Qloo queries; a stronger writer model (GPT-5.4 mini) writes the plan. With no model key, a scripted planner takes over, so the demo and every test run offline.
Qloo. /search and /entities resolve comparable titles, including from IMDb IDs and Spotify links. /v2/insights gives cross-domain affinity, tags, age and gender skews, and place heatmaps, shaped by the launch's cities, age band, release country and genre. /v2/analysis/compare measures audience overlap, /v2/trending gives momentum, and scoring a list we choose ranks partner brands and rival releases.
Every reply. First, findings: the model reads the brief and shapes the questions, code asks Qloo, and each answer becomes one sentence, a finding. Every Qloo call returns { data, call }, and each call becomes a receipt. Then the reply: the model writes the plan from the findings and its launch knowledge, and code checks every line. A grounded line (a claim about taste, audience or place) must cite a finding. A launch-craft line is labelled playbook and cites nothing. A line that fails the check is dropped. Scores, verdicts and confidence are computed in code; the model never sets a number. A Wikidata check also drops partner brands that no longer exist. Only public entity names, city names and age bands go to Qloo. No personal data is sent.
Testing. Golden evals for every category run on every commit against recorded Qloo data. Live briefs, written the way a real team would write them, run end to end through the real agents and models, and a QA checker reads every plan. Playwright covers the screens.
One claim, traced
Here is one line from a real plan, followed back to the data.
- The brief. "I'm releasing a Nigerian crime thriller in about 4 months... We want to open in Lagos, London and Atlanta, mainly for men aged 25 to 34... It's in the world of Gangs of Lagos and King of Boys."
- The Qloo call. Code sends one
/v2/insightscall: artists only, Afrobeats only, with the three comparable films as the signal, Atlanta as the location, ages 25 to 34 and male. The comps themselves are excluded from the results. - The finding. Code turns the answer into one sentence: "In Atlanta, the Afrobeats artists that rank highest with your comps' audience aged 25 to 34 are Tems, Ayo Jay and Libianca."
- The plan line. The model writes: "Build the soundtrack and launch music around Tems and Ayo Jay, who rank highest with this audience in Atlanta." It is marked grounded and cites that finding; a line that cited nothing would have been dropped.
- The receipt. Click the line and the Evidence tab shows the exact call, its parameters, what Qloo returned and when.
Every one of the 85 Qloo calls in that plan has a receipt like this.
Challenges we ran into
- Keeping the model honest. The hardest part was making it impossible for the model to invent a number or an unsourced claim. We moved every score and verdict into code and added a line-by-line citation check.
- Qloo is a taste graph, not a catalogue. A brand-new title isn't in it, so we had to describe a launch through comparables, talent, themes and places instead of looking it up.
- Uneven coverage by place. Data for some markets and cities is thin. We tested and recorded coverage per market, and where data is too thin to rank, the plan says so plainly and lowers its confidence.
- Staying a direction, not a forecast. We deliberately give no box office, stream or revenue forecasts. Output is always holds, weak, breaks, or could not test.
Accomplishments that we're proud of
- Every claim about taste, audience or place cites a real Qloo finding, and a reader can tell measured claims from sourced facts and from launch craft.
- One engine serving six categories, plus an MCP server so other agents can plan through it.
- The audit-then-fix loop, which carries on after launch with real results.
- Honest gaps: what was not found, or is too thin, is stated with what would change the answer.
What we learned
Grounding is a product feature, not a prompt trick. When code owns the numbers and checks the citations, the model can focus on explaining and planning. The quality of the questions the model asks Qloo, shaped with cultural context such as a music scene, a release country, a city or an age band, decides how sharp the answers are.
What's next for Oraqul
- Probe more live subjects and markets and record Qloo coverage for each.
- Deeper post-launch loops: richer results imports and tighter launch-watch alerts.
- More partner and funding sources per territory.
- More categories and industries beyond media and entertainment.
Built With
- biome
- docker
- drizzle
- gemini
- mcp
- nest.js
- next.js
- node.js
- playwright
- pnpm
- postgresql
- qloo
- turborepo
- typescript
- vercel



Log in or sign up for Devpost to join the conversation.