Inspiration

Which one becomes a hit musical?

Turning a film into a Broadway musical is a bet that can cost $20 million or more, and most bets lose. Since the pandemic, 46 new musicals opened on Broadway, costing about $800 million in total, and only 3 had turned a profit by September 2025 (The New York Times). The source film is usually picked on gut feel and fame.

Fame doesn't predict much. Big Fish, a famous film, closed on Broadway after 98 performances. Once, a small Irish film, ran 1,167.

Fame doesn't tell you

So I asked a different question: do the people who buy musical tickets already love this film? That is a taste question, and taste is what Qloo measures. Before building anything, I tested it on 58 real shows (below). It held up, so I built the agent around it.

What it does

Try it: the live site | the demo run | the proof | how it works

A producer pastes the films they're weighing, in plain words. In 1 to 2 minutes, the agent:

  1. Matches each title to one exact film in Qloo, and says so when a title like Ghost is ambiguous.
  2. Scores audience fit: how much fans of 6 hit movie musicals love each film, placed against 58 past Broadway adaptations.
  3. Flags films Qloo already links to Broadway, so you check the rights first.
  4. For the winner, plans the launch: who the audience is, where to tour, who to cast, which brands and media to partner with.
  5. Writes a one-page greenlight memo where every claim points to the tool result behind it.

Example 1: eight films, one stage

Notting Hill: strong fit, beats 97%

Eight films go in: Clueless, Ghost, Groundhog Day, Notting Hill, Hidden Figures, The Princess Bride, Sister Act 2, The Wedding Planner. Notting Hill wins: strong fit, beating 97% of past adaptations, in the band whose past shows ran a median 565 performances. Groundhog Day comes last (beats 24%). The Princess Bride and Sister Act 2 are flagged as already linked to Broadway.

The shortlist

Each film also gets two past shows that scored like it, so a producer sees the comparison, not just a number: Notting Hill "scores like Legally Blonde (595 performances) and Meet Me in St. Louis (252)".

The launch plan

Audience Where to tour

  • Audience: leans female (+0.53) and under 30 (+0.13 under 25, +0.23 for 25 to 29), and shares Romance, Comedy, Heartwarming and Charming with musical fans.
  • Tour: Tulsa, Philadelphia, Nashville and Birmingham, from where the audience over-indexes.
  • Talent: performers like Michelle Dockery and Rachel Brosnahan, musicians like Adele and Michael Bublé, each with a Qloo affinity score (0.89 to 0.94).
  • Partners: brands (Tommy Hilfiger, Calvin Klein), podcasts and TV shows this audience over-indexes on, for sponsorship and media buys.

Talent Partners

The memo

The memo

The memo is written for an investor. It has 4 reasons, risks and next steps, and each reason names the tool it came from (score_films, audience_profile, tour_markets). It prints to PDF.

Example 2: when every option is strong

Bridget Jones's Diary

A second live run with the site's "date night" example: When Harry Met Sally, Crazy Rich Asians, 13 Going on 30, Sleepless in Seattle, Bridget Jones's Diary. All 5 land in the strong band (88% to 100%), which is what you'd expect from romantic comedies. The score still separates them: Bridget Jones's Diary beats all 58 past shows, and Sleepless in Seattle gets the Broadway flag.

Second shortlist

Who it's for

  • Commercial producers choosing their next adaptation. Optioning a film's stage rights and developing a show takes years; Overture gives a first read on the audience in 1 to 2 minutes, before money is spent.
  • Rights holders and studios deciding which of their films to license for the stage. The same score tells them which titles musical fans already want.
  • Investors reading a pitch. The memo puts the score, the band's median run (565, 148 or 116 performances) and the risks on one page, with the evidence behind each line.
  • Touring presenters and marketers planning where to open and who to reach: the tour markets, talent and partner lists come from the same audience.

