Privacy Policy
Last updated: June 23, 2026
What we collect
From the CLI (npx spinner-recruit claude, only after you explicitly opt in on first run):
- A random session ID, generated fresh each time you run the CLI
- Impression events when an ad is shown for at least 5 seconds
- Click events — clicking the ad's terminal link opens a redirect on our API that records the click before sending you to the job URL (terminal links can't run JavaScript, so this redirect is how a click is recorded)
- Your SpinnerRecruit developer ID, if you've linked your account via
pair - A salted, one-way hash of your IP address, recorded server-side on every ad request — used only to cap how many ads a single IP can be served per hour (abuse/fraud prevention). We never see or store the IP address itself, only the hash.
The CLI does not read your files, terminal history, or any output from your AI agent other than watching for the “Thinking” status marker (to know when to show the ad) — it never reads file contents, code, or prompts. Config (consent flag and developer ID only) is stored locally at ~/.spinner-recruit/config.json.
From the legacy VS Code extension (earlier installs only, no longer under active development; only after you explicitly opt in):
- Your active file's language ID (e.g. “typescript”) — for ad targeting
- A random session ID, generated fresh each VS Code session
- Impression events when an ad is shown for at least 5 seconds
- Click events when you click a job ad
- Your SpinnerRecruit developer ID, if you've linked your account
From the web (spinnerrecruit.dev):
- GitHub profile (username, email) when you sign in to /me
- Web analytics via PostHog — page views and button clicks on spinnerrecruit.dev only
From Stripe Connect (when you link for payouts): your Stripe Connect account ID. All identity verification and KYC is handled directly by Stripe.
What we never collect
- Code you write
- File names, paths, or contents
- Prompts or responses exchanged with AI agents
- Anything not listed above
How we use it
- Language ID + session ID: serve the best-matching ad for your active file
- Impression/click events + developer ID: calculate and pay your earnings
- IP hash: rate-limit how many ads any one IP can receive, to deter abuse
- GitHub profile: identify your account in the developer dashboard
- PostHog analytics: understand which flows work and improve the product
Data sharing
We share data with the following sub-processors only to the extent necessary to operate the service:
- Supabase — database hosting
- Stripe — advertiser billing and developer payouts
- PostHog — web-only analytics
- Vercel — hosting and edge infrastructure
We do not sell your data.
Your rights
- Opt out of the CLI at any time: run
spinner-recruit optout. No further data is sent until you opt in again. (Legacy VS Code extension installs: run “SpinnerRecruit: Opt Out (Disable Everything)” in the command palette.) - View your serve history: jobs recently shown to you appear on your
/medashboard, so you can find one again if you didn't click it in time. - Request access, correction, or deletion: email privacy@spinnerrecruit.dev with “Privacy Request” in the subject. We'll respond within 30 days.
- Once your developer ID is linked to a Stripe payout identity, that data is personal data under GDPR. Deletion requests are honoured within 30 days, subject to legal retention obligations for financial records.
Data retention
Impression and click records are retained for 2 years for payout dispute resolution. IP hashes are retained until you request deletion (we run no automatic expiry on them today). If you delete your account, your serve history — including IP hashes and session IDs — is deleted immediately; aggregated billing records (impressions, clicks, payouts) are kept for financial integrity but your developer identity is anonymised.
Changes to this policy
We'll update the “last updated” date when this policy changes. Material changes will be noted in the CLI's release notes.