Skip to content

Latest commit

 

History

History
143 lines (116 loc) · 7.19 KB

File metadata and controls

143 lines (116 loc) · 7.19 KB

🏛️ Quorum — Roadmap

Multi-AI decision assistant powered by model debate


Product Direction

Quorum is moving away from a neutral "consensus recap" and toward a decision-oriented workflow:

  • models debate in the background
  • the final card gives a recommended answer first
  • users can see vote split, reasons, and minority view
  • users can continue the same thread after verdict
  • logged-in users can reopen saved threads later

✅ Phase 1: Working Group Chat (Complete)

The core experience — a group chat where you + Gemini + Perplexity discuss a topic together.

  • Project scaffolding (Next.js + Tailwind + shadcn/ui)
  • Gemini + Perplexity provider wrappers
  • Chat API route (SSE streaming)
  • Consensus scoring API route
  • Chat UI — thread, bubbles, input bar, model selector
  • Consensus meter + summary card
  • Wire end-to-end flow
  • Home page with prompt input

Status: ✅ Complete — all 6 tasks done. Full loop working: home → chat → debate → consensus.


📋 Phase 2: Decisive Verdict + Continue Thread + Persistence Foundation

Make the ending state decisive and make debates reusable.

  • Add Claude (Anthropic SDK) + GPT (OpenAI SDK) provider integrations
  • Replace neutral summary schema with decision-oriented verdict schema:
    • recommendedAnswer
    • voteSplit
    • confidence
    • reasons
    • minorityView
    • oppositeCase
    • optional modelAgreement
  • Model selection UI — users choose which AIs participate (up to 4)
  • Response length control (short / medium / long) — UI + API wired with word targets
  • Configurable round count (1 / 2 / 3 / 5) — wired end-to-end, homepage -> settings -> debate loop
  • Deduplicate consensus display — ONE location, not sidebar + summary card
  • Fix Gemini third-person / name-prefix bug (BUG-009 — buildContents formatting)
  • Home page redesign — Phase 2 with model selector, dark mode, i18n, rainbow border
  • Chat page UI refresh — Phase 2 components ported, wired to Phase 1 streaming logic
  • Premium summary/final verdict polish — higher-contrast summary card, final verdict eyebrow, stronger dark-mode presentation
  • Homepage -> chat page config passthrough (sessionStorage, all settings carry over)
  • Consensus bar real-time updates (fills after each round)
  • Smart auto-scroll + scroll-to-bottom button
  • Thinking indicator with colored model icons (merged into ChatBubble)
  • Wire response length to system prompt (short ~75w, medium ~150w, long ~300w)
  • i18n for AI-generated content — locale passed to system prompts for chat + consensus API
  • Between-round status feedback (brief "analyzing..." bubble)
  • Round divider labels in chat thread ("ROUND 1", "ROUND 2" visual separators)
  • Stop button stuck state fix (BUG-012)
  • API error graceful handling (rate limits, quota)
  • Continue discussion from completed verdict (follow-up in same thread)
  • Session persistence foundation
  • Chat history page
  • BUG-015: Document upload — files now parsed client-side and content sent to AI models
  • Document/media upload (PDF, DOCX, Excel, text) — parse-before-navigate on homepage, inline on chat
  • File upload warnings — users warned when files are truncated (>50k chars) or empty (scanned PDFs)
  • Share verdict via link (public read-only snapshot page, no full transcript)
  • Export conversation as markdown/PDF

🎨 Phase 3: Accounts + Saved Work + BYOK (Complete)

Make saved work, identity, user-owned model access, and recommendation UX feel complete.

  • User login modal with Google OAuth
  • User accounts (persist settings, encrypted keys, history)
  • Saved thread sidebar / history browser
  • Follow-up question shortcuts from verdict card
  • Korean / English i18n polish for decision-oriented verdict copy
  • API key management — server-side encrypted storage (saved keys are never returned to the browser)
  • BYOK backend — provider calls prefer the signed-in user's key, with server env keys as fallback
  • BYOK settings UX polish
  • Default to dark mode
  • Theme system — 8 themes (Light/Dark/Tokyo Night/Lovelace/Gruvbox/Catppuccin/Nord/Solarized) with icon grid picker in Settings
  • Theme-aware semantic color tokens (success/warning/danger) — ConsensusMeter + SummaryCard respond to active theme
  • Additional custom themes (accent colors, more palettes)
  • Settings page - Account + Preferences tabs
  • Fix settings modal tab scroll position (BUG-039)
  • Voice input (Watson STT)
  • Homepage chat history section (logged-in users can access past debates from homepage)
  • Mobile-friendly chat history (responsive history browsing on chat page)
  • Persistent locale in localStorage
  • Settings icon visible for logged-out users on homepage
  • Home navigation from chat page (avatar dropdown)
  • Consistent "Sign In" / localized labels across pages
  • BUG-016: Gemini streaming cut-off (increased chunk timeout for thinking models)
  • BUG-017: Perplexity garbled characters (HTML entity and citation artifact cleanup)
  • BUG-018: Contradicting verdicts across rounds (prior verdict context in consensus prompt)
  • BUG-032: History dropdown navigation fixed
  • BUG-033: Thread dropdown flicker fixed
  • BUG-037: Allow typing during debate (only block sending)

⚡ Phase 4: Differentiation + Sharing

Differentiate beyond generic multi-model chat.

  • Korean-first decision workflows (shopping, career, startup, study, local comparisons)
  • Grounded decision mode with web-backed debate for real-world choices
  • Devil's advocate mode — force one model to argue against consensus
  • Debate templates (patent review, architecture decision, risk analysis)
  • Custom model support (any OpenAI-compatible endpoint)
  • Share full sessions via link with explicit privacy controls
  • Usage dashboard (active users, debates, model usage, language distribution)
  • File reading support (PDF, DOCX, Excel) - parse and send as context to AI models
  • Move settings into avatar dropdown (pending user test feedback)
  • Rounds selector in chat header (pending user test feedback)

🔑 Key Decisions (Decide Later)

Decision When Options
Database ✅ Decided PostgreSQL on Neon + Prisma ORM
API key storage ✅ Decided Encrypted DB storage; plaintext keys are never returned to the client
Auth system ✅ Decided NextAuth v5 + Google OAuth
Deployment ✅ Decided AWS Amplify (Seoul, ap-northeast-2)

🎯 Design Philosophy

  • Less is more — lightweight, minimal, user knows what to do on page load
  • Customization is good, clutter is bad — good amount of options with clean UI/UX
  • One source of truth — no duplicate information displays
  • Non-technical users welcome — sensible defaults first, BYOK when users want control