Growth hub
One Growth engine, mounted in every admin. This is the folo.link mount — all tenants. In each product admin the same component collapses into a “Growth” section of that admin’s own nav, scoped to its tenant (never a fifth admin).

One Growth engine, mounted in every admin.
Partial · engine Wave 1Demo data
All tenants — staff view

Internal promotion Founder · Bryza 09/08
Promote our own features to our own users — three shapes, measured exactly like external campaigns (same results, same attribution).

Featured story
Attribution caveat: IG stories carry no caption — attribution needs the smart link in the media itself or a follow-up DM. Feed/reel posts carry the smart link in caption (live today).

IG-style story pushing a new feature — lands in the platform story rail with a note bubble. Assets from the content factory.

Stories: no caption → link in media or follow-up DM

Feature post

In-feed announcement post — feature card + one CTA, published to the platform feed as the house account.

💬
Client message

WhatsApp-style chat push — one-to-one or mass, targeted with the audience filters below.

Listening signals Ranked · demo data
Competitor changelogs, regulator RSS, creator subreddits, news — deduped and ranked. Evidence links are mandatory on every card; no evidence, no signal.

Severity + category are status, not decoration — every state carries a label and an S-mark as well as its hue (colour is never the sole carrier).

Last event 14m ago ·2 of 9 sources unavailable
ABSENT ≠ EMPTY. A broken feed says "unavailable" — it never renders as no-activity. A quiet board only means quiet if every source reported in.
S3
Competitor pauses agency payouts Competitor Conf 0.91

Complaint volume spiking across two subreddits — agencies actively shopping for an alternative. Suggested: PROPOSE poach campaign.

sends nothing · human-gated
S2
New UK age-assurance guidance draft Regulatory Conf 0.84

Consultation opened; affects age-gating flows on all tenants. Suggested: roadmap brief to the owning PM (watch lane until final text).

sends nothing · human-gated
S1
Tipping-culture trend cresting on short video Trend Conf 0.78

Below the AUTO bar — confidence ≥ 0.85 + mandatory evidence before anything is even suggested as AUTO. PROPOSE-only content pack drafted for the Folo house accounts.

sends nothing · human-gated
r/creatorsupport feed — unavailable Source down

Fetcher failing since 09:12. Renders as unavailable, never as “no activity” — absent ≠ empty.

Leads pipeline Demo data
One row per creator / agency / brand / fan-cohort lead. Eight stages, always the same vocabulary — Signal → Qualified → Contacted → Engaged → Negotiating → Won / Lost, plus Suppressed: the do-not-contact truth. Suppressed is a stage, never a hidden flag — it is checked at write time on every send.

Signal 64Qualified 44Contacted 30Engaged 20Negotiating 9Won 10Lost 12Suppressed 5 · do-not-contact
Mid-size agency · 12 creatorsFrom competitor-payout signal · score 86 · stage: engaged
Engaged
Creator cohort · folo.fund waitlistWaitlist + deck telemetry · score 74 · stage: qualified
Qualified
Brand · boutique retail chainManual scanner source · score 61 · stage: contacted
Contacted
Creator · opted out of contactstage: suppressed — the do-not-contact truth · excluded from every send at write time, internal promos included
Suppressed

Outreach queue
Every touch is a row in outreach_actions, in one of two lanes — the lanes never mix. AUTO is inbound-triggered or reversible-internal-and-contact-free; PROPOSE is human-approved and volume-capped. sent is only ever written by a human-gated transition.

✓ AUTOInbound-triggered or reversible-internal
AUTO = inbound-triggered OR reversible-internal-and-contact-free. AUTO never contacts a person — anything that reaches a human rides PROPOSE, and needs confidence ≥ 0.85 + mandatory evidence before it is even suggested as AUTO.
Reply to inbound demo requestEmail · confidence 0.93 · sent 2h ago
✓ Sent
Waitlist confirmation nurtureEmail · triggered by signup · sent 5h ago
✓ Sent
✋ PROPOSEHuman-approved · volume-capped
Agency poach DM draft ×12From competitor-payout signal · awaiting approval
✋ Proposed
Client message · channels launchInternal promo mass send · est. 18,420 · awaiting approval
✋ Proposed

