// AFTER landing page sections — content-only components const { useState: useStateLP, useRef: useRefLP, useEffect: useEffectLP } = React; const LP = { cream: '#fafaf8', black: '#0f0f0f', green: '#3d6b4f', greenDark: '#2d5239', greenLight: '#e8f0eb', greenLighter: '#f1f6f2', gray: '#6b6b6b', grayLight: '#f0efed', border: '#e2e0db', }; // ─── Nav ─────────────────────────────────────────────── function Nav() { return ( ); } const navLink = { fontFamily: '"DM Sans"', fontSize: 14, fontWeight: 500, color: LP.black, textDecoration: 'none', }; function Wordmark({ color = LP.black }) { return ( KeepAfter ); } // ─── Hero ────────────────────────────────────────────── function Hero() { return (
Now in TestFlight beta

Your GLP-1 off ramp.
However you got here, we keep going.

KeepAfter is the AI-first companion for the GLP-1 off ramp — whether you're still on the drug or already off it. We protect your weight, your muscle, and your peace of mind, without another prescription. For people on or after Ozempic, Wegovy, Zepbound, and Mounjaro.

Meet Mira — your steady voice for what comes after. Trained on the research, not the diet industry.
Join the beta or talk to Mira below
{/* Trust row */}
{[ { num: '2 in 3', label: 'people regain weight within a year of stopping GLP-1s (JAMA, 2022)' }, { num: 'No Rx', label: 'never another prescription, never another scale lecture' }, { num: '24/7', label: 'a steady voice when food noise gets loud' }, ].map((it, i) => (
{it.num}
{it.label}
))}
Built with input from board-certified obesity-medicine physicians and registered dietitians.
{/* Right: Mira chat demo (real backend) */}
); } // ─── Section: Problem ────────────────────────────────── function Problem() { const items = [ { tag: 'Food noise', title: "It's not in your head. It's in your hormones.", body: "When the GLP-1 leaves your system, the appetite signals it quieted come roaring back. Not a willpower problem. A biology problem." }, { tag: 'Scale anxiety', title: "One number, every morning, all the meaning.", body: "We help you read the trend, not the snapshot. Your body weight swings two to three pounds from sleep, salt, and your cycle alone." }, { tag: 'Habit collapse', title: "The structure was the medication.", body: "When the scaffolding came off, so did the routines. We rebuild them — slowly, specifically, on your terms." }, ]; return (
The three things nobody warned you about

Stopping the medication was supposed to feel like the finish line. It's actually the starting one.

{items.map((it, i) => (
{String(i+1).padStart(2,'0')} · {it.tag}

{it.title}

{it.body}

))}
); } function Eyebrow({ children }) { return (
{children}
); } // ─── Section: How it works ───────────────────────────── function HowItWorks() { const steps = [ { n: '01', tag: 'Every morning', title: 'A steady check-in to start the day.', body: 'Two taps. Thirty seconds. Log today, then read the trend — not the snapshot. Mira leaves a note about what your week is telling her.', visual: , }, { n: '02', tag: 'Whenever it hits', title: "Here for the in-between moments. By text, or out loud.", body: 'Cravings at 9pm. A hard weigh-in. The fear of regain. Tap a suggested prompt or just start talking — Mira is trained on the actual hard parts of coming off Ozempic, Wegovy, Zepbound, or Mounjaro.', visual: , }, { n: '03', tag: 'Over weeks', title: 'Your vibe over weeks. Patterns become a plan.', body: 'Mira learns when food noise spikes, what situations turn into spirals, and which routines actually stick. The map grows. The plan tightens. Life after Ozempic — or any GLP-1 — gets quieter.', visual: , }, ]; return (
How it works

Two minutes a day. One steady voice in your corner.

