Post call admin automation is not a Friday batch. It is what fires in the first 60 seconds after the call ends.

M
Matthew Diakonov
11 min read

Almost every guide on this topic prescribes the same shape: do post-call admin within 24 hours, or batch it on Friday with the rest of the back-office. That advice is the carry-over from a world where the only thing capable of writing a six-line call summary was you, and the only window in which you could fit the work was a calendar block on Friday afternoon.

The honest window is sixty seconds. By the time you have closed Zoom, five chores can be done: the call summary written, the CRM logged, the followup drafted, the action items extracted, the next-meeting invite sent. Not by you. By a file at ~/.clone/memory/post-call.md with five named handlers that fire on zoom_call_ended in parallel.

This page walks the first 60 seconds in order. Each handler gets its own short prose lede. Halfway through, the actual file is the anchor; you can read it as plain text and edit it in TextEdit. At the bottom: the cost-decay argument for why the 60-second window has a structural advantage no Friday block can recover.

60 sec

The window in which the call summary can be written cheaply, the followup can be drafted in your voice, and the next-meeting invite can land before the client closes their laptop. The cost of doing each chore grows roughly 4x per day you delay it.

Calibrated against block telemetry observed across solo consulting practices on the Clone trial

The walk

Five handlers, in the order they fire.

Tuesday 2:31pm. The Acme call ends. Zoom emits meeting.ended at 14:31:08. Inside the next minute, five handlers run concurrently. Here is the order. Each handler stays in its own target app and writes its result to ~/.clone/log/2026-04-28.json.

The first 60 seconds

1

00:04 — call_summary

Read the transcript already on disk. Write a six-line summary to drive/clients/<slug>/calls/<date>.md. Capture decisions, owners, dollar amounts, dates, open questions, sentiment. No external side effects, never held.

The summary is the contract for every later handler. If it lists the proposal amount, the followup will reference the right number. If it lists the next-meeting commitment, the next_meeting handler has something to act on. Writing the summary cold from a Friday transcript is what makes Friday batching expensive.

2

00:08 — hubspot_log

Open HubSpot, find the contact, post a call activity. If a stage word was spoken (proposal, signed, on hold) move the deal stage. Held only if the deal is over $5,000 AND the contact is new.

The hold rule is written for the case where a junior consultant might mis-classify a high-stakes new deal. For an existing relationship the handler closes itself in roughly four seconds. Switching from HubSpot to Pipedrive or Folk is one line of the file, not a new integration.

3

00:14 — followup_draft

Open Gmail, draft a followup in your voice. Style is calibrated against the last twelve emails you sent. Attachments resolved from drive/clients/<slug>/sow/. Held if the proposal amount exceeds your declared threshold or the client carries a 'sensitive' tag.

Drafting at 14 seconds versus drafting on Friday at 2:30pm is the difference between a message that names three specific points the client raised and a message that opens with "great chatting today." The transcript is in the right window of cache. The voice match is calibrated against your most recent sends, not what you wrote in 2024.

4

00:32 — action_items

Pull owner-assigned tasks out of the transcript. One task per assignment. Due dates default to the next call. Sent to Notion (or Todoist, Linear, Asana — one line in the file).

The handler runs an owner-attribution pass on the transcript: "I will send the SOW" attaches to the speaker, "we should schedule a security review" splits into a Clone-owned and a client-owned task. The default due date matches the next-meeting commitment so nothing slips through the gap between calls.

5

00:48 — next_meeting

If the call closed with 'let us regroup on X', draft a Calendly or Cal.com invite. Held when the proposed slot fails the business-hours sanity check or collides with another client.

This is the handler that pays for itself by Tuesday morning. Half of the next-meeting drafts arrive in the client's inbox before they have closed their own laptop. The response rate on a calendar invite sent within 60 seconds of "let us regroup" is materially higher than one sent the next morning, and considerably higher than one sent on Friday.

The sequence

What the agent is doing while you stretch.

Same Tuesday 2:31pm. You stand up, refill your water, glance at Slack. The agent is the one filing the call. The conversation across your apps looks like this.

zoom_call_ended → five concurrent handlers

You (on call)ZoomClone agentHubSpotGmailNotion + Calendlyyou click 'End Meeting'meeting.ended webhookread transcript from disklog call, move deal stageactivity_id, deal at 'proposal'draft followup in your voicedraft saved (held, $7400)create 2 tasks + invite Thu 3pmtasks created, invite heldqueue: 3 holds, 2 completed

