Growth actions for agents
FunnelKeeper is the growth engine your coding tools read. After sources are connected it ranks the next incremental changes that will generate revenue or growth — activation leaks, rage-click paths, wasted spend, missing conversions, weak landing pages — and writes a prompt you can hand to Cursor, Claude Code, Lovable, Bolt, or v0.
Ask this before inventing a feature. The numbers come from the warehouse (spend + funnel + revenue + replay), not from a vibe.
Spend changes are never executed here. A scale recommendation tells you to
propose_budget_change; a human still taps Approve.
Surfaces
| Surface | Call |
|---|---|
| MCP | get_growth_actions then get_growth_prompt |
| REST | GET /products/{slug}/growth-actions · POST /products/{slug}/growth-actions/{id}/prompt |
| CLI | fk growth --product <slug> · fk prompt <id> --product <slug> --tool cursor |
| Dashboard | Overview → Next growth steps → Copy prompt |
MCP flow
1. get_growth_actions { slug, days: 30, tool: "cursor" }
→ ranked actions with headline, category, estimated monthly impact, prompt
2. Pick the top action the human agrees with (or the one with the largest impact).
3. get_growth_prompt { slug, id, tool: "cursor" | "claude_code" | "lovable" | "bolt" | "v0" }
→ full prompt: why it matters, what to do, ground truth, done-when.
4. Run that prompt in the coding tool. Do not edit ad budgets from it.
CLI equivalent:
fk growth --product demo-product
fk prompt activation.dropoff.signup-activated --product demo-product --tool cursor
Categories
| Category | What it diagnoses |
|---|---|
activation | Consecutive funnel dropoffs (e.g. signup → activated) |
friction | Rage / dead clicks on a path, with recording URLs when we have them |
acquisition | Wasted spend (zero engaged) or a channel that is paying back |
pricing | Signups with no payments, missing conversion definitions, unattributed revenue |
seo | No organic traffic, or a landing page that scored poorly |
Effort is quick_fix, feature_build, or experiment. Impact is integer cents
per month, or null when we cannot yet put a number on it.
Guarantees
- Deterministic. No LLM in the ranking — the prompt is formatted from warehouse facts.
- Action ids are stable for a given diagnosis (
activation.dropoff.signup-activated) so you can re-fetch a prompt after the window moves. - Unattributed revenue stays unattributed. We will not tell you to smear it onto a paid channel.
- HITL unchanged: anything that spends money is a proposal card.