We timed a board meeting minutes process at a 22-person UK professional services firm. The EA spent 4 hours and 20 minutes on admin after each 90-minute board meeting: 45 minutes transcribing the Zoom recording by hand, 90 minutes reformatting the raw transcript into the firm's approved Word template, 30 minutes pulling out action items and assigning owners, and 45 minutes chasing director sign-off by email. The meeting lasted 90 minutes. The admin took nearly three times as long.
That firm now runs a meeting-to-minutes pipeline. A Zoom recording drops into a watched SharePoint folder, the pipeline triggers automatically, and a formatted draft — complete with action log and a resolution register ready for Companies House purposes — is available in under 10 minutes. Below is exactly how it works, where it breaks, and what to know before you build it.
What UK company law actually requires for board meeting records: Companies Act 2006 obligations
Companies Act 2006 sections 248 and 249 define the minimum requirements. Every private company must keep minutes of all board proceedings, retain them for at least 10 years, and make them available for member inspection. Minutes must record the proceedings and any resolutions passed, and become prima facie evidence of those proceedings once signed by the chairman.
What the Act does not specify: the format, the verbatim detail, or the tool used to produce them. A Word document, a PDF, or a JSON-rendered document all satisfy the requirement if they contain the required substance and carry an authorised signature. Directors who worry that AI-generated minutes are legally inferior are mistaken — the Act cares about content and authorisation, not production method.
Companies House guidance on record-keeping confirms there is no prescribed template. Every set of minutes should capture: date, time, and location; attendees and their capacities; apologies; conflicts of interest declared; resolutions passed with the vote outcome; and action items with named owners and target dates.
The three-step pipeline: transcribe, structure, and distribute
The pipeline has three discrete stages, each of which can fail independently:
[Zoom recording (.mp4/.m4a)]
↓
[n8n folder watcher → audio extraction]
↓
[Whisper Large V3] → raw timestamped transcript
↓
[pyannote.audio 3.1] → speaker-diarised transcript
↓
[Gemini 2.0 Flash] → structured minutes JSON
↓
[Jinja2 template renderer] → Word doc + action log + resolution register
↓
[n8n distribution] → SharePoint / ClickUp / email
The recording lands in a watched SharePoint folder. n8n extracts the audio and posts it to a self-hosted Whisper endpoint on an A10G GPU. The diarised transcript goes to Gemini 2.0 Flash with the meeting agenda as context. The model returns structured JSON; a Jinja2 template renders it to the approved Word format. Action items go to ClickUp, resolutions to a Google Sheet.
Total elapsed time from file drop to distribution: 7–12 minutes. The 90-minute meeting at the firm in this case study takes about 9 minutes end-to-end.
Speaker diarisation: separating attendees accurately enough to trust the attribution
Speaker diarisation is the hardest part of the pipeline. Whisper produces a timestamped transcript but labels everything with a single SPEAKER tag. A separate diarisation pass splits the audio into per-speaker segments.
We use pyannote.audio 3.1 with the pyannote/speaker-diarization-3.1 checkpoint. On board meeting audio — structured, predominantly one speaker at a time, fewer than eight participants — it achieves 93–95% correct attribution without any fine-tuning, provided audio quality is decent.
Three failure modes actually cause problems in production:
Crosstalk: when two directors speak simultaneously, pyannote assigns the segment to the louder voice and the quieter speaker's words are dropped from that window.
Similar-register voices: two male directors with comparable vocal range frequently have their segments merged or swapped. The Finance Director and Operations Director at one client were consistently mis-labelled until we identified both had called in via the same conferencing bridge, flattening their audio profiles.
Telephone participants: telephone audio sampled at 8kHz degrades accuracy significantly. Participants joining by phone should announce themselves by name at each speaking turn so the model can use those self-identification markers as anchors.
After diarisation, abstract speaker labels (SPEAKER_00, SPEAKER_01) are mapped to actual names via a speaker-enrolment step. On the first run for a new client, the EA manually labels each speaker in the diarisation output. Those labelled segments are stored as embeddings. Subsequent meetings match speakers automatically.
Structuring minutes from unstructured speech: agenda matching and action item extraction
The raw diarised transcript is not minutes. It is a verbatim record including filler words, tangents, and incomplete sentences. The LLM converts it into structured minutes while preserving the substance accurately.
The structuring prompt loads three things: the full diarised transcript, the meeting agenda from the calendar invite, and a JSON schema defining the expected output. The agenda anchors the model — mapping transcript segments to agenda items prevents misattribution and stops the model hallucinating discussion that did not occur.
Action items use a separate extraction prompt that identifies sentences where a named individual made a specific commitment with a timeframe. The prompt is conservative: ambiguous commitments are flagged for human review, not added to the log.
{
"meeting": {
"date": "2026-09-15",
"start_time": "09:00",
"end_time": "10:32",
"chair": "Sarah Okonkwo",
"attendees": [
{"name": "Sarah Okonkwo", "role": "Managing Director"},
{"name": "James Prewitt", "role": "Finance Director"},
{"name": "Priya Mehta", "role": "Operations Director"}
]
},
"agenda_items": [
{
"item": "Q3 financial review",
"summary": "FD presented Q3 P&L. Revenue £1.2M against budget £1.1M. EBITDA 18%. Board noted the position and approved the management accounts.",
"decisions": ["Q3 management accounts approved"],
"actions": [
{
"owner": "James Prewitt",
"action": "Circulate signed accounts to auditors by 30 September",
"due": "2026-09-30",
"transcript_offset_seconds": 1847,
"confidence": 0.94
}
]
}
],
"resolutions": [],
"review_flags": []
}
The transcript_offset_seconds field is what makes disputed items auditable. Every action item carries a pointer to the exact moment in the recording.
Resolution detection: identifying and formatting board resolutions for Companies House records
Not every board decision is a formal resolution. The pipeline distinguishes between informal decisions — the board discussed and agreed a direction — and formal resolutions, which may require a Companies House filing.
The resolution-detection prompt scans for linguistic markers: "it was resolved that", "the board resolved", "a resolution was passed", and "the directors agreed by unanimous/majority vote". When detected, each resolution is classified:
- Ordinary resolutions: passed by simple majority — typically internal governance matters
- Special resolutions: require 75% majority — changes to articles of association, reduction of share capital
- Filing-required resolutions: director appointments or removals, share allotments, charges, name changes — flagged with the relevant Companies House form number (AP01, TM01, SH01, CH01, AA01)
The output writes each resolution to a dedicated register with a sequential resolution number, the date, the statutory reference where applicable, and the Companies House filing due date where a form is required. The company secretary reviews this register once before each Annual Confirmation Statement submission.
Action tracking and distribution: connecting minutes to your project management tools
Action items from board minutes have a well-known lifecycle problem: written into a Word document, distributed by email, and quietly ignored until the following meeting. Routing them directly to the project management tool the team already uses solves this.
For the firm in this case study, actions go to ClickUp via the API. Each extracted action item creates a task in a dedicated "Board Actions" list, with the owner assigned, the due date populated, and a description containing the verbatim transcript excerpt and the Zoom recording timestamp link.
For clients using different tools: Asana, Monday.com, and Notion all accept the same JSON payload with minor field-mapping changes. The n8n workflow uses a Switch node to route based on the client's configured tool — the extraction and structuring stages are identical regardless.
When board members know every commitment lands in the same tracker with a recording timestamp, the quality of commitment-making improves. Vague undertakings ("someone should look at that") become specific ones with a named owner, because directors know the pipeline will flag ambiguous items for human review rather than silently dropping them.
For the document extraction patterns underpinning this pipeline, see our Voice AI and document analysis case study, which covers a similar pipeline built for a regulated financial services client.
Approval workflow: getting minutes ratified at the next meeting without manual chasing
Companies Act 2006 requires minutes to be signed by the chairman at the following meeting or at a subsequent meeting. In practice, most SME boards ratify the previous meeting's minutes as the first agenda item. The approval workflow automates the reminder chain.
Five days before the next board meeting, the pipeline emails a draft to all attendees with a request to flag corrections by a specified date. Corrections go to a Tally form. Factual corrections — a misspelled name, a wrong due date — are applied automatically. Corrections to substantive discussion or resolutions require manual review.
The chairman receives a one-click approval link. Clicking it appends a digital signature block, uploads the signed version to SharePoint, and marks the minutes as approved. The approval timestamp, director's name, and document SHA-256 hash are stored alongside the recording reference in the audit log.
For clients requiring wet-ink signatures, the pipeline generates a PDF, receives the scanned copy by email, and extracts the signature page via the same OCR pattern used in our invoice processing pipeline.
What changed in 2025–2026: Whisper Large V3 and Gemini 2.0 Flash for long board meeting transcription
Two developments changed what is practical for this use case.
Whisper Large V3, widely deployed through 2024–2025, reduced word error rate on British English accents by roughly 10–15% compared to Large V2 in our internal testing across 40 client recordings. The improvement is most noticeable on Scottish and Northern Irish accents — a material issue for any firm with directors across the UK. For a 90-minute meeting, Whisper Large V3 on an A10G GPU produces a transcript in 3–4 minutes.
The larger change is the arrival of long-context models capable of receiving the entire transcript in a single prompt. Gemini 2.0 Flash supports a one-million-token context window. A 90-minute board meeting produces a transcript of roughly 12,000–18,000 tokens. Gemini 2.0 Flash handles the entire document in one pass, which eliminates the continuity errors that affected earlier approaches where the transcript had to be chunked and stitched. GPT-4o with its 128K context window is a viable alternative but requires chunking for the longest meetings — a source of errors we eliminated by moving to Gemini 2.0 Flash for transcripts over 80,000 tokens.
The combined effect: a pipeline that required careful chunking workarounds in 2023 now fits in a clean single-pass architecture for nearly all commercial board meeting lengths.
Good / Bad / Ugly: three meeting-to-minutes pipelines and their accuracy on action item extraction
We tested three configurations against the same set of 12 board meeting recordings (18 hours of audio across five companies) and scored action item recall and precision against a human-annotated ground truth:
| Configuration | Action item recall | Action item precision | Cost per 90-min meeting | Relative setup time |
|---|---|---|---|---|
| Whisper V3 + pyannote 3.1 + Gemini 2.0 Flash | 94% | 91% | ~£0.35 | Baseline |
| AssemblyAI async + GPT-4o (128K, chunked) | 89% | 88% | ~£0.80 | −1 day |
| Rev.ai + Claude 3.5 Sonnet (chunked, 20K segments) | 82% | 79% | ~£1.10 | +1 day |
Good: Whisper V3 + Gemini 2.0 Flash with a single-pass long-context approach. Best accuracy, lowest cost per meeting, cleanest architecture. The one drawback is GPU hosting cost for Whisper — if you run fewer than four board meetings per month, AssemblyAI's async transcription API is cheaper on a per-meeting basis and still produces strong results. AssemblyAI's own published benchmarks show their async model matching or slightly outperforming Whisper Large V3 on certain accent categories — the accuracy gap at the action-item extraction level is smaller than raw word error rate figures suggest.
Bad: Any approach that chunks the transcript without an agenda anchor. The LLM loses topic context across boundaries, misattributes action items to the wrong agenda sections, and double-counts resolutions discussed in one chunk and confirmed in the next. We tested four chunking strategies before moving to long-context models for transcripts over 40,000 tokens. Chunking errors compound — a misattributed resolution is worse than a missed one.
Ugly: Off-the-shelf meeting summary tools (Otter.ai, Fireflies.ai) that produce a narrative summary rather than structured JSON. They work adequately for informal team calls. For board minutes that must satisfy Companies Act obligations, produce an auditable resolution register, and route action items with timestamps into a project management tool, their output requires the same manual reformatting you started with — the problem moves one step downstream.
For comparison with CRM-connected transcript processing, our post on meeting transcript to CRM automation and BANT extraction covers the same extraction principles applied to sales calls rather than governance meetings. The prompt architecture transfers directly.
If the board meeting follows a pre-distributed data pack, the upstream process is covered in our post on automated board pack reporting with Xero and HubSpot — the two pipelines connect naturally at the agenda-loading step.