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.
简体中文 · Quick Start · Branch Scope · How It Works · Deployment · ai_docs
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:
- no login
- no profile system
- no Supabase requirement to boot
- no admin dashboard
- no billing or pricing UI
If you need the hosted product with auth, profile ownership, admin APIs, and SaaS deployment
behavior, switch to the saas branch.
IdeaGo is not just a competitor lookup flow anymore. The report contract is decision-first:
- recommendation and why-now
- pain signals
- commercial signals
- whitespace opportunities
- competitors
- evidence
- confidence
- anonymous idea submission
- SSE progress streaming
- local file-cache persistence for report history
- report detail and markdown export
- local SQLite checkpoints for LangGraph state
- no account ownership model
//reports/reports/:id
The codebase contains some additional shared/legal UI files, but the active router on main
stays intentionally small and anonymous.
- Python 3.10+
- uv
- Node.js 20+
pnpm
Minimum useful secret:
OPENAI_API_KEY
Recommended for better data coverage:
TAVILY_API_KEYGITHUB_TOKENPRODUCTHUNT_DEV_TOKENREDDIT_CLIENT_IDREDDIT_CLIENT_SECRET
uv sync --all-extras
pnpm --prefix frontend installcp .env.example .env
cp frontend/.env.example frontend/.envMinimum practical configuration:
OPENAI_API_KEY
Common local runtime settings:
CACHE_DIRANONYMOUS_CACHE_TTL_HOURSFILE_CACHE_MAX_ENTRIESLANGGRAPH_CHECKPOINT_DB_PATHCORS_ALLOW_ORIGINS
Frontend config on main is intentionally small:
VITE_API_BASE_URLVITE_SENTRY_DSNif desired
Terminal 1:
uv run uvicorn ideago.api.app:create_app --factory --reload --port 8000Terminal 2:
pnpm --prefix frontend devOpen:
- frontend: http://localhost:5173
- backend health: http://localhost:8000/api/v1/health
pnpm --prefix frontend build
uv run python -m ideagoOpen: 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 -dOptional: pin to a release tag instead of latest:
IDEAGO_IMAGE_TAG=0.3.9 docker compose up -dIf 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:
- Tavily for broad recall
- Reddit for pain and migration language
- GitHub for open-source maturity and ecosystem signals
- Hacker News for builder sentiment
- App Store for review-cluster pain
- Product Hunt for launch positioning
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/health
main 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_ORIGINS
Optional Reddit settings:
REDDIT_CLIENT_IDREDDIT_CLIENT_SECRETREDDIT_ENABLE_PUBLIC_FALLBACKREDDIT_PUBLIC_FALLBACK_LIMITREDDIT_PUBLIC_FALLBACK_DELAY_SECONDS
On 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 adapters
frontend/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 primitives
main: anonymous/personal deployment linesaas: hosted/commercial line
Sync rule:
- shared product work lands on
main saaspulls frommain- do not move hosted-only runtime dependencies back into
main
- Core engineering contract: ai_docs/AI_TOOLING_STANDARDS.md
- Backend conventions: ai_docs/BACKEND_STANDARDS.md
- Frontend conventions: ai_docs/FRONTEND_STANDARDS.md
- Settings and env vars: ai_docs/SETTINGS_GUIDE.md
- Deployment runbook: DEPLOYMENT.md
Run 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


