Inspiration

Every film has to answer one question, role by role: who do we cast? Studios pay for casting analytics. Indie producers mostly get agent pitches and popularity charts. But popularity isn't fit. What matters for financing and marketing is whether an actor's fans already love projects like yours, and which new audiences they'd bring. A language model can only guess at that. Qloo measures it.

What it does

CastSignal is an AI casting agent for indie film and TV producers. You enter a project, 2 to 5 comparable titles and a shortlist for each role. The agent then:

  • Resolves every title and person in Qloo, and settles ambiguous names (Scream 1996 or 2022?) or asks you.
  • Scores each shortlist by fit (do their fans love your comps?) and reach (which audience segments do they add?), and plots everyone as Safe bet, Audience expander, Cult pick or Risky.
  • Surfaces crossover wildcards you never listed, such as comedians whose fans already love your comps.
  • Recommends the ensemble with the widest reach above a fit floor, with audience coverage shown before and after.
  • Says "Not enough Qloo data" instead of inventing a score.
  • Lets you change the plan in one sentence ("We need to reach women 35 to 44") and shows you exactly what changed.
  • Runs the same brief through the LLM alone and fact-checks it against Qloo. In our sample run, 15 of its audience claims held up, 5 were contradicted and 6 couldn't be verified.

How we built it

  • Stack: Next.js 16, React 19, TypeScript, Tailwind CSS 4 and zod, deployed on Vercel.
  • Agent: a manual Claude tool-use loop. Claude plans the calls and explains the picks.
  • Qloo endpoints: /search, /v2/insights (person fit with explainability, demographics, wildcard tags) and /v2/analysis/compare.
  • The model never produces a number. Every score comes from Qloo or from unit-tested TypeScript scoring and optimizer code. The server rejects any rationale that contains digits or cites evidence that doesn't exist.
  • Evidence ledger: every Qloo call is logged with its endpoint, parameters and latency, so each number on the board traces back to a call.

Challenges we ran into

  • Scores only compare within one query. Qloo normalizes affinity per call, so we rank within each call and show bands like "Top fit" instead of false precision.
  • Coverage gaps. Daniel Kaluuya resolves in Qloo but has no fit or demographic data against our comps. We made "no data" a first-class result rather than hiding it.
  • Actor tags are silently ignored. Qloo ignores person tags for actors, so actor wildcards use a popularity filter plus our own tag post-filter.
  • Keeping the LLM honest. We built server-side validation and rebuild the board deterministically from the evidence after the agent finishes.

Accomplishments that we're proud of

  • A real agent on live data: one sample run makes 25 live Qloo calls, all visible in the trace.
  • Changes that are explained: one sentence changes the plan, and the board shows why both picks changed.
  • The "Why Qloo?" tab: it shows concretely where an LLM's confident guesses break down against measured audience data.
  • Honest output: the app shows its limits instead of hiding them.

What we learned

Taste data is most valuable where intuition is weakest: cross-domain overlap and the audiences a cast adds, not just how famous someone is. Letting the model plan while deterministic code does the maths made the agent both flexible and trustworthy.

What's next for CastSignal

TV series mode with season arcs and recurring roles, momentum badges from Qloo trending data, and territory heatmaps for international sales and pre-sales.

Try it: https://castsignal.vercel.app

Built With

  • anthropic
  • claude
  • next.js
  • node.js
  • qloo
  • qloo-taste-ai
  • react
  • remotion
  • server-sent-events
  • tailwindcss
  • typescript
  • vercel
  • vitest
  • zod
Share this project:

Updates

Submission history