Method, and limits
Roomtone makes a narrow claim and states it precisely. This page is the whole contract.
What is measured
For a room R we ask Qloo for the 50 acts whose audiences sit closest to R's own crowd. That list is the room's local audience, expressed as names. This is a read of taste, not of draw — the benchmark page states the distinction with its evidence.
For an act A and a room R, Roomtone reports where A falls inside R's own distribution of those 50 acts — a percentile — rather than the raw affinity number.
The reason is that Qloo affinities are tightly banded. Every room's top 50 lands in roughly the top 0.03 of the 0–1 scale, so a raw 0.94 means almost nothing on its own. The percentile does not: an act that is not in a room's top 50 is below all 50 acts that most belong there, which is a real and bounded statement.
What is not measured
- Not draw, and not ticket sales. Qloo's room affinity describes a venue's local audience; it does not predict which touring acts will fill it. Tested against 149 documented plays: zero appeared in their venue's top 50, and ranking by popularity scored 0.995 on the same question. See the benchmark.
- Not an individual. Qloo affinities describe aggregate cultural co-occurrence. Roomtone never infers anything about a specific person, and sends no personal data to Qloo at all.
- Not every room. Some venues exist in Qloo's graph with no audience coverage. Roomtone says “Qloo has no taste signal for this room” rather than producing a profile.
- Not cause and effect. A low affinity is a signal that two audiences differ. It is not proof that a show would fail.
- Not venue capacity or calendar fit. Roomtone reads culture, not logistics.
Known measurement traps we hit
- Same-named venues. There is a dozen venues called “The Stone”. Qloo's
/analysis/comparesilently resolved ours to a Denver club. Every room in the catalog is therefore pinned by id and verified against its own geocode; four candidate rooms were dropped rather than shown wrong. - Entity mis-resolution. Qloo maps “Nate Barbrack” to “Nate Dogg”. An auto-selected top hit would have produced a confidently wrong booking read, so the picker labels weak matches and never auto-selects them.
- Missing data reads as zero. An early build reported a rate-limited request as “not measured”. Those are now separate states — a failed request throws rather than silently degrading.
- A capable endpoint that was not capable here.
/v2/analysis/compareis documented for audience comparison and returns only universal place categories in the hackathon environment. Rather than display a confident score built on “Tourist Attraction”, we switched the measurement. - Silently ignored parameters. Qloo ignores invalid parameters instead of erroring, so Roomtone pins ids explicitly and shows every request verbatim in the Evidence panel.
Qloo endpoints used
/search— resolve venue and act names to entity ids/v2/insights·filter.type=urn:entity:artist— room → acts, act → acts, act → room/v2/insights·filter.type=urn:entity:place— room → culturally adjacent rooms/v2/analysis/compare— available, but we stopped using it: in the hackathon environment it only returns generic place tags (“Place”, “Tourist Attraction”) that are true of every venue. Roomtone measures room-to-room overlap directly on act lists instead, which is both honest and legible./v2/audiences— cold-start reads with no entity signal
If you want to check our work
Every Roomtone view carries an Evidence panel listing each Qloo request verbatim — endpoint, parameters, resolved entity ids, status, latency, result count and whether it was served from cache. If a number on this site disagrees with the request underneath it, that is a bug worth reporting.