Greenscape Reactivation Agent banner
786Eidd 786Eidd

Greenscape Reactivation Agent

Data community

Description

For the About field (350 char limit). My pick: AI-drafted, human-approved re-engagement pipeline for a landscape contractor's 1,400 closed-lost CRM leads. Claude Haiku drafts from each lead's file, guardrails block anything that quotes a price or breaks character, and nothing sends without a human approving it. Next.js · Supabase · Slack.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

Greenscape Pro — Closed-Lost Lead Reactivation Agent

The P0 from [`STRATEGY.md`](./STRATEGY.md), built end-to-end.

Greenscape Pro has 1,400+ closed-lost leads sitting in GoHighLevel from three years of paid acquisition. Brittany runs occasional re-engagement blasts; they underperform for the reason Marcus named on the discovery call — *"when it feels like a mass blast, they do not [respond]."*

This turns that pile into a pipeline: **Claude drafts a personal-sounding message from each lead's actual file, a human reads and edits it, and only then can it send.**

**Live:** __ · **Health check:** `/api/health`


What it does

GHL-shaped lead record
        │
        ▼
POST /api/leads/:id/generate ──► Claude Haiku ──► guardrail validation
        │                                              │
        │                                    ┌─────────┴─────────┐
        │                              passes                  fails
        │                                    │                    │
        ▼                                    ▼                    ▼
   Slack ping                        messages.status =     messages.status =
   "draft ready"                         'draft'              'failed'
                                             │            (visible, never sendable)
                                    human reviews + edits
                                             │
                                             ▼
                            POST /api/messages/:id/send   ◄── the ONLY send path
                                             │
                                    Resend ──► customer
                                             │
                                    leads.status = 'contacted'
                                    Slack ping + audit event

Generation and sending are **separate endpoints separated by a database status**. There is no code path where a model response reaches a customer