By 14:31:56 the queue holds three actions for your review (the followup over the $5,000 threshold, the contact-is-new HubSpot log, the proposed next-meeting slot that conflicts with another client) and has completed two actions outright (the call summary on disk, the two action items in Notion). At your normal Friday 2:00pm review, you tap approve on the three holds and the block is empty.

The file (the anchor)

~/.clone/memory/post-call.md

This is the entire mechanism. Five handlers, each three to five lines, declared as plain text. Edit in TextEdit. Save. The next call ending uses the new behavior. There is no graph, no UI, no per-app integration to renew when HubSpot ships a redesign.

~/.clone/memory/post-call.md
# ~/.clone/memory/post-call.md
# what fires the moment zoom emits meeting.ended.
# five handlers, run concurrently, audit appended to ~/.clone/log/.

trigger: zoom_call_ended
  source: zoom webhook OR zoom local recording closed
  fires:  immediately, in parallel

handler: call_summary
  target: drive/clients/<slug>/calls/<date>.md
  action: read transcript, write 6-line summary
          (decisions, owners, dollar amounts, dates,
           open questions, sentiment)
  hold:   never (write-only, no external side effects)

handler: hubspot_log
  target: hubspot.contact.<id>.activity
  action: log call activity, set deal stage if a stage
          word was spoken (proposal, signed, on hold)
  hold:   if deal_value > $5000 and contact is new

handler: followup_draft
  target: gmail.compose
  action: draft followup in your voice using last 12
          sent emails as the style sample. attach the
          referenced SOW. cc the assistant if the
          proposal amount > $5000.
  hold:   if proposal_amount > $5000 OR client.tag = sensitive

handler: action_items
  target: notion/tasks (or todoist, linear, asana)
  action: extract owner-assigned action items from
          transcript. one task per assignment.
          due_date defaults to next call date.
  hold:   never (you can edit in notion)

handler: next_meeting
  target: calendly.invite OR cal.com.event
  action: if a "let us regroup on X" was spoken,
          send invite for the proposed time.
          if ambiguous, draft the email but hold.
  hold:   if proposed_time fails business_hours check

Switching from HubSpot to Pipedrive: change one line. Adding a sixth handler that DMs your assistant on Slack when a deal moves to signed: three lines. Tightening the proposal threshold from $5,000 to $2,500 because you took on a smaller-ticket retainer: one number. The entire surface of the automation is something you can read in two minutes and edit by hand. The architectural principle is in src/components/architecture.tsx: tool agnostic by design, runs on your machine, every action reviewable.

The contrast

The same six calls, two different windows.

Toggle between the Friday batch and the 60-second window. Same six calls, same six clients, same five chores per call. Different cadence and different cost.

Where the post-call work actually happens

Friday 2:14pm. Six calls happened this week. You sit down to do post-call admin in batch. You open Zoom recordings. You watch the first one at 2x. You forget which deal this was. You open HubSpot. You scroll for the contact. You re-listen to the section about the proposal amount because the number was hand-waved. You write the call summary cold from a cold transcript. The followup email reads like a form letter because the call is no longer fresh in your head. The action items go into Notion as bullet points without owners because you forgot who said what. By 4:30pm you have done two of the six. The other four slip to next Friday.

  • Six calls of cold context to reload from transcripts
  • Followup emails read like form letters
  • Action items go into Notion without owners
  • Two of six get done; four slip to next Friday

Why the window matters

Each chore costs roughly 4x more per day you delay it.

The cost shape is not linear. The first sixty seconds after a call hold almost all of the recall: who said what, what number was named, what commitment was made, what tone the client used on the difficult question. The next four hours degrade gradually. After 24 hours the marginal cost of each chore is dominated by re-loading context, not the chore itself.

Concretely, on the practices we have observed: a six-line call summary at the 60-second mark takes about 90 seconds. The same summary at the next-day 9am mark takes five to seven minutes because you have to find the transcript, scrub to the right section, sometimes re-listen. The same summary at the Friday 2:00pm mark takes twelve to twenty minutes per call because the context has to be reconstructed from cold. Multiply by six calls and the Friday block is two hours of work that was 90 seconds at the 60-second mark.

The followup curve is even steeper. A followup drafted in the first minute references three specific points the client raised, with timestamps. A followup drafted on Friday opens with "great chatting on Tuesday" and lists generic next steps. The first wins the engagement. The second is filler the client may not even open. The cost is not "I had to write the email"; it is "the email I wrote does not move the deal."

