Sample · Closeline-generated · No real clientSee how this was built ↓
Proposal · prepared for Marcus K. · Capra Invoicing

Finishing your B2B invoicing MVP — Stripe seats, RLS, PDF, prod.

3-4 week fixed-fee build · $6,500 · trial week available

Stripe webhooks firing but seats not syncing — that's almost always the subscription.updated handler missing the items.data[0].quantity diff against your org_seats row. Fixable in one sitting if your webhook log is intact.

I run themeknock.net — an AI-first studio building Next.js + Supabase + Stripe SaaS since 2019. Supabase + Stripe is the core stack of half our agency work — last one was a seat-based B2B tool, $19/seat/mo, shipped to production in 18 days. Multi-tenant RLS with tenant_id enforced at the policy layer, not the app layer.

Here's what I'd ship in your 3-4 week window:

  1. Stripe seat sync — webhook handler for customer.subscription.updated + invoice.payment_succeeded, proration via proration_behavior: 'create_prorations', idempotency keys on every write
  2. RLS lockdown — tenant_id policy on invoices, line_items, customers. Leak-test with two seeded orgs before merge
  3. PDF generator — @react-pdf/renderer server-side, signed URLs, 24h expiry, stored in Supabase Storage
  4. Vercel prod — env split, preview branches, webhook secret rotation, status page

One flag before kickoff — your JD says “last dev didn't lock tenant_id.” I'd want 30 minutes to read the current policies and the invoices schema before quoting firm. If the schema needs a migration (not just policy fixes), the PDF piece slides a week.

Live proof you can audit

Seven live production builds on this exact stack: Dr. Bryant Medical (patient portal · Twilio OTP · Stripe · D1 13 tables · live at drbryantmedical.com), RentCore (rental ops · rentcore.app), RepuShield (GBP reputation SaaS · repushield.app), SignalForge (multi-brain trading · xauusd-trader.themeknock.workers.dev). Plus Closeline, themeknock.net, ThemeKnock Studio. Open any one — they work right now.

Pricing — $6,500 fixed, milestoned at 25/25/25/25. I work fixed-fee, not hourly. No bait-and-switch, no hourly creep. If Stripe seats aren't syncing cleanly by milestone 2, you don't pay milestone 3.

Trial week is on the table — first 5 days, you keep the Stripe handler and the RLS audit either way. Free, no commitment.

Three questions before we kick off — webhook logs in Stripe dashboard, last 30 days intact? Supabase project on free tier or Pro? PDFs need branded templates per tenant, or one shared layout?

— Talha

themeknock.net

How this was generated

Five agents argued. The scorer gated it. 3 minutes 47 seconds.

Original JD
Title: Need Next.js + Supabase + Stripe dev to finish my B2B invoicing SaaS (MVP 70% done)
Budget: Fixed $6,500
Posted: 2 days ago · Proposals: 14
Client: Marcus K. · Payment verified · $84K spent · 23 hires · 4.9★

MVP is at ~70%. Auth + dashboard work. Stripe
subscription is half-wired — webhooks fire but seats
don't sync. Supabase RLS is loose, my last dev didn't
lock the tenant_id check on the invoices table. Need:
finish Stripe (seat-based, proration), lock RLS, ship
the PDF invoice generator, and deploy to Vercel prod.
3-4 weeks. Don't apply if you've never shipped a
multi-tenant SaaS.
Scorer panel
specifics-density ......... 9.6 / 100w  [floor 9.0] PASS
specifics-total ........... 30          [floor 18]  PASS
proper-nouns .............. 11          [floor 2]   PASS
domain-relevant-numbers ... 8           [floor 3]   PASS
naked-dollar-figures ...... 0           [max 0]     PASS
fingerprint-blocks ........ 0           [max 0]     PASS
fingerprint-score ......... 96 / 100                PASS
bookend-opening ........... buyer-noun OK           PASS
bookend-signoff ........... byte-exact              PASS
honesty-line .............. present                 PASS
em-dash-count ............. 7           [band 4-8]  PASS
contraction-count ......... 5           [floor 4]   PASS
semicolon-count ........... 0           [max 0]     PASS
geo-location-leak ......... none                    PASS
refine-attempts ........... 0 / 2 allowed
generation-time ........... 3m 47s
council-verdict ........... 5/5 PASS · SHIP
5-agent council output
Hook Scorer
PASS · 9.1/10

Quoted-Number Diagnosis archetype. Opens with the actual Stripe failure mode before any self-intro. Strongest hook class for symptom-rich JDs.

Specifics Density
PASS · 9.6/100w

Above 9.0 floor. Named specifics: proration_behavior, @react-pdf/renderer, customer.subscription.updated, tenant_id, $19/seat. 30 total > 18 floor.

Fingerprint Scrubber
PASS · 0 blocks

Zero corporate-fluff hits (leverage, robust, seamless — all absent). Zero tricolons. Zero semicolons. 7 em-dashes within 4-8 band. 5 contractions above floor.

Bookend Validator
PASS · byte-exact

Opening 17 words, anchors on buyer noun (Stripe webhooks), no operator vocab in S1. Sign-off byte-exact. No geographic location.

Strategy Council
PASS w/ note

Archetype A (diagnostic-first) correctly routed. Pricing risk-reversal present. Trial week offered. Buyer's 'don't apply if you've never shipped multi-tenant' answered directly in paragraph 2.

This one took 3 minutes 47 seconds. Yours could be next.