{steps.map((s, i) => (
{s.n} {s.tag}

{s.title}

{s.body}

{s.visual}
))}
); } // ─── Mini visuals for steps ──────────────────────────── // Visual vocabulary lifted from KeepAfter intake wireframe: // - flat status bar (9:41 + signal/battery), no notch // - white cards on cream, 1px LP.border, 14–16px radius // - eyebrow tags: 10–11px, 600, .12em, uppercase, gray // - DM Serif headings inside phones (22–26) // - micro-win callout: greenLight bg, 2px green left border, italic 11–12 // - maintenance/pattern callouts: greenLight bg + 1px green border function PhoneFrame({ children, height = 380 }) { return (
{children}
); } function PhoneStatusBar() { return (
9:41 {/* signal bars */} {/* battery */}
); } function DashboardMini() { return (
Good morning,
Sarah.
A quick check-in for today.
{/* Weight card */}
Weight · Today
−1.8 lb · 7d
182.4lb
{/* Food noise card */}
Food Noise Today
7/10
{[1,2,3,4,5,6,7,8,9,10].map(n => (
{n}
))}
{/* Micro-win banner */}
Down from 9 yesterday. The trend is your friend.
); } function Sparkline() { const pts = [184.2, 183.8, 183.5, 183.9, 183.1, 182.8, 182.4]; const W = 200, H = 28; const min = Math.min(...pts), max = Math.max(...pts), range = max - min || 1; const xs = pts.map((_, i) => (i / (pts.length - 1)) * W); const ys = pts.map(v => H - 2 - ((v - min) / range) * (H - 6)); const d = xs.map((x, i) => `${i === 0 ? 'M' : 'L'} ${x} ${ys[i]}`).join(' '); return ( ); } function CoachMini() { return (
{/* Header */}
Mira
Listening
{/* Messages */}
{[ { role: 'a', text: "I'm here for food noise, scale anxiety, and habits. What's on your mind?" }, { role: 'u', text: "It's 9pm and I can't stop thinking about the kitchen." }, { role: 'a', text: "That sounds loud. When did this start tonight, and how long since dinner?" }, ].map((m, i) => (
{m.text}
))}
{/* Composer */}
Message Mira
); } function TrendMini() { return (
30-day view
Holding steady.
Within 1.4 lb of where you started maintenance.
{/* Chart card */}
Weight trend
Maintenance band
{/* Pattern callout — wireframe-style green-tinted */}
Pattern Mira noticed
Food noise spikes Sunday evenings. Want to plan a Sunday ritual together?
); } function BigChart() { // Deterministic 30-day weight series — drifts within a 175 ± 3 lb band // Tiny pseudo-noise from sin so it isn't perfectly smooth, but stable across renders. const W = 200, H = 96; const center = 175; const bandHi = 178, bandLo = 172; const pts = Array.from({ length: 30 }, (_, i) => { const drift = Math.sin(i * 0.32) * 1.4; const wobble = Math.sin(i * 1.7) * 0.4 + Math.sin(i * 2.9 + 1) * 0.3; return center + drift + wobble + (i < 4 ? 0.6 : 0); // slightly higher early }); // Y maps a weight in lb to chart pixel — fixed scale 170..180 const yMin = 170, yMax = 180; const yOf = v => H - 6 - ((v - yMin) / (yMax - yMin)) * (H - 12); const xOf = i => (i / (pts.length - 1)) * W; const xs = pts.map((_, i) => xOf(i)); const ys = pts.map(yOf); const line = xs.map((x, i) => `${i === 0 ? 'M' : 'L'} ${x.toFixed(2)} ${ys[i].toFixed(2)}`).join(' '); const fill = line + ` L ${W} ${H} L 0 ${H} Z`; const yBandHi = yOf(bandHi), yBandLo = yOf(bandLo); return ( {/* maintenance band */} {/* trend */} ); } // ─── Section: Why it works (science) ─────────────────── function Science() { return (
Why this, why now

The medication did its job. What happens next is the actual work.

The big trials get the headlines. The phase nobody studies enough is the one you're in: stopping. Mira was built on the published research, the patient testimony, and the day-to-day reality of GLP-1 discontinuation — not on diet-industry talking points.

{[ { stat: '67%', label: 'of patients regain ≥20% of lost weight within a year of stopping semaglutide.', src: 'JAMA, 2022' }, { stat: '15-25%', label: 'of weight loss on GLP-1s comes from lean muscle. Maintaining it requires intentional protein and resistance training.', src: 'Obesity Reviews' }, { stat: '#1', label: 'food noise is the most-cited returning symptom in published patient surveys after GLP-1 discontinuation.', src: 'Northwell Health & clinical patient reporting' }, ].map((s, i) => (
{s.stat}
{s.label}
Source · {s.src}
))}
); } // ─── Section: Mira can talk back ───────────────────── function VoiceCallout() { return (
New: voice mode

