Pressure-test your ideas with AI.
Nexora is an AI-powered decision analysis platform that simulates a multi-agent debate between expert personas to evaluate, compare, and evolve business ideas and personal decisions. Instead of a single generic AI response, Nexora runs a structured reasoning pipeline — Planner → Research → 6-Agent Debate → Judge — to produce a scored verdict with actionable insights.
| Analyze | Evolution | Compare |
|---|---|---|
![]() |
![]() |
![]() |
| Debate Thread | Verdict & Scores | History |
|---|---|---|
![]() |
![]() |
![]() |
- Multi-Agent Idea Analysis — Six AI expert personas (Founder, Investor, Market Analyst, Technical Expert, Product Strategist, Judge) debate your idea from opposing viewpoints before delivering a final verdict.
- Idea Evolution — Generate three improved variations of your concept, then let the agents pick the strongest one. Supports iterative evolution loops with score tracking across rounds.
- Idea Comparison — Submit two ideas for a side-by-side debate with per-idea scoring on difficulty, market potential, and risk level.
- Structured Reasoning Pipeline — Every analysis follows: Planner (classify & scope) → Research (competitors & trends) → Debate (6 agents) → Judge (verdict + scores).
- Granular Scoring — Difficulty, Market Potential, and Risk Level scored 1–10 with animated bar visualizations.
- Full Transparency — The complete agent debate is visible with progressive message reveal and animated transitions.
- History & Persistence — All analyses are auto-saved to a database and can be replayed, viewed, or deleted from the History page.
- Export — Copy results to clipboard or export as PDF.
- Dual Mode Detection — Automatically detects whether the input is a business idea or personal decision and adapts agent personas accordingly.
| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite (SWC) |
| Routing | React Router v6 |
| State | TanStack React Query |
| UI Components | shadcn/ui + Radix UI primitives |
| Styling | Tailwind CSS (custom dark "arena" theme) |
| Backend | Supabase (PostgreSQL + Deno Edge Functions) |
| AI Model | Google Gemini 3 Flash |
| Testing | Vitest + Testing Library |
src/
├── components/ # React components
│ ├── ui/ # shadcn/ui primitives
│ ├── AnalysisPipeline.tsx # Animated 4-stage loader
│ ├── CompareInputForm.tsx # Side-by-side idea input
│ ├── ComparisonPanel.tsx # Comparison results display
│ ├── DebatePanel.tsx # Main debate results display
│ ├── ErrorBoundary.tsx # Top-level error boundary
│ ├── EvolutionLoopPanel.tsx # Iterative evolution UI
│ ├── EvolutionPanel.tsx # Evolution results display
│ ├── IdeaDebateLogo.tsx # Logo component
│ ├── IdeaInputForm.tsx # Main idea input form
│ └── NavLink.tsx # Navigation link component
├── hooks/ # Custom React hooks
│ ├── useComparison.ts # Compare two ideas
│ ├── useDebate.ts # Analyze a single idea
│ ├── useEvolution.ts # Evolve an idea (standalone)
│ ├── useEvolutionLoop.ts # Iterative evolution loop
│ └── useHistory.ts # Fetch/manage saved analyses
├── integrations/
│ └── supabase/ # Supabase client & generated types
├── pages/ # Route-level components
│ ├── Index.tsx # Main app (3 modes)
│ ├── HistoryPage.tsx # Past analyses
│ └── NotFound.tsx # 404 page
├── types/ # TypeScript type definitions
│ ├── comparison.ts
│ ├── evolution.ts
│ └── ideadebate.ts
└── lib/
└── utils.ts # Utility functions (cn)
supabase/
├── config.toml # Supabase project config
├── functions/ # Deno Edge Functions
│ ├── analyze-decision/ # Main analysis pipeline
│ ├── compare-ideas/ # Side-by-side comparison
│ └── evolve-idea/ # Idea evolution
└── migrations/ # PostgreSQL migration files
- Node.js 18+ and npm (or Bun)
- A Supabase project with Edge Functions enabled
- A Google Gemini API key (or Lovable AI gateway key)
git clone https://github.com/ishwarsoni/nexora.git
cd nexora
npm installCreate a .env.local file in the project root:
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_PUBLISHABLE_KEY=your-anon-keyFor the Supabase Edge Functions, set the API key as a secret:
supabase secrets set LOVABLE_API_KEY=your-api-keynpm run devThe app will be available at http://localhost:8080.
npm run build
npm run previewnpm test # Run tests once
npm run test:watch # Watch modesupabase functions deploy analyze-decision
supabase functions deploy compare-ideas
supabase functions deploy evolve-ideaUser submits idea
↓
┌─────────────┐
│ Planner │ Classify: business idea or personal decision
└──────┬──────┘ Extract: industry, problem, target users
↓
┌─────────────┐
│ Research │ Identify: competitors, trends, risks
└──────┬──────┘ Find: market gap / opportunity
↓
┌─────────────┐
│ Debate │ 6 expert agents argue for/against the idea
└──────┬──────┘ Each references prior arguments
↓
┌─────────────┐
│ Judge │ Final verdict: GOOD IDEA / NEEDS IMPROVEMENT / NOT RECOMMENDED
└─────────────┘ Scores: difficulty, market potential, risk (1-10)
| Agent | Role |
|---|---|
| 🚀 Optimist Founder | Champions scale and potential |
| 💰 Investor Skeptic | Probes financial risks and flaws |
| 📊 Market Analyst | Evaluates market size and timing |
| ⚙️ Technical Expert | Assesses feasibility and dev challenges |
| 🎯 Product Strategist | Examines UX, retention, and positioning |
| ⚖️ Judge | Delivers the objective final verdict |
| Verdict | Meaning |
|---|---|
| GOOD IDEA | Strong concept with clear potential |
| NEEDS IMPROVEMENT | Promising but has significant gaps |
| NOT RECOMMENDED | High risk with limited upside |
Single table idea_evaluations storing:
| Column | Type | Description |
|---|---|---|
id |
UUID | Primary key |
idea_title |
TEXT | First 100 chars (display) |
idea_description |
TEXT | Full idea text |
domain |
TEXT | personal, business, evolution, evolution-loop |
judge_verdict |
TEXT | Final verdict string |
confidence_score |
INTEGER | 1–10 confidence |
full_result |
JSONB | Complete analysis payload |
created_at |
TIMESTAMP | Auto-generated |
All endpoints are Supabase Edge Functions (no JWT required):
| Endpoint | Method | Body | Returns |
|---|---|---|---|
/functions/v1/analyze-decision |
POST | { idea } |
Full debate result with verdict |
/functions/v1/evolve-idea |
POST | { idea } |
3 evolved ideas + winning pick |
/functions/v1/compare-ideas |
POST | { ideaA, ideaB } |
Side-by-side scores + recommendation |
MIT — Copyright (c) 2025 Ishwar Soni





