-
-
AI assistants now choose where people go out. Spotlit shows venues how often agents pick them.
-
Taste DNA from Qloo: tags by affinity, crowd age skew and what the crowd also loves.
-
A Qloo heatmap of where the crowd is, with rivals and a readiness checklist.
-
Eight real rivals found by Qloo taste overlap, each with a proxy agent built only from public data.
-
The agent card: the only facts the venue agent may say, published live as A2A.
-
The Agent Arena. Personas from Qloo segments ask a concierge, which asks venue agents over A2A.
-
Baseline: agents picked Low Tide 0 times out of 24, with every loss explained by a reason code.
-
Numbers come from code. The analyst only writes the words.
-
The Strategist turns losses into ranked fixes, each tied to evidence from the run.
-
Same seed, same 24 personas. Three fixes took Low Tide from 0 to 2 picks, measured and not guessed.
-
A live concierge asked 4 venue agents and picked Low Tide, with the score breakdown shown.
-
Every claimed venue gets a public page and agent endpoints for AI agents.
-
A real agent: Claude Code finds Low Tide through the Spotlit MCP server and gets the booking link.
-
The raw MCP result: Qloo taste match, fit and answer quality for every venue.
Inspiration
People are starting to ask AI assistants where to eat, drink and go out. The assistant answers with one or two names, and the guest never sees a list of ten. Big chains will adapt to this quickly. The small cocktail bar, the listening room and the neighbourhood cafe have no idea whether agents mention them at all, or why a rival gets picked instead.
We wanted to give independent venues what search analytics gave websites: a way to see how often agents choose you, why they choose someone else, and what to change. Taste decides where people go out, so Qloo's taste graph was the natural engine.
Try it: getspotlit.vercel.app · Code: github.com/rejuandevelopr/spotlit · No login needed for the demo venue.
What it does
Spotlit gives every venue a live agent, then tests how often other agents pick it.
- Find or describe your venue. Search Qloo's graph of places, or describe a venue that is too new to be listed. The description is mapped to real Qloo taste tags.
- Taste DNA. Qloo tags by affinity, crowd age skew, what the crowd also loves (artists, films, brands) and a heatmap of where that crowd is. Every number has a Qloo chip that opens the exact query behind it.
- Rivals. Nearby venues with the most taste overlap. Each rival gets a proxy agent built only from public Qloo data, so the fight is fair.
- Agent card. The facts your agent is allowed to say: hours, booking link, price, drinks, dishes, vibe and voice. A readiness score shows what is missing. It is published as an A2A agent card.
- Agent Arena. Personas built from Qloo taste segments ask a concierge agent for a night out. The concierge asks the top venue agents over A2A and scores every reply:
$$\text{score} = 0.6 \times \text{Qloo taste affinity} + 0.25 \times \text{fit for the plan} + 0.15 \times \text{answer quality}$$
Every loss gets a reason code: TASTE_GAP, INFO_GAP, PITCH_GAP or CLOSED.
- Report and Strategist. How many times agents picked you, who you lost to and why. The Strategist turns the losses into ranked fixes, each tied to evidence from the run.
- Measured lift. Accept the fixes and rerun with the same seed and the same personas. The difference is measured, not guessed.
- Real agents can use it. A public concierge, A2A endpoints for every venue, and an MCP server with three tools:
find_venue_for_taste,ask_venueandget_taste_dna. Requests from outside agents show up in the venue's Agent inbox.
Real results from the live app
- Low Tide Listening Room, a new venue we described from scratch in Greenpoint: agents picked it 0 times out of 24. 21 losses were taste, 2 were missing hours and 1 was a vague pitch. After adding hours, a booking link and a sharper pitch, the same 24 personas picked it 2 times. Readiness went from 50 to 85, and every INFO_GAP and PITCH_GAP loss was gone.
- Halftone House, the demo venue, went from 1 to 7 picks out of 60 after its fixes.
- Claude Code, connected through MCP, was asked for a candlelit soul and funk listening bar in Greenpoint. It found Low Tide first, asked its agent if it was open Friday, and returned the real booking link.
Spotlit only recommends. It never books, and a venue agent can only state facts that are on its card.
How we built it
- Next.js 15 and TypeScript, deployed on Vercel.
- Firebase Auth (Google sign in) and Firestore for venues, card versions, runs, rounds, actions and the inbox.
- Qloo is the engine.
/searchfinds places,/v2/tagsfinds taste tags, and/v2/insightsreturns tags, demographics, artists, films, brands, places and the heatmap. Personas, segments, rivals and 60% of every verdict come from Qloo. - Gemini through the Vercel AI SDK writes the words only: persona requests, venue pitches, the analyst summary and Strategist voice notes. All numbers, scores and reason codes come from code.
- Hand written A2A agent cards and endpoints for every venue, and a stateless MCP server at
/api/mcp. - Zod validates every model output, and Vitest covers scoring, persona determinism, readiness, ranking and the protocols.
Challenges we ran into
- Noisy place search. A search for a bar could return shops in other states. We added name ranking and a city check so the right venue comes first.
- Noisy tags. Some place tags were credit cards, star ratings or flooring materials. We filtered by tag subtype and removed near duplicates.
- Venues Qloo does not know yet. For described venues, the model can only pick from real Qloo tag ids returned by search, so it cannot invent tags.
- Keeping agents honest. Venue agents answer only from card facts and report which facts they used. Unclaimed rivals start every reply with "Unclaimed listing, public data only."
- Honest lift. A run where the card was already complete gave +0, which is correct. Instead of hiding it, the app explains why nothing changed and points to business ideas, like events and hours, that could move taste.
- Real agents ask in their own words. "NYC", "Brooklyn" and "New York" all had to map to one city, and words like "vinyl" had to resolve to taste tags, not to a TV show with the same name.
Accomplishments that we're proud of
- A full loop from taste data to a measured result: diagnose, fix, rerun the same personas, measure.
- A real outside agent (Claude Code over MCP) finding a venue that is not in Qloo at all, asking its agent a question and getting back a working booking link.
- Every number on screen can be traced back to the Qloo query that produced it.
- No fake numbers. Small or zero lifts are shown as they are.
What we learned
- Taste decides most agent choices. In our runs most losses were TASTE_GAP, and only missing facts or vague pitches could be fixed on the card. That honesty makes the product more useful, not less.
- Agents reward replies they can act on. Hours and a booking link matter more than clever copy.
- Keeping the language model out of the maths made results reproducible and much easier to trust.
What's next for Spotlit
- Weekly arena runs and alerts when a venue starts losing a segment.
- Event and programming ideas tested against Qloo segments before a venue commits to them.
- Real availability and booking integrations, so venue agents can confirm a table, not just share a link.
- More cities beyond New York, and support for more agent protocols as they appear.
Built With
- a2a
- firebase
- firestore
- gemini
- mcp
- nextjs
- qloo
- react
- tailwindcss
- typescript
- vercel
- vercel-ai-sdk
- vitest
- zod

Log in or sign up for Devpost to join the conversation.