-
-
MOGI main screen: enter a meeting agenda and start real-time analysis with one click. Supports live meetings and recorded audio.
-
Multi-agent deliberation chat: AI personas brainstorm and debate the proposal from empathy, technical, and risk perspectives.
-
Architecture: Transcribe, Bedrock (Nova), DynamoDB, Lambda, and Chime SDK powering real-time meeting analysis and multi-agent deliberation.
-
Decision card with GO verdict and four task cards with named owners and deadlines. Every card traces back to the source.
-
MOGI-D review: three AI personas vote independently — Moka (empathy), Ritsu (technical), Kanon (risk) — with weighted reasoning.
-
Real-time card generation: Amazon Nova classifies utterances into decisions, issues, and tasks with clarity and quality checks.
Inspiration
Meetings often end with everyone nodding — but did the team truly agree, or did they just avoid conflict? False consensus is one of the biggest silent risks in decision-making. Important objections go unspoken, edge cases get overlooked, and the team moves forward on a decision that only seemed solid.
We wanted to build a system that acts as a real-time "second opinion layer" for meetings — one that listens, organizes, and then challenges decisions from multiple perspectives before they become final.
What it does
MOGI (Meeting Overlay for Group Intelligence) captures live meeting audio and:
- Classifies discussion into structured minute cards in real time — Decisions, issues, and tasks with owners and deadlines are extracted as people speak
- Runs 5-persona AI deliberation on each decision — Each persona has a distinct role (empathy advocate, technical fact-checker, risk analyst, chair, creative disruptor) and independently votes GO / HOLD / NO
- Surfaces false consensus — If the team agreed too quickly, the personas expose gaps: missing rollback criteria, unclear ownership, untested assumptions
- Shows the full deliberation chat — Brainstorm, debate, vote results, points of agreement/disagreement, chair summary, and a one-liner takeaway
The core narrative: False consensus → Persona intervention → Deeper discussion → Stronger decision.
How we built it
The entire system runs on AWS with Amazon Nova at its core:
| Amazon Nova Model | Purpose |
|---|---|
| Amazon Nova Pro (Bedrock) | Card generation — classifying live utterances into decision / issue / task cards |
| Amazon Nova Pro (Bedrock) | 3-stage deliberation engine — brainstorm → debate → weighted vote |
| Amazon Nova Lite (Bedrock) | Thread resolution — closed-set topic selection for grouping related cards |
| Amazon Titan Embeddings (Bedrock) | Semantic similarity for issue clustering |
Supporting AWS services:
- Amazon Chime SDK — Live meeting audio capture with built-in speaker separation
- Amazon Transcribe — Real-time speech-to-text
- AWS Lambda — Serverless compute for classify, deliberation worker, HTTP handler
- Amazon DynamoDB — Single-table design for meetings, minutes, and deliberation results
- Amazon SQS — Async deliberation queue
- Amazon API Gateway — HTTP API + WebSocket API for real-time card updates
- Amazon S3 + CloudFront — Frontend hosting
- AWS Amplify Hosting — MOGI-D deliberation review page (Next.js SSR)
- AWS CDK — Infrastructure as Code (entire stack deployable in one command)
We also built a Persona Studio with 10 AI personas in 2 swappable teams — a modern anime-style team and a Sengoku (Warring States) warlord team — each with unique personality, risk tolerance, and decision rules.
Challenges we ran into
LLM non-determinism: The same 9-minute meeting audio produced 7 display cards in one run and 13 in the next. Raw topic seeds from Nova varied too much between runs. We solved this by moving away from free-text topic keys to structured signal extraction (action/scope/duration/issue-kind) combined with embedding-based thread clustering and a category stabilizer — achieving stable 6-7 card output across repeated runs.
Bedrock timeout under batch load: Demo playback mode sends many classify requests in rapid succession. Nova Pro responses occasionally exceeded our initial 2.5-second timeout, causing the entire playback to halt. We tuned timeout thresholds to 8 seconds and added graceful error skipping so one slow response doesn't kill the whole session.
Speaker attribution without multiple microphones: In single-device testing, all speakers appear as "Dev User." We built vocative pattern extraction — detecting "Jordan, please define..." patterns in transcript text — to recover correct task owners even when speaker diarization isn't available.
Thread stability across runs: Proposal-to-decision promotion, issue deduplication, and representative card selection required a 3-layer resolution chain (rule-based pre-filter → embedding similarity → signal matching) to ensure the same topics consistently group together regardless of LLM wording variations.
Deliberation target categories: Initially all card types triggered deliberation, flooding the system with unnecessary GO/HOLD/NO votes on issues and tasks. We refined the deliberation scope to proposals and decisions only — the cards that actually need a multi-perspective check.
Accomplishments that we're proud of
- Stable 6-7 card output from a 9-minute meeting with 4 speakers — consistently hitting our smoke gate targets (decision=1, issue≤3, task=3) across multiple runs
- Genuine multi-perspective deliberation — each persona argues from their distinct viewpoint with real personality, not just rubber-stamping the same conclusion in different words
- Zero external dependencies — the entire system runs on AWS. No Google OAuth, no Vercel, no external APIs. One CDK deploy and it works.
- Real-time card generation — cards appear as people speak, not after the meeting ends. You can watch the meeting structure emerge live.
- 10 swappable AI personas with full character portraits, personalities, and decision rules — including a Sengoku warlord team where Oda Nobunaga pushes for speed while Tokugawa Ieyasu demands caution
- Full deliberation review page with animated chat history showing brainstorm and debate phases, matching the original MOGI-D experience
What we learned
- Amazon Nova Pro is remarkably capable at structured extraction tasks when given well-designed prompts with closed-set constraints rather than free-text generation
- Multi-agent deliberation works best when each agent has a clearly distinct role and risk tolerance, not just different names — the personality differences drive genuinely different voting patterns
- The biggest quality lever wasn't the LLM model itself — it was the post-processing pipeline (thread resolution, display eligibility, representative selection, category stabilization)
- Testing LLM-powered systems requires distribution-based evaluation (median, IQR, stability index over N runs), not point expectations ("this input should produce exactly this output")
- Embedding similarity + rule-based signals together are more stable than either alone for topic grouping — embeddings catch paraphrases, rules catch domain-specific patterns
What's next for MOGI - Meeting Overlay for Group Intelligence
- LLM Thread Resolver (Layer 3): Using Nova Lite as a closed-set selector for ambiguous thread assignments — asking "which existing thread does this belong to?" instead of generating new topic keys
- Stability testing at scale: Automated n=20 replay testing with statistical confidence gates (IQR ≤ 2, Stability Index ≥ 0.8)
- Universal Thread Signals: Moving beyond meeting-specific dictionaries to agenda-driven dynamic signal extraction — so MOGI works for any meeting topic, not just enterprise onboarding
- Thread State Machine: Modeling proposal → decision as explicit state transitions within a thread, rather than flag-based operations on individual cards
- Pipeline Snapshot Replay: Recording LLM outputs at each stage so thread resolution logic can be tested without re-invoking Bedrock — reducing test cost by 99%
- Multi-language deliberation: Japanese-language personas with culturally adapted decision styles and meeting conventions
Built With
- amazon-api-gateway
- amazon-bedrock
- amazon-chime-sdk
- amazon-cloudfront
- amazon-cognito
- amazon-dynamodb
- amazon-nova-lite
- amazon-nova-pro
- amazon-sqs
- amazon-titan-embeddings
- amazon-transcribe
- amazon-web-services
- aws-amplify-hosting
- aws-cdk
- aws-lambda
- html
- next.js
- node.js
- react
- typescript
- vanilla-javascript
Log in or sign up for Devpost to join the conversation.