Capabilities
Hottest Prospect
What It Does
Section titled “What It Does”Crawls a GoHighLevel sub-account, pulls upcoming birthdays, party dates, conversation history, custom fields, and tags, then applies a scoring model to pick the single hottest prospect. Returns the contact, a reasoning paragraph explaining why they are hot, a runner-up, and two drafted outreach messages (SMS plus email). Opens the contact in GHL automatically.
This is the agency superpower. Instead of “I should probably call someone today,” it is “call Sarah Johnson right now, her kid’s birthday is in eight days, she came from a Facebook ad, and your last message got no reply.”
When To Use
Section titled “When To Use”- Morning. Every morning. One hot prospect per day, followed up religiously, beats a hundred warm prospects followed up randomly.
- Before a quiet afternoon. When you have an hour and need a target.
- When you say: “hottest prospect”, “who’s hot”, “best lead”, “who should we call”, “top prospect”.
How To Invoke
Section titled “How To Invoke”/hottest-prospectClaude asks which sub-account to scan if the context does not make it obvious. Current accounts wired up:
- Go Kart Park (GKP) — James’s own booking business
- All Things Handy (ATH) — Wayne’s handyman business
Prerequisites
Section titled “Prerequisites”| Requirement | Where |
|---|---|
| GHL MCP servers | mcp__gokartpark__ and mcp__allthingshandy__ (declared in Claude Code config) |
| Sub-account config | Per-client setup in ~/apps/ai-assistant/config.py or the relevant MCP server |
| Approval to send | The skill ALWAYS drafts, never auto-sends. Explicit user approval required before any SMS or email goes out. |
Where It Lives
Section titled “Where It Lives”- Skill definition:
~/apps/skills/skills/hottest-prospect.md(loaded as/hottest-prospect) - MCP servers:
~/apps/gokartpark-mcp/and~/apps/allthingshandy-mcp/ - Scoring logic: baked into the skill prompt — positive signals (upcoming date, ad source, inbound message, full contact info) versus negative signals (ghosted, “not interested”, stale, under-age for the venue)
The Scoring Model
Section titled “The Scoring Model”Positive signals (hotter):
- Birthday or party date within 7 days (urgent), 14 days (warm)
- Came from a paid ad or contact form (explicit intent)
- Has been to the venue before
- Last message was inbound
- Has both phone and email
Negative signals (colder):
- Conversation contains “not right now”, “not interested”, “already booked”
- Last outbound message got no reply
- No conversation history AND no recent activity
- Missing contact info
Silent disqualifiers (skip, do not mention):
- Already booked or converted
- Explicitly said no
- Spam or test contact
- Child too young for the venue
Intent signals outweigh date proximity. A contact with a perfect birthday but a “not interested” message is cold, not hot.
Example Session
Section titled “Example Session”James: /hottest-prospect
Claude: Which account — Go Kart Park or All Things Handy?James: GKPClaude: Pulling candidates. Top 10 by date proximity, scoring now.
Hottest: Sarah Johnson. Child Ethan turns 6 on April 26, 8 days out. Came from the Facebook lead form on March 15. Filled out the full form including preferred date and party size. No conversation since, which means she has not been followed up on in six weeks. That's the gap.
Runner-up: Michael Carter, child birthday April 29. Cooler because he replied "just looking" to our last outbound.
[Opens Sarah Johnson's contact in GHL]
Drafted text (send now): "Hey Sarah! Noticed Ethan's birthday is coming up on the 26th. We have a couple of afternoon slots left that weekend if you're still thinking about booking. Want me to hold one?"
Drafted email (schedule for 3 hours later): [longer email with packages and pricing]
Approve the text to send now?James: yesClaude: [sends text via GHL SMS] Text sent. Email scheduled for 4:30pm.Rules Worth Remembering
Section titled “Rules Worth Remembering”- Pull conversations before scoring. Always. Date without context misleads.
- Two channels, staggered. Text first (immediate, personal). Email 3-4 hours later (pricing, detail). Never both at once.
- If nobody is hot, say so. Do not force a pick.
Known Gaps / TODOs
Section titled “Known Gaps / TODOs”- Only two accounts wired. MCP servers exist for GKP and ATH. Other clients get added case by case.
- No historical “who did we call last” log. You can re-pick the same person two mornings in a row if they were not disqualified. A simple “called-recently” flag would prevent that.
- No cross-account mode. Cannot yet say “find the hottest prospect across all my sub-accounts.” One account at a time.
- Intent scoring is heuristic. The rules are in the skill prompt as prose, not a real model. Works well but not learnable — it does not get smarter from your yes/no decisions.
Related
Section titled “Related”- GSC Audit — the sibling daily rhythm, but for search performance instead of leads.
- Propagation — when outreach generates content, propagation keeps it threaded into the site.