Skip to content

AlfredSjoqvist/autonomous-agents

Repository files navigation

RivalMap

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


What it does

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:

  1. Checks memory — Queries a Neo4j knowledge graph for anything it already knows about this company or its industry.
  2. Ingests internal context — Pulls pitch decks, briefs, and prior analyses from a connected Google Drive via an Airbyte connector.
  3. Discovers competitors — Fires three parallel Tavily searches (competitors, pricing, funding).
  4. Extracts pages — Tavily Extract pulls full content from the top competitor URLs.
  5. Names the rivals — Claude Haiku triages search noise down to 3–5 clean competitor names.
  6. Deep research — Tavily Search runs targeted per-competitor funding + pricing queries.
  7. Second-source intel — Yutori's Research API generates an independent markdown report.
  8. Visual analysis — Reka Vision analyses competitor website screenshots for brand + sentiment signals.
  9. Threat synthesis — Claude Sonnet performs the heavyweight reasoning: threat scoring, battlecard, TAM analysis.
  10. Writes to graph — Neo4j stores Startup / Competitor / Investor / Industry nodes with COMPETES_WITH, FUNDED_BY, IN_INDUSTRY edges — so every run makes the next one smarter.
  11. Stores skill — Senso's Context OS captures the analysis as a reusable skill for future agent runs.
  12. Self-deploys — Posts to a Render deploy hook so the agent ships its own updates.
  13. 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.


Why it won

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."

Architecture

                            ┌─────────────────────────┐
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   │
                └─────────────────────────┘

Tech stack

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).


Repo layout

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

Running locally

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

Environment variables

# 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.


Team

Built at the AWS Autonomous Agents Hackathon, SF (Feb 27 2026) by Alfred Sjöqvist and team. 1st place overall.

License

MIT

About

Autonomous Agents Hackathon 2026

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors