Inspiration
AI agents can recommend anything, but a business cannot act on a recommendation it cannot check. A venue booker, a retail buyer or a restaurant group needs to know why an act or brand was picked, and which of their own rules it passed or broke. We built Taste Brain so every decision comes with proof.
What it does
Taste Brain joins two things: Qloo's audience taste data for a location, and the organization's own rules (budget ceilings, no-repeat windows, audience-size bands, brand safety), each linked to the policy line it came from.
- Qloo supplies the candidates. The order Qloo returns is the ranking. The LLM never ranks.
- A Rule Checker tests every candidate and records the value it read.
- A Grounding Auditor can veto anything without a Qloo result or a passing rule.
- Every refusal shows a Flip Point: the exact threshold that would turn it into a pass.
- Missing data is never guessed. An act with no booking terms is shown as unprovable, not approved.
- The agent never approves. A named human does, and every approve and refuse goes into a tamper-evident ledger.
The same engine runs three verticals (retail, restaurants, live-music venues) from one config file each.
How we built it
TypeScript, Node and Express on the server, React and Vite on the client, and a SQLite graph store for rules, offers and decisions. A fixed pipeline runs Profiler, Taste Explorer, Rule Checker, Strategist, Auditor and Approver. The Qloo REST client calls /v2/insights, /v2/tags and /search with throttling, retry with backoff and caching. The API key stays server-side and never reaches the browser.
Challenges
/v2/insightsreturns no score field, so we derive "fit" from Qloo's rank and label it as derived everywhere.- Ambiguous seeds (a name that matches several entities) are reported, never guessed.
- Real artists have no booking terms in any catalogue we hold. Instead of inventing figures, the engine waits for an operator-entered number.
- Keeping the public repo safe: no real identities, no entity ids, and a public gate (8 checks) plus 140 tests run in CI.
What we learned
Trust comes from what a system refuses to do. "Unprovable, not refused" and "a human must approve" made the product more credible than a confident ranked list.
Data honesty
Replay mode runs on invented sample data (labelled as such, not a Qloo answer). Live mode reads real Qloo data on each request. Every result shows which mode produced it.
What's next
More vertical packs, term import from a venue's own booking sheet, and a Taste Lift comparison against a plain LLM on larger request sets.
Built With
- express.js
- github
- node.js
- qloo-api
- react
- sqlite
- typescript
- vercel
- vite
- vitest
- zod
Log in or sign up for Devpost to join the conversation.