Sometimes typing is too much. Just talk.

For 9pm cravings, post-weigh-in spirals, or the moments when you can't quite name what's wrong — open the app, tap Voice, and start a conversation with Mira. She listens. She answers out loud. No keyboard, no screen-stare.

    {[ 'Hands-free — works while you walk, drive, or fold laundry', 'Mira speaks in a calm, even voice, not a hype-machine', 'Switch to chat any time without losing the thread', ].map((t, i) => (
  • {t}
  • ))}
↑ Try the Voice button at the top of the demo. Yes — it actually listens.
); } // ─── Section: FAQ ────────────────────────────────────── function FAQ() { const items = [ { q: 'What is a GLP-1 off ramp?', a: "The GLP-1 off ramp is the transition from being on a GLP-1 medication like Ozempic, Wegovy, Zepbound, or Mounjaro to maintaining your weight without it.\n\nKeepAfter is built specifically for that transition — whether you're still on the drug and preparing, tapering down, or already off. The earlier you start, the more useful Mira is, because she learns your patterns before the food noise comes back." }, { q: 'How do you keep weight off after Ozempic?', a: "By rebuilding the structure the medication used to provide.\n\nConsistent protein, resistance training to protect lean muscle, a routine for the moments food noise comes back, and a way to read the scale as a trend instead of a verdict. None of this is a quick fix. All of it is doable — and it's exactly what KeepAfter and Mira walk you through, day by day." }, { q: 'What happens when I stop my GLP-1?', a: "Appetite signals the medication quieted typically return within weeks. About two-thirds of people regain a significant share of the weight they lost within a year of stopping (JAMA, 2022). For many, food noise is louder than it was before they started.\n\nIt's biology, not willpower — and it's the exact problem KeepAfter is built for." }, { q: 'Is rebound weight gain after Ozempic inevitable?', a: "No. The default outcome is regain, but it isn't inevitable.\n\nThe people who hold their weight after stopping a GLP-1 have a few things in common: they protect lean muscle through protein and resistance training, they have a plan for food-noise spikes instead of white-knuckling them, and they read the trend, not the snapshot. That's the system KeepAfter helps you build — before you need it." }, { q: 'Is KeepAfter for men too?', a: "Yes. KeepAfter is for anyone on or after a GLP-1 — men and women. The biology of regain doesn't care about gender, and neither does Mira.\n\nOur demos often use Sarah and Marcus because they're the canonical personas we built around, but the product itself is built for you, whoever you are." }, { q: "I'm still on my GLP-1. Is KeepAfter for me?", a: "Especially.\n\nThe window while the medication is still doing the heavy lifting is the best possible time to build the routines you'll need when it stops. Mira learns your patterns — what you eat, when food noise spikes, what works for you — before the food noise comes back. By the time you taper or stop, the off ramp is already built." }, { q: 'What is "your vibe"?', a: "Your vibe is a living map of what's around you this week. Emotions, times of day, food triggers, situations.\n\nBigger nodes mean louder signals. Tap one and Mira tells you what it means and what to do with it. It's the part of KeepAfter people stay for — the one place that actually shows you what's driving your week, instead of just logging it." }, { q: 'Is Mira a doctor?', a: "No. Mira is an AI — trained on the published research, clinical protocols from board-certified obesity-medicine physicians, and the lived experience of people coming off GLP-1s.\n\nThat means she's great for the day-to-day: food noise at 9pm, scale anxiety, planning meals, talking through hard moments. She's not a replacement for your doctor, therapist, or dietitian — and she'll tell you so when something needs a real human.\n\nIf you mention anything that points to an eating disorder, mental-health crisis, or medical emergency, Mira pauses coaching and connects you to the right resources. That's a hard line, not a soft promise." }, { q: 'Will you prescribe me anything?', a: "Never.\n\nThat's the entire point. Every other app in this space is owned by, partnered with, or paid by someone trying to keep you on a prescription. We don't prescribe GLP-1s, supplements, compounded versions, or anything else.\n\nIf you're considering changes to your medication, that's a conversation for your prescriber. Mira can help you write down what to ask them — but the decision is yours and theirs, never ours." }, { q: 'Is my data private?', a: "Yes. Three things you should know.\n\nWe don't sell your data — not to advertisers, not to insurance companies, not to anyone. This is a brand-level commitment, not a privacy-policy footnote.\n\nYour conversations with Mira are encrypted in transit and at rest. Only you can see them.\n\nYou can export everything we have on you, or delete it permanently, in two taps from the app. No support ticket, no retention email, no friction." }, { q: 'When will it be on Android?', a: "Early 2026. We launched on iOS first because the people we built this for over-index on iPhone, and shipping one platform well beats shipping two badly. Android is in active design now — drop your email at the bottom of this page and we'll send the invite the day it goes live." }, { q: 'How do I get in?', a: "KeepAfter is in private beta. Join the waitlist at the bottom of this page — we're onboarding new members in small cohorts so Mira gets the attention to learn your patterns. Beta members get priority access and early-supporter perks at launch." }, ]; const [open, setOpen] = useStateLP([0, 4]); // multi-open; default: off ramp + men too const toggle = (i) => setOpen(o => o.includes(i) ? o.filter(x => x !== i) : [...o, i]); return (
Questions you might have

