How Kickback works.
Kickback is an automated financial primitive for attention. Brands fund a Stripe escrow pool
and post a flat-fee bounty. Creators get a magic-link offer with an AI-ghostwritten ad-read
in their voice, drop their permanent kickback.link/handle in a video description,
the auto-verifier confirms the placement, and one click pays them via Stripe Connect.
The four roles
A single Google account can wear any of these hats. Sign-up routes you to the brand side by default; existing creators with a claimed handle still see their creator surface.
- Brand at
/dashboard/. Adds products, funds escrow, pitches creators. - Creator at
/creator/. Receives pitches via magic link, accepts, drops the kickback.link in their content. - Admin at
/admin/. Reviews verified placements, releases payouts.
Brand flow
Set up the brand
Sign in with Google, fill in company name and URL. That promotes the account to the brand role and lands you on the campaign list.
Create a campaign and fund escrow
A campaign is a destination URL plus a flat per-placement bounty in dollars. Funding is via Stripe Checkout when billing is enabled, dev-mode ledger entry otherwise. Escrow is recorded in an append-only ledger keyed by Stripe charge id, so webhook retries can never double-count.
Find creators
The Find Creators page searches YouTube by topic. Each result shows whether the creator already
has a kickback.link/handle on file, and whether we have a cached voice profile from
previous pitches. New creators can be onboarded by sharing the signup link.
Pitch by handle
On the campaign page, type a creator's handle. We lock the campaign bounty for them at that moment, generate an AI ad-read in their voice (sampled from their recent video transcripts), and email a magic link to the address on their account.
Creator flow
Claim your handle
One permanent short link per channel. Lowercase letters, numbers, dashes; 3 to 30 characters. The handle is what you paste in every video description, every brand, forever.
Receive a pitch
A brand funds escrow and pitches you. The offer lands in your inbox at /creator/
and as a magic link in your email. The page shows the bounty (already locked in escrow), the
AI ad-read, and a one-tap accept.
Drop the link
After accept, paste kickback.link/your-handle in a video description. That URL
302s to the active campaign destination. The auto-verifier scans for the substring in
descriptions and transcripts on a 12 hour cadence.
Get paid
On match, the pitch flips to verified. An admin clicks Release. Stripe transfers the bounty to your Connect account. Settled funds typically land within 48 hours.
Money rules
- Integer cents, USD only in V1. UI formats as
$X,XXX.XX. - Append-only ledger.
escrow_ledgerrows are unique per source (Stripe charge id, payout id, dev top-up uuid). Retries are no-ops. - Bounty locked at pitch time. Re-pricing the campaign later does not affect outstanding pitches.
- Human-in-the-loop release. V1 always requires admin click before money moves. Auto-release ships in V2 once trust and fraud signals are in place.
What the auto-verifier checks
For each accepted pitch, the verifier resolves the creator's YouTube channel, lists their last
ten uploads, and scans each video's description for the exact substring
kickback.link/handle. If no match in any description, it falls back to scanning the
transcript text. On match, the pitch is stamped verified with the matching video id and queued
for admin release.
YouTube data API budget is bounded: each pitch sweep costs about 102 units, the daily quota is 10,000, so a 12 hour sweep can cover up to roughly 196 active pitches without manual intervention.
Out of scope for V1
- Per-view performance payouts. Flat fee on link detection only.
- TikTok, Instagram, X verification. YouTube only.
- Multi-currency. USD only.
- Auto-release. Admin click required.
- In-app brand-creator chat. Take it or leave it bounties.
Spec at docs/PRODUCT_SPEC.md, mirrored into the running app's
product_spec table on every deploy.