![]()
Decision-first source intelligence for startup ideas.
IdeaGo turns a rough product idea into a structured validation report with recommendation,
why-now framing, pain signals, commercial signals, whitespace opportunities, competitors,
evidence, and confidence.
<a href="https://github.com/Tendo33/IdeaGo/raw/v0.3.9/README_CN.md">简体中文</a> ·
<a href="#quick-start">Quick Start</a> ·
<a href="#what-lives-on-main">Branch Scope</a> ·
<a href="#how-it-works">How It Works</a> ·
<a href="https://github.com/Tendo33/IdeaGo/raw/v0.3.9/DEPLOYMENT.md">Deployment</a> ·
<a href="https://github.com/Tendo33/IdeaGo/raw/v0.3.9/ai_docs/AI_TOOLING_STANDARDS.md">ai_docs</a>
<a href="https://github.com/Tendo33/IdeaGo/raw/v0.3.9/LICENSE"><img src="https://img.shields.io/badge/License-MIT-green.svg" alt="License: MIT" /></a>
<img src="https://img.shields.io/badge/Python-3.10%2B-3776AB?logo=python&logoColor=white" alt="Python 3.10+" />
<img src="https://img.shields.io/badge/React-19-61DAFB?logo=react&logoColor=black" alt="React 19" />
<img src="https://img.shields.io/badge/FastAPI-0.115%2B-009688?logo=fastapi&logoColor=white" alt="FastAPI" />
<img src="https://img.shields.io/badge/Branch-main-111827" alt="Branch main" />
This README describes the main branch.
main is the anonymous and personal-deployment line of IdeaGo. It keeps the same Source
Intelligence V2 analysis engine as saas, but intentionally excludes hosted runtime concerns:
If you need the hosted product with auth, profile ownership, admin APIs, and SaaS deployment
behavior, switch to the saas branch.
mainIdeaGo is not just a competitor lookup flow anymore. The report contract is decision-first:
//reports/reports/:idThe codebase contains some additional shared/legal UI files, but the active router on main
stays intentionally small and anonymous.




pnpmMinimum useful secret:
OPENAI_API_KEYRecommended for better data coverage:
TAVILY_API_KEYGITHUB_TOKENPRODUCTHUNT_DEV_TOKENREDDIT_CLIENT_IDREDDIT_CLIENT_SECRETuv sync --all-extras
pnpm --prefix frontend install
cp .env.example .env
cp frontend/.env.example frontend/.env
Minimum practical configuration:
OPENAI_API_KEYCommon local runtime settings:
CACHE_DIRANONYMOUS_CACHE_TTL_HOURSFILE_CACHE_MAX_ENTRIESLANGGRAPH_CHECKPOINT_DB_PATHCORS_ALLOW_ORIGINSFrontend config on main is intentionally small:
VITE_API_BASE_URLVITE_SENTRY_DSN if desiredTerminal 1:
uv run uvicorn ideago.api.app:create_app --factory --reload --port 8000
Terminal 2:
pnpm --prefix frontend dev
Open:
pnpm --prefix frontend build
uv run python -m ideago
Open: http://localhost:8000
main ships with a simple docker-compose.yml that pulls the published image from Docker Hub:
docker compose pull
docker compose up -d
Optional: pin to a release tag instead of latest:
IDEAGO_IMAGE_TAG=0.3.9 docker compose up -d
If you prefer to build from source, the branch also includes a Dockerfile.
IdeaGo runs an explicit Source Intelligence V2 pipeline:
intent_parser -> query_planning_rewriting -> platform_adaptation -> sources -> extractor -> aggregator
That pipeline produces a decision-first report which is then persisted locally for later reopening.
flowchart TD
A["User idea"] --> B["POST /api/v1/analyze"]
B --> C["LangGraph engine"]
C --> D["Intent parsing"]
D --> E["Query planning + rewriting"]
E --> F["Platform adaptation"]
F --> G{"Local cache hit?"}
G -->|Yes| H["Return persisted report"]
G -->|No| I["Fetch six live sources"]
I --> J["Extract structured signals"]
J --> K["Aggregate findings"]
K --> L["Assemble decision-first report"]
L --> M["Persist report + runtime status"]
M --> N["History / detail / export"]
C -.-> O["SSE progress stream"]
Fixed source roles:
Public API on main:
POST /api/v1/analyzeGET /api/v1/reportsGET /api/v1/reports/{id}GET /api/v1/reports/{id}/statusGET /api/v1/reports/{id}/streamGET /api/v1/reports/{id}/exportDELETE /api/v1/reports/{id}DELETE /api/v1/reports/{id}/cancelGET /api/v1/healthmain does not expose auth, billing, profile, pricing, or admin APIs.
Important settings on main:
OPENAI_API_KEYOPENAI_MODELTAVILY_API_KEYCACHE_DIRANONYMOUS_CACHE_TTL_HOURSFILE_CACHE_MAX_ENTRIESLANGGRAPH_CHECKPOINT_DB_PATHCORS_ALLOW_ORIGINSOptional Reddit settings:
REDDIT_CLIENT_IDREDDIT_CLIENT_SECRETREDDIT_ENABLE_PUBLIC_FALLBACKREDDIT_PUBLIC_FALLBACK_LIMITREDDIT_PUBLIC_FALLBACK_DELAY_SECONDSOn main, public Reddit fallback is allowed by default unless you configure OAuth credentials.
src/ideago/api: FastAPI app, routes, middleware, schemassrc/ideago/cache: local report persistencesrc/ideago/config: runtime settingssrc/ideago/models: domain models and report contractssrc/ideago/pipeline: orchestration, extraction, aggregation, report assemblysrc/ideago/sources: six data-source adaptersfrontend/src/app: router, shell, navbar, error boundaryfrontend/src/features/home: main search experiencefrontend/src/features/history: local report historyfrontend/src/features/reports: report detail and progress viewsfrontend/src/lib/api: typed API client and SSE hookfrontend/src/lib/i18n: locale setup and translationsfrontend/src/components/ui: shared UI primitivesmain: anonymous/personal deployment linesaas: hosted/commercial lineSync rule:
mainsaas pulls from mainmainRun what applies before you call a change complete:
# Backend
uv run ruff check src tests scripts
uv run ruff format --check src tests scripts
uv run mypy src
uv run pytest
# Frontend
pnpm --prefix frontend lint
pnpm --prefix frontend typecheck
pnpm --prefix frontend test
pnpm --prefix frontend build
$ claude mcp add IdeaGo \
-- python -m otcore.mcp_server <graph>