Straight answers, no hedging.

{items.map((it, i) => { const isOpen = open.includes(i); return (
{isOpen && (
{it.a}
)}
); })}
); } // ─── Section: CTA ───────────────────────────────────── function CTA() { const [email, setEmail] = useStateLP(''); const [status, setStatus] = useStateLP('idle'); // idle | submitting | success | error | duplicate const [errorMsg, setErrorMsg] = useStateLP(''); const handleSubmit = async (e) => { e.preventDefault(); if (!email) return; setStatus('submitting'); setErrorMsg(''); try { const res = await fetch('https://after-backend.vercel.app/api/waitlist', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email: email.trim().toLowerCase(), source: 'founding500' }), }); if (res.status === 409) { setStatus('duplicate'); return; } if (res.ok) { setStatus('success'); } else { const data = await res.json().catch(() => ({})); setErrorMsg((data && data.error) || 'Something went wrong. Please try again.'); setStatus('error'); } } catch { setErrorMsg('Network error. Please try again.'); setStatus('error'); } }; const submitted = status === 'success'; const duplicate = status === 'duplicate'; const submitting = status === 'submitting'; return (
{/* Founding 500 badge */}
Founding 500 · Limited spots

$39/mo for life.{' '} First 500 members lock this price forever.

Founding 500 — $39/mo for life. We'll never raise your price. Includes everything: Mira, memory, pattern map, unlimited check-ins.

