Autonomous competitor intelligence — paste a startup URL, get the entire competitive landscape.
A 14-step agentic pipeline that discovers competitors, deep-researches each one, scores threat level, builds an interactive knowledge graph, and auto-publishes the result. Built end-to-end at the AWS Autonomous Agents Hackathon (Feb 2026) where it took 1st place overall.
🌐 Live demo: alfredsjoqvist.com/rivalmap
Give RivalMap a URL like linear.app. It then runs autonomously — no further input — through a chain of search, extraction, vision, voice, reasoning, and graph-write steps:
- Checks memory — Queries a Neo4j knowledge graph for anything it already knows about this company or its industry.
- Ingests internal context — Pulls pitch decks, briefs, and prior analyses from a connected Google Drive via an Airbyte connector.
- Discovers competitors — Fires three parallel Tavily searches (competitors, pricing, funding).
- Extracts pages — Tavily Extract pulls full content from the top competitor URLs.
- Names the rivals — Claude Haiku triages search noise down to 3–5 clean competitor names.
- Deep research — Tavily Search runs targeted per-competitor funding + pricing queries.
- Second-source intel — Yutori's Research API generates an independent markdown report.
- Visual analysis — Reka Vision analyses competitor website screenshots for brand + sentiment signals.
- Threat synthesis — Claude Sonnet performs the heavyweight reasoning: threat scoring, battlecard, TAM analysis.
- Writes to graph — Neo4j stores Startup / Competitor / Investor / Industry nodes with
COMPETES_WITH,FUNDED_BY,IN_INDUSTRYedges — so every run makes the next one smarter. - Stores skill — Senso's Context OS captures the analysis as a reusable skill for future agent runs.
- Self-deploys — Posts to a Render deploy hook so the agent ships its own updates.
- Voice input — Modulate Velma transcribes spoken queries with emotion + accent detection.
The whole pipeline finishes in ~60 seconds. The UI streams every step's reasoning in real time on the right-hand activity log — judges literally watched the agent think.
| Judging axis | What RivalMap shipped |
|---|---|
| Autonomy | Zero human in the loop after URL submission. Even the redeploy is agent-triggered. |
| Idea | Founders spend 10+ hours/week on competitor research; battlecards go stale before they're written. RivalMap collapses that to 60 seconds. |
| Technical implementation | 9 sponsor APIs wired into a single coherent pipeline, graph-grounded memory, multi-model routing (Haiku for triage, Sonnet for reasoning), streaming activity log. |
| Tool use | Integrated 9 of the 11 sponsor stacks (vs. the 3-tool minimum). |
| Presentation | 3-minute live demo: run on linear.app, then run on figma.com and watch the graph light up with prior knowledge — "the agent learned." |
┌─────────────────────────┐
URL input ─────────────► │ Next.js Server Action │ ◄── Voice input (Modulate)
│ (page.tsx) │
└───────────┬─────────────┘
│
▼
┌─────────────────────────┐
│ analyze.ts orchestrator│
└───┬──┬──┬──┬──┬──┬──┬──┘
│ │ │ │ │ │ │
┌───────────────┘ │ │ │ │ │ └──────────────┐
▼ ▼ ▼ ▼ ▼ ▼ ▼
┌───────────────┐ ┌─────────────────────────┐ ┌────────────────┐
│ Neo4j │ │ Tavily │ Yutori │ │ │ Render deploy │
│ (memory + │ │ Claude │ Reka │ │ │ hook (CD) │
│ graph write)│ │ Senso │ Airbyte │ │ └────────────────┘
└───────┬───────┘ └────────────┬─────────┘
│ │
└───────────┬───────────┘
▼
┌─────────────────────────┐
│ Streaming UI updates │
│ • Activity log │
│ • Competitor table │
│ • Force-directed graph │
│ • Stats / battlecard │
└─────────────────────────┘
Frontend — Next.js 16 (App Router + Server Actions), React 19, TypeScript, Tailwind CSS v4, shadcn/ui, lucide-react, react-force-graph-2d.
AI — Anthropic Claude (Haiku 4.5 for fast triage, Sonnet 4.6 for deep reasoning) via @anthropic-ai/sdk.
Data + agents — Tavily (Search + Extract + Research), Neo4j AuraDB, Airbyte Agent Engine, Senso Context OS, Yutori Research API, Reka Vision API, Modulate Velma, Render deploy hooks.
Deploy — Render (one web service + one cron worker for scheduled re-analysis).
src/
app/
page.tsx # Pipeline UI + streaming orchestration
layout.tsx # Root layout + global styles
actions/ # Server actions, one file per integration
analyze.ts # Orchestrator — sequences every pipeline step
claude.ts # Anthropic Haiku + Sonnet
tavily.ts # Tavily Search
tavily-extract.ts # Tavily Extract
neo4j.ts # Memory read + graph write
airbyte.ts # Airbyte Agent Engine OAuth + pull
senso.ts # Senso Context OS search + ingest
yutori.ts # Yutori Research API
reka.ts # Reka Vision API (screenshot analysis)
modulate.ts # Modulate Velma (voice in)
render.ts # Render deploy hook (self-deploy)
history.ts # Run-history persistence
analyze.ts # Orchestrator entry-point
upload.ts # File upload handling for internal-context PDFs
components/
activity-log.tsx # Real-time step-by-step execution log
competitor-table.tsx # Threat / funding / pricing matrix
knowledge-graph.tsx # Interactive force-directed graph
positioning-map.tsx # 2-D competitive positioning
radar-chart.tsx # Feature-coverage radar
feature-matrix.tsx # Side-by-side feature comparison
stats-bar.tsx # Top-line metric cards
analysis-export.tsx # JSON export for downstream tooling
document-upload.tsx # Internal pitch-deck uploader
voice-input.tsx # Modulate Velma voice capture
ui/ # shadcn/ui primitives
lib/
api-logger.ts # Structured request/response logging
pdf-report.ts # PDF battlecard generator
utils.ts # cn() + shared helpers
public/ # Logos, favicons, marketing assets
git clone [email protected]:AlfredSjoqvist/autonomous-agents.git rivalmap
cd rivalmap
npm install
cp .env.example .env.local # fill in the API keys you have access to
npm run dev # → http://localhost:3000# Core (required)
ANTHROPIC_API_KEY=
TAVILY_API_KEY=
NEO4J_URI=
NEO4J_USERNAME=
NEO4J_PASSWORD=
NEO4J_DATABASE=
# Integrations (each step gracefully degrades if its key is missing)
AIRBYTE_CLIENT_ID=
AIRBYTE_CLIENT_SECRET=
AIRBYTE_CONNECTOR_ID=
AIRBYTE_CUSTOMER_NAME=
SENSO_API_KEY=
YUTORI_API_KEY=
REKA_API_KEY=
MODULATE_API_KEY=
RENDER_DEPLOY_HOOK_URL=Missing-key steps are skipped at runtime rather than crashing, so a partial-credential install still produces a useful run.
Built at the AWS Autonomous Agents Hackathon, SF (Feb 27 2026) by Alfred Sjöqvist and team. 1st place overall.
MIT