An open API service indexing awesome lists of open source software.

https://github.com/barneywohl/builderperks

Useful devtool perks during AI wait time
https://github.com/barneywohl/builderperks

ai-tools builder-tools chrome-extension devtools mvp

Last synced: 11 days ago
JSON representation

Useful devtool perks during AI wait time

Awesome Lists containing this project

README

          

# 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:

```bash
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:

```bash
~/.builderperks/statusline.sh
```

Claude Code statusLine settings snippet:

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

VS Code / Cursor task snippet:

```json
{
"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:

```bash
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:

```bash
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:

```bash
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

```bash
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`