{!submitted && !duplicate ? (
setEmail(e.target.value)} disabled={submitting} style={{ flex: 1, border: 'none', outline: 'none', background: 'transparent', padding: '12px 14px', fontFamily: '"DM Sans"', fontSize: 16, color: LP.black, }} />
) : (
{!duplicate && ( )} {duplicate ? "You're already on the list. Check your inbox!" : "You're in. Check your inbox."}
)} {status === 'error' && (
{errorMsg}
)}
iOS only for now · Android in 2026 · No spam, ever · Cancel anytime
); } // ─── Footer ──────────────────────────────────────────── function Footer() { return (
The companion for the GLP-1 off ramp — for men and women on or after Ozempic, Wegovy, Zepbound, and Mounjaro. Made by KeepAfter, Inc.
© 2026 KeepAfter, Inc. All rights reserved.
Not medical advice. Talk to your doctor before changing any treatment plan.
); } function FooterCol({ title, items }) { return (
{title}
{items.map((it, i) => { const item = typeof it === 'string' ? { label: it, href: '#' } : it; return ( {item.label} ); })}
); } // ─── Section: Who this is for ──────────────────────── function WhoFor() { const yes = [ "You stopped a GLP-1 in the last 90 days", "You're tapering down or planning to", "You're still on your GLP-1 and want to build the off ramp now", "You're worried about weight regain after Ozempic, Wegovy, Zepbound, or Mounjaro", "You don't want another prescription, ever", ]; const no = [ "You want a coach to tell you what to eat each day", "You want a quick-fix pill or supplement stack", ]; return (
Who this is for

KeepAfter is for the moment you stop.

We built one thing very well, for one specific situation. If that's you, we'll be the most useful app on your phone.

KeepAfter is for you if
    {yes.map((t, i) => (
  • {t}
  • ))}
Not the right fit yet
    {no.map((t, i) => (
  • {t}
  • ))}
); } // ─── Section: Pricing ───────────────────────────────────────────── function Pricing() { const tiers = [ { id: 'free', name: 'Free', tagline: 'See what AFTER feels like. No card, no trial timer.', price: 0, priceSuffix: 'forever', featured: false, features: [ 'Daily weight + 14-day trend chart', 'Daily food-noise check-in', '3 Mira messages a day', 'Mira starts fresh every chat — no memory', 'iOS app + email support', ], cta: 'Download AFTER', ctaHref: '#cta', }, { id: 'pro', name: 'Pro', tagline: 'Mira remembers you. Your Vibe knowledge graph unlocks. Unlimited chat.', price: 99.99, priceSuffix: '/year', featured: true, badge: 'Most popular', sub: '3-day free trial · or $19.99 every 4 weeks', features: [ 'Everything in Free', 'Mira with persistent memory across sessions', 'Your Vibe — the personal knowledge graph', 'Unlimited Mira chat', 'Weekly Sunday summary from Mira', 'Full searchable chat history', 'Pattern detection (e.g. "Sundays spike")', ], cta: 'Start 3-day free trial', ctaHref: '#cta', }, { id: 'lifetime', name: 'Lifetime', tagline: 'Pay once. Mira remembers you forever. No renewals, no surprises.', price: 179.99, priceSuffix: 'one-time', featured: false, features: [ 'Everything in Pro — forever', 'No annual renewals, ever', 'Locks in current Mira features for life', 'First in line for new features', ], cta: 'Get Lifetime', ctaHref: '#cta', }, ]; return (
{/* Header */}
Pricing

The first program built for what comes after.

You did the hard work on GLP-1. KeepAfter protects your weight, muscle, and mental peace — without another prescription.

