Skip to main content

max / makenotwork

raise tier prices to 16/24/36/60; add idempotent Stripe price seeder Standard creator-tier prices clear the irreducible support floor at every tier with even-dollar values. Founder rate stays at exactly 50% of standard. Annual = monthly * 12 * 0.9, rounded to whole dollars. - Sources of truth: CreatorTier::price_cents + test, MNW/CLAUDE.md. (Canonical assumptions.toml updated in a paired commit in _private.) - Server templates: pricing.html, index.html founder grid, use_cases.html, user_creator.html signup options. - site-docs markdown: tiers.md, pricing.md, compare.md, how-we-work.md, story.md, guarantees.md, fan-guide.md, faq.md. Break-even, savings, and worked-example numbers recomputed. - Internal docs: schema.md, architecture.md, scaling.md (blended ARPU), audit_review.md BF-H1 example, cli.md sample output, makenotwork.html pitch. - docengine fixture comments + assertion values updated to match new ARPU/Stripe-fee numbers (test still won't run until the broken fixture include_str path is fixed; tracked in launchplan post-launch follow-up). - Static html mirror regenerated via site-docs/public/html/build.sh. New deploy/stripe_seed_creator_tier_prices.sh idempotently creates the 16 Stripe Prices (4 tiers x {standard, founder} x {monthly, annual}) via lookup_keys. Re-running is safe: existing prices with the right amount are reused, amount changes are handled atomically via transfer_lookup_key. Existing subscriptions are unaffected (Stripe pins them to the original Price ID at signup). --archive-old-on-tier-products archives the legacy manually-created prices after the new set is verified.
Co-Authored-By
Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-06-01 02:37 UTC
Signed with PGP, not checked
Commit: 6e9b417f7232d7cd7b50fb59d5e08952ba1fc579
Parent: 4541ebc
104 files changed, +10923 insertions, -1767 deletions
M server/todo.md +1 -1
@@ -70,7 +70,7 @@
70 70 - [ ] `build_runner.rs:151` serial-target loop. LOW; builds run rarely; refactor touches denominator + error aggregation + log order. Post-launch.
71 71 - [ ] `scheduler/mod.rs:92-279` advisory-lock per-tier granularity. Multi-replica concern; defer until multi-replica is real.
72 72 - [ ] Drop unused `completion_effects` table (migration cleanup, schema-only).
73 - - [ ] Templatize founder annual prices in `tiers.md` (e.g. `$54/yr`, `$108/yr`, `$162/yr`, `$324/yr`). docengine substitutions don't support arithmetic; would require adding derived `tiers.founding.basic_annual` etc keys in `shared/docengine/src/assumptions.rs`. Not blocking.
73 + - [ ] Templatize founder + standard annual prices in `tiers.md` and `pricing.md` (e.g. `$86/yr`, `$130/yr`, `$194/yr`, `$324/yr`; standard `$173/$259/$389/$648`). docengine substitutions don't support arithmetic; would require adding derived `tiers.founding.basic_annual` etc keys in `shared/docengine/src/assumptions.rs`. Not blocking.
74 74 - [ ] `_head_assets.html` apple-touch-icon + manifest link wiring. `static/manifest.json` exists but the `<link rel="manifest">` was reverted; bring back if/when desired.
75 75 - [ ] Migrate footer's `What's new` and `Shortcuts` `<a href="#" onclick="...">` to `data-*` attributes following the `data-copy-link` pattern. UX MED, not blocking.
76 76
@@ -165,7 +165,7 @@
165 165
166 166 - Checkout sessions for one-time purchases and subscriptions
167 167 - Webhook handlers for payment confirmation, subscription lifecycle, disputes
168 - - Creator tier subscriptions (Basic $10, Small Files $20, Big Files $30, Everything $60)
168 + - Creator tier subscriptions (Basic $16, Small Files $24, Big Files $36, Everything $60)
169 169 - Fan+ consumer subscriptions ($8/mo)
170 170 - Promo codes (percentage/fixed discount, free access)
171 171
@@ -893,7 +893,7 @@
893 893
894 894 | ID | Risk | Evidence | Plan |
895 895 |----|------|----------|------|
896 - | BF-H1 | Multi-account tier-gaming: `try_increment_storage` gates per-user only; no cross-account dedup against payment method, IP, or email domain. A creator with 10GB of small files could split across two Basic accounts at $10/mo each instead of one Small Files at $20/mo. | `src/db/creator_tiers.rs:218,568` | Defer. Founder cohort is hand-picked; at scale add Stripe customer-id cross-check or payment-method fingerprinting. |
896 + | BF-H1 | Multi-account tier-gaming: `try_increment_storage` gates per-user only; no cross-account dedup against payment method, IP, or email domain. A creator with 10GB of small files could split across two Basic accounts at $16/mo each instead of one Small Files at $24/mo. | `src/db/creator_tiers.rs:218,568` | Defer. Founder cohort is hand-picked; at scale add Stripe customer-id cross-check or payment-method fingerprinting. |
897 897 | BF-H2 | MetaDefender Cloud has no monthly spend cap in code. Currently free-tier (4k req/day) and gated to suspicious files only, so cost = $0 today. If MNW upgrades to a paid key, an uploads-flood from a hostile account would have no spend ceiling. | `src/scanning/metadefender.rs` | Defer. Add daily-budget alert + cap before any paid-key upgrade. Note in `tech/content-scanning.md`. |
898 898 | BF-H3 | Founder rate "locked for life" is a one-way ratchet. Cost-favorable changes apply retroactively; cost-unfavorable changes cannot. | `site-docs/public/about/guarantees.md`, `site-docs/public/about/pricing.md:14` | Defer. The legal language is already correct ("locked at the rate when you joined"); business risk is structural and intentional. |
899 899 | BF-H4 | Earn-back credit program: any creator who pays more than they earn gets credited. Inverts unit economics on small creators — a $5 Basic creator earning $0 gets a year free. Combined with "no ads ever" guarantee + founder rate lock, the long tail of creators is structurally subsidized by the top end. | `site-docs/public/about/economics.md`, `roadmap.md:54` | Defer. Strategic decision. Cap the credit to a maximum dollar amount or pair with a minimum-engagement floor before the program goes live (deadline 2027-01-01). |
@@ -356,7 +356,7 @@
356 356 │ Username: max │
357 357 │ Display name: [Max J ] │
358 358 │ Email: max@example.com (verified) │
359 - │ Tier: Small Files ($20/mo) │
359 + │ Tier: Small Files ($24/mo) │
360 360 │ Storage: 142MB / 10GB ██░░░░░░░░ 1.4% │
361 361 │ │
362 362 │ Security │
@@ -43,7 +43,7 @@
43 43
44 44 ## Economic Analysis
45 45
46 - All prices are list rates as of 2026-05; verify before budgeting. EUR/USD assumed ~1.08. Tier mix assumed roughly: 50% Basic ($10), 25% Small Files ($20), 20% Big Files ($30), 5% Everything ($60) → blended ARPU ~$19/mo. Tier storage caps (50/250/500/500 GB) are headroom, not actual usage; assume actual fill ~20% of cap at any given time.
46 + All prices are list rates as of 2026-05; verify before budgeting. EUR/USD assumed ~1.08. Tier mix assumed roughly: 50% Basic ($16), 25% Small Files ($24), 20% Big Files ($36), 5% Everything ($60) → blended ARPU ~$24/mo. Tier storage caps (50/250/500/500 GB) are headroom, not actual usage; assume actual fill ~20% of cap at any given time.
47 47
48 48 ### Compute (Hetzner)
49 49
@@ -264,7 +264,7 @@
264 264 ## Creator Tiers
265 265
266 266 ### creator_subscriptions
267 - Platform subscription for creators (Basic $10, Small Files $20, Big Files $30, Everything $60). One row per creator.
267 + Platform subscription for creators (Basic $16, Small Files $24, Big Files $36, Everything $60). One row per creator.
268 268
269 269 - **FK:** user_id → users CASCADE (UNIQUE)
270 270 - **Key columns:** tier, status, stripe_subscription_id UNIQUE, grace_enforced_at