For judges · the first screen is the answer; the rest is the evidence

Qloo finds the fit. Check the terms. Know when to pass.

The decision desk

Qloo finds the audience fit. The agent chooses shows and drafts the outreach. The quote desk then compares a single-show pilot under the buyer's budget and target-market CPM cap. Minimum placements and fees count; downloads are not assumed to be delivered ads. Missing terms stay held. Quote inputs remain in the browser.

01 · RequestAsk for the whole offer

Price, minimum placements, fees, available dates, category restrictions, quote expiry and target-market ad impressions. Official contact routes are linked where verified.

02 · ChallengeSee the switching price

Compare taste, popularity and lowest CPM on the same shortlist and limits. Editing a term invalidates its review. Taste is never turned into predicted sales.

03 · Keep the reasoningSave inputs and memo

Reloading recomputes against this run and today's date, requiring review again. A separate, opt-in scenario uses invented terms with conspicuous labels.

Try the scenario: on the current two-show coffee shortlist, hypothetical prices of $200 / $150 per placement with a three-placement minimum give $600 / $450 packages. With the stated $1,000 budget, $60 CPM cap and 10,000–20,000 target-market ad impressions, Home Cooking fits. Raise its price above $200 and The Sporkful becomes the preference. These are invented terms, not actual quotes or savings. Taste agrees with popularity in this example. The earlier three-show QA scenarios remain in the linked record.

A real constraint, separately sourced: Software Defined Talk's rate card lists $600 per episode with a three-ad minimum, a minimum $1,800 before unknown additional fees. A hypothetical $1,000 pilot budget already rules it out. No delivery or Qloo score is assumed for that show.

Local operational check: the latest requested round completed coffee / sneakers / turntable in 31 / 33 / 36 seconds. Earlier 35 / 29 / 49-second runs remain; turntable missed the 45-second target then. A prior 42-second result was rejected after source review found an ended show, WTF, missing from our directory. The official finale record now blocks new host-read outreach. Review also caught unsupported free-form selection claims; the interface now uses the actual shortlist comparison and per-show evidence. All attempts are retained; these are not a controlled speed trial or buyer outcomes.

Does Qloo change the choice? With the same hypothetical terms across three recorded runs, taste prefers Nintendo Voice Chat and popularity prefers Giant Bombcast for the turntable brief. They agree for coffee and sneakers. Both comparators use the same Qloo-derived shortlist; this is a behavior check, not proof of better advertising outcomes.

Sources: decision rules and browser checks, all three quote scenarios, all focused-run attempts. The current 125-second product film combines edited real UI captures, motion graphics, an illustrative AI opening and synthetic narration. It is not continuous execution footage or a customer pilot. Its coffee result is the real-provider run recorded locally on 27 October at 09:33 UTC; scenario terms are invented. The older full-analysis example below remains dated historical evidence.

In a retrospective test, which ranks a show with a detected sponsor relationship above one without that detected relationship? 216 US podcasts, 62 brands (61 with Qloo data), strict labels. The main test was locked first; the genre prior and other brands' Qloo score were added later.

The brand's own Qloo score beats the average of other brands' Qloo scores by 8 points (95% interval 4 to 13), for 47 of 61 brands: the signal is about this brand's buyers, not podcasts in general. Dashed line: a coin flip. results-strict.json and robustness.json, strict.

Holds · Meta loop14 → 3

Tests naming an interest Meta lacks, before and after the agent's rewrite (11 runs, plan locked first). A code gate keeps the 3 out of the plan you lock. Details

Holds · drafts17 of 18

Rate requests and host reads pass the code checks on 10 products; drafts for different shows now share 60% of their words, down from 96%. Details

Not shown · agent ranking21 vs 25

On the same shows the agent found 21 real sponsorships, top popularity 25. Three locked runs, no better ranking. Details

Holds · brand specific47 of 61

Brands where their own Qloo score beats other brands' scores on the same shows, +8 points on average (95% interval 4 to 13). Details

The test: which podcasts do brands sponsor?

Sponsor reads in the shows' own episode notes (public RSS, 2,124 Apple US chart shows in 12 genres, up to 40 episodes from the past year) are the answer key; Qloo never sees them. For each brand, Qloo ranks the shows by how much the brand's audience likes them, and we check how often a show with a detected sponsor relationship ranks above one without it (AUC; 0.50 is a coin flip). Missing labels do not prove no advertising occurred. A show counts as sponsored when it reads the brand in at least 2 episodes of the past year.

