/* global React, Wordmark, Money, Sparkline, Donut, BarChart, AreaChart, Progress, Avatar, Icon */ const { useState, useEffect, useRef } = React; /* ============================================================ MARKETING PAGE Three visual directions, all share the same content + structure. The wrapper sets data-theme; CSS tokens swap colors / fonts. ============================================================ */ function MarketingPage({ goTo, theme, setTheme, wordmark, setWordmark }) { return (
); } /* ----- NAV ----- */ function Nav({ goTo, wordmark }) { const [scrolled, setScrolled] = useState(false); useEffect(() => { const onScroll = () => setScrolled(window.scrollY > 8); window.addEventListener("scroll", onScroll); return () => window.removeEventListener("scroll", onScroll); }, []); return (
); } /* ----- HERO ----- */ function Hero({ theme, goTo }) { return (
{/* LEFT — editorial copy */}
No. 001 · The Kaizen Quarterly

Money, quietly compounding.

An automated budget, an index portfolio that rebalances itself, and a goal tracker that feels like a diary. Small, daily improvements, for the next forty years.

$2.5B
managed
150K
members
0.25%
all-in fee
4.8★
12k reviews
{/* RIGHT — single dominant artefact */}
Net worth · Year to date
$284,732 .18
12.3%
today
Index portfolio $196,420 +12.4%
Cash · 4.5% APY $64,321 +4.1%
Goal reserves $23,989 +8.7%
{/* Trust mark */}
SIPC · FDIC · SOC 2 Type II
); } /* ----- MANIFESTO STRIP ----- */ function ManifestoStrip() { const items = ["Compound, don't gamble", "Plan, don't predict", "Automate, don't agonize", "Save, don't suffer", "Compound, don't gamble"]; return (
{items.concat(items).map((t, i) => ( {t} ))}
); } /* ----- PRODUCT PREVIEW (the actual app, in-page) ----- */ function ProductPreview({ goTo, theme }) { const [tab, setTab] = useState("dashboard"); return (
The product

One ledger.
Every dollar accounted for.

Budgeting, goals, investing, and a tax-aware engine. One quiet interface that reads like a financial diary, not a casino floor.

{[ ["dashboard","Overview"], ["budget","Budget"], ["goals","Goals"], ["invest","Invest"], ["transactions","Activity"], ].map(([k, l]) => ( ))}
); } function PreviewMock({ tab }) { if (tab === "dashboard") { return (
Net worth · today
$284,732.18
↑ $1,284 today · +12.3% YTD
); } if (tab === "budget") { const cats = [ { name: "Rent", v: 1850, max: 1850, color: "var(--ink)" }, { name: "Groceries", v: 412, max: 600, color: "var(--accent)" }, { name: "Transit", v: 88, max: 150, color: "var(--accent-2)" }, { name: "Dining", v: 246, max: 300, color: "#c47a08" }, { name: "Subscriptions", v: 92, max: 100, color: "var(--ink-2)" }, { name: "Discretionary", v: 318, max: 500, color: "var(--negative)" }, ]; return (
May, week 2 of 4
$3,006 of $3,500
14 days left · pace −$120/day
{cats.map((c, i) => (
{c.name} ${c.v} / ${c.max}
))}
Insight

Dining is trending +18% vs your six-week average. Want to cap it at $250 next month?

); } if (tab === "goals") { return (
{[ { name: "Tokyo trip", icon: "plane", saved: 4280, target: 6000, eta: "Oct 2026", color: "var(--accent)" }, { name: "Down payment", icon: "house", saved: 18420, target: 60000, eta: "Mar 2028", color: "var(--accent-2)" }, { name: "New bike", icon: "car", saved: 1240, target: 2200, eta: "Aug 2026", color: "#c47a08" }, { name: "Emergency fund", icon: "shield", saved: 9600, target: 12000, eta: "On schedule", color: "var(--ink)" }, ].map((g, i) => (
{g.name}
ETA · {g.eta}
of ${g.target.toLocaleString()}
))}
); } if (tab === "invest") { return (
Index portfolio · 80/20
$196,420.91
↑ +$24,103 (+14.0%) all-time
{[ ["1M","+2.1%"],["1Y","+12.4%"],["All","+14.0%"], ].map(([l, v], i) => (
{l}
{v}
))}
Allocation
{[ { name: "Total US Stock (VTI)", v: 56, color: "var(--accent)" }, { name: "Total Intl Stock (VXUS)", v: 24, color: "var(--accent-2)" }, { name: "Total Bond (BND)", v: 16, color: "#c47a08" }, { name: "Cash", v: 4, color: "var(--ink-3)" }, ].map((a, i) => (
{a.name} {a.v}%
))}
Tax-loss harvesting
$1,284 saved

This year, automatic. We swap losers for similar funds, you keep the loss.

); } // transactions const tx = [ { name: "Trader Joe's", cat: "Groceries", v: -42.18, d: "Today", icon: "cart" }, { name: "Auto-invest deposit", cat: "Invest", v: -300, d: "Today", icon: "seed" }, { name: "Stripe: Salary", cat: "Income", v: 5840, d: "Yesterday", icon: "arrowDown" }, { name: "Verve Coffee", cat: "Dining", v: -7.25, d: "Yesterday", icon: "coffee" }, { name: "Uber", cat: "Transit", v: -18.40, d: "Mon", icon: "car" }, { name: "Vacation goal", cat: "Goal", v: -120, d: "Mon", icon: "plane" }, { name: "Whole Foods", cat: "Groceries", v: -88.40, d: "Sat", icon: "cart" }, ]; return (
Activity · last 7 days
All accounts Filter
{tx.map((t, i) => (
{t.name}
{t.cat}
{t.d}
0 ? "var(--positive)" : "var(--ink)" }}> {t.v > 0 ? "+" : "−"}${Math.abs(t.v).toFixed(2)}
))}
); } function PmockCard({ label, value, sub, tone }) { return (
{label}
{value}
{sub}
); } /* ----- FEATURE GRID ----- */ function FeatureGrid({ theme }) { return (
Everything you need

No ten-tab dashboards.
No hidden fees.
Just clarity.

); } function FeatureCard({ n, title, body, icon, big }) { return (
{n}

{title}

{body}

); } /* ----- NUMBERS BAND ----- */ function NumbersBand() { return (
{[ ["$2.5B+", "Managed for members"], ["150K+", "Active accounts"], ["12.8%", "Avg. annual return"], ["0.25%", "All-in fee"], ["4.8 ★", "App store rating"], ].map(([n, l], i) => (
{n}
{l}
))}
); } /* ----- PRICING ----- */ function PricingBlock() { return (
Pricing

One fee. That's it.

0.25%
Annual, on assets managed
vs. competition
); } function Compare({ label, v, highlight }) { return (
{label} {v}
); } /* ----- SECURITY ----- */ function SecurityBlock() { return (
Custody & security

Your money is safe.
Bank-level. No exceptions.

); } function SecCard({ icon, title, body }) { return (

{title}

{body}

); } /* ----- TESTIMONIALS ----- */ function TestimonialsRow() { const items = [ { q: "Finally understood where my money goes. The auto-invest feature means I'm building wealth without thinking about it.", n: "Sarah Chen", r: "Software Engineer" }, { q: "Less tabs, more clarity. The fact that I can see budget, goals and invest in one ledger is the actual product.", n: "Marcus J.", r: "Marketing Manager" }, { q: "As a freelancer with irregular income, Kaizen helps me budget, set aside taxes, and still invest for the future.", n: "Emily R.", r: "Freelance Designer" }, { q: "The 0.25% fee is the lowest I've seen and the platform feels less spammy than every other app.", n: "Daniel K.", r: "Mechanical Eng" }, ]; return (
From members

Loved by thousands.

★ 4.8 / 5 from 12k reviews
{items.map((t, i) => (
"{t.q}"
{t.n}
{t.r}
))}
); } /* ----- FAQ ----- */ function FAQ() { const items = [ ["How do I connect my bank?", "Plaid integration. Works with 12,000+ US banks and most European institutions. Setup in under 60 seconds."], ["Can I use Kaizen without investing?", "Yes. Budgeting and goals are free for the first year. The 0.25% fee only kicks in on managed assets."], ["What if I want to stop?", "Withdraw any time. No exit fees, no withdrawal limits. You own your portfolio."], ["Is my money insured?", "Cash up to $250K (FDIC). Investments up to $500K (SIPC). We hold custody at Apex Clearing."], ["Tax docs?", "Auto-generated 1099s in February. Loss harvesting summary downloadable any time."], ]; const [open, setOpen] = useState(0); return (
Common questions

Things people ask.

{items.map(([q, a], i) => (
{a}
))}
); } /* ----- CTA ----- */ function CTA({ goTo }) { return (

Start in four minutes.

Connect a bank, pick a goal, set your weekly auto-invest. We take it from there.

No credit card · Free forever for budgeting
); } /* ----- FOOTER ----- */ function Footer({ wordmark }) { return ( ); } function FtCol({ h, links }) { return (
{h}
); } /* Export */ Object.assign(window, { MarketingPage });