Inspiration

Meeting summaries often make discussions look more complete than they really are. Teams leave with unanswered questions, unclear ownership, conflicting assumptions, and decisions that were never finalized. I created Unsaid to surface those gaps and connect every finding to evidence from the original conversation.

What it does

Unsaid analyzes an authorized meeting transcript and produces:

  • A concise meeting brief
  • Unanswered questions
  • Missing owners
  • Conflicting assumptions
  • Unclear commitments
  • Unresolved objections
  • Confirmed decisions
  • An agenda for the next meeting
  • Exact transcript evidence for every finding

Users can upload TXT, Markdown, JSON, SRT, or VTT files. Completed analyses remain available through a protected history page across desktop and mobile.

How I built it

I built Unsaid with React, TypeScript, TanStack Start, and TanStack Router. It runs on Cloudflare Workers and uses Cloudflare AI Gateway with Kimi K2.6 for structured transcript analysis.

Before accepting a result, the server validates its structure and verifies that every cited quote exists in the uploaded transcript. Cloudflare D1 stores the generated analysis, findings, and cited evidence snippets. Original files and complete transcript text are not retained.

Codex accelerated my product planning, application architecture, frontend development, protected-route implementation, Cloudflare integration, test-first debugging, production validation, and deployment. I made the key decisions around the evidence-first product direction, privacy boundaries, visual design, and prohibition on emotion or employee-performance scoring.

Challenges I faced

The hardest challenge was making generated findings trustworthy. A plausible result is not enough when teams may act on it. I created a server-side verification layer that rejects unsupported evidence instead of displaying it.

I also had to handle inconsistent model responses, present technical failures as useful user-facing messages, protect analysis history, maintain mobile usability, and persist useful results without retaining entire conversations.

What I learned

I learned that meeting intelligence becomes more useful when it focuses on uncertainty rather than producing longer summaries. Evidence should be part of the product interface, not hidden inside the generation process.

I also learned that privacy decisions influence the complete architecture. Avoiding raw transcript persistence required careful boundaries between file parsing, inference, verification, and database storage.

What I am proud of

Unsaid is a working end-to-end application rather than a static demonstration. It includes protected access, real file uploads, live AI analysis, evidence validation, persistent history, responsive layouts, automated tests, and a production Cloudflare deployment.

Most importantly, it gives every finding a clear answer to one question:

Where was this actually said?

What is next

I plan to explore team workspaces, configurable finding categories, collaborative resolution tracking, calendar integrations, and retention controls for organizations with different privacy requirements.

Built With

Share this project:

Updates