Curb.

Launch board

Updated 19 Jul 2026 · by Claude (overnight truth-audit)
0%

Your next 3 moves

  1. Dogfood a GBP post → record the Google demo video → submit sensitive-scope verification — publish a real post to your own Google Business Profile from Curb, screen-record it, then submit Google's OAuth sensitive-scope review. GBP publishing is unblocked and live — this is the last unproven step before Google review can open.
  2. Stripe sandbox: create products + set the 9 STRIPE_PRICE_* secrets — names in .dev.vars.example. Unblocks the billing deploy — the only one left queued.
  3. Test TestFlight build 6 — v2 Phase-0 reskin + IG-connect fix + queue edit/delete. Inner screens still wear the old design — Phase 0 reskinned the shell only.
Done Doing Next Waiting Gate-open Later You = only Luke can do it

🌐 Website & landing

withcurb.com public face · vault: curb-landing-legal

  • DoneMain landing page + 4 product pages — LIVE on prodYour new marketing site merged + deployed 18 Jul, all pages 200, new pricing showing
  • DonePRICING LOCKED (18 Jul): Stand $10 solo · Corner $29 · Block $59 ⭐ · Strip $99iOS = web×1.3 · annual pay-10-get-12 · add-ons unchanged · decision page →
  • DoneWaitlist express-consent checkbox + consent logging — LIVEUnticked by default, logs time + consent-text version, gates the marketing audience (AU Spam Act)
  • Donewithcurb.com verified in Google Search ConsoleSite-verification TXT live on DNS — confirmed 18 Jul
  • DonePrivacy · Terms · Data-deletion pages liveReview-grade; checked 200 on prod

⚙️ Web app

~/Projects/project-social · vault: with-curb

  • DoneAll 4 products live on prod behind the waitlist gate
  • DoneSecurity: gate, dev-backdoor killed, re-audit = GOGate-blockers re-verified closed 17 Jul
  • DoneMeta post-approval deploy — IG publish path live5 branches merged, migrations 0052–0055, smoke green
  • DoneCron sender bug — verified already fixed on mainLaunch-cleanup session: code honours FROM_EMAIL, live on prod
  • DoneProd-secrets audit + security fast-follows shippedOrg-guard on GBP/FB/Bing runners + zod on queue/review — prod 692c141b, 1049 tests green
  • Donecurbsocials.com → withcurb.com 301s — LIVE on prodDeployed 18 Jul, smoke-verified (path-preserving, webhook/OAuth carve-outs intact)
  • DoneShipped 18 Jul: origin-guard CSRF hardening · email brand template + ABN footers · queue authz manager+ · waitlist consent checkbox4 branches merged, migration 0059, 1100 tests green, prod smoked
  • DoneLast open security item closed — IG comment-reply authz + 4 rehearsal P3s fixedMerged to main 18 Jul — DEPLOYED to prod 19 Jul with the P0 batch. Org-isolation also hardened: a new automated check now fails the build on any un-scoped database query.
  • Done✅ P0 FIXED + DEPLOYED — unintended live IG publish (18 Jul): schedule dates silently dropped + invented +30min approve time + publish-before-recordShipped to prod 19 Jul (main `472d7ba`, version `f56af218`). Verified on the deployed bundle: no invented time, and the publications row is claimed BEFORE any Instagram Graph call. 1171/1171 tests green. Real IG scheduling is now safe.
  • DoneEdit + delete a queued post — API shippedDeployed 19 Jul with the P0 batch: POST /api/queue/:id/edit + /delete. Unblocks the iOS build-6 edit/delete screens, which were 404ing. Also enabled production logging (observability) — prod was logging nothing, which blocked the P0 investigation.
  • DoneStaging (preview) now password-gatedSITE_PASSWORD set on preview — closes the "staging serving ungated" gap flagged 19 Jul
  • NextSMS ungate: one-way, quota 0 ($15/100 pack unlocks)Queue-authz half SHIPPED 18 Jul · SMS half ships with the Mobile Message window · template: "Shop name: message (no-reply)" + opt-out link on marketing
  • NextFinal prod smoke test before gate-open

🛂 Approvals (external)