{/* Honest pricing reassurance — no fake scarcity */}
3-day free trial on Pro. Cancel in one tap in your Apple ID. No annual lock-in, no quiz-to-paywall.
{/* Tiers */}
{tiers.map(t => { const isMain = t.featured; return (
{t.badge && (
{t.badge}
)}
{t.name}
{t.sub && (
{t.sub}
)}
{t.tagline}
{t.price === 0 ? 'Free' : `$${Number.isInteger(t.price) ? t.price : t.price.toFixed(2)}`} {t.priceSuffix}
    {t.features.map((f, i) => (
  • {f}
  • ))}
{t.cta}
); })}
{/* Subscription disclosure — Apple Guideline 3.1.2 + plain-English honesty. */}
Subscriptions auto-renew unless cancelled at least 24 hours before the end of the current period. Payment is charged to your Apple ID at confirmation of purchase. Manage or cancel in your Apple ID settings any time after purchase. See Terms and Privacy.
{/* Trust signals */}
{[ { t: 'No annual trap', d: 'Pay monthly, yearly, or once — your choice. We don\'t lock you in to keep our churn metrics looking better.' }, { t: 'One-tap cancel', d: 'Cancel directly in Apple ID settings — no chat-bot maze, no retention call, no guilt.' }, { t: 'No quiz-to-paywall', d: 'You see prices before signup. Always. No "personalized plan" sleight-of-hand.' }, ].map((it, i) => (
{it.t}
{it.d}
))}
7-day free trial on every plan · iOS only at launch
); } Object.assign(window, { Nav, Hero, Problem, HowItWorks, Science, VoiceCallout, WhoFor, Pricing, FAQ, CTA, Footer, OffRampStages, OnboardingStrip, YourVibe, MiraRemembers, TrustSafety, }); // ─── Section: Wherever you are on the off ramp ───────── function OffRampStages() { const stages = [ { tag: 'On the drug', title: 'On the drug, building the off ramp.', body: "The medication is doing the heavy lifting. Use that quiet window to build the routines you'll need when it stops. Mira learns your patterns before the food noise comes back — so the off ramp is already built when you taper.", }, { tag: 'Off the drug', title: 'Off the drug, on the off ramp.', body: "Food noise is back. Mira helps you ride it out without spiraling — read the trend, plan around the spikes, protect your muscle, hold your line.", }, ]; return (
The off ramp

Wherever you are on the off ramp, we meet you there.

KeepAfter works for people on or after Ozempic, Wegovy, Zepbound, and Mounjaro. Tapering off a GLP-1, planning to stop, or already living life after Ozempic — Mira is built for the same job either way: hold the line.

{stages.map((s, i) => (
{s.tag}

{s.title}

{s.body}

))}
); } // ─── Section: Onboarding filmstrip (4 steps) ─────────── function OnboardingStrip() { const steps = [ { n: '01', title: 'Your name', body: "Hi, I'm Mira. What should I call you?", chip: 'Sarah' }, { n: '02', title: 'Your GLP-1 history', body: 'Where are you on the off ramp?', chip: 'On Wegovy · tapering' }, { n: '03', title: 'Your priorities', body: 'What matters most this season?', chip: 'Hold weight · keep muscle' }, { n: '04', title: 'What Mira is — and isn\'t', body: "I'm an AI coach, not a doctor. For urgent risk I'll pause and point you to the right help.", chip: 'Got it' }, ]; return (
Onboarding

Two minutes to set up. Built around you.

Four short questions. No quiz-to-paywall. Mira starts learning your patterns from the first answer.