Design choices

  • Bands, not raw scores. An affinity of 0.862 means nothing to a producer. "Strong fit, beats 97%, past shows in this band ran a median 565 performances" does.
  • Flag, don't drop. A film Qloo already links to Broadway can score higher because of its stage version, so the agent keeps it in the list but marks it, instead of quietly hiding it.
  • Show every call. The cue sheet lists all 26 Qloo calls with status and time, so a judge or an investor can see the agent didn't make anything up.
  • A theatre, not a dashboard. Red curtain, poster billing for the shortlist, a stage-plot grid for the panels: it should feel like the industry it serves. Every page was checked on desktop and on a 390 px phone screen.
  • One comparison per run. The "AI alone" button exists so anyone can test the claim that Qloo makes the answer better, on their own films.

Why it's better with Qloo

Every run has a button that asks the same model to rank the same films with no Qloo data. Gemini alone put Notting Hill 6th of 8, calling it "too low-stakes for a large Broadway house". It put Groundhog Day 3rd, a film that did get a Broadway musical, which ran 176 performances. The model alone has no numbers to check its opinion against.

With Qloo vs AI alone

AI alone Overture (with Qloo)
Notting Hill ranked 6th of 8 1st of 8, beats 97%
Groundhog Day ranked 3rd of 8 8th of 8, beats 24%
Evidence opinion from training data measured affinity among musical fans
Tested against real outcomes no 58 Broadway shows
Tour cities, talent, partners guesses over-indexing markets and recommendations from Qloo
Rights check none flags films Qloo links to Broadway

The proof: 58 Broadway shows

How the test was built

I took every Broadway musical adapted from a film from Wikipedia's categories (132 candidates), kept those that opened from 1985 to 2023, and left out the 8 whose stage version was itself filmed (Hairspray, The Producers, Mean Girls, The Color Purple, Sunset Boulevard, Mary Poppins, Spamalot, Moulin Rouge!), because fans of the stage film would lift the source film's score. That left 58. Every source film was scored with the same Qloo rank call the app uses.

Proof stats

What it found

  • Fan-love score vs original run length: Spearman 0.42, permutation p < 0.001 (5,000 shuffles).
  • Fame alone: 0.16. With fame removed, the score still holds at 0.40.
  • Strong-fit third: median 565 performances. Middle: 148. Weak third: 116. That's 4.9x.
  • 53% of strong-fit shows ran 500+ performances, vs 20% of the weak third.

Every dot is one show

It isn't the panel I picked

Two other musical-fan panels give 0.31 and 0.36. An action-movie-fan control gives -0.07. Any group of musical fans finds the signal; action fans don't, which is what you'd expect if the score measures musical-theatre taste.

Robustness

How a new film lands on that scale

Qloo returned identical scores for the same film across separate batches, so a new film's score sits on the same scale as the 58. "Beats 97%" means its score is higher than 97% of the 58 source films; the band (strong, middle, weak) is the third it falls in, with that third's median run.

Two earlier ideas failed this kind of test (film taste by country, and predicting restaurant closures, AUC about 0.5). That's why I tested before building.

How I built it

The agent's cue sheet

The agent