Meta · Google · vault: curb-meta-app-review, curb-launch-readiness

  • DoneMeta App Review — APPROVED 17 Jul 🎉All 3 IG permissions after a 23-day review
  • DoneMeta app PUBLISHED — Curb Socials is LIVE 🎉18 Jul: Publish badge green, zero required actions — real customers can connect Instagram
  • DoneConsole URL migration complete — Meta + Google cleaned, carve-outs dropped18 Jul: IG webhook live on withcurb · curbsocials purged from both OAuth clients · code shipped, 1119 tests · /webhooks/* stays until Stripe endpoint confirmed
  • DoneChannel truth check17 Jul: IG perms all "Ready to publish" · FB posting NOT granted · GBP quota still 0 → launch copy claims Instagram only
  • DoneGoogle Business Profile publishing — UNBLOCKED + LIVE via the CS-project bridgeGBP now live at 300 QPM via the allowlisted Cornerstone Cloud project (683391900680) — e2e verified, 6 locations loading, "With Curb" consent screen confirmed, no more 429s. Curb's own project's appeal (case 3-5341000041476) stays open in parallel, a win there is a bonus not required.
  • DoneGoogle appeals filed — email 17 Jul, form 18 JulEmail bounced ("PII-only channel") → proper form submitted with the same ask
  • LaterGoogle OAuth verification (Gate 2) — reserved, not submittedPrereq (dogfood GBP post) now unblocked, but the submit itself stays deliberately parked — reclassify scope, logo, demo video, submit, on your call
  • LaterMeta cleanup: rotate reviewer login + remove temp allowlistYour call: no rush, test accounts only

📱 iOS & App Store Connect

~/Projects/curb-socials-ios · vault: curb-ios

  • DoneApp built — all 4 products + parity waves, mobile auth + email→app sign-in
  • DoneApple company account + D-U-N-S — sortedYour CAGL company team 3272YE679N holds Curb; no enrolment or conversion needed
  • DoneTestFlight — internal builds live on your iPhoneBuilds 2+3 uploaded 7 Jul, fully autonomous via the CAGL API key
  • DoneParity burn-down complete — TestFlight build 4 on your phoneTonight: 4 branches merged, prod deployed, build 4 uploaded on your go
  • Donev2 mockup sign-off — Phase 0 (shell reskin) approved + builtPhases 1–4 (inner screens) still to build — those screens still wear the old design for now
  • DoneTestFlight build 6 uploaded — v2 Phase-0 reskin + IG-connect fix + queue edit/deleteInner screens still wear the old design — Phase 0 reskinned the shell only. Test it on your phone.
  • NextIAP from launch at +30% markup (your form call)UNBLOCKED — tiers locked: $12.99 / $37.99 / $76.99 / $128.99 · StoreKit + SBP enrolment + Stripe entitlement sync · ready for a session
  • NextApp Store public-submission packReviewer owner demo login · prod OAuth · screenshots · App Privacy label · category Business · v1.0.0
  • LaterPush notifications (APNs)Not a beta blocker

💳 Payments

Stripe · vault: curb-pricing

  • DoneStripe webhooks hardened — idempotent + Basil-compatible
  • DoneBilling code built + reviewed — checkout, $1×3 intro, gating, up/downgrade1112 tests · price IDs env-driven · on branch billing-sandbox (unmerged) · dry-run waits on Stripe sandbox products + 9 STRIPE_PRICE_* secrets (still absent 19 Jul)
  • YouActivate Stripe live + create the pricesPricing locked → click-list ready (4 products, 9 secrets) · sandbox first, live at gate-open · same sitting: confirm Stripe's webhook endpoint URL is on withcurb (then the last carve-out drops)
  • Gate-openBilling on + $1×3 intro offer liveShips with the public launch, not before

📣 Comms & marketing

vault: curb-comms-lifecycle, curb-socials-launch

  • DoneEmail infra: Resend Pro + verified sender send.withcurb.com
  • YouClaim @withcurb handles — X · TikTok · YouTube · LinkedIn · Threads · FB page · bio pack ready →Handles + fallbacks, bios per char limit, art pointers, first pinned post — IG already yours
  • NextDogfood proof: post once → live on your own IG, screen-record itUNBLOCKED — app is Live on Meta; do it any time · the capture becomes the hero Reel
  • NextFounding cohort: approve comp shops + send founding-invite email6-months-free draft ready for your review
  • NextIG warm-up: 12-tile grid from the 107 built assets + teasersAll CTAs say "join the waitlist" while the gate is closed
  • DoneResend Audiences verified + 21-email transactional audit + 3 broadcast draftsTonight's comms session — nothing sent, nothing loaded into Resend
  • DoneComms decisions locked + sender livehello@mail.withcurb.com VERIFIED in Resend (DKIM+SPF) · reply-to hello@withcurb.com · "Follow @withcurb" CTA · tagline "Run it all." final
  • YouRead the 3 broadcast drafts before anything sendswaitlist-welcome · founding-invite · launch-announcement (stays on HOLD till gate-open)
  • DoneEmail polish SHIPPED — ABN footer on all 21 types, shared brand template, sign-offs unifiedWent out in the 18 Jul integration deploy
  • NextEmail brand-consistency pass — built, branch ready to mergeSession complete 18 Jul evening; awaiting merge + deploy
  • Gate-openLaunch-announcement broadcast

🎫 Help centre & support

vault: curb-support-desk, curb-admin-console

  • DoneHelp centre + ticket system live on withcurb.comShipped 17 Jul
  • DoneAdmin/ops console at /admin/consoleWaitlist approvals, activation funnel, health, view-as
  • DoneRehearsal test data deleted off prod"Rehearsal Shop One" org + 2 waitlist rows removed 18 Jul · rollback bookmark kept

🎨 Design & QA

vault: curb-design-qa

  • DoneMarketing-surface QA pass — footers, contrast, funnel CTAs
  • DoneQA pass + fixes built — 16 commits pushedKanban cards fixed, 10 QA fixes, Queue Sent-tab dead-end, empty states, onboarding guard, phantom test columns purged
  • DoneMarketing WIP committed — merge train clearedYour new pages merged + deployed; design-qa and domain-migration both shipped behind it
  • DoneMagic-link fix: scanner-proof verify + visible expired-link messageShipped with the design-qa batch

🚀 Gate-open (launch day)

Your call — nothing here is scheduled · vault: curb-launch-tracker

  • Gate-openOpen the gate: public signup replaces the waitlist
  • Gate-open"Start free" CTAs + public pricing go live
  • Gate-openLaunch email to the waitlist
  • Gate-openReveal week on IG: hero Reel + proof posts