Inspiration
Every meeting ends with action items. Most of them die. Someone writes "send John the Q3 report" in a doc, and three weeks later it's still there. The gap between capturing a commitment and executing it is where work falls through.
Existing AI meeting tools stop at the list. They tell you what was said. They don't draft the email, write the Slack message, or create the calendar event. The human still has to do the actual work — and they don't.
What it does
Follow-Through is an AI agent that closes the loop between a meeting transcript and the work that comes out of it.
- Extract — Paste a meeting transcript. Gemini 3.5 Flash reads it and identifies every commitment: who owes what to whom, by when.
- Draft — The agent writes the actual deliverable. Not a summary — the full email body with subject line, greeting, meeting context, and sign-off. The Slack message ready to post. The calendar event with agenda.
- Approve & Execute — Review the drafted deliverable, edit if needed, and approve. The agent executes it via the real API.
The twist: it doesn't just list action items. It executes them.
How we built it
- Gemini 3.5 Flash for two separate AI calls: extraction (transcript → structured commitments) and drafting (commitment + transcript → full deliverable content). Each call uses a different structured-output schema tuned to the action type — email schemas include subject/body/sign-off, Slack schemas include channel/message, calendar schemas include title/agenda/time.
- Google GenAI SDK as the required agent framework for structured output and response parsing.
- Firestore for persistent session state. Every extraction and draft is saved. Refresh the page, close the tab, come back tomorrow — your commitments and drafts are still there.
- Next.js 16 (App Router, TypeScript) with Tailwind CSS and shadcn/ui for the frontend.
- react-three-fiber for the 3D hero visual (Quantum Cube model by Tycho Magnetic Anomaly, CC BY 4.0).
The architecture is a clean pipeline: transcript → Gemini extract → commitment list → Gemini draft → approval queue → execute. State persists to Firestore at every step for crash recovery.
Challenges we ran into
- Structured output schemas. Getting Gemini to reliably return commitment data in a consistent schema required careful prompt engineering. The extraction prompt needed to distinguish between "I'll send John the report" (email) and "I'll post in the channel" (Slack) and "I'll schedule a review" (calendar) — and extract the right recipient, deliverable, and deadline for each.
- Drafting quality. The drafted email can't read like a template. It needs to reference the specific meeting context — names, dates, data points — or it's useless. We solved this by passing the full transcript alongside each commitment to the drafting call, so Gemini has complete context.
- State persistence without auth. Firestore requires no signup wall for the demo, but we still need session isolation. We generate a session ID per browser tab and persist under that key.
Accomplishments that we're proud of
- The money shot: clicking "Draft Deliverables" and watching a full, contextually-aware email appear — not a template, not a summary, but the actual email Mike would send to John about the Q3 performance report.
- Crash recovery that actually works. Refresh the page mid-demo and everything restores from Firestore — commitments, drafts, execution status, all of it.
- A clean architecture that's honest about what's real and what's mocked. The Gemini calls are live. The Firestore persistence is live. The execution is simulated, and we say so clearly.
What we learned
- Structured output is the difference between a toy and a tool. The same Gemini model that gives you a paragraph of prose becomes a reliable agent component when you give it a schema.
- State persistence is not a feature, it's a demo survival mechanism. Without Firestore, a refresh kills the demo. With it, the demo demonstrates resilience.
- The gap between "extract action items" and "execute action items" is where all the value is. Every meeting tool extracts. Almost none execute.
What's next for Follow-Through
- Real API execution. Connect Gmail, Slack, and Google Calendar APIs for true end-to-end execution. The OAuth flow and API wiring are scaffolded, the actual send calls are the next step.
- Calendar integration for transcript input. Pull meeting transcripts directly from Google Calendar events instead of pasting text.
- Multi-meeting tracking. Track commitments across meetings, surface overdue items, and follow up automatically.
- Team collaboration. Share commitment lists with meeting attendees and assign ownership.
Built With
- firestore
- gemini
- google-cloud
- google-genai-sdk
- next.js
- node.js
- react
- tailwind-css
- typescript
Log in or sign up for Devpost to join the conversation.