From d256ba46f489717b98083bf47bc63c4c5dd298f0 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Tue, 26 May 2026 07:50:47 +0000 Subject: [PATCH] =?UTF-8?q?site:=20complete=20section=20redesign=20?= =?UTF-8?q?=E2=80=94=20killed=20metrics+how-it-works,=20replaced=20with=20?= =?UTF-8?q?continuous=20marquee=20activity=20ribbon;=20deep-sky=20Warmup?= =?UTF-8?q?=20panel=20with=20animateMotion=20spark=20traveling=20along=20r?= =?UTF-8?q?amp=20curve=20forever;=20continuously=20scrolling=20Inbox=20rep?= =?UTF-8?q?ly=20stream=20(50s=20loop);=20Sending=20worker=20grid=20with=20?= =?UTF-8?q?traveling=20send=20sparks;=20narrative=20two-card=20Compare;=20?= =?UTF-8?q?redesigned=20Pricing=20with=20annual-default=20premium=20segmen?= =?UTF-8?q?ted=20toggle=20+=20'Save=2020%'=20pill=20+=20featured-card=20sw?= =?UTF-8?q?eep=20animation=20+=20larger=20price=20typography.=20All=20loop?= =?UTF-8?q?s=20are=20CSS-based,=20prefers-reduced-motion=20respected.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- site/src/pages/index.astro | 843 ++++++++++++++++++++----------------- 1 file changed, 464 insertions(+), 379 deletions(-) diff --git a/site/src/pages/index.astro b/site/src/pages/index.astro index de2f1be6..d3bcaeaf 100644 --- a/site/src/pages/index.astro +++ b/site/src/pages/index.astro @@ -173,281 +173,361 @@ const plans = [
-
-
- {[ - { eyebrow: 'Today', value: '5,420', counter: { from: 5380, to: 6400 }, label: 'Sends · all workers', tone: 'bg-[color:var(--brand)]' }, - { eyebrow: 'Warming now', value: '12,418', counter: { from: 12390, to: 12480 }, label: 'Mailboxes in premium pool', tone: 'bg-emerald-500' }, - { eyebrow: 'Mean placement', value: '96.4%', label: 'Inbox · last 14 days', tone: 'bg-emerald-500' }, - { eyebrow: 'Mean complaint', value: '0.02%', label: 'Below Google’s 0.10% threshold', tone: 'bg-emerald-500' }, - ].map((s, i) => ( -
-
- - +
+
+
+ {Array.from({ length: 2 }).map(() => ( + <> + + + 12,420 mailboxes warming - {s.eyebrow} -
-
- {s.counter ? ( - {s.value} - ) : s.value} -
-
{s.label}
-
- ))} -
-
- - -
-
-
-
How it works
-

- From connected mailbox to a campaign that lands — in an afternoon. -

-
- -
- - - - {[ - { n: '01', title: 'Connect', body: 'OAuth a mailbox in seconds — Google, Microsoft, or any SMTP/IMAP.', icon: 'mail' }, - { n: '02', title: 'Warm up', body: 'Pool selects vetted partners, ramps your volume +1/day, watches reputation.', icon: 'flame' }, - { n: '03', title: 'Sequence', body: 'Build steps with branching, A/B variants, business-hour delays.', icon: 'workflow' }, - { n: '04', title: 'Send & reply', body: 'Distribute across workers, classify every reply, route to the right human.', icon: 'send' }, - ].map((s) => ( -
-
-
- {s.n} -
- -
-

{s.title}

-

{s.body}

-
+ · + + + 142 orgs sending now + + · + + + 0.02% mean complaint rate + + · + + + 96.4% mean inbox placement + + · + + + 99.99% tracking edge uptime + + · + + + 8 dedicated worker regions + + · + ))}
-
-
-
-
- - - - - Warmup -
-

- A warmup pool that quarantines before mailbox providers do. -

-

- Free and premium pools never mix. Spam-score tracking, verification tokens and recent-partner avoidance keep traffic natural. Anything past the watch band gets pulled. -

-
- {[ - { v: '10 → 40', l: 'Per-day ramp · /mailbox' }, - { v: '< 0.03%', l: 'Premium pool complaints' }, - { v: '7d', l: 'Quarantine cooldown' }, - { v: '5 health', l: 'Bands · healthy → blocked' }, - ].map((s) => ( -
-
{s.v}
-
{s.l}
-
- ))} -
- - See how warmup works - - -
+
+ + + -
-
- -
-
- Premium pool - - healthy - -
-
- 12,418 mailboxes warming -
+
+
+
+
+ + + + + Live · warmup
- -
+

+ Warmup that never sleeps. +

+

+ Every mailbox in the premium pool ramps independently, 24/7. Pool selects new partners every cycle; spam-score tracking, verification tokens and recent-partner avoidance keep traffic looking human. +

+
{[ - { k: 'Complaint', v: '0.02%', sub: '< 0.03 warn', tone: 'text-emerald-700' }, - { k: 'Bounces', v: '0.7%', sub: '< 1.0 warn', tone: 'text-emerald-700' }, - { k: 'Spam place.', v: '3.1%', sub: '< 10 watch', tone: 'text-amber-700' }, - ].map((m, i) => ( -
-
{m.k}
-
{m.v}
-
{m.sub}
+ { v: '10 → 40', l: 'Per-day ramp / mailbox' }, + { v: '< 0.03%', l: 'Premium pool complaints' }, + { v: '7 days', l: 'Quarantine cooldown' }, + { v: '24 / 7', l: 'Pool active, always' }, + ].map((s) => ( +
+
{s.v}
+
{s.l}
))}
+ + See how warmup works + + +
- -
-
- Daily warmup volume · 21 days - 10 → 40 / day · per mailbox +
+ +
+
+
+
Live volume · all premium-pool mailboxes
+
+ 487,122 + sent today +
+
+
+ healthy +
- + + - - - + + + + + + + - {/* gridlines */} - {[0, 50, 100, 150, 200].map((y) => ( - + + {[44, 88, 132, 176].map((y) => ( + ))} {(() => { - const series = [10,11,12,14,16,18,20,22,25,27,30,32,33,35,36,37,38,38,39,40,40]; + // Generate a smooth wavy ramp curve + const N = 36; + const series = Array.from({ length: N }, (_, i) => { + const t = i / (N - 1); + const base = 15 + t * 75; + const wiggle = Math.sin(i * 0.6) * 4 + Math.sin(i * 0.21) * 6; + return Math.max(8, Math.min(100, base + wiggle)); + }); const pts = series.map((v, i) => [ - Math.round((i / (series.length - 1)) * 600), - Math.round(200 - ((v - 8) / 36) * 180), + Math.round((i / (series.length - 1)) * 720), + Math.round(220 - ((v - 0) / 110) * 200), ]); const line = pts.map((p, i) => `${i === 0 ? 'M' : 'L'} ${p[0]} ${p[1]}`).join(' '); - const area = `${line} L 600 200 L 0 200 Z`; + const area = `${line} L 720 220 L 0 220 Z`; return ( <> - - - {pts.map((p, i) => ( - - ))} + + + + + + + + ); })()} -
- day 1day 21 + +
+ {[ + { name: 'Healthy', v: '12,308', c: 'text-emerald-300', dot: 'bg-emerald-400' }, + { name: 'Watch', v: '92', c: 'text-amber-300', dot: 'bg-amber-400' }, + { name: 'Quarantined', v: '14', c: 'text-orange-300', dot: 'bg-orange-400' }, + { name: 'Blocked', v: '4', c: 'text-rose-300', dot: 'bg-rose-400' }, + ].map((b) => ( +
+
+ + {b.name} +
+
{b.v}
+
+ ))}
- - -
- {[ - { name: 'Healthy', v: '12,308', bg: 'bg-emerald-50', text: 'text-emerald-700' }, - { name: 'Watch', v: '92', bg: 'bg-amber-50', text: 'text-amber-700' }, - { name: 'Quarantined', v: '14', bg: 'bg-orange-50', text: 'text-orange-700' }, - { name: 'Blocked', v: '4', bg: 'bg-rose-50', text: 'text-rose-700' }, - ].map((b, i) => ( -
-
{b.name}
-
{b.v}
-
- ))} -
-
- - +
+
+
+
+ +
+ +
+ Inbox · live stream +
+ 12 unread · cross-mailbox +
+ connected +
+
-
-
-
-
+ +
+
+ {Array.from({ length: 2 }).map(() => ( + <> + {[ + { who: 'Jenna · Northwind', domain: 'jenna@northwind.dev', sub: 'Re: quick question on outbound', body: 'Sure — happy to chat. Thursday 10am ET works for me, send a calendar invite to this address.', tag: 'positive', time: '2s', avatar: 'from-rose-400 to-amber-400' }, + { who: 'Aman · Spruce', domain: 'aman@spruce.bio', sub: 'Re: intro from Maya', body: 'Maya mentioned you might reach out — let’s set up a call next week.', tag: 'positive', time: '18s', avatar: 'from-violet-400 to-fuchsia-500' }, + { who: 'Out of office', domain: 'auto-reply@helia.co', sub: 'OOO until Monday', body: 'I’m away until Monday. For urgent items contact ops@helia.co.', tag: 'OOO', time: '34s', avatar: 'from-slate-400 to-slate-600' }, + { who: 'Karim · Foundry', domain: 'karim@foundry.io', sub: 'Re: not the right time', body: 'Thanks for reaching out, not a fit right now. Try us in Q2.', tag: 'negative', time: '1m', avatar: 'from-rose-500 to-pink-600' }, + { who: 'Lina · Cinder', domain: 'lina@cinder.app', sub: 'Re: pricing tier?', body: 'What does the Grow plan get me on warmup pool size? Quick numbers please.', tag: 'positive', time: '2m', avatar: 'from-emerald-400 to-teal-500' }, + { who: 'unsubscribe', domain: 'sam@mosaic.co', sub: 'Remove me', body: 'Please take me off this list — auto-suppressed.', tag: 'unsub', time: '3m', avatar: 'from-zinc-400 to-zinc-600' }, + ].map((r) => ( +
+
+
+
+
+ {r.who} + {r.time} +
+
{r.domain}
+
{r.sub}
+
{r.body}
+
+ {r.tag} +
+
+
+
+ ))} + + ))} +
+
+ + +
+
+
+
+ +
+
Unified inbox
-

- Every reply, classified the second it lands. +

+ Every reply, classified the second it lands.

-

- Cross-mailbox, cross-team. Reply detection survives quoted text, signatures and forwarded threads. OOO and unsubscribe auto-suppress. +

+ Positive, negative, OOO, unsubscribe, bounce — tagged on arrival. Cross-mailbox search, round-robin assignment, snooze with reminders. No more bouncing between Gmail tabs.

- -
- - - - - - - -
-
Positive42%
-
Negative14%
-
OOO22%
-
Unsub22%
-
-
- Explore the inbox + Explore the inbox +
+
+
+
+ + +
+
+
+
+
+ + + + + Sending engine +
+

+ Distributed by design. +

+

+ One worker per machine. Each with its own IP. Mailboxes spread across workers and rebalance on the fly. Volume scales with more healthy mailboxes — never by overloading one inbox. +

+
+ {[ + { v: '50 / day', l: 'Per-mailbox cold cap' }, + { v: '10 min', l: 'Min gap between sends' }, + { v: '8 regions', l: 'us · eu · apac · sa · …' }, + { v: 'Kafka', l: 'Per-worker command stream' }, + ].map((s) => ( +
+
{s.v}
+
{s.l}
+
+ ))} +
+
- -
- -
-
- - -
- + +
+
+ Workers · live +
+ 8 workers · 328 mailboxes · + 14,420 + sent today +
- -
-
-
- -
-
-
- Positive reply - +
+ {[ + { name: 'eu-worker-3', region: 'eu-west-1', mb: 48, sends: 92, delay: '0s' }, + { name: 'us-worker-7', region: 'us-east-1', mb: 42, sends: 78, delay: '0.6s' }, + { name: 'eu-worker-1', region: 'eu-west-1', mb: 40, sends: 70, delay: '1.2s' }, + { name: 'us-worker-2', region: 'us-east-1', mb: 38, sends: 64, delay: '1.8s' }, + { name: 'ap-worker-1', region: 'ap-sydney', mb: 32, sends: 54, delay: '2.4s' }, + { name: 'sa-worker-1', region: 'sa-east-1', mb: 26, sends: 42, delay: '3.0s' }, + ].map((w, idx) => ( +
+
+
+ + + + + {w.name} +
+ {w.region} +
+
+ {w.sends} + sends/min · {w.mb} mailboxes +
+ +
+
-

Sure, Thursday 10am works…

-
+ ))} +
+ + +
+ {[ + { p: 'Gmail', pct: 46, dot: 'bg-rose-500' }, + { p: 'Outlook', pct: 24, dot: 'bg-sky-500' }, + { p: 'Yahoo', pct: 12, dot: 'bg-violet-500' }, + { p: 'iCloud', pct: 9, dot: 'bg-zinc-500' }, + { p: 'Self-IMAP', pct: 9, dot: 'bg-emerald-500' }, + ].map((it, i) => ( +
+
{it.p}
+
{it.pct}% pool
+
+ ))}
@@ -456,135 +536,76 @@ const plans = [
-
-
-
-
- - - - - Sending engine +
+
+
+ Warmbly vs the rest +
+

+ The reputation-safe path is the only one we ship. +

+
+ +
+ +
+
+ Warmbly
-

- A distributed send plane, not a glorified SMTP relay. -

-

- One worker per machine. Each with its own IP. The platform spreads mailboxes across workers and rebalances on the fly — sending volume scales with healthy mailboxes, never by overloading one inbox. -

-
+
    {[ - { v: '50 / day', l: 'Per-mailbox cold cap' }, - { v: '10 min', l: 'Min gap between sends' }, - { v: '4 regions',l: 'us · eu · apac · sa' }, - { v: 'Kafka', l: 'Per-worker command stream' }, - ].map((s) => ( -
    -
    {s.v}
    -
    {s.l}
    -
    + { k: 'Per-mailbox cold cap', v: '50 / day default — raised only with positive reputation' }, + { k: 'Warmup pool', v: 'Vetted, monitored, quarantined on warning bands' }, + { k: 'Reputation response', v: 'Acts at 10% spam placement (months before providers)' }, + { k: 'Worker concentration', v: 'Capped at the sum of mailbox budgets — never one big sender' }, + { k: 'Compliance signals', v: 'SPF / DKIM / DMARC validated on every connect' }, + ].map((it) => ( +
  • + + + +
    +
    {it.k}
    +
    {it.v}
    +
    +
  • ))} -
+
-
-
- -
- Workers -
- 4 workers · 128 mailboxes · - 5,420 - sent today -
- - -
- {[ - { name: 'eu-worker-3', region: 'eu-west-1', mb: 38, ip: '52.18.214.91' }, - { name: 'us-worker-7', region: 'us-east-1', mb: 32, ip: '54.221.190.17' }, - { name: 'eu-worker-1', region: 'eu-west-1', mb: 30, ip: '52.18.220.44' }, - { name: 'us-worker-2', region: 'us-east-1', mb: 28, ip: '54.221.196.21' }, - ].map((w) => ( -
-
- - - - - {w.name} - · {w.region} -
-
{w.ip}
-
{w.mb} mailboxes
-
-
-
-
-
-
- ))} -
- - -
- {[ - { p: 'Gmail', pct: 46, dot: 'bg-rose-500' }, - { p: 'Outlook', pct: 24, dot: 'bg-sky-500' }, - { p: 'Yahoo', pct: 12, dot: 'bg-violet-500' }, - { p: 'iCloud', pct: 9, dot: 'bg-zinc-500' }, - { p: 'Self-IMAP', pct: 9, dot: 'bg-emerald-500' }, - ].map((it, i) => ( -
-
{it.p}
-
{it.pct}% pool
-
- ))} -
-
-
-
-
- - -
-
-
-
- Why we’re different -
-

- We refuse to be the reason your domain ends up on a blocklist. -

-

- Most cold-email platforms reward you for sending more. We reward you for sending well. -

-
- -
+
-
-
Setting
-
Warmbly
-
Other cold-email tools
+
+ Most cold-email tools
- {compare.map(([k, ours, theirs]) => ( -
-
{k}
-
{ours}
-
{theirs}
-
- ))} +
    + {[ + { k: 'Per-mailbox cold cap', v: '200+ / day if you ask — sells you "more volume"' }, + { k: 'Warmup pool', v: 'Mixed with trial mailboxes; same pool for everyone' }, + { k: 'Reputation response', v: 'Acts at 80%+ spam placement — by then it’s too late' }, + { k: 'Worker concentration', v: 'Flat per-worker ceiling — one IP carries the load' }, + { k: 'Compliance signals', v: 'You configure DNS, they assume it worked' }, + ].map((it) => ( +
  • + + + +
    +
    {it.k}
    +
    {it.v}
    +
    +
  • + ))} +
+ @@ -709,74 +730,81 @@ const plans = [
-
-
+
+ + + +
-
Pricing
-

- Per mailbox. Predictable. +
+ Pricing +
+

+ Per mailbox. Predictable.

-

- Warmup, sending, the inbox, analytics and CRM aren’t separate line items. You pay for the mailboxes you connect. +

+ Warmup, sending, the inbox, analytics and CRM aren't separate line items. You pay for the mailboxes you connect.

- -
- - - + +
+
+ + + +
+ + Save 20% +
-
+
{plans.map((p, idx) => ( -
- {/* Sky cloud bloom inside the highlighted Business card */} + {/* Continuously sweeping gradient ring on the featured card */} {p.highlight && ( -