BrandCompete
Autonomous competitive intelligence that watches your rivals, reasons over your brand, and publishes counter-campaign briefs, before your team opens Slack.
Inspiration
Competitive marketing moves fast. When a rival slashes prices, launches a sustainability line, or lands a viral comparison article, the gap between knowing and responding is measured in days, not minutes. Analysts scrape the web manually. Strategists debate in Slack. Copywriters start from a blank page. By the time a counter-campaign ships, the moment has often passed.
We built BrandCompete to close that gap.
The core idea: treat competitive response as an autonomous pipeline, not a meeting. Three specialised agents, ingest, reason, and publish, work in sequence, so a brand team goes from open-web signal to a grounded campaign brief in their own Notion workspace, with a full citation trail behind every decision.
We chose Gymshark as the default tenant because UK activewear is a perfect stress test: fierce D2C rivalry (Lululemon, Nike, ASOS), frequent pricing plays, and a brand voice that demands speed and authenticity. But the platform is white-label, swap a YAML config, and the same pipeline serves any brand.
What We Learned
1. Grounding beats generic generation
Raw LLM copy sounds impressive until a strategist asks "Why this angle?" Wiring Senso.ai brand facts (USPs, positioning, tone) into the Strategist agent, then passing a Vadalog-derived strategy angle into Gemini, produced briefs that felt on-brand rather than templated. Generative AI works best as the last mile of a grounded reasoning chain, not the first.
2. Explainable logic earns trust
Marketing teams don't want a black box. Prometheux's Vadalog rules give every counter-strike a named lineage. We modelled competitor moves as logical implications:
$$ \text{competitor_move}(C, \text{'pricing'}, \text{'high'}) \wedge \text{contains_term}(T, \text{'flash'}) \rightarrow \text{derive_strategy}(C, \text{'Affiliate Community Free Delivery & Accessories Hook'}) $$
$$ \text{competitor_move}(C, \text{'pricing'}, \text{'high'}) \wedge \neg \text{contains_term}(T, \text{'flash'}) \rightarrow \text{derive_strategy}(C, \text{'Value-Driven Multi-Pack Bundle Campaign'}) $$
When the dashboard shows which rule fired, stakeholders stop asking "did the AI hallucinate this?" and start asking "should we ship it?"
3. Demos need reliability as much as realism
Live Tavily sweeps are powerful but unpredictable. Caching snapshots to disk with a TAVILY_USE_CACHE toggle lets us demo on real crawled data without depending on live network conditions.
4. Autonomous systems need audit trails
Every published brief appends a row to cited.md, source URL, competitor event, Vadalog angle, and Notion page. Without that immutable lineage, "autonomous" quickly becomes "unaccountable."
How We Built It
BrandCompete is a full-stack Next.js application: agents, API routes, and a dashboard in one process.
The three agents
| Agent | Role | Integrations |
|---|---|---|
| Sentinel | Omnisearch sweep, MD5 dedup, severity classification | Tavily, Gemini, ClickHouse |
| Strategist | Brand-grounded strategy + copy draft | Senso, Prometheux, Gemini |
| Actor | Publish brief, log latency, capture payment | Notion, ClickHouse, x402 |
Pipeline flow
- Sentinel monitors the open web for competitor pricing, launches, and mentions
- Strategist retrieves brand USPs from Senso, derives a counter-angle via Prometheux Vadalog rules, and drafts on-brand copy with Gemini
- Actor publishes a structured campaign brief to Notion, logs latency telemetry, captures an x402 micropayment, and appends a citation trace to
cited.md
Key technical decisions
- Tenant config via YAML competitors, Tavily search profiles, and publish channel loaded server-side. No API keys in the UI; switching brands is an env var change
- Multi-mode fallback layer every integration degrades gracefully to local mocks so the platform runs 100% offline with zero credentials
- Real-time dashboard SSE event stream, Recharts competitor deep-dive trends, pipeline state animator, and a citation viewer
- x402 payment rail intelligence APIs are gated; each end-to-end campaign registers a $0.49 micropayment telemetry event
- Automated test suite 10 end-to-end checks covering tenant config through full agent pipeline and citation tracing
Sponsor stack
| Sponsor | Role |
|---|---|
| Tavily | Primary data layer - competitor pricing, launches, mentions, comparisons |
| ClickHouse | Event store, analytics, revenue telemetry |
| Senso.ai | Brand knowledge base - USPs, positioning, tone and publishing content using cited.md |
| Prometheux | Vadalog ontological reasoning - competitor move → counter-angle |
| Gensyn | Verifiable threat classification |
| Google Gemini | Classification, summarisation, grounded copywriting |
Challenges We Faced
Orchestrating three agents without a spaghetti monolith. We split responsibilities into separate agent modules with thin API trigger routes, keeping each agent independently testable. The dashboard pipeline visualiser reflects live state transitions so operators see where the pipeline is, not just whether it finished.
Making LLM output structurally reliable. Campaign briefs must contain exact Markdown sections. We combined strict prompt templates with local rule-based fallback copy when Gemini is unavailable - ensuring demos never break on format.
Deduplication at ingestion scale. Sentinel hashes every URL with MD5 and skips duplicates before classification, preventing alert fatigue and duplicate Notion pages.
Balancing "autonomous" with "safe." BrandCompete publishes to an owned Notion workspace - never impersonating or modifying a brand's production site.
Live demo fragility. The cached Tavily snapshot system was born from a rehearsal where a live API returned thin results mid-pitch. Freezing a real sweep to disk turned an anxious demo into a repeatable one.
White-label without code forks. Tenant YAML drives display name, competitors, search profiles, and publish targets - supporting multiple brands without maintaining separate codebases.
We set out to answer one question: Can an AI system respond to a competitor's move faster than a human team can schedule a meeting about it?
With BrandCompete, the answer is yes, and it leaves the receipts to prove it.
Built With
- clickhouse
- google-gemini
- nextjs
- prometheux
- senso.ai
- tavily
- typescript

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