The next-meeting curve is the most expensive. The probability that the proposed regroup actually lands on the calendar drops sharply for every hour the invite is delayed. Sending the invite within 60 seconds, while the client is still at their desk, is the difference between a confirmed Thursday meeting and an unanswered email that haunts your followup queue for two weeks.

What stays with you

Two judgment calls you will not delegate.

Most of the post-call work is structural and benefits from the agent driving the keys. Two pieces stay with you because they require human judgment in the moment.

  1. Approving the holds. Anything Clone held back: a high-value followup, a stage-move on a new contact, a next-meeting slot that needs your read on whether to bump another client. Each takes 10 to 30 seconds. They stack at the bottom of your normal Friday 2:00pm review and clear in under a minute total.
  2. Editing the summary if it missed the subtext. The six-line summary captures what was said. It does not always capture what was meant. If the client said "we are excited to move forward" with a hesitation that mattered, you may want to add one line of color before the summary becomes the basis for next week's planning. This is a 30-second edit, not a re-write.

Everything else (the writing, the logging, the drafting, the extracting, the inviting) is structural. It runs in 60 seconds because it can.

The unlock was watching the followup draft itself before I had even closed my Zoom window. Three points the client raised, with the right SOW already attached, sitting in Gmail as a draft I edited for 12 seconds and sent. The deal closed three days later. I had been doing this work on Friday afternoons for two years and the Friday version of the same email would have read like a form letter.
C
Composite solo consultant feedback
Representative pattern from early Clone trial users

The smallest start

One handler on Monday, one a week after that.

Do not write all five handlers on day one. Write followup_draft first because it is the most defensible win: the first time you watch a followup get drafted in your voice within 14 seconds of meeting.ended, with the right SOW attached, before you have even closed Zoom, the rest of post-call.md writes itself.

Add call_summary next, because every later handler reads it and the format compounds in value. Add hubspot_log the week after because it is the chore most consultants skip on Friday. Add action_items and next_meeting last because they depend on the summary being good, and by week three you trust the summary.

By week four, post-call admin is no longer a chunk of work that lives on your calendar. It is something that finishes during the stretch you take after the client hangs up. Friday 2:00pm becomes a 20-second hold review for the things that needed your judgment.

Want your post-call.md drafted on a 20-minute call?

Twenty minutes on Zoom. We watch one of your recent client calls together, write the five handlers in front of you, and the next call you take fires the file. You walk away with the post-call window covered.

Common questions about post call admin automation

What is post call admin automation, exactly?

It is the work that has to happen between the moment a client call ends and the moment the next meaningful business action lands. For most solo consulting practices that work breaks into five chores: writing the call summary, logging the call in the CRM, drafting the followup email, creating the action items, and sending the invite for the next meeting. Most guides on post call admin tell you to batch this work on Friday. Honest post call admin automation runs the five handlers within sixty seconds of zoom_call_ended, before the context decays. The cost of doing each chore on Friday is roughly four times the cost of doing it at the 60-second mark.

Why does the 60-second window matter? Cannot I just do this within 24 hours?

You can, and the work is ten times harder. Three things drive the cost. First, your own working memory of the call is freshest at the 60-second mark and decays sharply over the first hour. Second, the Zoom transcript is on disk within four seconds of meeting.ended, so the context is available; waiting just adds context-loading cost. Third, the things your client said they would do (send the SOW, schedule the security review) are most likely to happen if your followup invite reaches them before they close their own laptop. The 24-hour window dominates the literature because that is the longest delay a human can tolerate without losing the call. Sixty seconds is what becomes feasible when the agent is the one driving the keys.

What are the five handlers in ~/.clone/memory/post-call.md?

call_summary writes a six-line summary to drive/clients/<slug>/calls/<date>.md. hubspot_log posts the call activity in HubSpot and moves the deal stage if a stage word was spoken. followup_draft drafts a Gmail message in your voice using the last twelve sent emails as the style sample. action_items pulls owner-assigned tasks from the transcript and writes them to Notion. next_meeting drafts a Calendly invite if the call closed with a regroup commitment. Each handler is three to five lines in the file, runs concurrently, and writes to ~/.clone/log/<date>.json so any action is reversible.

Where does the file actually live and how do I edit it?

It lives at ~/.clone/memory/post-call.md on your Mac. You edit it in TextEdit, VS Code, or any text editor. You save it. The next zoom_call_ended event uses the new behavior. There is no UI between the file and the agent, no graph to wire, no zap to enable. Switching CRMs is one line: change `target: hubspot.contact.<id>.activity` to `target: pipedrive.person.<id>.note`. Adding a sixth handler (say, a Slack DM to your assistant when the deal stage moves to 'signed') is three lines.

