The waiting room
AI meeting follow-up emails that wait, reconcile, then draft.
Fireflies, Otter, Fathom, Read.ai and Grain all compose a follow-up email from the call transcript alone, and they fire within two minutes of the call ending. That is too fast and too blind. Clone waits a configurable window (default three hours), then reconciles the promises in the transcript against your Drive, Gmail, calendar, Slack, and CRM before drafting. The email matches what you have already done, not just what you said you would do.
The transcript-tool landscape
Fourteen tools. One mental model. None of them wait before writing.
Every widely used answer for this topic is a transcription tool that composes a recap email the moment the call ends. They differ in accuracy, pricing, and how they name their AI assistant. They all fire before you have had time to do any of the things you said you would do on the call.
The core claim
A good meeting follow-up is a reconcile problem, not a summarization problem.
The reason every AI follow-up email from a transcript tool feels off is that the tool is solving the wrong problem. It is summarizing a transcript. What you actually need is an email that reconciles two things: what was said on the call, and what has already happened in the hours since.
If you shipped the deck at 11:34 and the AI fired at 10:59, the email is wrong in a small but obvious way. It promises an artifact that is already attached. If you didn't ship anything and the window closed, the email is wrong in a bigger way. It is silent about a missed commitment the client is about to notice. The transcript alone can't tell the AI which case it is in.
Clone's fix is to wait a window, then check the five places a post-call commitment shows up (Drive, Gmail, calendar, Slack, CRM), then pick one of four drafts based on what the check found. The transcript is the input. The working state in the hours after the call is the lens that decides which draft ships.
Four kinds of bad follow-up email
You have probably received all four of these. You may have sent all four.
Each of these is a real failure pattern from transcript-tool follow-up emails on Reddit and consulting Slack groups. The common cause is that the email was written from the transcript, with no awareness of what actually happened after the call.
The too-fast email
Your call ends at 10:57. Fireflies sends a summary email at 10:59. The email says 'Clone will send the revised SOW shortly.' You're going to send it in 40 minutes. Now the client sees two emails: the robotic one at 10:59, and the real artifact at 11:37. The first one makes the second look slower than it was.
The wrong-voice email
Transcript tools compose in a neutral register because they don't read your outbox. Your actual sent mail is shorter, lowercase-leaning, and always names the deliverable as the first noun in the sentence. The canned summary sounds nothing like you, so you rewrite the whole thing.
The one-meeting-at-a-time email
A Tuesday afternoon has six calls stacked back-to-back. Every tool writes six identical summary emails, each with the same 'thanks for the meeting' opener. Six clients get the same pattern in the same hour. None of them reference what you're about to do next.
The blind email
You promised a follow-up by EOD. It's 11pm, you didn't ship it, and the AI email written at 2pm is still sitting as a draft saying 'you can expect this by end of day.' The client opens it the next morning and now has two problems: the missing artifact, and an email that lies about the timing.
Two flows in twelve lines each
Summarize-and-send vs wait-reconcile-then-draft.
This is pseudocode, but it is the actual difference in shape. One fires synchronously off the call-end event. The other waits, runs a reconcile, then picks a branch before drafting.
The whole difference in one diff
// fireflies / otter / fathom / grain pattern
// (simplified to show the shape of what they do)
onCallEnd(transcript) {
const summary = summarize(transcript);
const actionItems = extract(transcript, "action_items");
const draft = compose({
greeting: "Hi " + attendee.firstName + ",",
body: "Thanks for the meeting. Here's a recap:",
recap: summary,
nextSteps: actionItems,
signoff: "Best,\n" + user.name,
});
sendEmail(draft); // fires ~2 min after call
}Four signals in, four signals out
What the reconcile step reads, and what it produces.
Transcript + post-call working state → Memory → branch-selected draft
The five steps, end to end
Call ends. Window passes. Reconcile runs. Branch picks. Draft queues.
meeting-followup end-to-end
Call ends
Zoom / Meet / Teams. Transcript is ready.
Wait post_meeting_window
Default 3 hours. Configurable per call type.
Reconcile 5 surfaces
Drive, Gmail, calendar, Slack, CRM.
Pick 1 of 4 branches
Based on what the reconcile found.
Draft in Gmail
In your voice, with the reconcile report pinned below.
One real run, line by line
Priya @ Holloway, Tuesday 10:57am. Draft lands at 13:57.
The call ended at 10:57. Clone waited three hours. In the interval, you saved Holloway-SOW-v2.pdf to Drive, accepted the Monday kickoff invite, and moved the HubSpot stage forward. The reconcile saw all three and picked the artifact_ready branch.
The anchor: memory/rituals/meeting-followup.md
Twenty-two lines of plain markdown is the entire configuration.
This file is the source of truth for the meeting follow-up ritual. The post-meeting window is on line one. The five reconcile checks each declare a window and a match rule. The four draft branches each declare a voice source and a default send policy. The guardrails block at the bottom decides what gets skipped and whether the reconcile report is pinned to the draft for your eyes.
Want the reconcile to fire after 45 minutes instead of three hours? Change line one. Want to drop Slack because you don't use it? Delete that stanza. Want a sixth surface for DocuSign, because a lot of your calls end with a contract sent? Add one. There is no dashboard, no template editor, no path builder. The file is the behavior.
For context on why this lives as a plain file instead of a settings screen, the Memory layer in Clone's architecture (src/components/architecture.tsx line 25) is a local-first store of your clients, voice, templates, and history. Rituals are the declarative shape of how Clone uses that Memory. They are meant to be read, edited, committed to git, and diffed the way any plain-text config on your Mac is.
By the numbers
The reconcile step in four numbers.
On the branching side
Four is the number of post-call states that cover the follow-up moments we see in early users. Five starts to feel redundant. Three misses the partial_ship case, which is the single most common outcome for consulting-style calls. The default set of four covers 0% of the post-meeting follow-up moments in the dry-run logs from early users. Custom branches get added by typing a new stanza into the ritual file.
On the reconcile side
Five surfaces is enough for a solo practice. Drive for the deliverable. Gmail for the intro. Calendar for the next meeting. Slack for the channel invite. CRM for the stage change. Most calls produce evidence on two or three of the five, never all five, and the branch logic runs cleanly on partial evidence. This is the same observation pattern documented in src/components/how-it-works.tsx lines 43 to 58, applied to the post-call window instead of the sent-mail corpus.
The surfaces Clone watches during the window
Eight apps. Five checks. One reconciled draft.
The default five checks read across the apps below. Swap any of these out for the tool you actually use, the shape of the check stays the same.
“The thing that broke me on Fireflies was the summary emails firing before I'd sent the deck. Client gets the recap at 10:59 saying 'deck coming', then I drop it at 11:20, now it looks like I was slow when actually I was 23 minutes from end-of-call. The reconcile window is the fix. My follow-ups now go out when the deck is already attached. Clients assume I'm fast.”
Setup in five steps
From install to the first real reconcile on a live call, in under an hour.
Write memory/rituals/meeting-followup.md
Twenty-two lines of markdown. Post-meeting window at the top (3 hours is a good default for most knowledge-work calls), the five reconcile checks with match rules, the four draft branches mapped to voice sources, and a guardrails block. There is no settings UI. The file is the behavior.
Point Clone at your transcript source
Clone reads Zoom's native transcript, Google Meet notes, Microsoft Teams transcript, or whatever third-party tool you already pay for (Fireflies, Otter, Fathom, Grain, Read.ai, tl;dv, Avoma). The transcript is the input. It stays where it was. Clone does not re-transcribe anything it doesn't have to.
Let Clone observe your last 12 sent post-call emails
Per branch. Twelve artifact_ready sends, twelve partial_ship sends, six running-late sends, twelve none_promised sends. Clone reads them once, surfaces the voice patterns (your opener, your naming convention for the deliverable, whether you cc anyone, whether you use a signoff), and saves each observation to Memory.
Run the first call in dry mode
Take your next call on Zoom. Let it end. Three hours later, Clone runs the reconcile and posts a chat message: 'I would have drafted this. Here is the reconcile report. Here is the draft.' Nothing touches Gmail. You read the draft. You flag anything that is wrong. The corrections go to Memory and the rule updates for next time.
Turn on the two safest branches
For most consultants, artifact_ready and none_promised are the branches where the draft lands right within a week. Flip those two from review_first to queue_as_draft. The other two (partial_ship, artifact_missing_overdue) stay review_first forever, because those are the ones where tone matters and a bad email creates a real problem.
When this guide applies to you
If three or more of these sound like your week, keep reading.
Signs a transcript tool's follow-up email is the wrong shape
- You have back-to-back meetings and every 'AI summary' lands in the same 10 minutes
- You already got off a call, shipped the deliverable, and the AI's follow-up email still said 'coming soon'
- You use Fireflies / Otter / Fathom / Grain and the summary emails always sound nothing like you
- You switched transcript tools last quarter and had to reconfigure every template
- You forgot to send the artifact you promised on a call, and the AI's follow-up did not catch it
- You want your follow-ups to actually reference what you shipped after the call, not just what was said on it
- Your calls live across Zoom, Meet, and Teams, and you want one follow-up shape that works for all three
- A tool that fires a 'thanks for the meeting' email two minutes after the call makes you cringe
Clone vs the transcript tools, one row at a time
Feature comparison against the widely used answers
Every row is a capability either present or absent. This is not preference, it's about what the tool will actually produce at 10:59am on a Tuesday when your call ended at 10:57am and you have 40 minutes of post-call work still to do.
| Feature | Transcript tools (Fireflies, Otter, Fathom, Grain, Read.ai) | Clone |
|---|---|---|
| When does it fire | Within 2 minutes of the call ending. The draft is composed from the transcript alone, because nothing else has had time to happen yet. | After a configurable post-meeting window (default 3 hours). The window exists so Clone can see what actually shipped in the interval, not just what was said. |
| Reads your Drive for the artifact you promised | No. The file you saved to Drive after the call is invisible to the transcript tool. If you shipped the SOW at 11:34, the 10:59 summary email still says 'I will share the SOW shortly.' | Yes. The drive_for_promised_artifact check matches on file name, client name, and artifact type. A match switches the draft into the artifact_ready branch, which attaches the file instead of promising it. |
| Reads your Gmail for intros you actually forwarded | No. If you promised to introduce the client to Sarah and you've already forwarded the thread, the transcript tool doesn't know. Its email still says 'I'll intro you to Sarah.' | Yes. The gmail_for_intro_forwarded check looks for outbound mail from you that references the intro text in the transcript. A match drops the intro line from the draft entirely. |
| Reads your calendar for the next meeting | No. Action items are parsed from the transcript. If you already accepted the next meeting via a Cal.com booking five minutes after the call, the email still says 'I'll send a calendar invite.' | Yes. The calendar_for_scheduled_next check confirms the next meeting is on the calendar and accepted. A match rewrites the draft's signoff from 'I'll send an invite' to the specific time you already booked. |
| Handles the overdue-deliverable case | No. The email is written once, sits as a draft, and is sent on whatever timer the tool uses. If the deliverable is overdue at send time, the email lies about the timing. | Yes. The artifact_missing_overdue branch fires when the window closes with no file saved. It pulls voice from your last six 'running late, here's the honest update' sent emails, not your default voice. It is review_first by default. |
| Configuration shape | A settings panel with toggles for 'send recap', 'include action items', 'include sentiment', 'send as template X'. The shape of the email is fixed per tool. | A 22-line plain-markdown file at memory/rituals/meeting-followup.md. Four branches, five reconcile checks, editable in any text editor. Versionable in git. Diffable in review. |
| Drafts live where | Inside the tool's UI, then mirrored to Gmail via a send-as-user integration. Tool-specific tracking pixels are common. | Native Gmail draft. No third-party sending infrastructure, no tracking pixels injected. When you hit send, it flows through your own Gmail and your own sender reputation. |
| Monthly cost (solo practitioner) | Fireflies Business $19/seat plus add-ons. Otter Business $20/seat. Fathom Team $29/seat. Grain Business $29/seat plus sales add-on. Read.ai Pro $19/seat. Most require a CRM add-on to sync any of this. | $49 per month on Solo, one flat plan, 21-day free trial. No per-meeting fee. Data stays on your Mac. |
Want to see the reconcile window running on a real call?
Thirty-minute screen share, we walk through meeting-followup.md on the shape of your practice.
Common questions about AI meeting follow-up emails
Why three hours as the default post-meeting window, and can I change it?
Three hours is a default because most consulting commitments that can ship same-day ship in that window. A proposal revision takes an hour or two. A deck edit takes 30 to 90 minutes. An intro forward takes a minute. A calendar invite for the next meeting takes seconds. Three hours after a 10:57 call means the reconcile fires at 13:57, which is long enough for the realistic same-day work but short enough that the draft still lands before the client's own end of day. You change it in line one of memory/rituals/meeting-followup.md. For high-velocity sales calls where the client expects a recap faster, 30 to 60 minutes works. For strategy calls where the deliverable is a week out, you can move it to 24 hours and Clone will still correctly branch to the none_promised or partial_ship case.
What exactly does the drive_for_promised_artifact check look for?
It watches for new files saved to your Drive (or desktop, or a specific client folder) in the window from 0 to the end of post_meeting_window. It matches on three things: (1) the file name against artifact names mentioned in the transcript, (2) the file path against your client-folder convention, and (3) the file type against the artifact type the transcript promised (deck, SOW, report, doc). A match on two of three is enough to flip the draft into the artifact_ready branch. The exact file is attached to the draft and a one-line note in the reconcile report says where it came from. If nothing matches, the check returns empty and the next branch logic takes over. This is the same Computer Agent observation principle described in src/components/architecture.tsx lines 18 to 22: Clone reads the screen, clicks, types, and scrolls the same way you do, so a file you saved is visible to it without any integration glue.
How is this different from Fireflies or Otter's follow-up email feature?
Fireflies and Otter both compose an email from the call transcript and fire it within about two minutes of the call ending. The email is grounded in what was said on the call, nothing else. Clone waits the post_meeting_window (default 3 hours), then reconciles the transcript's promises against five surfaces (Drive, Gmail, calendar, Slack, CRM), then picks one of four draft branches based on what the reconcile found. So the same call with the same transcript produces a completely different email depending on whether you shipped the artifact, already forwarded the intro, or let the deliverable slip past your promise. Fireflies and Otter are good at transcription. They don't reconcile anything, because nothing has had time to happen yet when they fire.
Does Clone re-transcribe my calls, or does it use the transcript I already have?
It uses whatever transcript source you tell it to. Zoom's native transcript, Google Meet notes, Microsoft Teams transcript, or a third-party tool (Fireflies, Otter, Fathom, Grain, Read.ai, tl;dv, Avoma). Change the source_of_transcripts line in meeting-followup.md if you switch. Clone does not re-transcribe anything it doesn't have to, and it does not charge you for transcription minutes. If you want to drop your transcript tool entirely and use only Zoom's native captions, that works too. The reconcile logic is independent of the transcript source.
What happens when I had six back-to-back calls in one afternoon?
Each call gets its own reconcile timer. A 10am call fires at 1pm. An 11am call fires at 2pm. A noon call fires at 3pm. Six calls spread across the afternoon produce six drafts spread across the late afternoon and evening, each one composed at the point where enough post-call work has happened to reconcile cleanly. The drafts do not pile into the same 10-minute window like they do with transcript tools that fire immediately. You also see each reconcile report separately, so if one call had an overdue artifact, you notice it in isolation instead of hidden inside a batch.
Can I run this without connecting every surface? I don't use Slack.
Yes. The reconcile checklist is a declarative list in meeting-followup.md. Delete or comment out the surfaces you don't use. Most solo consultants run four of the five defaults (Drive, Gmail, calendar, CRM), drop Slack, and have the exact workflow they want on day one. Adding a surface later means adding a new stanza with a match_on block. The draft_branching logic runs against whatever surfaces returned a status, so a three-surface reconcile still produces four valid branches, it just has less evidence to attach.
What does the 'artifact_missing_overdue' branch actually send?
It drafts a short, honest email that acknowledges the missed promise and sets a realistic new time. The voice source is your last six 'running late' sent emails, so the phrasing mirrors how you actually apologize for slipping a commitment (shorter, less apologetic than you think, always with a specific new date). It stays as review_first by default, which means it queues in Gmail drafts and never sends without you reading it. In practice, this branch is the single highest-value output of the whole system for most consultants, because it catches the deliverable slip before the client notices and prompts you to either ship it fast or write the honest update.
Does the reconcile report go to the client?
No. The reconcile report is a block of markdown Clone pins below your draft in the Gmail compose view, for your eyes only. It lists every check (drive, gmail, calendar, slack, crm), the status of each, and the evidence (the file path, the forwarded thread ID, the calendar event ID, the stage change timestamp). When you hit send, the report is stripped out and only your email body goes to the client. You can delete the report before sending if you don't want to see it, but most users keep it because it's the record of why the email has the shape it has, and it makes post-call audits trivial.
How is this different from the consulting-follow-up-automation guide on this site?
The consulting-follow-up-automation guide is about the content side: lifting the specific commitment from the call transcript and composing it in your voice, one message. This guide is about the reconciliation layer on top: waiting a window, checking what actually happened on five surfaces after the call, and picking which of four drafts to write based on what you shipped. The two rituals (followup.md and meeting-followup.md) coexist in memory/rituals/. The content ritual says how a single follow-up is phrased. The reconciliation ritual says when it fires and which branch it is. Most practices run both files together.
Will this work for sales calls, or is it consulting-only?
Both. Sales calls tend to want a shorter post-meeting window (30 to 60 minutes), because the artifact promised on a sales call is usually a deck or a one-pager that goes out same-hour, and the client expects it fast. The branches still apply: artifact_ready when you attached the deck, partial_ship when you attached the deck but the pricing page is still being finalized, artifact_missing_overdue when you said 'I'll have this in an hour' and the hour passed, none_promised when the call was exploratory. Many sales teams run meeting-followup.md with post_meeting_window set to 45 minutes, and the artifact_ready branch fires on most calls where the rep shipped the follow-up deck right after the call.
What about deliverability? Does this touch my Gmail send reputation?
No. Every draft Clone produces is a native Gmail draft in your own mailbox. When you hit send, the email flows out of Gmail's native send, subject to your Gmail sending limits, your SPF / DKIM / DMARC, your IP, your sender reputation. There is no third-party sending infrastructure involved. This is strictly better for deliverability than transcript tools that pipe mail through their own servers or inject tracking pixels. Gmail's default 500-per-day limit for Workspace is an order of magnitude more than the 3 to 8 post-meeting drafts you'll actually ship in a day.
What does this cost compared to Fireflies / Otter / Fathom / Grain?
$49 per month on Solo, one flat plan, 21-day free trial. Compare against Fireflies Business $19/seat plus the AskFred and CRM add-ons, Otter Business $20/seat (per minute caps apply), Fathom Team $29/seat, Grain Business $29/seat plus the sales tier, Read.ai Pro $19/seat. Most of those require a separate CRM add-on seat to make the follow-up loop complete, and most of them charge per active contact or per transcription minute above a threshold. Clone is one flat plan with no per-meeting or per-contact fee, and the drafts live in Gmail so you are not paying for a second sending infrastructure.
Other guides on the operational layer of a consulting practice
Keep reading
Consulting Client Follow-Up Automation
The content side: how a single follow-up is lifted from a Zoom transcript and your observed voice, one message at a time.
Email Follow-Up Automation
The morning triage: a 7:45am ritual that classifies every open thread into one of five follow-up states before you open Gmail.
Consulting Milestone Follow-Up Automation
The cadence side: day 3 / 7 / 14 after a deliverable ships, with timeline-shift language that reads the client's actual state.
Try the reconcile window on your next call
Write twenty-two lines tonight. Let the next call wait three hours.
Install Clone, write memory/rituals/meeting-followup.md, let Clone observe your post-call sent mail once, and run your next Zoom in dry mode. You'll see, line by line, what Clone reconciled and why each branch fired. $49 a month on Solo, 21-day free trial.
$0/mo on Solo · 22-line config · drafts live in Gmail