AI Board of Directors — Multi-Model Deliberation
Submit any business question. Three AI models from competing providers debate it in real-time across multiple rounds, converging on a unified recommendation. Like having a boardroom of advisors on demand.
The Concept
Real boards of directors bring diverse perspectives, challenge assumptions, and force sharper thinking. This platform does the same with AI — three models from Anthropic, OpenAI, and Google each bring different reasoning strengths.
The debate format matters. Models don't just answer independently — they respond to each other's arguments, identify blind spots, and build on strong points. The result is better than any single model alone.
Key Differentiators
- Multi-round deliberation with convergence detection
- Complexity auto-assessment before debate begins
- BYOK support — users can bring their own API keys
- Real-time streaming — watch the debate unfold live
- 9 model combinations across 3 quality tiers
- Export to Email, Markdown, or JSON
The Three AI Advisors
How Deliberation Works
The deliberation engine orchestrates a structured multi-round debate. Each round builds on the previous one, with models responding to each other's arguments until convergence is detected.
Deliberation Pipeline
Step-by-Step Process
-
User Submits a Question Any business question: strategy, pricing, hiring, product decisions, market analysis, risk assessment. Free-form text input with optional context.
-
Complexity Auto-Assessment The system analyzes the question's complexity to determine the optimal number of deliberation rounds. Simple questions get 2 rounds. Complex multi-faceted problems get 4-5 rounds.
-
Round 1: Initial Positions All three models independently analyze the question. Each provides their initial perspective, key considerations, and preliminary recommendation. No model sees another's response yet.
-
Round 2+: Cross-Examination Each model receives the other two models' previous responses. They identify points of agreement, challenge weak arguments, raise counterpoints, and refine their positions. This is where the real value emerges.
-
Convergence Detection The system monitors for convergence: when models start agreeing on core recommendations. If convergence is reached early, the debate ends efficiently. If disagreements persist, additional rounds continue.
-
Unified Summary A final synthesis is generated: areas of consensus, remaining disagreements, the majority recommendation, minority opinions, and concrete action items. This is your "board resolution."
Live Deliberation Example
Model Tiers & Combinations
Three quality tiers, each with three model combinations. Choose based on question complexity and budget. Higher tiers use more capable (and expensive) models.
GPT-4o Mini
Gemini 1.5 Flash
GPT-4o
Gemini 1.5 Pro
GPT-4 Turbo
Gemini Ultra
9 Model Combinations
| All Available Combinations | ||||
|---|---|---|---|---|
| # | Tier | Claude (Anthropic) | GPT (OpenAI) | Gemini (Google) |
| 1 | Low | Haiku | 4o-mini | 1.5 Flash |
| 2 | Low | Haiku | 4o-mini | 1.5 Flash |
| 3 | Low | Haiku | 4o-mini | 1.5 Flash |
| 4 | Mid | 3.5 Sonnet | GPT-4o | 1.5 Pro |
| 5 | Mid | 3.5 Sonnet | GPT-4o | 1.5 Pro |
| 6 | Mid | 3.5 Sonnet | GPT-4o | 1.5 Pro |
| 7 | High | 3.5 Opus | GPT-4 Turbo | Ultra |
| 8 | High | 3.5 Opus | GPT-4 Turbo | Ultra |
| 9 | High | 3.5 Opus | GPT-4 Turbo | Ultra |
Each tier offers 3 rotation variants that adjust model order and prompting strategy for variety.
Authentication & Billing
Supabase handles auth. Stripe handles payments. Two tiers: Free (5 sessions/month) and Pro (unlimited). BYOK users bypass billing entirely.
Free Tier
- 5 deliberation sessions per month
- Access to Low tier models only
- Basic export (Markdown)
- 7-day session history
- Supabase email/password auth
- No credit card required
Pro Tier
- Unlimited sessions per month
- Access to all 3 tiers (Low, Mid, High)
- Full export (Email, Markdown, JSON)
- Unlimited session history
- Priority processing
- Stripe subscription billing
Authentication Flow
Billing Details
| Stripe Integration | |
|---|---|
| Payment processor | Stripe Checkout + Customer Portal |
| Subscription model | Monthly recurring. Cancel anytime. |
| Usage tracking | Session count stored in Supabase. Resets monthly on billing cycle date. |
| Upgrade flow | In-app button → Stripe Checkout → Redirect back → Instant access |
| Downgrade | Via Stripe Customer Portal. Access continues until current period ends. |
| BYOK bypass | Users with their own API keys don't need Pro — they pay providers directly |
BYOK — Bring Your Own Keys
Users can supply their own API keys for Anthropic, OpenAI, and Google. Keys are encrypted with AES-256-GCM and stored securely. BYOK users bypass subscription billing entirely.
How BYOK Works
-
User Navigates to Settings API Key management section in their account settings.
-
Enters API Keys One field per provider: Anthropic (sk-ant-...), OpenAI (sk-...), Google (AIza...). Can provide any combination — don't need all three.
-
Keys Are Encrypted Each key is encrypted with AES-256-GCM before being stored. The encryption key is derived from a server-side secret. Keys are never stored in plaintext.
-
Validation Check A minimal API call is made to each provider to verify the key is valid and has the required permissions. Invalid keys are rejected immediately.
-
Session Uses User Keys When the user starts a deliberation, their keys are decrypted at runtime and used for API calls. Costs go directly to the user's provider accounts.
Encryption Details
| AES-256-GCM Implementation | |
|---|---|
| Algorithm | AES-256-GCM (Galois/Counter Mode) — authenticated encryption |
| Key derivation | Server-side ENCRYPTION_KEY environment variable (256-bit) |
| IV (nonce) | Random 12-byte IV generated per encryption operation |
| Auth tag | 128-bit authentication tag prevents tampering |
| Storage format | iv:encrypted:authTag (base64 encoded, stored in Supabase) |
| At rest | Encrypted in Supabase (PostgreSQL). RLS ensures per-user isolation. |
| In transit | HTTPS/TLS for all API communication |
| Key rotation | Users can update keys anytime. Old encrypted values are overwritten. |
Benefits of BYOK
- No subscription needed — use the platform free forever
- Direct billing — pay providers at their rates (often cheaper at volume)
- Full tier access — all 9 model combinations available
- No session limits — unlimited deliberations
- Enterprise-friendly — keys stay under your org's billing
Security Guarantees
- Never logged — keys don't appear in server logs
- Never cached — decrypted only during API call execution
- Per-user isolation — RLS prevents cross-user access
- Deletable — users can remove keys at any time
- Auditable — key usage is logged (not the key itself)
Export & Session History
Every deliberation is saved. Export results via email, Markdown, or JSON. Reference past sessions anytime. Build a library of AI-advised decisions.
Export Formats
| Available Formats | ||
|---|---|---|
| Formatted HTML email with the question, all rounds of deliberation, and the final unified summary. Sent to the user's registered email address. Includes action items as a checklist. | Pro | |
| Markdown | Clean Markdown document with headers, model attributions, and the convergence summary. Perfect for pasting into Notion, Obsidian, or any documentation tool. | Free |
| JSON | Structured JSON with all metadata: models used, round-by-round responses, confidence scores, convergence status, timestamps. Ideal for programmatic processing or archiving. | Pro |
Session History
| What's Stored Per Session | |
|---|---|
| Question | The original user question and any provided context |
| Tier & Models | Which model combination was used |
| All Rounds | Complete text of every model's response in every round |
| Convergence Data | When/if convergence was detected, which round, agreement % |
| Final Summary | The unified board resolution with action items |
| Metadata | Timestamp, duration, token usage, cost estimate |
| User Notes | Optional user-added notes post-deliberation (for context) |
History Features
- Searchable — Full-text search across all past sessions
- Filterable — By date, tier, model, topic
- Shareable — Generate a read-only link for team members
- Bookmarkable — Star important deliberations
- Deletable — Users can remove any session
Retention Policy
- Free tier: 7-day retention (sessions auto-deleted after)
- Pro tier: Unlimited retention
- BYOK users: Unlimited retention
- Deleted accounts: All data purged within 30 days
- Export before delete: Users can export all sessions as a bulk JSON download
Architecture
A FastAPI backend orchestrating three AI providers, with Supabase for auth/storage and Stripe for billing. The frontend is vanilla JS for simplicity and speed.
System Overview
Backend Components
| FastAPI Application | ||
|---|---|---|
| app/main.py | FastAPI application entry point. CORS, middleware, route mounting. | Core |
| app/deliberation/ | Deliberation engine: orchestrator, round management, convergence detection, prompt construction. | Engine |
| app/providers/ | AI provider adapters: Anthropic, OpenAI, Google. Unified interface with provider-specific API handling. | AI |
| app/auth/ | Supabase JWT verification, user session management, BYOK key decryption. | Auth |
| app/billing/ | Stripe integration: checkout sessions, webhooks, subscription status, usage tracking. | Billing |
| app/export/ | Export formatters: HTML email, Markdown, JSON. Template rendering for email output. | Export |
| app/models/ | Pydantic models for request/response validation. Tier definitions, model configurations. | Schema |
Frontend
- Vanilla JS — No framework. Pure HTML/CSS/JS.
- Real-time streaming — SSE (Server-Sent Events) for live debate display
- Responsive design — Mobile-friendly layout
- Progressive disclosure — Rounds reveal as they complete
- Dark mode — System preference detection
- Served from /frontend/ — Static files via FastAPI
Data Layer
- Supabase Auth — Email/password + magic links
- PostgreSQL tables:
- users, profiles
- sessions (deliberation records)
- rounds (per-round model responses)
- api_keys (BYOK, AES-256-GCM encrypted)
- subscriptions (Stripe sync)
- usage (session counts per billing period)
- RLS — Row-level security on all user-facing tables
Deliberation Orchestration
async def run_deliberation(question, tier, user_keys):
models = get_models_for_tier(tier)
complexity = assess_complexity(question)
max_rounds = complexity_to_rounds(complexity)
history = []
for round_num in range(max_rounds):
responses = await asyncio.gather(
call_model(models[0], question, history, user_keys),
call_model(models[1], question, history, user_keys),
call_model(models[2], question, history, user_keys),
)
history.append(responses)
yield stream_round(round_num, responses) # SSE
if detect_convergence(history):
break
summary = generate_synthesis(history)
yield stream_summary(summary)
All three models are called in parallel each round via asyncio.gather for optimal performance.
Architecture Strengths
- No frontend build step (vanilla JS = instant deploys)
- Real-time streaming via SSE (not WebSocket)
- Parallel model calls = fast rounds
- BYOK makes it free for power users
- Convergence detection prevents wasted API calls
- Supabase RLS = security without middleware
Known Constraints
- FastAPI single-process (needs uvicorn workers for scale)
- No rate limiting on API endpoints yet
- No team/org features (individual accounts only)
- No caching of deliberation results (each session is fresh)
- Provider outage = degraded deliberation (2 models only)
- No offline/export-all capability yet