Locked first: hypotheses, measures, baselines and pass rules were fingerprinted with SHA-256 and pushed to the public repo before any held-out show was read (PREREGISTRATION.md, commit c4d6732), and the analysis code before any score was fetched. The pilot shows (Apple's US top 200) are not in the test, which uses Apple's US charts in 12 genres. Check the fingerprints on any OS with python scripts/podcast/verify_lock.py.

Ranking the shows byStrict labels: 216 shows, 62 brandsPre-registered: 259 shows, 76 brands
Qloo affinity for the brand (what Taste Brief uses)0.647 (0.60 to 0.70)0.663 (0.61 to 0.71)
Ad volume: how many other brands the show carries0.5820.581
Qloo popularity of the show0.5260.517
Apple chart rank in its genre0.5220.528

95% intervals resampling both brands and shows, leaving out Quince (no Qloo data); the pre-registered brand-only intervals are narrower (0.611 to 0.684; 0.630 to 0.697). On shows carrying 3 or more other brands, so both sides face the same entry rule, ad volume reaches 0.615 and 0.627 and Qloo 0.651 and 0.664.

Pre-registered primary hypotheses H1–H3 pass on both labels

The shortlist a buyer sees

In plain words: on these historical chart-show labels, the combined ranking finds 1.9 detected sponsor relationships per brand in its top 10; Apple's chart finds 0.8.

In each ranking's top 10, Qloo finds 1.6 sponsored shows on average, ad volume 1.6, the chart 0.8, random 0.8. Qloo and ad volume together, the H3 combination, find 1.9, ahead of ad volume alone by +0.03 to +0.76 and of Qloo alone by +0.00 to +0.75 (1.7 against 1.3 and 1.5 on the pre-registered labels). An exploratory count. The app uses the combined rule for one candidate ordering (public/rank.js); its agent-selected shortlist from Qloo's full catalogue is a different output.

Exploratory checks, not pre-registered

Labels: 43 of 100 random matches of the pre-registered dictionary were sponsor reads, so a stricter label (whole word plus a sponsor cue nearby) was declared in DEVIATION-1.md before any analysis: 82 of 100. Claude read both samples; a person then read the strict 100 blind and found the same 82 (above). Sponsor reads in notes miss dynamically inserted ads; US shows and brands that Qloo knows by exact name only. The test checks Qloo's brand-to-podcast affinity (the same call the app makes) on chart shows, not the app's picks from Qloo's whole catalogue. Files: results-strict.json, results.json, robustness.json, recency.json; scripts in scripts/podcast/.

Open shows: where a category goes next (not conclusive)

A buyer also wants to book before rivals get there. So for each category we took the shows where no brand of that category had a sponsor read in the older episodes (all but the 10 newest; shows with 20 or more episodes), and asked which of those open shows the category moved into in the 10 newest episodes. Categories (footwear, meal kits, insurance and 34 more) were set by hand from what each company sells: categories.json.

Ranking the open shows byPicks the show the category moved into (AUC, mean of 12 categories)95% interval
Qloo affinity for the category's brands0.580.48 to 0.67
Ads already run, other categories0.500.39 to 0.61
Apple chart rank0.420.35 to 0.51

12 categories, 43 moves into an open show. Qloo is above a coin flip in 7 of the 12 categories and ahead of the chart in 8. The interval includes a coin flip, and one category carries much of the mean: apparel at 0.88; without it, 0.55. So this is a hint, not a result. The app still shows which shows are open, because a buyer wants to know where rivals already advertise, and ranks them by Qloo, which did best here; it does not claim the open shows are where rivals go next.

Exploratory, added 22 Oct 2026, not pre-registered. A first version counted each brand separately (0.64); brands of one category share the same shows and moves, so the independent review asked for one number per category, given here. Qloo's scores were read after the newest episodes aired. open-shows.json, scripts/podcast/open_shows.py.

The agent checks its own picks before you see them

When the agent submits its brief, the app scores each Meta interest with Qloo on the audience of a direct rival the agent names but never used (up to three names, tried in order; never a seed or a cited result; if Qloo knows none of them, the closest uncited brand from the run, and the page says so). Strong is 0.9 or more, fair 0.8 to 0.9. A pick below 0.8, or one Qloo cannot score for that audience, goes back to the agent once with the scores, to replace with a result it already has or to drop; the rewritten brief is checked again and both rounds are shown on the page and in the interests CSV. Since 22 Oct the same check also looks each interest up in Meta's interest search (one batched request), and an interest Meta does not have goes back the same way, with Meta's nearest names when it has any, and the instruction that no targeting test may name it.

What the rewrites change. On 10 benchmark products (cases 3 to 12 of the benchmark below), one live run each: the agent rewrote 5 briefs. Each first and final brief was graded on the benchmark's held-out competitor, a brand fixed on 21 Oct that the agent never saw. In the 7 cases where that brand is not the agent's own rival, three briefs were rewritten. Together they dropped six picks Qloo could not score for that audience and added three: one at 0.9 or more (Casamigos, for a hard seltzer), one fair (Care/of, 0.82) and one with no exact match in Qloo (Clinique). The share of picks at 0.9 or more went from 74% to 80%, mostly because unscorable picks left. So the check mainly removes interests nobody can verify; it rarely finds better ones. The agent gets one rewrite, and the second check is shown as it comes out. Exploratory, 10 runs. docs/selfcheck-eval.json, scripts/selfcheck-eval.mjs.

What the Meta check changes. Plan locked before any run (docs/meta-loop/PLAN.md): the same 10 benchmark products plus the page's example, one live run each, first brief against final brief. Targeting tests that name an interest Meta does not have: 14 in the first briefs, 3 in the final ones. Share of interests that exist in Meta as named: 54% to 89%. The guard, picks at 0.9 or more on the benchmark's held-out competitor (8 runs where that brand is not the agent's rival): 80% to 76%, inside the 10-point cost the plan allowed. The plan's bar was at most 1 run of 11 with such a test left; 3 runs had one, so the bar is missed. Since then a gate in plain code (readyTests in public/verdict.js, tested) keeps any test that names a missing interest out of the locked plan and marks it held. The current contract requires explicit selected entities and verified Meta IDs; unknown or failed lookups also hold a test. This is a finite evidence check, not a guarantee of launch eligibility. The agent gets one rewrite. docs/meta-loop/results.json, scripts/meta-loop-eval.mjs.

The outreach drafts are checked in code too, on 10 products (the first is the page's own product, in Chicago): does the email body ask for rate, downloads, host-read slots, dates and category exclusivity, carry the proposed code and open with the show's name; does any draft hold a number or a listed product claim the input did not give; does the host read say a number twice, pad, or run past 80 words. Since 22 Oct each draft is written from that show's own description and tags. The latest run passed 17 of 18; the one flag is the checker reading "40" in E-40, a rapper's name Qloo returned, not an invented number. Drafts for different shows of one product (the 6 products with two or more drafts) now share 60% of their email words and 31% of their host-read words once the show's name and code are taken out (word overlap, mean over pairs), down from 96% and 82% before: they are no longer one template with the name swapped. Earlier runs: 11 of 18 on the first, mostly false alarms in the checker, then 18 of 18 twice. One case matches the wrong Qloo brand (Money for Monarch Money), so its drafts name the wrong reference brand; the file reports the matched name for every case. A pass is a code check, not a person's review. docs/outreach-eval.json, scripts/outreach-eval.mjs.

Does the agent choose better shows than a fixed rule?

No measurable difference. The plan was pushed before the run (docs/agent-vs-rule/PLAN.md, with one logged change before any result: the model does not accept a forced tool call). For each brand of the strict podcast check, Qloo's 20 podcasts for its audience, the ad data with the brand's own name removed, and four ways to pick three shows: the agent (the app's own prompt and tools, brand name withheld), the page's fixed rule, top taste fit and top popularity. A hit is a pick whose own notes name the brand.

Who picks the three showsHits, 48 brandsPicks outside the ad data
The agent2022
The fixed rule (sells ads, no category brand, then taste fit)195
Top taste fit, among shows in the ad data240
Top popularity, among shows in the ad data250

Agent minus rule: +0.02 hits per brand (95% interval −0.04 to +0.08; agent ahead for 2 brands, rule for 1, tied for 45). They chose the same three shows for 24 of the 48. Taste fit and popularity alone score a little higher on this measure, because the agent and the rule both lean toward shows where no rival is found yet, while brands often buy where rivals already are (the open-shows check above is the other side of this). The agent also picks shows we have no ad data for 22 times, which can never count as a hit. 10 brands had no show in the ad data among their 20 and 4 could not be run (3 times the model did not pick, once Qloo had no data). When that happens in the app, the page's fixed rule picks the shows and the page says so (Chosen by the fixed rule). So the agent's value is not a better ranking: it gives a reason for each pick and weighs whether the show's subject suits the product. docs/agent-vs-rule/results.json, scripts/agent-vs-rule.mjs.

Again, on the same shows. An AI review we ran pointed out that the agent could pick shows outside the ad data while taste and popularity could not. A second plan, committed before the run (docs/agent-vs-rule/PLAN-2.md), gives every policy the same list: the shows of the 20 that are in our ad data, with each show's description and tags for the agent, as the app now gives them. 48 brands: the agent's picks held 20 real sponsorships, the fixed rule's 19, top taste fit 23, top popularity 24. Agent minus rule +0.02 per brand (−0.06 to +0.10); minus taste −0.06 (−0.15 to +0.02); minus popularity −0.08 (−0.19 to 0, at the edge). The agent and the rule chose the same three for 31 brands; 3 times the model did not pick. The result holds: no better ranking from the agent. docs/agent-vs-rule/results-same.json.

And with popularity in view. The agent was never told each show's popularity, which the strongest simple pick uses. Since 22 Oct the app's tool gives it and the prompt asks the agent to weigh it as reach; a third plan, committed first (PLAN-3.md), reran the same-shows test with that: agent 21, fixed rule 20, top taste fit 24, top popularity 25 (agent minus popularity −0.08 per brand, −0.21 to +0.02). Still no better ranking; the agent's picks match the rule's for 33 of 48 brands, and 3 times the model did not pick (those brands are left out for every policy). The two runs leave out different brands, so their totals are not the same set: on the 45 brands in both, the counts are identical (agent 20, rule 19, taste 23, popularity 24), so showing popularity changed nothing. docs/agent-vs-rule/results-pop.json.

This is the benchmark's held-out grading, moved inside the run: a pick that fits only the agent's own seed brand is the one most likely to be noise. It costs a few Qloo calls (one per entity type scores every pick of that type, plus a search for names the run did not return) and, when something fails, one more model turn. src/selfcheck.js, tested in test/selfcheck.test.js.

Benchmark: 20 briefs, graded on a competitor the agent never saw

Same model (Claude Sonnet 5.5), 20 products and cities, each brief written from one reference brand with and without Qloo. Every suggested Meta interest is looked up in Qloo by its exact name and scored on a held-out competitor's audience in that city (Allbirds briefs on Veja, Lululemon on Alo Yoga), and looked up in Meta's own interest search (Marketing API).

Who wrote the interests0.9+ on the held-out competitorTargetable in MetaBoth
Taste Brief (with Qloo)86 / 140 · 61%74 / 140 · 53%49 / 140 · 35%
Same model, no data, told to name specific brands, artists and shows27 / 136 · 20%65 / 136 · 48%18 / 136 · 13%
Same model, no data, as the app asks it1 / 115 · 1%36 / 115 · 31%0 / 115 · 0%

On Qloo, +42 points against the stronger baseline (95% interval +32 to +53, ahead in 19 of 20 briefs). On Meta alone it is close: Meta has dropped many niche brands and shows. On both, +22 points (+10 to +34). Negative control: graded on an unrelated brand in the same city (paired before the run: Allbirds briefs on Babbel), Taste Brief's picks at 0.9+ fall from 86 to 37 of the 139 that could be graded both ways; the named baseline from 27 to 9 of 135. Most of the fit is specific to the category.

Qloo and Meta measure fit and whether an interest exists, not ad results. The Meta and Both columns come from docs/benchmark/combined.json, where the no-data baseline was run again (27 of 136 at 0.9+ on Qloo there); meta-targeting.json counts every pick. Scripts: scripts/benchmark*.mjs.

Historical 22 October walkthrough: wool running sneakers, $120, New York

Closest brand: Allbirds (Qloo knows the brand, not this shoe). Second city: London. Live run on 22 Oct 2026 at 09:12 UTC, 144 seconds, 31 Qloo calls, 10 of them chosen by the agent, including the podcast ranking. It was the recorded demo through 22 October; the current replay is the 27 October coffee run. Only the owner can replace the recorded example. The video shows this run in the real app; its other scenes are motion graphics of the same numbers. It replaced a run from 08:05 UTC that had counted Lululemon, which also sells running shoes, as apparel only.

Ask first, chosen by the agent with its own reason ("Absolutely Not has 18 advertisers found, a footwear-adjacent brand (Lululemon) already there and popularity 0.99; Liz Moody and A Beautiful Mess both sell ads, fit a wellness and design-minded audience, and have high popularity"): Absolutely Not (0.954; 18 advertisers, Lululemon among them), The Liz Moody Podcast (0.904; Drink LMNT, Athletic Greens, MasterClass) and A Beautiful Mess Podcast (0.911; Drink LMNT, Shopify, Wayfair, MasterClass). The fixed rule skips shows where a brand of the category already advertises, so it would have asked Armchair Expert with Dax Shepard (one advertiser), A Beautiful Mess and With Whit. Each show's rate request and host read are written from its own description; the Absolutely Not read opens "I say absolutely not to a lot of things, but I'm saying absolutely yes to this one." Proposed codes ABSOLUTELY, LIZ and BEAUTIFUL; rates, reach and dates are left for the show to answer.

Self-check on the audience of Rothy's, a rival the agent named and did not use, and in Meta's interest search: the first draft had 8 interests, all fair or strong on Rothy's, but only 2 in Meta (Everlane, Bombas). The agent replaced the six, and the rewrite has 6 of 7 in Meta: Everlane, Bombas, Peloton, ClassPass, Herschel Supply Co and Fjällräven; Warby Parker is not. Of the three tests, the third names Warby Parker, so the historical gate held it back: that recording showed 2 of 3 passing its checks, and plan 045aa688 (09:17 UTC) held those two. The current contract is stricter: an older targeting plan without explicit selected IDs is held rather than inferred as ready.

Plain AI, no data · 1 of 6 at 0.9+

Running · no scoreSustainable fashion · not in QlooHoka · 0.908On Running · not in QlooNew York Road Runners · not in QlooPatagonia · no score

Taste Brief · 7 of 7 at 0.9+

Bombas 0.965Warby Parker 0.964 ClassPass 0.963Peloton 0.958 Everlane 0.957Herschel Supply Co 0.917Fjällräven 0.915

Scored on Allbirds' own audience in New York, so this shows fit and is partly circular (Taste Brief's picks come from Qloo); the self-check and the benchmark above are the held-out versions. In Meta, the plain guess has 4 of its 6 (Hoka and On Running are missing), Taste Brief 6 of 7.

All 21 items in that brief cite results Qloo returned in the run, with matching ids and values. The test plan is locked with a SHA-256 fingerprint and a server receipt before any spend (real results get verdicts only when the receipt matches), run from a planning sheet, and read back from the Ads Manager export by the rule fixed in advance. Press Try with sample numbers after locking to see it work; sample numbers are labelled, and we ran no ads.

Decision: ask the three shows for rates this week, each with its own code, and keep the usual Meta ad as the control: test the usual creative on fans of Everlane, Bombas, Peloton and ClassPass, and a new creative (a city run that ends in a Catskills weekend) on the broad audience. The third test waits for an interest Meta has.

Reproduce it

27 October local validation: 136 tests passed. The new decision desk and focused-run checks are above. The preceding full-analysis QA is retained here: The latest passing local QA result for each of three declared cases produced draft-ready shortlists at 44, 35 and 36 seconds, and full results at 101, 103 and 96 seconds. Coffee was rerun after a citation-feedback fix; the preceding 99-second coffee result retained a flagged audience claim. All attempts are retained. These observations meet the declared 45/120-second targets but are not a latency guarantee or a buyer outcome. Five known archival shows are excluded from new host-read outreach. Unknown publishing status remains unknown. Creative tests stay held until their exact copy is reviewed. The older screenshots in this evidence section remain the 22 October recording; the current walkthrough is linked in the decision-desk section. See the validation record and all development attempts. These checks are not a human buyer study.

  1. Fastest: open the demo and press See a real run now. It shows the last real run of the example instantly, with when it was recorded.
  2. For a fresh run: 25 free live runs a day are shared by all visitors, no code needed; after that the page says it runs on sample data.
  3. Click the example Wool sneakers · New York and press Find my shortlist. A live run shows progress as it happens; the podcast shortlist normally appears first, while the optional Meta checks continue afterward.
  4. In the result, open Compare offers and price limits. Use Try a labelled scenario to reproduce the switching-price example, or enter a real publisher offer only after checking its source. The downloaded decision memo records the exact entity, terms, delivery range and review state used for comparison.
  5. The strip above the result says Live run on real Qloo data. Sample data is labelled as such.
  6. Qloo rankings and the model's wording vary a little between runs.
Open the demo

What the checks prove, and what they don't

Code: agent, podcasts, evidence checks, grader, Qloo client.