Inspiration

I built Nivaria as a competitive intelligence tool that watched competitors' websites, pricing and launches. Teams found it interesting but not decisive. A marketing lead at a large data company told me something that stuck: tracking competitors isn't the pain, but a tool that changed their marketing strategy and grew sales would be worth paying for.

Website changes tell you what a rival did. They don't tell you who the rival is winning, or why. Qloo's taste graph does. So I rebuilt Nivaria around a different question: where is my rival's audience that mine isn't, and how do I go get it?

What it does

Nivaria is a taste gap agent for consumer brands. Name your brand, one or two rivals and, optionally, a city. The agent then:

Finds the audience gap. It takes the rival audience's top artists, films, TV shows, places and other brands from Qloo, scores the same entities against your audience, and surfaces the segments where the rival leads. Example: Starbucks vs Dunkin' in New York shows Dunkin' fans over-indexing on country pop (Florida Georgia Line 96 vs 81) and casual dining chains (Red Robin 96 vs 82).

Maps where each side leads. It compares both brands' Qloo heatmaps cell by cell across the city and pins the neighbourhoods where the rival's lead is widest (for Dunkin', mostly Staten Island).

Profiles who the audiences are. Age and gender affinity side by side, plus how Qloo tags each brand's positioning.

Writes a brief you can act on. It ranks the segments to win first, with a campaign hook and channels for each, built from the actual tastes in the data.

Every number in a brief comes from Qloo. The model cites entities and map cells, the server attaches Qloo's real scores, and any citation it can't verify is dropped. A plain LLM can only guess at a brand's audience from stereotypes. Nivaria shows you the measured difference.

How to try it

Live demo: https://nivaria.app Demo login: [email protected] / TasteGapJudge2026 Open one of the example briefs for an instant result, or run your own pair. A fresh run takes under a minute and you can watch the agent work step by step.

How I built it

Agent: a tool-use loop where the model decides which Qloo tools to call. Calls in the same turn run in parallel, the run is capped at 15 turns and 3 minutes, and each step streams to the UI as a live trace.

Qloo tools: brand and city search, cross-scored Insights across five domains (filter.results.entities to score our audience on the rival's top entities), heatmaps joined server side into a geographic gap, demographics, and Analysis Compare for positioning.

Verification: The model cites references, the server attaches Qloo's real numbers, and unverifiable citations and unsupported audience traits are removed before anything is shown.

Models: Gemini Flash as primary, with automatic fallback to a second Gemini model, Groq and OpenRouter if a provider is rate limited or down, so a run still finishes.

Product Design: a complete, live product: featured briefs and a cache for instant results, a one-click demo login, share links, Slack and Discord delivery, and per-visitor rate limits.

App: Node.js and Express, SQLite via sql.js, a vanilla JS front end, Leaflet with OpenStreetMap for the map, deployed on a DigitalOcean droplet behind Caddy.

Potential impact: small consumer brands priced out of enterprise audience research get a ranked, evidence-backed plan for winning a rival's audience in under a minute.

Guardrails: only brand, rival and city names ever reach the model (enforced by a privacy test), and a post-processor removes unsupported claims and keeps output clean.

What changed during the hackathon

Nivaria existed before as a B2B website monitoring tool. Everything Qloo powered was built during the submission period: the Qloo client, the six agent tools, the multi-provider agent loop, the geographic gap engine, the Taste Gap experience, the new landing page and the deployment. The old monitoring features are hidden in this build, and billing was removed.

Challenges I ran into

The first version of Nivaria monitored competitors' websites, pricing pages and launches for B2B teams. The product worked. The demand didn't. I sourced 100 accounts, contacted 20, opened 20 conversations and booked 7 demos, and every one of those demos was cancelled.

My early cold outreach also went to the wrong buyer: well-funded companies that already pay for enterprise competitive intelligence tools. One batch of about 42 emails got roughly one reply. The real buyer turned out to be small teams priced out of those tools.

The hardest feedback was that most teams don't feel competitor monitoring as a pain. Knowing what a rival changed on their website rarely changes what you do on Monday.

Building on Qloo had its own lessons. Searching "New York" returns the state before the city, which put the first maps upstate, so the agent now picks the city and drops venues outside its boundary. Qloo's comparison endpoint diffs brand tags rather than audiences, so I built the audience gap by cross-scoring instead. And trend data in the hackathon environment was flat, so I replaced "drift over time" with the geographic gap, which the data supports.

Accomplishments that I am proud of

  • Built and shipped the original Nivaria solo, from brand to billing to a live product
  • Rebuilt it around Qloo as a working agent, not a prototype, live at nivaria.app
  • Making sure the figures in a brief traces back to a Qloo response

What I learned

  • Monitoring isn't the product. Decisions are. People pay for intelligence that changes their strategy and grows sales, not for a feed of changes.
  • "What did my rival do?" is a weak question. "Who is my rival winning that I'm not?" is the one marketers act on.
  • Price for the buyer who is priced out. Small brands need audience intelligence as much as big ones.
  • Test the real API before trusting the docs. Several Qloo endpoints behaved differently from what I assumed, and building on real responses saved the product.

What's next for Nivaria

Weekly rival briefs by email, tracking several rivals at once, an MCP server so other agents can call the taste gap tools, and a self-serve tier for small brands priced out of enterprise audience tools.

Share this project:

Updates

Submission history