Gemini (gemini-flash-latest, free tier) plans the steps and calls 7 tools through function calling. It may only state what a tool returned. If Gemini can't answer (my free credits ran out on October 24), the run switches to open-weight models on Groq's free plan (gpt-oss-120b, or gpt-oss-20b and Qwen when it's busy) and says so on screen. Smaller models sometimes tried to skip the research, so code now makes the agent call the audience, tour, creative and marketing tools before it may write the memo. In the demo run it made 26 Qloo calls in 7 steps, all shown live in the "cue sheet" with their status and timing.

Qloo, through the official MCP server

Every call goes through Qloo's qloo mcp server (from @qloo/qloo-harness), started on the server with the MCP SDK.

Seven Qloo tools

  • qloo_describe: resolve titles to exact entity IDs (other tools need IDs, or they return needs_input).
  • qloo_rank: score the films against the musical-fan panel.
  • qloo_entity_tags: themes, plus the "already on stage" check.
  • qloo_audience_demographics and qloo_compare_audiences: who the audience is and what it shares with musical fans.
  • qloo_where_popular: where the audience over-indexes, rolled up to touring markets.
  • qloo_recommend: performers, musicians, brands, podcasts and TV.

One request, redacted

Options are the producer's 8 films; signals are 6 musical-fan films (The Greatest Showman, Les Misérables, Mamma Mia!, La La Land, Chicago, Into the Woods).

One real request

qloo_rank { "option_type": "movie", "options": [8 film IDs], "signals": [6 film IDs] }
-> Notting Hill  0.862 -> beats 97%
   Clueless      0.858 -> beats 93%
   Groundhog Day 0.749 -> beats 24%

The app

Next.js 15 and TypeScript on Vercel's free tier, streaming each step as it finishes. The US tour map is drawn with d3-geo. Runs are saved to a private Vercel Blob store, so any run replays by link without new Qloo calls. Answers are cached, calls run one at a time, and live runs are limited to 4 per 10 minutes per visitor. The design is a "red curtain and stage plot": a cue sheet for the trace, poster-style billing for the shortlist. It works on a 390 px phone screen.

Setup: npm install, set QLOO_API_KEY, QLOO_BASE_URL and GEMINI_API_KEY (and optionally GROQ_API_KEY for the backup model), then npm run dev. Full steps in the README.

Data handling: keys stay on the server. Only film titles and public names go to Qloo. Results describe groups, never a person.

What this does not show

Limits

  • 58 shows is a small sample. The score shifts the odds; it doesn't predict one show's result.
  • Run length is a stand-in for success. Run lengths come from Wikipedia; long runs matched Wikipedia's long-running list (for example Billy Elliot 1,312 and Waitress 1,544), short runs weren't checked one by one.
  • Qloo's data is recent, so it measures how fans feel about these films today, not on opening night.
  • Touring leans on the musical-fan audience, so different films can share top markets: Tulsa led both example runs.
  • Book, score, cast, budget, theatre and timing all matter. Overture covers one input: whether the audience is already there.

Challenges

  • Leakage: shows that were filmed had to go, or the stage version lifts its own source film's score.
  • Ambiguous titles: 2 of 8 titles in the demo run came back needs_input from qloo_describe. The agent picks the likely film and says which one.
  • Older films: Qloo's location signals return nothing for older films, so touring comes from where_popular on the audience instead.
  • Serverless: the full harness is 130 MB. I wrote a small launcher that starts the MCP server with one dependency so it fits in a Vercel function.

What I learned

Back-test against an outcome that is driven by liking, with no leakage, before building anything. The two ideas that failed looked just as good on paper.

What's next

Test on West End and touring runs, add grosses where they're public, let producers save a slate and compare runs, and score stage-musical ideas that aren't films (books, albums).

Timeline: what existed before the event and what was built during it

  • Before October 16 (pre-existing): nothing. Overture is a new project.
  • During the event: all of it. October 18 to 20: research and the three back-tests (two failed, Broadway passed). October 20 to 21: the Qloo MCP client and cache, the Gemini agent with its 7 tools and the memo, the Next.js app, the proof and how-it-works pages, the video. October 24: the backup model on Groq, after the Gemini credits ran out.
  • Also entered in: the Qloo Agentic Hackathon (same project).
  • Third-party: Qloo Taste AI (through the Qloo hackathon harness and MCP), Google Gemini, Groq (gpt-oss-120b, gpt-oss-20b and Qwen as the backup), Wikipedia (Broadway run lengths), Next.js, Vercel, d3. AI assistance: built with Claude Code as my coding agent, which also helped draft this write-up; every number comes from the back-test or the live runs.

Built With

Share this project:

Updates

Submission history