diff --git a/apps/website/.env.example b/apps/website/.env.example
index cdd4992..6f9e27a 100644
--- a/apps/website/.env.example
+++ b/apps/website/.env.example
@@ -7,3 +7,5 @@ PUBLIC_X_EVENT_CHECKOUT=
PUBLIC_X_EVENT_LEAD=
PUBLIC_X_EVENT_PRICING=
PUBLIC_CF_BEACON=
+# Optional Cal.com or Calendly link for the Founding 100 setup call (otherwise booked by email)
+PUBLIC_FOUNDING_BOOKING_URL=
diff --git a/apps/website/marketing/grand-slam-offer.md b/apps/website/marketing/grand-slam-offer.md
new file mode 100644
index 0000000..704ec0e
--- /dev/null
+++ b/apps/website/marketing/grand-slam-offer.md
@@ -0,0 +1,117 @@
+# Godmode Grand Slam Offer (Hormozi, $100M Offers)
+
+Live since 2026-10-05 (site + X ads F1/F2). Goal: an offer so good that saying no feels stupid, without lowering the price.
+
+## 1. Where we stand (data since 2026-10-04)
+
+| | |
+|---|---|
+| Ad visitors | 373 (321 mobile = 86%, 37 desktop) |
+| Scrolled to any section | 32 visitors (~9%) |
+| Saw pricing | 14 views |
+| Checkout starts | 10 (9 from mobile, 0 from desktop) |
+| Real paid orders | 0 |
+
+What it means: people click, but the offer gives them no reason to act now, and most of them are on a phone where they cannot install a desktop app. Today we sell "software for $39/mo". Hormozi's rule: never discount, raise the value until the price looks like a mistake.
+
+## 2. Value equation, today vs. the new offer
+
+Value = (Dream outcome x Perceived likelihood) / (Time delay x Effort and sacrifice)
+
+| Lever | Today | New offer |
+|---|---|---|
+| Dream outcome | "AI coworker" (vague) | "10 hours back every week. Your first AI employee, working by Friday." |
+| Perceived likelihood | New product, no reviews, AI agents have burned people before | Founder builds your first agents with you, outcome guarantee, "we build it if it doesn't run" |
+| Time delay | Install, configure, figure out what to automate | First agent running in 48 hours, 9 ready-made agents, 25 copy-paste automations |
+| Effort and sacrifice | Desktop install from a phone, Claude plan on top, setup alone | Start on the phone, we send the download to your inbox, setup done with you, runs on the Claude plan you already pay for |
+
+## 3. Objections -> solutions -> bonuses
+
+| Objection (before / during / after) | Solution in the offer |
+|---|---|
+| "I'm on my phone" (86% of traffic) | Claim the seat on the phone, setup link and download land in your inbox, book the setup slot right on the success page |
+| "I don't know what to automate" | Founder setup session: you leave with 3 automations running |
+| "AI agents never work for real" | Running-in-48-hours guarantee + 10-hours-back guarantee |
+| "Is it safe to give it my passwords?" | Already solved by the vault; lead with it in copy ("the AI never sees your passwords") |
+| "Another subscription, plus Claude" | Founding price locked for life; "turns the Claude plan you already pay for into an employee" |
+| "Who are you? New company" | Direct line to the founder, private founders group, roadmap votes |
+| "It'll get worse / pricier later" | Price lock + every update included |
+
+## 4. The offer
+
+Name (MAGIC: Magnetic reason, Avatar, Goal, Interval, Container):
+
+**Godmode Founding 100: Hire your first AI employee this week. 10 hours back every week, or you pay nothing.**
+
+### What you get
+
+| | Comparable value |
+|---|---|
+| Godmode Pro, every feature: browser and computer use, its own Mac VMs, vault + 2FA, unlimited agents and automations, Slack/Telegram/Teams | $468/yr (list price) |
+| Bonus 1, Your First AI Employee, built with you: 20-min 1:1 setup with the founder, you leave with 3 automations running | $300 (automation freelancers charge $100+/h, 3 builds) |
+| Bonus 2, The Hire-in-a-Click library: 9 ready-made agents + the 25-automation playbook | $250 |
+| Bonus 3, Founding price lock: $29/mo (yearly) or $39/mo, never goes up while you stay | $240/yr once list goes to $49/$59 |
+| Bonus 4, Direct line to the founder: private Founders group, your feature requests jump the queue | $500/yr (priority support tier) |
+| **Total comparable value** | **$1,758 in year one** |
+| **You pay today** | **$0**, 14 days free, then $29/mo billed yearly or $39 monthly |
+
+### Guarantees (stacked)
+
+1. **14 days free.** Cancel in two clicks before day 14, pay nothing.
+2. **Running in 48 hours, or we build it for you.** If your first automation isn't running 48 hours after you install, the founder sets it up with you personally. (Service guarantee, costs us time, not money.)
+3. **10 hours back in 30 days, or every cent back.** Set up 3 automations (we help), and if Godmode hasn't saved you 10 hours in your first 30 paid days, email us for a full refund and keep the agents you built. (Conditional outcome guarantee; replaces the current 14-day refund for founders.)
+
+### Scarcity and urgency (both real)
+
+- **100 seats**, because the founder runs every setup session personally. Counter on the page reads from the orders table (we already had /api/offer for the old lifetime counter).
+- **Closes October 31 or at seat 100**, whichever first. After that: list price $59/mo or $49/mo yearly, no setup session, standard 14-day refund.
+
+## 5. Why it's "too good to be true" and still profitable
+
+- Cost of the bonuses is mostly founder time: 100 x 20 min = 33 hours, spread over 4 weeks. Bonus 2 already exists in the product. Bonus 3 costs nothing until we raise the price.
+- The outcome guarantee costs at most one refund of $39 / $348 per unhappy buyer. With a 7-day trial we have 0 paid; any lift beats that.
+- Setup calls are the best product research we can buy: 100 founders telling us what they automate.
+- Founders who are set up with 3 running automations churn far less (Hormozi's "virtuous cycle": commitment, results, retention).
+
+## 6. Funnel changes the offer needs
+
+1. Hero, pricing and final CTA switch to the Founding 100 stack with a live "x of 100 seats left" counter.
+2. Mobile: primary button "Claim my founding seat", subline "Start on your phone. We'll send the download to your inbox."
+3. Success page: book the setup slot (Cal.com or Calendly link) + download link + "first 3 automations" checklist; same in the welcome email.
+4. Stripe: trial 7 -> 14 days for founding checkouts; tag subscriptions with `founding=1` metadata for the price lock.
+5. Legal: refunds page gets the founding guarantee terms (30 paid days, 3 automations, full refund).
+6. Ads: new creatives with the value stack and the guarantee as hook; land on `https://usegodmode.com/?utm_...#pricing`.
+
+## 7. Ad copy (X, under 280 chars)
+
+**A, "too good to be true"**
+> This is either a pricing mistake or the best $29 you'll spend this year.
+> An AI employee that logs in, clicks and finishes your busywork.
+> I set up your first 3 automations with you. 10 hours back in 30 days or full refund.
+> 100 founding seats.
+
+**B, guarantee first**
+> 10 hours back in your first 30 days, or every cent back.
+> Godmode is an AI coworker that uses your computer like you do: your browser, your logins, your apps.
+> 14 days free. Founding price locked for life. 100 seats.
+
+**C, founder voice**
+> I'll personally set up your first AI employee.
+> 20 minutes, you leave with 3 automations running. If it doesn't save you 10 hours in a month, you get every cent back.
+> First 100 founders only. Then the price goes up.
+
+**D, math**
+> Executive assistant: $76,590/yr.
+> Godmode: $348/yr, works nights and weekends, never sees your passwords.
+> Founding 100: setup done with you, price locked for life, 10 hours back or your money back.
+
+**E, phone traffic**
+> Reading this on your phone? Good.
+> Claim a founding seat in 30 seconds, we send the Mac/Windows download to your inbox and set up your first 3 automations with you.
+> 14 days free. 100 seats.
+
+## 8. What would make it even stronger later
+
+- Proof: after the first 10 setups, screenshot real "hours saved" numbers and use them as the next ad wave.
+- Weekly group "build session" (one-to-many) once 1:1 setups run out, so the bonus scales past 100.
+- Annual-only "Founding 100 Pro+" with a done-for-you agent per quarter, as an upsell for the 10% who want more.
diff --git a/apps/website/src/components/sections/Faq.astro b/apps/website/src/components/sections/Faq.astro
index 8294cf4..25ad28e 100644
--- a/apps/website/src/components/sections/Faq.astro
+++ b/apps/website/src/components/sections/Faq.astro
@@ -1,6 +1,6 @@
---
import Words from '../ui/Words.astro';
-import { PRICING, SITE } from '@/config/site';
+import { FOUNDING, PRICING, SITE } from '@/config/site';
const { monthly, yearly } = PRICING.plans;
@@ -10,6 +10,11 @@ const faqs: { key: string; q: string; a: string }[] = [
q: 'What exactly do I get?',
a: `The Godmode desktop app for macOS, Windows and Linux (plus the headless server with its web dashboard), a license key, and every feature on this page, in every plan. Godmode Pro is $${monthly.price} a month, or $${yearly.price} a year ($${yearly.perMonth} a month), with every update while you’re subscribed.`,
},
+ {
+ key: 'founding',
+ q: 'What is the Founding 100?',
+ a: `Our launch offer for the first ${FOUNDING.seats} customers, open until ${FOUNDING.endLabel}. You get Godmode Pro plus a ${FOUNDING.setupMinutes}-minute 1:1 setup call with the founder (you leave with ${FOUNDING.setupAutomations} automations running), the ready-made agents and playbook, a private founders group, and your price locked for as long as you stay subscribed. After the offer closes, Godmode Pro costs $${FOUNDING.listPrice.monthly} a month or $${FOUNDING.listPrice.yearly} a month billed yearly.`,
+ },
{
key: 'trial',
q: 'How does the free trial work?',
@@ -63,7 +68,7 @@ const faqs: { key: string; q: string; a: string }[] = [
{
key: 'refund',
q: 'What if it’s not for me?',
- a: `During the trial, just cancel and you’re never charged. After your first payment, on any plan, email us within ${PRICING.guaranteeDays} days and we’ll refund it in full — no questions, no forms. Subscriptions can be cancelled anytime and keep working until the end of the period you paid for.`,
+ a: `During the trial, just cancel and you’re never charged. After your first payment, on any plan, email us within ${PRICING.guaranteeDays} days and we’ll refund it in full — no questions, no forms. Founding members get more: set up ${FOUNDING.setupAutomations} automations (we help), and if Godmode hasn’t saved you ${FOUNDING.outcomeHours} hours in your first ${FOUNDING.outcomeDays} paid days, we refund everything you paid. Subscriptions can be cancelled anytime and keep working until the end of the period you paid for.`,
},
{
key: 'invoice',
diff --git a/apps/website/src/components/sections/FinalCta.astro b/apps/website/src/components/sections/FinalCta.astro
index a041a13..e203f7a 100644
--- a/apps/website/src/components/sections/FinalCta.astro
+++ b/apps/website/src/components/sections/FinalCta.astro
@@ -3,7 +3,7 @@ import Words from '../ui/Words.astro';
import Icon from '../ui/Icon.astro';
import Character from '../ui/Character.astro';
import CheckoutButton from '../ui/CheckoutButton.astro';
-import { PRICING, yearlySavings } from '@/config/site';
+import { FOUNDING, PRICING, yearlySavings } from '@/config/site';
---
@@ -18,7 +18,8 @@ import { PRICING, yearlySavings } from '@/config/site';
- Hand it the busywork today. Tomorrow morning, it’s done — and your crew knows how you like it.
+ Claim a founding seat today. The founder sets up your first {FOUNDING.setupAutomations} automations with you, and if
+ Godmode doesn’t give you {FOUNDING.outcomeHours} hours back in {FOUNDING.outcomeDays} days, you pay nothing.
- No charge today · cancel anytime before day {PRICING.trialDays} · secure checkout with Stripe
+ $0 today · price locked for life · {FOUNDING.seats} founding seats, closes {FOUNDING.endLabel}
diff --git a/apps/website/src/components/sections/Hero.astro b/apps/website/src/components/sections/Hero.astro
index 8a89760..90cf146 100644
--- a/apps/website/src/components/sections/Hero.astro
+++ b/apps/website/src/components/sections/Hero.astro
@@ -4,7 +4,7 @@ import Words from '../ui/Words.astro';
import Icon from '../ui/Icon.astro';
import Character from '../ui/Character.astro';
import CheckoutButton from '../ui/CheckoutButton.astro';
-import { PRICING } from '@/config/site';
+import { FOUNDING, PRICING } from '@/config/site';
import chat from '@/assets/shots/chat.png';
---
@@ -54,9 +54,9 @@ import chat from '@/assets/shots/chat.png';
-
Then ${PRICING.plans.monthly.price}/mo, or ${PRICING.plans.yearly.perMonth}/mo yearly
-
Cancel anytime
-
macOS · Windows · Linux
+
Founder sets up your first {FOUNDING.setupAutomations} automations
+
{FOUNDING.outcomeHours} hours back in {FOUNDING.outcomeDays} days, or full refund
+
Then ${PRICING.plans.yearly.perMonth}/mo, locked for life
diff --git a/apps/website/src/components/sections/Pricing.astro b/apps/website/src/components/sections/Pricing.astro
index 6f1619b..c3032f7 100644
--- a/apps/website/src/components/sections/Pricing.astro
+++ b/apps/website/src/components/sections/Pricing.astro
@@ -2,7 +2,7 @@
import Words from '../ui/Words.astro';
import Icon from '../ui/Icon.astro';
import CheckoutButton from '../ui/CheckoutButton.astro';
-import { PRICING, SITE, yearlySavings } from '@/config/site';
+import { FOUNDING, PRICING, SITE } from '@/config/site';
const { monthly, yearly } = PRICING.plans;
const included = [
@@ -18,39 +18,99 @@ const included = [
const cards = [
{
plan: 'yearly',
- name: 'Yearly',
+ name: 'Founding yearly',
featured: true,
- chip: `Best value · save ${yearlySavings}%`,
+ chip: `Save $${monthly.price * 12 - yearly.price}`,
price: yearly.perMonth,
- was: monthly.price,
- billed: `Billed $${yearly.price} yearly`,
- perks: [`$${monthly.price * 12 - yearly.price} less per year than monthly`, 'Every feature and every update', 'Cancel anytime in two clicks'],
+ billed: `Billed $${yearly.price} yearly, locked for life`,
+ after: `$${FOUNDING.listPrice.yearly}/mo after ${FOUNDING.endLabel}`,
},
{
plan: 'monthly',
- name: 'Monthly',
+ name: 'Founding monthly',
featured: false,
- chip: 'Most flexible',
+ chip: 'Flexible',
price: monthly.price,
- was: null,
- billed: 'Billed monthly',
- perks: ['Pay as you go, month by month', 'Every feature and every update', 'Switch to yearly anytime'],
+ billed: 'Billed monthly, locked for life',
+ after: `$${FOUNDING.listPrice.monthly}/mo after ${FOUNDING.endLabel}`,
},
] as const;
+const stack = [
+ {
+ tag: 'Core',
+ title: 'Godmode Pro, every feature',
+ text: 'The AI coworker that uses your computer like you do. Every update while you’re subscribed.',
+ value: `$${monthly.price * 12}`,
+ per: '/yr',
+ },
+ {
+ tag: 'Bonus 1',
+ title: 'Your first AI employee, built with you',
+ text: `A ${FOUNDING.setupMinutes}-minute 1:1 setup call with the founder. You leave with ${FOUNDING.setupAutomations} automations running.`,
+ value: '$300',
+ per: '',
+ },
+ {
+ tag: 'Bonus 2',
+ title: 'The hire-in-a-click library',
+ text: '9 ready-made agents (invoices, inbox, research, leads, QA…) and the 25-automation playbook. Paste, run, done.',
+ value: '$250',
+ per: '',
+ },
+ {
+ tag: 'Bonus 3',
+ title: 'Founding price, locked for life',
+ text: `Your price never goes up while you stay. After ${FOUNDING.endLabel} it’s $${FOUNDING.listPrice.monthly}/mo, or $${FOUNDING.listPrice.yearly}/mo yearly.`,
+ value: `$${(FOUNDING.listPrice.yearly - yearly.perMonth) * 12}`,
+ per: '/yr',
+ },
+ {
+ tag: 'Bonus 4',
+ title: 'A direct line to the founder',
+ text: 'The private founders group. Your feature requests jump the queue.',
+ value: '$500',
+ per: '/yr',
+ },
+];
+const total = monthly.price * 12 + 300 + 250 + (FOUNDING.listPrice.yearly - yearly.perMonth) * 12 + 500;
+const guarantees = [
+ {
+ icon: 'gift',
+ title: `${PRICING.trialDays} days free`,
+ text: `Nothing charged today. Cancel in two clicks before day ${PRICING.trialDays} and you pay nothing.`,
+ },
+ {
+ icon: 'timer',
+ title: `Running in ${FOUNDING.runningHours} hours`,
+ text: `If your first automation isn’t running ${FOUNDING.runningHours} hours after you install, the founder sets it up with you.`,
+ },
+ {
+ icon: 'shield-check',
+ title: `${FOUNDING.outcomeHours} hours back, or every cent back`,
+ text: `Set up ${FOUNDING.setupAutomations} automations (we help). If Godmode hasn’t saved you ${FOUNDING.outcomeHours} hours in your first ${FOUNDING.outcomeDays} paid days, you get a full refund.`,
+ },
+];
---
-
-
10 Pricing
-
-
- Every feature in every plan. No seats, no credits, no caps.
+
+
10 Founding 100
+
+
+ The founder sets it up with you, the price is locked for life, and if it doesn’t give you {FOUNDING.outcomeHours}
+ hours back in {FOUNDING.outcomeDays} days, you pay nothing. Only for the first {FOUNDING.seats} founders.
No charge today. Cancel anytime before day {PRICING.trialDays}.
-
-
- {c.perks.map((f, j) => (
-
-
- {f}
-
- ))}
-
+
$0 today. Every bonus below included.
))
}
-
-
Included in every plan
-
+
+
+
Everything a founding seat gets you
+
Comparable value
+
+
{
- included.map((f) => (
-
-
- {f}
+ stack.map((s, i) => (
+
+ {s.tag}
+
+
{s.title}
+
{s.text}
+ {i === 0 && (
+
+ {included.map((f) => (
+
{f}
+ ))}
+
+ )}
+
+
+ {s.value}
+ {s.per}
+
))
}
-
+
+
+
+
Comparable value, year one
+
+ ${total.toLocaleString('en-US')}
+
+
+
+
You pay today
+
$0
+
+
-
-
-
- Try first, then a {PRICING.guaranteeDays}-day guarantee. Cancel during the trial and pay nothing.
- After your first payment, email us within {PRICING.guaranteeDays} days for a full refund.
-
-
+ {
+ guarantees.map((g) => (
+
+
+
+ {g.title}
+ {g.text}
+
+
+ ))
+ }
+
+
+
- Runs on your Claude plan. Sign in with Claude Pro or Max, or use an Anthropic API key — not
- included. Details
+ Runs on the Claude plan you already have. Sign in with Claude Pro or Max, or use an
+ Anthropic API key — not included. Details
-
+
- Business-ready. Invoice with your VAT ID, paid securely via Stripe. Card, Apple Pay, Google Pay
- & more.
+ On your phone? Claim your seat now. The welcome page sends the Mac or PC download
+ to your inbox in one tap, and you book your setup call right there.
+ Comparable values are what the same thing costs elsewhere: Godmode’s monthly price for a year, an automation freelancer
+ at $100/h, a priority support tier. Founding seats count checkouts since October 5; the offer closes at seat
+ {FOUNDING.seats} or on {FOUNDING.endLabel}, whichever comes first. Need it for a team?
+ Talk to us.
diff --git a/apps/website/src/config/site.ts b/apps/website/src/config/site.ts
index e65ceec..bdf81db 100644
--- a/apps/website/src/config/site.ts
+++ b/apps/website/src/config/site.ts
@@ -25,7 +25,7 @@ export const isPlan = (v: unknown): v is Plan => v === 'monthly' || v === 'yearl
export const PRICING = {
currency: 'USD',
- trialDays: 7,
+ trialDays: 14,
guaranteeDays: 14,
plans: {
monthly: {
@@ -47,6 +47,28 @@ export const PRICING = {
},
} as const;
+/**
+ * Founding 100: the launch offer. Seats are checkouts started after `start` (see foundingTaken). Subscriptions keep
+ * their Stripe price, so the price lock holds as long as founders aren't migrated to a new price.
+ */
+export const FOUNDING = {
+ seats: 100,
+ start: Date.UTC(2026, 9, 5, 20, 0),
+ // End of October 31 in US Pacific time, so the deadline is never early anywhere.
+ end: Date.UTC(2026, 10, 1, 7, 0),
+ endLabel: 'October 31',
+ setupMinutes: 20,
+ setupAutomations: 3,
+ runningHours: 48,
+ outcomeHours: 10,
+ outcomeDays: 30,
+ listPrice: { monthly: 59, yearly: 49 },
+ // Optional scheduling page (Cal.com, Calendly…) for the setup call; without it founders book by email.
+ bookingUrl: import.meta.env.PUBLIC_FOUNDING_BOOKING_URL ?? '',
+} as const;
+
+export const foundingOpen = (taken: number, now = Date.now()) => now < FOUNDING.end && taken < FOUNDING.seats;
+
/** Percent saved by paying yearly instead of monthly, rounded down so the claim is never overstated. */
export const yearlySavings = Math.floor((1 - PRICING.plans.yearly.price / (PRICING.plans.monthly.price * 12)) * 100);
diff --git a/apps/website/src/lib/db.ts b/apps/website/src/lib/db.ts
index 58f3747..dc7959e 100644
--- a/apps/website/src/lib/db.ts
+++ b/apps/website/src/lib/db.ts
@@ -138,6 +138,22 @@ export async function syncSubscription(sub: Stripe.Subscription) {
.run();
}
+/**
+ * Founding seats taken: paid or pending subscriptions since the offer started, plus checkouts opened in the last half
+ * hour, so the cap can't be oversold by buyers checking out at once.
+ */
+export async function foundingTaken(minLivemode: number, since: number): Promise {
+ const row = await db()
+ .prepare(
+ `SELECT COUNT(*) AS n FROM orders
+ WHERE plan IN ('monthly', 'yearly') AND COALESCE(comp, 0) = 0 AND livemode >= ? AND created_at >= ?
+ AND (status IN ('paid', 'pending') OR (status = 'open' AND created_at > ?))`,
+ )
+ .bind(minLivemode, since, Date.now() - 30 * 60 * 1000)
+ .first<{ n: number }>();
+ return Number(row?.n ?? 0);
+}
+
/** A free license issued from /admin: a non-expiring `lifetime` order that never touches Stripe or revenue. */
export async function insertComp(o: { email: string; name: string | null; licenseKey: string; livemode: number }) {
const id = `comp_${[...crypto.getRandomValues(new Uint8Array(12))].map((b) => b.toString(16).padStart(2, '0')).join('')}`;
diff --git a/apps/website/src/pages/api/checkout.ts b/apps/website/src/pages/api/checkout.ts
index 6589118..8da9f19 100644
--- a/apps/website/src/pages/api/checkout.ts
+++ b/apps/website/src/pages/api/checkout.ts
@@ -1,10 +1,11 @@
import type { APIRoute } from 'astro';
import type Stripe from 'stripe';
import { env } from 'cloudflare:workers';
-import { isPlan, PRICING, priceLabel, siteBase, trialCancelBy, type Plan } from '@/config/site';
+import { FOUNDING, foundingOpen, isPlan, PRICING, priceLabel, siteBase, trialCancelBy, type Plan } from '@/config/site';
import { flag, priceFor, stripe } from '@/lib/stripe';
import { newLicenseKey } from '@/lib/license';
-import { insertOpenOrder, type Attribution } from '@/lib/db';
+import { foundingTaken, insertOpenOrder, type Attribution } from '@/lib/db';
+import { minLivemode } from '@/lib/entitlement';
import { allowed, BOTS } from '@/lib/limit';
export const prerender = false;
@@ -50,7 +51,8 @@ export const POST: APIRoute = async ({ request, url }) => {
for (const k of ATTR_KEYS) if (input[k]) attribution[k] = input[k].slice(0, 200);
const licenseKey = newLicenseKey();
- const metadata: Record = { plan, license_key: licenseKey, ...attribution };
+ const founding = foundingOpen(await foundingTaken(minLivemode(), FOUNDING.start).catch(() => FOUNDING.seats));
+ const metadata: Record = { plan, license_key: licenseKey, ...(founding ? { founding: '1' } : {}), ...attribution };
const mode = 'subscription';
const managed = flag(env.STRIPE_MANAGED_PAYMENTS);
const requireTos = flag(env.STRIPE_REQUIRE_TOS);
@@ -77,7 +79,9 @@ export const POST: APIRoute = async ({ request, url }) => {
: {}),
custom_text: {
submit: {
- message: `${PRICING.trialDays} days free, then ${priceLabel(plan)}. Cancel anytime before ${trialCancelBy()} and you pay nothing. After that, a ${PRICING.guaranteeDays}-day money-back guarantee covers your first payment.`,
+ message: founding
+ ? `Founding 100: ${PRICING.trialDays} days free, then ${priceLabel(plan)}, locked for as long as you stay. Cancel anytime before ${trialCancelBy()} and you pay nothing. ${FOUNDING.outcomeHours} hours back in your first ${FOUNDING.outcomeDays} paid days, or a full refund.`
+ : `${PRICING.trialDays} days free, then ${priceLabel(plan)}. Cancel anytime before ${trialCancelBy()} and you pay nothing. After that, a ${PRICING.guaranteeDays}-day money-back guarantee covers your first payment.`,
},
...(requireTos
? {
@@ -103,7 +107,7 @@ export const POST: APIRoute = async ({ request, url }) => {
trial_period_days: PRICING.trialDays,
trial_settings: { end_behavior: { missing_payment_method: 'cancel' } },
// Shown in the customer portal, so subscribers can always find their key there.
- description: `Godmode Pro — ${plan === 'yearly' ? 'Yearly' : 'Monthly'} · License ${licenseKey}`,
+ description: `Godmode Pro${founding ? ' Founding' : ''} — ${plan === 'yearly' ? 'Yearly' : 'Monthly'} · License ${licenseKey}`,
};
const session = await stripe().checkout.sessions.create(params);
diff --git a/apps/website/src/pages/api/offer.ts b/apps/website/src/pages/api/offer.ts
new file mode 100644
index 0000000..d93ae47
--- /dev/null
+++ b/apps/website/src/pages/api/offer.ts
@@ -0,0 +1,15 @@
+import type { APIRoute } from 'astro';
+import { FOUNDING, foundingOpen } from '@/config/site';
+import { foundingTaken } from '@/lib/db';
+import { minLivemode } from '@/lib/entitlement';
+
+export const prerender = false;
+
+/** GET /api/offer → founding seats left, for the counters on the page. */
+export const GET: APIRoute = async () => {
+ const taken = await foundingTaken(minLivemode(), FOUNDING.start);
+ return Response.json(
+ { seats: FOUNDING.seats, left: Math.max(0, FOUNDING.seats - taken), open: foundingOpen(taken) },
+ { headers: { 'cache-control': 'no-store' } },
+ );
+};
diff --git a/apps/website/src/pages/checkout/success.astro b/apps/website/src/pages/checkout/success.astro
index 16b1886..a4505c9 100644
--- a/apps/website/src/pages/checkout/success.astro
+++ b/apps/website/src/pages/checkout/success.astro
@@ -2,7 +2,7 @@
import Base from '@/layouts/Base.astro';
import Logo from '@/components/ui/Logo.astro';
import Icon from '@/components/ui/Icon.astro';
-import { isPlan, PRICING, SITE, type Plan } from '@/config/site';
+import { FOUNDING, isPlan, PRICING, SITE, type Plan } from '@/config/site';
import { stripe } from '@/lib/stripe';
import { syncSubscription, upsertFromSession } from '@/lib/db';
import { ORDER_COOKIE, publicId, sign, verify } from '@/lib/signed';
@@ -88,6 +88,12 @@ const handoffUrl = licenseKey ? `${Astro.url.origin}/download?key=${licenseKey}`
const mailBody = `Your Godmode license key: ${licenseKey}\n\nDownload Godmode on your Mac or PC (your key is already filled in):\n${handoffUrl}\n`;
const mailto = `mailto:${encodeURIComponent(email)}?subject=${encodeURIComponent('Your Godmode license')}&body=${encodeURIComponent(mailBody)}`;
+const founding = session?.metadata?.founding === '1';
+const setupBody = `License: ${licenseKey}\n\nMy time zone:\nTimes that work for me this week:\n\n3 things I want Godmode to do for me:\n1.\n2.\n3.\n`;
+const setupUrl =
+ FOUNDING.bookingUrl ||
+ `mailto:${SITE.email}?subject=${encodeURIComponent('Founding setup call')}&body=${encodeURIComponent(setupBody)}`;
+
Astro.response.headers.set('cache-control', 'no-store');
Astro.response.headers.set('referrer-policy', 'no-referrer');
@@ -172,6 +178,34 @@ const steps = [
+ {founding && (
+
+
+
+
+
+
+
+
Founding member
+
Book your {FOUNDING.setupMinutes}-minute setup call
+
+ Tell us the {FOUNDING.setupAutomations} things you want off your plate. We build them with you on
+ the call, and your founders group invite follows right after.
+
Running in {FOUNDING.runningHours} hours, or we set it up with you
+
{FOUNDING.outcomeHours} hours back in {FOUNDING.outcomeDays} days, or full refund
+
+
+ )}
+
Your license key
diff --git a/apps/website/src/pages/legal/refunds.astro b/apps/website/src/pages/legal/refunds.astro
index 5395b31..b7f61de 100644
--- a/apps/website/src/pages/legal/refunds.astro
+++ b/apps/website/src/pages/legal/refunds.astro
@@ -1,6 +1,6 @@
---
import Legal from '@/layouts/Legal.astro';
-import { LEGAL, PRICING } from '@/config/site';
+import { FOUNDING, LEGAL, PRICING } from '@/config/site';
---
@@ -18,6 +18,16 @@ import { LEGAL, PRICING } from '@/config/site';
deactivated.
+
Founding 100: {FOUNDING.outcomeHours} hours back, or every cent back
+
+ If you joined through the Founding 100 offer, you get a longer, outcome-based guarantee on top: set up at least
+ {FOUNDING.setupAutomations} automations (we help on your setup call), and if Godmode hasn’t saved you
+ {FOUNDING.outcomeHours} hours of work in the first {FOUNDING.outcomeDays} days after your first payment, email
+ {LEGAL.email} within those {FOUNDING.outcomeDays} days. We refund that payment in
+ full; your own estimate of the time saved is enough. If your first automation isn’t running
+ {FOUNDING.runningHours} hours after you install, tell us and the founder sets it up with you.
+
+
Cancelling a subscription
Cancel monthly or yearly plans anytime from the billing portal (linked in your receipt, on your welcome page and in the
diff --git a/apps/website/src/pages/legal/terms.astro b/apps/website/src/pages/legal/terms.astro
index 3eb211f..95c8fc8 100644
--- a/apps/website/src/pages/legal/terms.astro
+++ b/apps/website/src/pages/legal/terms.astro
@@ -1,6 +1,6 @@
---
import Legal from '@/layouts/Legal.astro';
-import { LEGAL, PRICING } from '@/config/site';
+import { FOUNDING, LEGAL, PRICING } from '@/config/site';
const { monthly, yearly } = PRICING.plans;
---
@@ -79,6 +79,17 @@ const { monthly, yearly } = PRICING.plans;
the first payment after the free trial) and we’ll refund it in full.
This voluntary guarantee is in addition to any statutory rights. See Refunds & cancellation.
+
+ Founding 100. Subscriptions started through the Founding 100 offer (the first {FOUNDING.seats} checkouts
+ from October 5, 2026 until {FOUNDING.endLabel}, 2026, marked “Founding” on your receipt) also include: (a) one
+ {FOUNDING.setupMinutes}-minute setup call with the founder, booked within {FOUNDING.outcomeDays} days of your trial
+ start; (b) if your first automation isn’t running {FOUNDING.runningHours} hours after you install, we help you set it
+ up personally; (c) your plan’s price stays the same for as long as your subscription runs without interruption; and
+ (d) an outcome guarantee: if, after setting up at least {FOUNDING.setupAutomations} automations (on the setup call or
+ on your own), Godmode hasn’t saved you {FOUNDING.outcomeHours} hours of work in your first {FOUNDING.outcomeDays} days
+ after your first payment, email us within those {FOUNDING.outcomeDays} days and we refund that payment in full. Your
+ own estimate of the time saved is enough.
+