Sources 9 feeds · 2 unavailable
Honest integration states only — live-synced means syncing now; pending renders as pending, never as live; a broken feed renders as unavailable, never as quiet.

📰
Regulator RSS · competitor changelogs · news APIDeduped + ranked into the signals board
Live
🔍
Creator Signal Scanner manual_scannerMatthew’s complaint-mining search builder — human-found leads join the same pipeline + rails as engine finds
Live
WATA PipedriveDeals by stage flowing via the portal
Live-synced
KNKY Pipedrive backfillBlocked on founder token — pending renders as pending, never as live
Pending · founder token
Creator subreddits2 of 4 feeds failing since 09:12 — surfaced on the feed-state bar above
Partial · 2 down

Measurement Demo data
Internal promo is measured exactly like external — same table, same attribution, one picture per campaign. Bars rank attributed $; the slide-over holds sends / opens / conversions per campaign.

Agency poach
$18,600
Client message
$4,890
Featured story
$3,120
Brand nurture
$2,140

Social studio — trend to post
The engine’s production line (measured from its fleet brief, 2026-08-07): trend aggregator (15-min cron) → 3 voice-matched variants → voice score 0–100 → media gen → APPROVE (human-gated — the approve flow sends nothing by itself, §13) → publish/schedule to the connected channels. Plus predictive pre-post scoring, the atomizer (one asset → per-channel cuts), comment-to-DM funnels, UGC discovery + rights-request DMs and a unified social inbox. Engine status, honestly: code-complete (583 tests) in demo mode — blocked on founder env/keys + Meta & TikTok app review (2–4 wk lead). Scoped by the tenant pills above like everything on this page: per-brand voices, per-brand calendars, one engine.

Channels: IG · TikTok awaiting app review · Threads · Bluesky ready · keys: awaiting founder env
Trend catcher

15-min sweep ranks what’s moving; a trend becomes a brief in one click — jump on it while it’s alive.

feeds Listening signals above
Auto creative

3 voice-matched variants per brief · voice score 0–100 · media + caption generated per channel by the atomizer.

pre-post score predicts reach
Schedule

Per-brand calendar; approved posts queue to slots. Nothing publishes without the human approve.

gate: approve sends nothing
Social inbox + UGC

Unified inbox triage · comment-to-DM funnels · UGC discovery with rights-request DMs (PROPOSE lane — a DM is contact).

rides the outreach lanes above

Seed run — one trend, end to end demo of the live flow

14:15 · Trend caught — “POV voiceover audio” ↗ 214% / 6h15-min sweep ranked it #1 for the Folo voice · one click made it brief GB-0412
Folo tenant
14:19 · 3 variants drafted + scoredvoice scores 91 · 74 · 62 — variant A kept; atomizer cut reel + story + caption per channel; pre-post score predicts 12–18k reach
auto creative
14:22 · Media generated, sent to approvalsits in the approve queue — approve sends nothing; a human owns the gate (§13)
awaiting approve
on approve · Scheduled Thu 19:00 → IG reel + Threadsslots picked from the Folo calendar’s best-performing windows; results land in Measurement above, attributed by smart link
then: tracked
This is the engine’s real production line run on demo data — trend to scheduled post in ~7 minutes plus one human approve. The missing pages (calendar · approve queue · inbox) are second-level surfaces of THIS flow and ship with implementation; this seed is their spec.
WRITE PATH · briefs, variants and schedules write in the Growth engine; publishing goes out on each brand’s own channel connections; approval is the only path to ‘sent’ · SOURCE · growth engine (demo mode — AWAITING keys + platform app review, stated not faked) · SCOPE · tenant pills; folo.link sees every brand’s calendar side by side

Affiliates & referrals
Product-side programmes (the FG affiliate leaderboard and referral scheme live in each product admin under Money → Growth). Growth reads the rate card and attributes outreach links through it — it never sets rates.

Rates & bases: docs/PRICING-CANONICAL.md — never inline.