Skip to content

barneywohl/builderperks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BuilderPerks

Sponsored builder offers during AI wait states.

Live beta: https://builderperks.netlify.app/

BuilderPerks is looking for first testers. Try it for one AI coding work session and tell us whether it feels useful, neutral, or annoying.

Beta Tester CTA

  1. Download the beta extension ZIP from the live site or latest GitHub release.
  2. Load extension/ as an unpacked Chrome extension, or unzip the packaged beta.
  3. Work normally in Claude, ChatGPT, Cursor, v0, Lovable, Bolt, or another AI build tool.
  4. Open a Builder beta feedback issue with the result.

The beta includes builder controls from the first complaint pass: dismiss any card, pause cards for the day, disable cards, and cap daily card appearances. Version 0.2.0 also locally matches offers to the page context and shows why a card appeared.

Advertiser Pilot CTA

Devtool companies can test a manually approved launch placement:

  • $250 starter pilot.
  • 48-hour placement.
  • Manual approval before anything goes live.
  • Clicks, claims, and feedback tracked.

Open an Advertiser pilot interest issue or use the live buy form.

What Ships In This MVP

  • Advertiser buy request form with package selection.
  • Placement API that records pending ads.
  • Admin approval workflow for pending ads.
  • Public live placement feed.
  • Builder claim workflow.
  • Click tracking for advertiser reporting.
  • Builder/advertiser feedback capture.
  • Chrome extension that reads the live feed, locally matches offers to AI build context, and injects cards near wait-state text.
  • Supply-side ad stream API for terminal, IDE, extension, and agent publishers.

Publisher API Quickstart

One-command terminal/status-line install:

curl -fsSL https://builderperks.netlify.app/install-statusline.sh | bash -s -- pub_x

The installer downloads ~/.builderperks/statusline.sh and writes ~/.builderperks/config.env with the publisher id plus safe keyword/category defaults.

Run from any terminal, IDE task, Claude Code status line, or agent shell with no inline env vars:

~/.builderperks/statusline.sh

Claude Code statusLine settings snippet:

"statusLine": { "type": "command", "command": "~/.builderperks/statusline.sh" }

VS Code / Cursor task snippet:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "BuilderPerks sponsored line",
      "type": "shell",
      "command": "~/.builderperks/statusline.sh",
      "problemMatcher": []
    }
  ]
}

The helper prints one labeled sponsored line and fails quietly if the network or API is down. It sends only broad preference keywords and category choices you choose. It does not send prompts or personal data. Publisher earnings are estimated revenue share for hosting a respectful sponsored line, not payment for watching or clicking ads.

If the command prints nothing during setup, run the same helper with diagnostics enabled:

BUILDERPERKS_DEBUG=1 ~/.builderperks/statusline.sh

Debug output goes to stderr and is intended for setup verification only, so normal terminal and status-line use stays quiet.

Register a publisher surface:

curl -X POST https://builderperks.netlify.app/api/publishers \
  -H "content-type: application/json" \
  -d '{"name":"My CLI","email":"founder@example.com","surface":"terminal"}'

Stream a labeled sponsored card:

curl "https://builderperks.netlify.app/api/ad-stream?publisherId=pub_x&surface=terminal&context=deploying%20an%20AI%20app&keywords=typescript,react,postgres&blockedKeywords=crypto,gambling&blockedCategories=adult,gambling&valueMode=relevant&format=statusline"

Use the returned ad and render fields in your UI and route clicks through the returned clickUrl. Use keywords for broad programming language, framework, and project targeting only. Use blockedKeywords for categories or sponsors you do not want in the workflow. Use valueMode=passive|relevant|high_value when the publisher wants a higher-value discovery mode. Use allowedCategories for explicit opt-ins and blockedCategories for category-level blocks. Regulated or restricted categories such as finance, legal, health, gambling, and adult are never default inventory. Do not send personal data or full prompts. Terminal publishers can render render.statusLine or render.terminalLine directly. IDE and agent UIs can render render.ideCard; Markdown surfaces can render render.markdown. VS Code and Cursor can start with the task snippet above, then graduate to rendering render.ideCard inside a native panel. Publisher earnings are estimated and unpaid until advertiser revenue and payout rails are approved. The response includes marketplace.categoryProfiles and marketplace.providerLanes so publishers and advertisers can tell whether a match is BuilderPerks seed/direct demand, developer-network compatible demand, or a regulated/restricted partner lane.

KISS Scope

No auction engine, no wallet payouts, no revenue share ledger, no self-serve targeting dashboard. The first product question is whether advertisers want this attention surface and whether builders tolerate or value the cards.

Local

cd projects/builderperks/web
npm install
npm run build
npm run check
npm run smoke
npm run smoke:api

Use npm run dev for Netlify local functions. npm run smoke:api defaults to http://localhost:8888 and refuses to mutate a non-local site unless BUILDERPERKS_MUTATE_LIVE=1 is set.

Admin

Set BUILDERPERKS_ADMIN_KEY in production. Without it, the demo key is demo-admin.

Set BUILDERPERKS_CHECKOUT_URL to route every buy request into Stripe or another checkout page. For package-specific Stripe Payment Links, set:

  • BUILDERPERKS_CHECKOUT_URL_STARTER
  • BUILDERPERKS_CHECKOUT_URL_LAUNCH
  • BUILDERPERKS_CHECKOUT_URL_TAKEOVER

For dynamic Stripe Checkout Sessions, set:

  • STRIPE_SECRET_KEY
  • STRIPE_WEBHOOK_SECRET

Then configure a Stripe webhook for checkout.session.completed pointing at /api/stripe-webhook. Paid sessions are marked paid; approval is still manual so bad offers cannot go live automatically. Without Stripe credentials or checkout URLs, buy requests are stored as invoice/manual approval requests.

Jake/company must create or own the Stripe account because Stripe needs business, tax, ownership, and bank details. Once the live API keys exist, BuilderPerks can accept paid placement requests.

Stripe Connect is intentionally not in the first paid-pilot path because BuilderPerks is currently charging advertisers directly, not onboarding third-party merchants or paying out publishers. See docs/STRIPE_CONNECT_DECISION.md.

Stripe development/security checklist: docs/STRIPE_DEVELOPMENT_CHECKLIST.md.

Extension

Load projects/builderperks/extension as an unpacked Chrome extension, then set the deployed API URL in the popup.

Growth

  • Acquisition sprint: docs/USER_ACQUISITION_SPRINT.md
  • First-user campaign: docs/FIRST_USER_CAMPAIGN.md
  • First-user target queue: docs/FIRST_USER_TARGETS.csv
  • Outreach copy: docs/OUTREACH.md
  • Guerrilla launch playbook: docs/GUERRILLA_LAUNCH_PLAYBOOK.md

About

Useful devtool perks during AI wait time

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors