A dedicated AI agent that runs every morning and systematically follows up on every open quote in Zoho CRM.
Core Idea: Every open Potential in Zoho gets tracked through a follow-up lifecycle. The agent sends the right email at the right time, logs everything, respects rep preferences, and reports to Kevin daily. No quote falls through the cracks.
What Changes in Zoho
Change
Type
Risk
Reversible?
4 new custom fields on Potentials
Fields
π’ Zero β additive only
Yes, can delete anytime
2 new email templates
Templates
π’ Zero β additive only
Yes, can delete anytime
Auto-sent emails from kevin@eoslight.com
Emails
π‘ Medium β touches customers
Can pause cron anytime
Auto-created Notes on Potentials
Notes
π’ Low β audit trail
Can bulk delete if needed
Auto-created Tasks (for snooze reminders)
Tasks
π’ Low β helpful
Yes
What Doesn't Change
No existing fields are modified or renamed
No existing views or workflows are touched
Stage field stays exactly as-is
Manual_FU_Done and Next_F_U_Date continue working as before
Kevin/Jhen can still do manual follow-ups β the system won't conflict
Daily Workflow
This runs every weekday at 9:30 AM ET on the dedicated Mac Mini.
β° CRON TRIGGER
9:30 AM ET, Mon-Fri
β
π QUERY ZOHO
All open Potentials (exclude Lost, SO Created, Dead)
β
π FOR EACH POTENTIAL
Check follow-up stage + timing
β
Snoozed?
Check snooze date
β
Still snoozed
Skip β check tomorrow
β Not snoozed / snooze expired
π WHICH FOLLOW-UP IS DUE?
Based on quote date + last follow-up + stage
β
Day 3
"Quick Check-In"
Day 14
"Project Update"
Day 30
"Following Up"
Day 60+
"Haven't Heard Back"
Day 90+
Monthly touch
β
π§ SEND EMAIL
Via Zoho CRM API From kevin@eoslight.com Using matched template
β
βοΈ UPDATE ZOHO RECORD
Follow_Up_Stage β next stage Last_Auto_Follow_Up β now Follow_Up_Count + 1
β
π ADD NOTE
"Auto follow-up [Day X] sent to [Contact Name]"
β
π± DAILY SUMMARY
iMessage to Kevin Emails sent, issues, alerts
Safety: The system runs in dry-run mode first. Kevin reviews the first batch before any emails go out. A kill switch (simple file flag) stops all sends immediately.
Zoho CRM Fields
4 new fields on the Potentials module. All additive β nothing existing is touched.
Existing (no changes)
New (to be created)
EXISTING β NO CHANGES
Stage
Picklist
The deal's sales stage. The follow-up system reads this to determine eligibility β it never writes to it.
Auto-updated by Zoho when any activity happens. The system uses this as a reference point but never modifies it directly.
EXISTING β NO CHANGES
Manual_FU_Done
Date
Kevin's current manual follow-up tracking. Stays as-is for backward compatibility. The new system uses its own fields.
EXISTING β NO CHANGES
Next_F_U_Date
Formula (Date)
Auto-calculated from Manual_FU_Done. Continues working exactly as before β independent of the new system.
NEW FIELD
Follow_Up_Stage
Picklist
The brain of the system. Tracks where each deal is in the automated follow-up lifecycle. The cron reads this to decide what to do next.
Not StartedDay 3 SentDay 14 SentDay 30 SentDay 60 SentDay 90 SentMonthlySnoozedRespondedDo Not Follow Up
NEW FIELD
FU_Snooze_Until
Date
When a rep says "don't follow up for X months," this date is set. The cron skips the deal until this date passes, then resumes the follow-up cycle.
NEW FIELD
Last_Auto_Follow_Up
DateTime
Timestamp of the last automated email sent. Used to calculate spacing between follow-ups. Separate from Last_Activity_Time so manual actions don't reset the clock.
NEW FIELD
Auto_FU_Count
Number
Running count of automated follow-ups sent. Useful for reporting ("this deal has had 7 follow-ups with no response") and for deciding when to stop.
How the Fields Work Together
Example: Deal "Marriott Lobby Feature Wall"
March 1: Quote sent β Follow_Up_Stage = "Not Started" March 4: Cron runs β 3 days since quote β sends Day 3 email
β Follow_Up_Stage = "Day 3 Sent" | Last_Auto_Follow_Up = Mar 4 | Auto_FU_Count = 1
β Note added: "Auto follow-up Day 3 sent to John Smith (Marriott)"
March 18: Cron runs β 14 days since Day 3 β sends Day 14 email
β Follow_Up_Stage = "Day 14 Sent" | Last_Auto_Follow_Up = Mar 18 | Auto_FU_Count = 2
March 20: Rep replies "hold off until June, they're in design phase"
β Follow_Up_Stage = "Snoozed" | FU_Snooze_Until = June 1, 2026
β Zoho Task created: "Resume follow-up: Marriott Lobby" due June 1
β Note: "Rep requested snooze until June 1 β in design phase"
March 21 β May 31: Cron skips this deal every day (snoozed)
Important: The 4 new fields are completely independent from your existing fields. If you ever want to turn off the system, just delete the fields β zero impact on anything else in Zoho.
Follow-Up Cadence
Each open quote moves through this timeline automatically.
Day 0
Quote Sent
Quote is completed and sent to the customer/rep. Follow_Up_Stage = "Not Started". Clock starts.
Day 3
Quick Check-In
Light touch. "Did you receive everything? Any questions?" Non-pushy, service-oriented.
Subject: Quick check-in β {Deal Name}
"Hi {First Name}, just making sure you have everything you need on the {Deal Name} project..."
Day 14
Project Update Request
Genuine interest in the project. Asking for feedback, timeline updates. Shows you care about the project, not just the sale.
Subject: Checking in β {Deal Name}
"Any updates on the {Deal Name} project? Happy to adjust the quote if specs have changed..."
Day 30
Following Up
Direct follow-up. Uses existing KK template "2A - Following up on Project." Acknowledges they're busy.
Uses existing template: 2A - KK - Following up on Project or Hot Project_For Follow Up
Day 60
Haven't Heard Back
Slightly more direct. Uses existing template. "Is this project still active?"
Uses existing template: 2B - KK - Addl Follow up_Havent Heard Back
Day 90
Final Check Before Archive
"Last check-in before we move this to our archive. If things have changed, we're here."
Uses existing template: 2C - KK - Following up on Project
Day 120+
Monthly Touch
Monthly check-in. Keeps the door open without being annoying. Can include new product updates or project spotlights.
Uses existing template: 2D - JR - Following up_3rd Request (or rotate templates)
Flexibility: The cadence is fully configurable. If you want Day 3 to be Day 5, or Day 14 to be Day 10, it's a single number change. The templates are also swappable.
Snooze & Reply Handling
How the system handles rep requests and customer replies.
When a Rep Says "Don't Follow Up for 2 Months"
1
Rep reply detected (via email monitoring on kevin@eoslight.com)
2
Agent reads the reply β detects snooze intent: "hold off until June"
3
Sets Follow_Up_Stage = "Snoozed" and FU_Snooze_Until = June 1
4
Creates Zoho Task: "Resume follow-up on [Deal]" due June 1, assigned to Kevin
5
Adds Note on the Potential: "Rep requested follow-up pause β reason: [their words]"
6
Daily cron skips this deal until June 1, then auto-resumes at next follow-up stage
When a Customer/Rep Replies to a Follow-Up
1
Reply detected in kevin@eoslight.com inbox (matching subject line)
Auto-follow-ups paused for this deal β Follow_Up_Stage = "Responded"
4
Note added with reply summary. Kevin alerted via iMessage if human action needed.
Auto-replies (OOO) are ignored β they don't pause follow-ups or trigger alerts. Only real human replies change the follow-up state.
Manual Override
Anyone can manually set Follow_Up_Stage in Zoho at any time:
Set to "Do Not Follow Up" β system permanently ignores this deal
Set to "Snoozed" + set FU_Snooze_Until β pauses until that date
Set to "Not Started" β resets the cycle (starts over from Day 3)
Clear the field β system treats it as "Not Started"
Agent Architecture
Kevin's question: Should this be a new dedicated agent? Yes β here's why and how.
Recommendation: Spin up a dedicated "Sales Pulse" agent on one of the existing Mac Minis. This keeps Valentina free for executive support, Alex focused on V-PEG, and gives the follow-up system its own resources and context window.
πΌ
Valentina
Executive Assistant
Email triage & responses
Calendar management
Morning/afternoon briefings
Agent coordination
Marketing & campaigns
Customer communication
π Mac Mini M4 Pro (Primary)
π¬
Alex
Quoting & Engineering
V-PEG shadow testing
Quote comparison & QC
Drawing generation
Technical documentation
Pre-quote intake (next)
π Mac Mini #2
π―
Pulse
Sales Follow-Up Agent (NEW)
Daily follow-up cron (9:30 AM)
Reply monitoring & classification
Rep snooze management
Zoho notes & task creation
Follow-up reporting
Open quote analytics
π Mac Mini #2 or #3 (second agent)
Why a Separate Agent?
Reason
Detail
Focus
Follow-ups need their own context β deal history, rep preferences, cadence rules. Mixing this into Valentina's session would dilute both.
Resources
Valentina already handles email, calendar, briefings, campaigns, and coordination. Adding daily CRM automation would slow her down.
Reliability
A dedicated agent means follow-ups run even when Valentina is busy with other tasks. No missed days.
Cost
Pulse can run on Sonnet (cheaper) since the logic is straightforward. No need for Opus-level reasoning.
Shares resources. If Alex is doing heavy V-PEG work, Pulse might slow down.
B: Co-host on Sage's Mini
Mac Mini #3 (100.99.253.24)
Sage is lighter weight (design tasks). More headroom.
Same resource sharing concern.
C: Co-host on Valentina's Mini
Mac Mini M4 Pro (Primary)
Most powerful machine. Easy for Valentina to coordinate.
Already the busiest machine.
My recommendation: Option B (Sage's Mini). Sage handles design work which is mostly bursty β she's idle between tasks. Pulse's daily cron is also bursty (runs once in the morning, ~15 min, done). They'd share well. And Pulse can run on Sonnet to keep costs low.
Daily Output
What Kevin sees every morning after the cron runs.
π¬ 3 replies received yesterday
β’ π’ Hilton Downtown (John D.) β "Sending revised plans next week"
β’ βΈοΈ Marriott Lobby (Sarah K.) β "Hold until June, in design phase" β snoozed
β’ π§ 2 auto-replies (OOO) β ignored
β οΈ Attention needed
β’ 8 deals at Day 90+ with no response
β’ 2 snooze periods expiring this week
β’ 1 bounced email: david@oldfirm.com (hard bounce)
π Pipeline snapshot
β’ 247 open potentials being tracked
β’ 12 in snooze | 35 responded (human handling)
β’ $2.4M total pipeline value in follow-up cycle
What Gets Logged in Zoho
Every automated action creates a Note on the Potential record:
π [Pulse Auto] Day 3 follow-up email sent to John Smith (john@acme.com)
π [Pulse Auto] Day 14 follow-up email sent to John Smith (john@acme.com)
π [Pulse Auto] Reply received from John Smith β classified as: Interested
π [Pulse Auto] Follow-ups paused β awaiting human response
π [Pulse Auto] Rep requested snooze until 2026-06-01 β "in design phase"
π [Pulse Auto] Snooze expired β resuming follow-ups at Day 30 stage
Function 2: Lead Reactivation β "Wake the Dead"
10-15 years of contacts in Zoho. Many dormant. Let's find out who's still out there.
Key Finding: The Zoho Leads module is empty β all leads over the years were converted to Contacts/Potentials. The real database is the Contacts module + Zoho Campaigns list (5,405 contacts). Pulse needs full CRM access (separate from V-PEG client).
Reactivation Timeline
Week 1
Email Hygiene
Export all contacts. Validate emails (MX records, syntax, known bounces). Segment: Active (recent) vs Dormant (1-3 years) vs Ancient (3+ years). Remove obvious dead emails before sending anything.
Week 2-3
Soft Re-Introduction
Start with Dormant segment. "It's been a while β here's what's new at EOS." Include: new products (LightSlab, MetalForms), project gallery, rep finder. 10 emails/day ramping to 50/day.
Subject: A lot has happened at EOS Light
"Since we last spoke, we've completed 94+ installations including NYSE, Facebook HQ, and Hard Rock Casino. We have 86 rep offices across North America..."
Week 4+
Value-Add Follow-Up
Opened but didn't click β project spotlight matched to their vertical. Clicked β direct outreach: "Want to connect with your local rep?" Bounced β mark invalid, remove from lists.
Ongoing
Nurture & Route
Monthly "EOS Update" to re-engaged contacts. Quarterly vertical spotlights (hospitality, casino, healthcare). Warm leads auto-routed to nearest rep.
Safeguards
Risk
Protection
Spam flags
Start 10/day, ramp weekly. Email validation before sending. Use Zoho's deliverability.
CAN-SPAM compliance
Every email has unsubscribe link + physical address. Immediate opt-out processing.
Domain reputation
Hard bounces auto-removed. Soft bounces retried once, then removed. Complaint rate monitored.
Annoying old contacts
Soft, informational tone. One-touch unsubscribe. Max 3 attempts per contact.
Kevin's inbox flooded
Emails sent from sales@eoslight.com (not kevin@). Replies to dedicated inbox.
Expected Results (First 90 Days)
~3,000
Contacts reached
15-20%
Expected open rate
~500
Dead emails cleaned
20-50
Warm leads generated
Email Infrastructure
All emails sent from Zoho CRM API β not Kevin's inbox. Auto-logged on every record.
Decision: Kevin does NOT want emails sent from his address. A new Zoho user/profile will handle all Pulse emails.
How It Works
π― Pulse Agent
Determines who needs follow-up
β
π§ Zoho CRM API
POST /send_mail From: sales@eoslight.com
β
π¬ Customer Inbox
Professional email with unsubscribe link
β Auto-logged
π Zoho Record
Email appears in timeline Notes + fields updated Reply tracking active
Dry-run: generate report WITHOUT sending β Kevin reviews
2.5
Live test: 5 hand-picked Potentials
2.6
Go live: daily cron at 9:30 AM ET
Phase 3: Lead Reactivation (Week 2-3)
Step
Action
3.1
Export + segment full Contacts database
3.2
Email validation pass
3.3
Create reactivation templates β Kevin reviews
3.4
Warm-up: 10 emails/day for 1 week
3.5
Ramp to 25/day, then 50/day
3.6
Monitor: bounces, opens, replies
Phase 4: Intelligence (Week 3-4)
Step
Action
4.1
Reply classification (interested / question / not interested / snooze)
4.2
Auto-pause on reply + alert Kevin on hot leads
4.3
Rep routing for warm leads by geography
4.4
Weekly analytics dashboard
Cost Estimate
$30-50
Sonnet API / month
$0-14
Zoho user / month
$0
Mac Mini hosting
~$50-70
Total / month
ROI: If Pulse generates even 1 new project from reactivation or closes 1 deal faster from follow-ups, it pays for itself for years. Current average deal size is $5K-50K+.