Matt SiemerAll projects

Project 01 of 02 · Client pilot

Meeting Agent

Turns recorded client calls into approved tasks in ClickUp. Running as a pilot at a marketing agency.

What it is

A marketing agency records its client calls. This agent reads each meeting, pulls out what people committed to, and drafts those as tasks in ClickUp. A person approves every task before it posts. It is running today on the client’s real calls. Approved tasks go to a test list in the client’s ClickUp until the client turns on routing to its live boards.

The requirement

Before this, a project coordinator did the whole job by hand:

  • Listen back through every client call.
  • Write down each commitment: what was promised, who owns it, and when it is due.
  • Type the tasks into ClickUp, on the right client's board.
  • Chase down whatever got missed.

That ate hours every week, and things still slipped between the call and the board. A commitment that never makes it onto the board is the kind of thing that costs an agency a client.

What I built

  • When a client call ends, the meeting note fires automatically. Granola takes the notes; Zapier connects them to the agent.
  • The agent drafts each task with the owner and the due date. It reads plain language, so "by Friday" becomes a real date.
  • A person reviews every draft and approves, edits, or dismisses it.
  • Once the client turns on live routing, approved tasks go to the right client board. Until then they land in a test list in the client’s ClickUp.
  • If the agent is not sure where a task belongs, it holds the task and says so instead of guessing.
Granolameeting noteZapier agent draftsthe tasksClickUp a personapproves
The agent drafts the tasks, and a person decides what posts.

What it returns

  • Commitments land on the right board the same day, drafted in minutes instead of retyped by hand.
  • The coordinator gets hours back every week, and fewer commitments get dropped.
  • Nobody had to change how they work. The team files the meeting note the way they always have.
  • Nothing posts without approval, so the client's workspace stays clean.

Under the hood, for the technical reader

  • Python and Flask, Claude for extraction, hosted on Fly.io.
  • Intake is token-authenticated and idempotent, so a duplicate webhook cannot double-post.
  • A regression suite of more than 50 checks exercises the real routing rules and app code with dry-run pushes, so a test can never touch the client's workspace. Writing that suite turned up four client folders that were quietly sending tasks to the wrong list. I fixed them before anything went live.
  • Smoke-tested on real recorded calls, including one where the transcript mangled several names and the tasks still came out right.

The client is not named here by agreement. Redacted screenshots of the review interface are available on request.

← All projects02 The Agent Office →