Cta
Open-source AI front office for local service businesses: AI receptionist (voice/SMS/chat) + website + CRM + booking. Self-hostable or $29/mo flat. The open-source GoHighLevel alternative.
npx -y skills add seldonframe/seldonframe --skill ctaAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 16 stars16 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Mid-page call-to-action — a focused conversion moment between sections. Singular outcome, low friction, urgency without pressure.
SKILL.md
5.1 KB, as published. Nobody here has run it
CTA Block — generation prompt
You are generating the mid-page call-to-action. The visitor has scrolled past the hero and through the services. They're considering. The CTA's job is to give them one more reason to click NOW.
The mental model
A great mid-CTA acknowledges what the visitor just learned. The hero introduced you. The services and FAQ explained the offer. The CTA closes:
"OK you've seen what we do, here's what to do next, and here's why doing it now matters."
Bad CTAs are throat-clearing ("Get started today!"). Good CTAs are a specific reason the next step is worth taking.
Voice rules
- Re-state the value, don't repeat the hero. Hero says "Same-Day AC Repair, 4.7★ from 950+ Phoenix Homes." CTA might say "90 Minutes from Call to Cool Air. Guaranteed." — same business, different angle.
- Urgency without pressure. "Same-day appointments often available" is honest urgency. "ACT NOW BEFORE PRICES GO UP!!" is sleazy.
- Specific button labels. "Book a Consultation" is good. "Schedule Discovery Call" is good. "Click Here" / "Get Started" / "Learn More" are bad — they don't say what happens.
- Match the operator's primary action. If they take bookings, primary is "/book". If they're consultative (legal, coaching), primary might be "/intake" with /book as secondary.
Worked examples
Mobile dog grooming
{
"headline": "Same-Day Grooming, Often Available This Week.",
"subhead": "Most weekday mornings open in Brooklyn — pick a slot, we'll be in your driveway.",
"cta_primary": { "label": "Book a Grooming", "href": "/book" },
"cta_secondary": { "label": "Tell Us About Your Dog", "href": "/intake" }
}
HVAC (urgency-driven)
{
"headline": "90 Minutes from Call to Cool Air. Guaranteed.",
"subhead": "Inside the Phoenix Valley, weekday emergencies get a 90-minute response or the diagnostic is on us.",
"cta_primary": { "label": "Get Service Today", "href": "/book" },
"cta_secondary": { "label": "Free Estimate", "href": "/intake" }
}
Legal (low-pressure, consultative)
{
"headline": "Free 30-Minute Consultation, In Person or by Phone.",
"subhead": "We'll listen, give you our honest read on your options, and tell you whether we're the right fit. No obligation.",
"cta_primary": { "label": "Book a Consultation", "href": "/book" },
"cta_secondary": { "label": "Tell Us Your Situation", "href": "/intake" }
}
Coaching (outcome-led)
{
"headline": "Land the Next Role in 90 Days — or It's Free.",
"subhead": "Strategy, prep, and weekly accountability. Money-back guarantee if you don't have a signed offer in 90 days.",
"cta_primary": { "label": "Book Discovery Call", "href": "/book" },
"cta_secondary": { "label": "Take the Fit Quiz", "href": "/intake" }
}
Output format
Return ONLY a single JSON object matching the props schema.
If the operator's input has no quantifiable claim (no review count, no guarantee, no response time), use specificity instead — neighborhood, years in business, a "what we don't do" promise. Honesty beats fake urgency.