← Victor Odunsi

Case study · Built at Welcome Tomorrow, 2026

Meeting follow-up automation

Action items were written up and chased by hand. Now they are extracted, assigned and reminded automatically.

01

Problem and my role

After meetings, action items had to be written up, assigned, and chased by hand. I designed and built a system that does it automatically: it records meetings, summarises them, extracts action items, assigns owners, and sends reminders.

02

Workflow

  1. A meeting ends and a verified webhook notifies the service.
  2. The service acknowledges the request quickly and puts the work on a queue, so the AI step never slows the request path.
  3. A worker takes the transcript, and an LLM extracts the action items and their owners.
  4. Each extracted task goes to its owner in a chat message to accept or reject.
  5. Tasks are saved to a central task database and sent to people as direct messages, with reminders based on urgency.

Stack: Python and FastAPI on GCP, with serverless containers, a managed message queue, and a document database.

03

Controls

  • Webhooks are verified before anything is processed.
  • Each meeting is processed once, enforced by an atomic lock in the database.
  • Retries are capped, and progress is checkpointed.
04

Testing

Over 100 unit tests run in CI, with external services mocked, covering business logic and third-party failure cases.

For the AI step, I labelled real transcripts by hand to build a golden dataset, calibrated an LLM judge against my labels, and used back-translation: each extracted task is turned back into a plain statement and compared with the transcript, which catches tasks that were invented or distorted.

05

When it fails

What can go wrongControlWhat happens
Duplicate webhookAtomic lockThe meeting is processed once
A third-party service failsCapped retriesRetries stop at the cap and the failure is logged
The service crashes mid-runCheckpointingThe run resumes instead of restarting
A task is missed or inventedEvaluation against labelled dataMeasured before changes ship
Something breaks and needs diagnosingStructured logs and monitoring metricsShows what failed and where
06

Limits

LLM extraction can miss or misassign tasks, which is why I measured it against labelled data instead of trusting it. It also depends on the quality of the transcript.

07

Result

Manual meeting follow-up was removed: tasks are created, assigned, and reminded automatically, backed by over 100 automated tests.

Next: Reporting automation Back to home