Skip to content

vectorleap-pulse/venture-analyst

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Venture Analyst

Five AI agents dissect your startup idea in parallel - market, competition, risk, monetisation, synthesis - and return a scored verdict in real time.


Screenshots

Landing — submit your idea

Live dashboard — agents streaming in parallel

Final report — scored verdict


How it works

Submit a one-line idea. Four specialist agents immediately fan out, each running concurrently and streaming their findings token by token. Once all four finish, a synthesis agent merges the outputs, scores the idea from 0–100, and issues a final verdict.

idea submitted
      │
      ├─── Market Research  ──┐
      ├─── Competitor Intel ──┤  (parallel)
      ├─── Risk Assessment  ──┤
      └─── Monetisation     ──┘
                               │
                         Synthesis
                               │
                         score + verdict

Events stream over SSE as they happen - thinking, tool calls, tokens, completion - so the UI updates live without polling.


Running locally

You need: Python 3.11+, uv, Node.js 18+, pnpm, and API keys for OpenAI and Tavily.

# 1. Backend
cd backend
cp .env.example .env          # add OPENAI_API_KEY and TAVILY_API_KEY
uv sync --group dev
uv run uvicorn main:app --reload

# 2. Frontend (new terminal)
cd frontend
pnpm install
pnpm dev

Open http://localhost:3000.


Agents

Agent What it investigates Searches the web
Market Research TAM, trends, target users
Competitor Intel Top competitors, positioning gaps
Risk Assessment Legal, technical, execution risks
Monetisation Revenue models, pricing channels
Synthesis Merges all outputs → score 0–100

API

Three endpoints, nothing more:

POST /api/validate           { idea }  →  { job_id }
GET  /api/stream/{job_id}              →  SSE stream
GET  /api/result/{job_id}              →  scored result

Every SSE event is a flat JSON object:

{ "agent": "market_research", "type": "token", "data": "..." }

Event types in order: thinkingtool_calltool_resulttokencomplete. The stream closes on system.done.


Stack

Backend - FastAPI · Uvicorn · Pydantic v2 · OpenAI · SSE-Starlette · Tavily · Loguru · Ruff · Mypy

Frontend - Next.js App Router · Turbopack · shadcn/ui · Tailwind CSS · Zustand · Framer Motion


Project layout

backend/
├── main.py                   ← FastAPI app + CORS + Loguru
├── api/routes.py             ← three endpoints
├── core/
│   ├── orchestrator.py       ← asyncio.gather fan-out
│   ├── streaming.py          ← SSE helpers
│   └── job_store.py          ← in-memory job registry
├── agents/
│   ├── base.py
│   ├── market_agent.py
│   ├── competitor_agent.py
│   ├── risk_agent.py
│   ├── monetisation_agent.py
│   └── synthesis_agent.py
└── schemas/                  ← Pydantic event / request / response models

frontend/
├── app/
│   ├── page.tsx              ← landing + idea input
│   ├── validate/page.tsx     ← live streaming dashboard
│   └── result/[jobId]/       ← final scored report
├── components/analysis/      ← AgentOutputCard, ActivityFeed, SynthesisOutput …
├── components/report/        ← ValidationScore
├── hooks/useAgentStream.ts   ← EventSource → Zustand
└── store/agentStore.ts       ← global state

Linting

# backend - ruff + mypy in one shot
cd backend && uv run python lint.py

# frontend - ESLint
cd frontend && pnpm lint

About

An Agentic AI & Full Stack portfolio project aims to analyze venture idea.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 73.2%
  • Python 22.8%
  • CSS 3.4%
  • JavaScript 0.6%