{steps.map((s, i) => (
{/* Mini phone */}
Step {s.n} of 04
{s.title}
{s.body}
{s.chip}
Continue
{s.n} · {s.title}
))}
); } // ─── Section: Your vibe ──────────────────────────────── function YourVibe() { // 10 nodes laid out around the canvas; weight drives radius const nodes = [ { label: 'Stress', x: 280, y: 180, w: 1.0, color: LP.green }, { label: 'After dinner', x: 410, y: 230, w: 0.95, color: LP.green }, { label: 'Sunday nights', x: 200, y: 280, w: 0.7, color: LP.greenDark }, { label: 'Carbs', x: 350, y: 330, w: 0.6, color: LP.greenDark }, { label: 'Weigh-in', x: 130, y: 180, w: 0.55, color: LP.green }, { label: 'Work stress', x: 470, y: 130, w: 0.5, color: LP.greenDark }, { label: 'Late nights', x: 470, y: 320, w: 0.4, color: LP.green }, { label: 'Travel', x: 90, y: 350, w: 0.35, color: LP.gray }, { label: 'Cardio dread', x: 280, y: 80, w: 0.32, color: LP.gray }, { label: 'Protein wins', x: 60, y: 110, w: 0.3, color: LP.gray }, ]; const edges = [ [0,1],[0,2],[0,4],[1,3],[1,6],[2,3],[4,5],[0,5],[3,6],[2,7],[8,5],[9,4], ]; const r = (w) => 22 + w * 26; return (
The reason people stay

Your vibe: the map of your week.

Vibe is a living knowledge graph of what's around you this week — emotions, times of day, food triggers, situations. Bigger nodes mean louder signals. Tap one and Mira tells you what it means.

{/* Vibe map */}
Your vibe this week.
Stress and after-dinner are doing the most talking right now.
{/* Lens chips */}
{[ { l: 'Mood × Food', active: true }, { l: 'Time of day', active: false }, { l: 'Past 7 days', active: false }, ].map((c, i) => ( {c.l} ))}
{/* SVG graph */}
{edges.map(([a,b], i) => ( ))} {nodes.map((n, i) => ( 32 ? 13 : 11} fontWeight="600" fill={n.w > 0.5 ? LP.cream : LP.black}>{n.label} ))}
{/* Vibe sheet sub-mockup */}
Vibe sheet · bottom sheet
Emotion
Anxiety
Anxiety is the loudest node in your week. Most of it lands between 8 and 11pm, usually after a long workday.
Recent moments
    {[ 'Tue · 9:42pm — spiraled over Wednesday\'s weigh-in', 'Sun · 10:10pm — could not stop thinking about the kitchen', 'Fri · 8:28pm — work email + carbs', ].map((m, i) => (
  • {m}
  • ))}
The reason people stay.
); } // ─── Section: Mira remembers ─────────────────────────── function MiraRemembers() { const beats = [ { title: "She knows what you've tried.", body: "Tell her once that Greek yogurt makes you gag and she won't suggest it again.", }, { title: 'She knows when food noise hits hardest.', body: "If your noise spikes Sunday nights, she'll plan a Sunday ritual with you — not lecture you on Monday.", }, { title: 'She knows what works for you.', body: 'Direct or warm. Data or empathy. She learns your style and stays in it.', }, ]; const memories = [ { tag: 'PREFERENCE', text: 'Hates cardio. Prefers home dumbbells.' }, { tag: 'PATTERN', text: 'Spirals on weigh-in days.' }, { tag: 'GOAL', text: 'Protein target: 110 g/day.' }, { tag: 'STYLE', text: 'Responds to data, not pep talks.' }, ]; return (
The differentiator

Mira remembers.

Every other AI starts from zero every time. Mira doesn't. She holds what you tell her — preferences, patterns, what's worked, what hasn't — and uses it to coach you like a friend who's been paying attention.

{beats.map((b, i) => (

{b.title}

{b.body}

))}
Mira's memory · Sarah
What she remembers about you.
{memories.map((m, i) => (
{m.tag}
{m.text}
))}
); } // ─── Section: Trust + Safety ─────────────────────────── function TrustSafety() { return (
Safety

Built for the hard moments, too.

If a conversation suggests urgent risk — an eating disorder, suicidal thoughts, or another mental-health crisis — Mira pauses coaching and surfaces real human resources. That's a hard line, not a soft promise.

Crisis & suicide
988 Suicide & Crisis Lifeline
Call or text 988 · available 24/7
Eating disorders
National Alliance for Eating Disorders
1-866-662-1235 · Mon–Fri
); }