All work

Minute Master

AI-assisted board-meeting minutes: transcription streamed into an editable draft, then amended, e-signed and exported — the full minutes lifecycle in one editor.

Client
Minute Master — London, UK
Role
Frontend Software Engineer (Contract)
Timeline
Mar 2024 — Sep 2024
Year
2024
The Minute Master application, showing a meeting document in the review stage.
90%
Summary accuracy
60%
Less manual note-taking

01

The challenge

Board minutes are a formal record of decisions, motions and responsibilities, so the AI could not simply produce a plausible summary and call it done.

The product needed to turn long meeting recordings into structured draft minutes while keeping a human in control of the final record — from transcription and AI generation through editing, review, signatures and distribution.

The challenge was making that workflow feel like one reliable product rather than a collection of AI, editor, document and approval features.

02

My role

I owned the frontend for the minutes feature across its full lifecycle: recording and AI draft generation, the TipTap editing experience, amendments and review, e-signatures, the permissioned minute board, and Word/PDF export.

I built the frontend flows around OpenAI transcription, chunked audio uploads, Socket.IO progress updates, TipTap editing and document generation. I also worked across the GraphQL schema and client query layer for the minutes domain, including mutations, generated types, polling and refetching.

On the product side, I built the signing, amendment, review and notification flows, while working within a Webflow/DevLink design system maintained outside the application codebase.

03

The engineering

AI drafts, humans produce the record

The workflow was deliberately human-in-the-loop: recording → transcription → structured AI draft → editing → review → signing → distribution.

AI output was inserted directly into an editable TipTap document rather than presented as a final result. That meant users could correct, expand or regenerate the draft before it could become an official record.

Structured extraction instead of generic summaries

The model needed to produce minutes, not just a transcript summary. I structured the prompting around the information the document actually needed — attendees, motions, decisions and action items with assigned owners.

This produced around 90% accuracy on generated summaries while keeping errors visible and easy for a reviewer to correct.

Long-running jobs with live progress

Audio transcription and document generation could take long enough that synchronous requests would make the editor feel stalled. I integrated Socket.IO to stream job progress back to the client while the work was running, then inserted the completed result into the TipTap editor.

This was job-level progress streaming for the user who started the operation, not real-time collaborative editing.

A full document workflow

I extended the TipTap editor beyond basic editing with auto-save, draft saving, regeneration and a "make more detailed" action.

I also built the document conversion flows: HTML-to-PDF, transcript-based minute creation, and .doc/.docx import using Mammoth.

Signing, amendments and review

I built the e-signature flow around signature pads, typed signatures and uploaded signatures, including signature requests and base64 submission.

Amendments had their own preview and review flow, with permissions controlling who could sign or amend a minute. These actions surfaced through a minute-management board with status tracking and role-based access, with editing locked after final sign-off.

GraphQL and application state

I extended the GraphQL schema and query layer for the minutes domain, adding the required minute and transcription models, queries and mutations, draft-saving support and deletion handling.

On the frontend, I built the query layer around the schema, including generated types, polling and refetch behaviour to keep the minutes workflow in sync.

Getting the record out

Once a minute was approved, it needed to leave the application. I shipped Word export with document naming and agenda metadata, alongside the existing HTML-to-PDF flow, and added Postmark notifications for the surrounding workflow.

04

What I shipped

  • An AI minute-production pipeline on the OpenAI API with prompts targeting structured extraction, and audio upload with chunked uploads and Socket.IO progress streaming.
  • A TipTap editor with auto-save, regenerate/"make more detailed," draft save, HTML-to-PDF conversion, and transcript-string import including .doc/.docx via Mammoth.
  • An e-signature flow: signature pad, typed signature, upload, request-signature, base64 submission.
  • An amendment and review flow with a permissioned minute-management board (minutes manager / global admin) and status tracker.
  • Word export with filename sanitising and agenda-name-as-title, plus Postmark email notifications.
  • GraphQL schema and query work for the minutes domain, and the frontend query layer built against it.

05

Results

  • Around 90% accuracy on auto-generated meeting summaries.
  • Manual note-taking time reduced by roughly 60%, with draft-feature usage up about 45%.
  • Feature adoption up around 40% after shipping export, e-signatures and notifications.

06

Stack

Core
  • Next.js
  • TypeScript
  • GraphQL
  • Tailwind CSS
Editor & jobs
  • TipTap
  • Socket.IO
  • Mammoth
Data
  • Prisma ORM
  • PostgreSQL
Services
  • OpenAI API
  • Postmark
  • Webflow DevLink

Next breakdown

Convertia

A multilingual marketing site built as CMS-driven pages, from home and solution modules to contact, blog and company flows, taken through SEO, video and performance fixes to launch.