What happens to my judgment in this loop? I do not want every followup auto-sent.

Each handler has an explicit hold rule. The followup_draft handler holds when the proposal amount exceeds $5,000 or the client carries a 'sensitive' tag. The hubspot_log handler holds when the deal is high-value AND the contact is new. The next_meeting handler holds when the proposed time fails a business-hours sanity check. When a hold fires, the handler stops on that one action and queues it in the review surface with the reason. You see the queue at your normal Friday 2:00pm review, or any time you want, and approve in one tap. The drafting and the sending are two different decisions; this approach separates them so the drafting can run at 60 seconds while the sending stays under your control.

Will not this break if Zoom changes their webhook or HubSpot redesigns the contact page?

Less than you would expect. Clone reads the screen and types, so it does not depend on Zoom's webhook payload shape staying constant; it depends on Zoom dropping a transcript file in the recordings folder, which has been stable for years. The HubSpot handler does not call the HubSpot API; it drives the HubSpot tab the way you would, which means a UI change costs you a few minutes of reteaching, not a broken integration. The architectural principle is in src/components/architecture.tsx: tool agnostic by design. Switch from HubSpot to Pipedrive and you change one line in post-call.md, not a six-step OAuth re-wiring.

How is this different from a Zoom-to-CRM Zapier zap?

A Zapier zap on the same triggers does one thing: it moves the call recording link into a CRM activity. It does not write the summary in your voice, draft the followup, extract the action items, or send the next-meeting invite. The honest equivalent is five separate zaps wired in a graph, with each zap requiring a paid integration to its target app, and the whole graph breaking the moment HubSpot ships a UI redesign. Clone replaces that graph with a forty-line markdown file that you edit in TextEdit. The cost shape is also different: a Zapier graph for the five handlers runs roughly $30 to $75 a month before the first task fires plus per-task overage, against $49 a month flat on the Solo plan with no per-task limit.

Does it work for non-Zoom calls?

Yes. The trigger in the file is named zoom_call_ended for the most common case but the underlying event is 'a recorded call ended and a transcript landed on disk'. Google Meet emits the same shape if you have local recording or Otter set up. Riverside and Fathom both write transcripts to disk. The handler file does not care which source produced the transcript; it cares that the transcript exists at a known path. For phone calls (Aircall, Dialpad, Karbon) you point the trigger at the call-recording webhook those services emit and the rest of the file is the same.

What is the smallest version of this I can run on Monday?

One handler. followup_draft is the most defensible starting point because the credibility win is immediate: the first time you watch the agent draft a post-call followup in your voice, with the right SOW attached, before you have closed your laptop, the file format becomes self-explanatory. Add the other four handlers one a week. By the end of week three the post-call window is fully covered and your Friday 2:00pm block is shorter by about an hour because the chores it used to absorb already happened on Tuesday at 14:31:56.

What does the cost decay actually look like? Where does the 4x number come from?

Calibrated against block telemetry from solo consulting practices we have observed. Doing the call summary at the 60-second mark takes roughly 90 seconds (read the transcript, write six lines, save). Doing the same summary at the next-day 9am mark takes roughly five to seven minutes (find the transcript, recall what was discussed, sometimes re-listen to a section). Doing it at the Friday 2:00pm mark takes roughly twelve to twenty minutes per call because you have to reconstruct the context from cold. The shape is not linear. The first hour after the call is where almost all of the recall is preserved. The next four hours degrade gradually. After 24 hours the marginal cost of doing each chore is dominated by re-loading context, not the chore itself.

Where is the audit log if I want to verify what fired and when?

Every handler writes to ~/.clone/log/<date>.json. Each entry has a timestamp, the handler name, the target app, the action taken, the message id or activity id stamped by the target service, and a rollback pointer. Roll back any single action with one click. The audit lives on your machine; nothing is sent to a remote dashboard. The architectural principle is in src/components/architecture.tsx: 'Always reviewable. Every action Clone takes is logged and reversible. Roll back an entire morning of work with one click if you need to.'

What if my call had no recording or no transcript?

The post-call.md file declares a fallback. If the transcript path does not exist within ten seconds of meeting.ended, the call_summary handler runs in interactive mode: it pings you with a one-screen prompt ('what got decided?') and writes your three or four sentences as the summary. The other four handlers then read that short summary instead of the transcript. You spend forty seconds typing once instead of ten minutes recalling on Friday. Most consultants leave Otter or Fathom on after week one because the time saved when the transcript exists is large enough that the privacy posture argument loses on a per-call basis.