Emma Lynch — Follow-Up Agent
CEO & cofounder of Q2Med. Raising £1.8m. 3-person team. Pharmacy supply chain search portal.
Tools: Gmail, Granola, Google Calendar. Talks to Toyo on Telegram.
v5 — Follow-ups only
1. Onboarding & Connect Tools
Emma signs up, completes the onboarding flow (name, company, role), then does an onboarding voice call where she tells Toyo about Q2Med. Key things from the call:
- Q2Med is "one hub powering medication decisions in pharmacy" — a search portal for the medication supply chain
- 3 people full time, raising £1.8m to hire 5 more
- Target customer: private hospital pharmacy leads
- Sales process: identify head of pharmacy → outreach → discovery meeting → workshop → sign design partnership
- Biggest pain: "The follow-up after every meeting, that email to be sent and trying to schedule the next piece"
- What she'd automate: "Post-meeting email — a high level touchpoint on what we've spoken about, what was agreed, next steps. Get that in-between automated email."
After the call, Toyo generates a business analysis. Emma approves it. Her workspace provisions. She lands in chat for the first time.
Web
Toyo
Hey Emma! Good chat on the call — sounds like the post-meeting follow-up emails are killing you. Let's start there.
I can draft a follow-up from your Granola notes right after each meeting. You just review and approve. To set that up I'll need access to your Gmail first — that's how I learn your writing style and create drafts.
Connect Gmail
Emma clicks "Connect Gmail". An OAuth popup opens. She authorises. The popup closes automatically.
Emma
[automatic] I've connected Gmail.
Toyo
Nice. Now I need Google Calendar so I know when your meetings end.
Connect Google Calendar
Emma clicks. OAuth popup. Authorises. Popup closes.
Emma
[automatic] I've connected Google Calendar.
Toyo
Last one — Granola, so I can read your meeting notes.
Connect Granola
Emma clicks. OAuth popup. Authorises. Popup closes.
Emma
[automatic] I've connected Granola.
Toyo
All set. Give me a sec — I'm reading through your sent emails to learn how you write.
Logic
- Onboarding call analysed → extract #1 pain: post-meeting follow-ups
- First chat message: reference the pain, propose starting there
- Request one toolkit at a time via
request_toolkit_connection()
- Render
IntegrationConnect button inline in chat (Composio OAuth)
- User clicks → OAuth popup opens → authorises → popup auto-closes
- Automatic "I've connected {toolkit}" message appears
- Session context rebuilds after each connection
- Agent immediately requests the next toolkit
Background (after all connected)
gmail.readSentEmails(limit: 50) — build voice profile from real sent emails
calendar.getRecentMeetings(14d) — map meeting history
granola.indexNotes() — load all available meeting notes
- Cross-reference: which meetings have follow-ups sent, which don't
2. First Follow-Up — Instant Payoff
Moments later. Toyo has scanned Emma's calendar and emails. It finds an overdue follow-up.
Web
Toyo
I can see you had a call with
John Carragher from Boots last week — no follow-up sent. I've got your Granola notes from it. Here's a draft:
Hi John,
Great to connect last week — good to hear firsthand how your pharmacy team is navigating medication sourcing.
To recap:
- Current workflow involves checking 3-4 supplier portals per order
- Stock visibility came up as the key pain point
- We discussed a 90-minute workshop with your pharmacy leads as a next step
Would the week of the 10th work for getting your team together? Happy to work around availability.
Speak soon,
Emma
Add to Gmail drafts
Edit
Skip
Emma
Change "great to connect" to "good to chat" and add to drafts.
Toyo
Updated and added to your Gmail drafts. You can send it from there whenever you're ready.
By the way — if you set up Telegram I can ping you right after each meeting with a draft like this. Way easier than opening the web app.
Connect Telegram
Emma sees the value. She clicks Connect Telegram, opens the deep link on her phone, taps Start.
Emma
[automatic] I've connected Telegram.
Toyo
You're connected. From now on I'll message you on Telegram right after each meeting with a draft follow-up ready to go.
Logic
calendar.recentMeetings().filter(noFollowUpInSent)
granola.getNotes(meetingId)
- Draft using voice profile from 50 sent emails
- "Add to Gmail drafts" →
gmail.drafts.create()
saveStyleCorrection("good to chat" > "great to connect")
- After first payoff → suggest Telegram (user has seen the value, more likely to connect)
Background (while user reviews draft)
- Already scanning for more overdue follow-ups
- Pre-loading Granola notes for next match
- Pre-drafting with new style correction applied
Sequence matters: Connect tools → immediate payoff (draft a real follow-up) → then Telegram. Emma sees value before being asked to do more setup. The Telegram ask lands after she's already experienced the product working.
3. Post-Meeting Notifications on Telegram
Next day. Emma just finished a call with Sarah Mitchell from Bromley. Her phone buzzes.
Telegram
Wednesday, 11:50am
Toyo
Your call with
Sarah Mitchell (Bromley) just ended. Draft ready:
Hi Sarah,
Good to chat today — really encouraging to hear how your team is thinking about centralising medication sourcing.
To recap:
- Your team manages ~200 medication orders per week across 4 suppliers
- Stock availability is the main pain point
- We agreed to move forward with a design partnership pilot in April
I'll send over the partnership outline by end of this week.
Speak soon,
Emma
Add to Gmail drafts
Edit
Skip
Toyo
Done — in your Gmail drafts.
An hour later. Another meeting ends.
1:35pm
Toyo
Your call with
Mark Sullivan (Investor) just ended. Draft ready:
Hi Mark,
Good to chat — appreciate you making the time. Really useful to get your perspective on the pharmacy market.
As discussed, I'll send over the updated pitch deck and financials by Thursday. Happy to jump on another call once you've had a chance to review.
Speak soon,
Emma
Add to Gmail drafts
Edit
Skip
Emma
Edit — change "good to chat" to "really appreciate your time" and add "I'll include the community pharmacy data you asked about."
Toyo
Updated:
Hi Mark,
Really appreciate your time today — useful to get your perspective on the pharmacy market.
As discussed, I'll send over the updated pitch deck and financials by Thursday. I'll include the community pharmacy data you asked about. Happy to jump on another call once you've had a chance to review.
Speak soon,
Emma
Add to Gmail drafts
Edit more
Toyo
Done. You've got 2 drafts in Gmail from today's meetings.
Logic
calendar.onMeetingEnd() → trigger for each meeting
granola.getNewNotes(meetingId)
- Draft using voice profile + accumulated style corrections
gmail.drafts.create() on approval
4. "Help Me With My Follow-Ups"
A few days later. Emma messages Toyo proactively.
Telegram
Friday, 9:30am
Emma
Help me with my follow ups
Toyo
I'd love to. Let me ask a few things so I get this right:
- What kind of follow-ups matter most? (e.g. sales meetings, investor calls, all external meetings)
- What's your style — short and direct, or warmer/longer?
- How soon after a meeting should I nudge someone if they haven't replied? (e.g. 3 days, a week)
- How often should I check your email for follow-ups that need chasing? (e.g. daily, every few days)
Emma
All external meetings. Short and direct. Nudge after 4-5 days. Check every morning.
Toyo
Got it. What time in the morning works best for the follow-up check?
Toyo
Perfect. I've read through your last 50 sent emails and your Granola notes. Here's a follow-up guide I've written based on how you actually write:
Emma's Follow-Up Guide
- Tone: Friendly but direct. No fluff. First-name basis.
- Openers: "Good to chat", "Great to connect" (for first meetings)
- Structure: Short recap of what was discussed → clear next steps → close
- Sign-off: "Speak soon" (never "Best regards" or "Kind regards")
- Nudge timing: Chase if no reply after 4-5 business days
- Nudge style: Light touch — "Just bumping this up" or "Checking in on the below"
- Never over-explain: Keep under 150 words where possible
This is what I'll use for all follow-ups. You can update it any time by telling me.
I'll run a follow-up check every morning at 8am and message you with anything that needs chasing.
Logic
- Detect follow-up setup intent
- Clarify: scope, style, nudge timing, check frequency
- Ask for preferred check time
- Analyse sent emails + Granola notes to build voice template
saveFollowUpGuide(guide)
scheduleFollowUpCheck("08:00", "daily")
Background
gmail.sent.analyse(50) — extract patterns, openers, closers, avg length
granola.notes.all() — cross-reference with sent emails
- Build guide from actual writing, not generic templates
5. "What About Old Meetings?"
Toyo proactively asks about historical follow-ups.
Toyo
By the way — I found
4 meetings from the last 2 weeks that don't have follow-up emails:
- Kate Williams (Community Pharmacy Group) — 8 days ago
- David Chen (MedSupply) — 6 days ago
- Fiona Murphy (HSE) — 5 days ago
- Tom Bradley (Investor intro) — 4 days ago
Want me to draft follow-ups for any of these?
Emma
Yeah do all of them except Kate — that was an internal thing.
Toyo
Got it — skipping Kate. I'll send you each draft one at a time.
Logic
- After follow-up guide is set, proactively check history
calendar.meetings(14d).filter(noFollowUpInSent)
- Present list, let user choose which ones to draft
- Process one at a time so user can review each individually
Toyo
1/3 — David Chen (MedSupply)
Hi David,
Good to chat last week. Interesting to hear how MedSupply is approaching the UK hospital market.
To recap — we discussed potential integration between your supply catalogue and our search portal. Worth exploring further once we're live with our first hospital partner.
I'll circle back in April when we're further along. Let me know if anything changes on your end in the meantime.
Speak soon,
Emma
Add to Gmail drafts
Edit
Skip
Toyo
Done. Next one:
2/3 — Fiona Murphy (HSE)
Hi Fiona,
Good to chat earlier this week. Useful to understand the HSE's procurement timelines and where Q2Med might fit in.
As discussed, I'll send over a one-pager on our hospital pilot results once we have them. Happy to reconnect then.
Speak soon,
Emma
Add to Gmail drafts
Edit
Skip
Toyo
Done. Last one:
3/3 — Tom Bradley (Investor intro)
Hi Tom,
Good to chat on Tuesday. Appreciate the intro from Mark — useful to hear your perspective on health-tech fundraising.
I'll keep you posted as the round progresses. If you'd like to see the deck, happy to send it over.
Speak soon,
Emma
Add to Gmail drafts
Edit
Skip
Toyo
All 3 done. You've got them in Gmail drafts. I'll start the daily 8am checks from tomorrow.
Logic
- Process one by one: draft → wait for user → next
- Each uses the follow-up guide for voice + style
granola.getNotes(meetingId) for each
gmail.drafts.create() on approval
- Show progress: "1/3", "2/3", "3/3"
6. Daily Follow-Up Check (8am)
Next morning. The scheduled check runs.
Telegram
Saturday, 8:00am
Toyo
Morning. Follow-up check:
Needs chasing (no reply in 4+ days):
- John Carragher (Boots) — follow-up sent Tuesday, no reply. Workshop scheduling pending.
- Fiona Murphy (HSE) — follow-up sent yesterday (from backlog), but originally met 5 days ago. Worth a nudge?
On track (reply received or too early to chase):
- Sarah Mitchell (Bromley) — replied yesterday
- David Chen (MedSupply) — sent yesterday, too early
- Tom Bradley (Investor) — sent yesterday, too early
- Mark Sullivan (Investor) — replied
Want me to draft nudges for John and Fiona?
Emma
Draft one for John. Leave Fiona for now — the original email only went yesterday.
Toyo
Hi John,
Just bumping this up — would the week of the 10th work for that workshop? Happy to work around your team's schedule.
Speak soon,
Emma
Add to Gmail drafts
Edit
Skip
Toyo
Done. I'll check again tomorrow at 8am.
Logic
scheduledCheck("08:00") → trigger
gmail.sent.getFollowUps() → check for replies
- Apply nudge timing from guide (4-5 days)
- Categorise: needs chasing vs on track
- Nudge draft uses guide style: "Just bumping this up"
- User picks which ones to chase — never auto-sends
7. Edit or Cancel a Follow-Up
Later that day, Emma changes her mind about one.
Telegram
Emma
Actually, cancel the follow-up for David Chen. We're not going to work with MedSupply.
Toyo
Done — removed David Chen from follow-up tracking. I won't chase that thread. The draft is still in your Gmail if you want to delete it.
Logic
followUps.cancel("david_chen")
- Remove from daily check list
- Gmail draft left as-is (user manages their own inbox)
The next morning, Toyo's daily check pings with a nudge for Tom Bradley. Emma wants to tweak it.
Telegram
Sunday, 8:00am
Toyo
Morning. Follow-up check:
Needs chasing:
- Tom Bradley (Investor) — sent 5 days ago, no reply
On track:
- John Carragher — nudge sent yesterday
- Sarah Mitchell — active thread
- Fiona Murphy — sent 2 days ago, too early
Want me to draft a nudge for Tom?
Emma
Yeah but mention that Mark Sullivan suggested we connect — that might help.
Toyo
Hi Tom,
Checking in on the below — Mark Sullivan suggested we'd be a good fit to chat. If you'd like to see the deck, happy to send it over.
Speak soon,
Emma
Add to Gmail drafts
Edit
Logic
- User adds context to nudge → incorporate into draft
- David Chen no longer appears (cancelled)
- Nudge style follows guide: "Checking in on the below"
8. "Don't Follow Up With John"
A week later. The Boots deal fell through.
Telegram
Emma
Don't follow up with John Carragher. Ever.
Toyo
Done. John Carragher is permanently excluded from follow-ups. I won't draft, nudge, or remind you about him. You can reverse this any time.
Logic
followUps.blockContact("john_carragher", permanent: true)
- Excluded from all future follow-up checks and post-meeting drafts
- If a meeting with John appears on calendar, skip the post-meeting notification entirely
- Reversible: "Start following up with John again" removes the block
How blocking works: John won't appear in daily checks, post-meeting drafts, or historical scans. If Emma has a new meeting with John, Toyo stays silent — no notification, no draft. This persists until Emma explicitly reverses it.
9. Turn Off All Follow-Ups
Emma's going on holiday.
Telegram
Emma
Turn off all follow ups.
Toyo
All follow-ups paused. That means:
- No post-meeting draft notifications
- No daily 8am follow-up checks
- No nudge reminders
Everything is saved — your guide, your preferences, your blocked contacts. Just say "turn on follow ups" and I'll pick up where we left off.
Logic
followUps.pauseAll()
- Disable:
calendar.onMeetingEnd trigger, scheduledCheck, nudge timers
- Preserve all state: guide, style rules, blocked contacts, active threads
- Resume:
followUps.resumeAll() — re-enables everything, runs a catch-up scan
On resume, Toyo runs a scan of what happened while paused and presents a catch-up list: "You had 3 meetings while follow-ups were off. Want me to draft follow-ups for any of them?"
What Emma Tells Another Founder
"After every meeting my phone buzzes with a follow-up draft. I tap 'add to drafts' and it's in Gmail ready to send. Every morning at 8 it tells me who hasn't replied and drafts the chase. I haven't missed a follow-up in two weeks."