From 2d2c60925ba32e4ea1c6142c501ebf271aeeab0e Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Mon, 8 Jun 2026 15:04:13 +0200 Subject: [PATCH 1/8] feat: widen agency use case hero --- site/src/pages/use-cases/agencies.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/pages/use-cases/agencies.astro b/site/src/pages/use-cases/agencies.astro index 7c5886ce..4a31b927 100644 --- a/site/src/pages/use-cases/agencies.astro +++ b/site/src/pages/use-cases/agencies.astro @@ -101,7 +101,7 @@ const faq = [ Outbound for many clients, no spreadsheet triage -

+

One platform for
every client domain.

From 6e6cbef7f3f1671b16d11a153d585aa2773991ef Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Mon, 8 Jun 2026 15:04:17 +0200 Subject: [PATCH 2/8] feat: widen founder use case hero --- site/src/pages/use-cases/founders.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/pages/use-cases/founders.astro b/site/src/pages/use-cases/founders.astro index 354a1081..6c27bb98 100644 --- a/site/src/pages/use-cases/founders.astro +++ b/site/src/pages/use-cases/founders.astro @@ -145,7 +145,7 @@ const faq = [ Cold outreach without burning founder@ -

+

One founder.
Four mailboxes.

From 5144dca2ab2f09aff56abb80670e156c0ce22974 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Mon, 8 Jun 2026 15:04:20 +0200 Subject: [PATCH 3/8] feat: widen recruiter use case hero --- site/src/pages/use-cases/recruiters.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/pages/use-cases/recruiters.astro b/site/src/pages/use-cases/recruiters.astro index c756620d..587681e5 100644 --- a/site/src/pages/use-cases/recruiters.astro +++ b/site/src/pages/use-cases/recruiters.astro @@ -130,7 +130,7 @@ const tipsForRecruiters = [ Candidate outreach from your face, not a shared mailbox -

+

Candidates reply
to people, not pipelines.

From 34052234ce47bba6ef28e20303d2559f545e40b6 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Mon, 8 Jun 2026 15:04:25 +0200 Subject: [PATCH 4/8] feat: widen sales use case hero --- site/src/pages/use-cases/sales.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/pages/use-cases/sales.astro b/site/src/pages/use-cases/sales.astro index 6a5bf7e9..d69e79c1 100644 --- a/site/src/pages/use-cases/sales.astro +++ b/site/src/pages/use-cases/sales.astro @@ -165,7 +165,7 @@ const capRatio = (today: number, cap: number) => Math.min(100, Math.round((today Built for teams of BDRs and AEs working a shared pipeline -

+

More reps. More mailboxes.
Volume follows.

From bdd00ef3208307728f304e538a9dc967dba9b91a Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Mon, 8 Jun 2026 15:05:25 +0200 Subject: [PATCH 5/8] feat: remove fundraising timeline panel --- site/src/pages/use-cases/fundraising.astro | 107 +-------------------- 1 file changed, 1 insertion(+), 106 deletions(-) diff --git a/site/src/pages/use-cases/fundraising.astro b/site/src/pages/use-cases/fundraising.astro index 109aa636..f370d1c4 100644 --- a/site/src/pages/use-cases/fundraising.astro +++ b/site/src/pages/use-cases/fundraising.astro @@ -4,28 +4,6 @@ import HeroAtmosphere from '../../components/HeroAtmosphere.astro'; import Icon from '../../components/Icon.astro'; import CTA from '../../components/CTA.astro'; -// All numbers reflect platform defaults from CLAUDE.md: -// warmup ramp 10 → 40 / day, cold cap 100 / day, 600s gap, +1 / day ramp. - -// Six-week raise timeline: warmup ramp through week -1, then a short send window. -// Astro JSX caveat: pre-compute < / <= comparisons in frontmatter, not in templates. -const RAMP_START = 10; -const RAMP_PER_DAY = 1; -const RAMP_CEILING = 40; -const COLD_DAILY_CAP = 100; -const SEND_GAP_SECONDS = 600; - -const timeline = [ - { week: 'Week -6', phase: 'warmup', volume: 10, label: 'Mailbox connected. Warmup begins.', detail: 'First warmup send. Reads as normal individual activity to any provider.' }, - { week: 'Week -5', phase: 'warmup', volume: 15, label: 'Ramp · +1 per business day', detail: 'No deck talk, no sending. Build behaviour history while the deck is still in revision.' }, - { week: 'Week -4', phase: 'warmup', volume: 22, label: 'Mid-ramp', detail: 'Verification tokens land at vetted partners. Positive placement signal accrues.' }, - { week: 'Week -3', phase: 'warmup', volume: 30, label: 'Ramp continues', detail: 'Recipient pool is rotated. Recent partners excluded for 7 days.' }, - { week: 'Week -2', phase: 'warmup', volume: 38, label: 'Approaching ceiling', detail: 'Health band confirmed Healthy. Mailbox eligible to send cold next week.' }, - { week: 'Week -1', phase: 'warmup', volume: 40, label: 'Ceiling. Holds at 40 / day.', detail: 'Warmup continues in parallel. Cold sending starts only once this floor is stable.' }, - { week: 'Week 0', phase: 'send', volume: 40, label: 'Day 0 · first touch', detail: 'Plain text, 3 to 4 sentences. Spread across recipient business hours.' }, - { week: 'Week +1', phase: 'send', volume: 40, label: 'Day 5 · second touch', detail: 'Single follow-up only on no-reply. Sequence pauses on any reply.' }, -]; - // Three real traps for VC outreach + the corresponding platform defence. const traps = [ { @@ -89,14 +67,6 @@ const toneClass = (t: string) => { return { dot: 'bg-rose-500', text: 'text-rose-700', soft: 'bg-rose-50' }; }; -// Single-row visual scale of timeline weeks (warmup vs send), pre-computed so JSX stays simple. -const maxVolume = RAMP_CEILING; -const timelineRows = timeline.map((t) => { - const widthPct = Math.round((t.volume / maxVolume) * 100); - const isSend = t.phase === 'send'; - return { ...t, widthPct, isSend }; -}); - const faq = [ ['How long before the raise should I connect the mailbox?', 'Four to six weeks. The ramp from 10 to 40 per day takes about 30 business days, and warmup needs at least 20 deliveries in the pool before the mailbox is rated Healthy.'], ['Why only two steps?', 'Investor inboxes are saturated. A short two-step sequence respects that. Longer sequences push the same mailbox past safe spacing and read as automation. Two steps is a recommendation, not a measured outcome.'], @@ -113,7 +83,7 @@ const faq = [

-
+
Fundraising @@ -142,81 +112,6 @@ const faq = [
- -
-
-
- -
-
-
raise-timeline.fy26
- - - 6 weeks · 1 mailbox - -
-
- Warmup ramp: {RAMP_START} → {RAMP_CEILING} / day - - Cold cap: {COLD_DAILY_CAP} / day - - {SEND_GAP_SECONDS}s spacing -
-
- - -
- - - Warmup phase - - - - Cold send phase - - - - Warmup continues in parallel during send weeks - -
- - -
-
- {timelineRows.map((t) => ( -
-
{t.week}
-
- {t.volume} - /day -
-
-
-
- {t.label} -
-
-
{t.detail}
-
- ))} -
- -
- Plan numbers come from platform defaults, not a guarantee of outcomes. - - See the full warmup ramp - -
-
-
-
-
- From fb7e7fcb27ac442d6bbf5b4813065e9d9c7f6b0d Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Mon, 8 Jun 2026 15:06:03 +0200 Subject: [PATCH 6/8] feat: sharpen fundraising trap copy --- site/src/pages/use-cases/fundraising.astro | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/site/src/pages/use-cases/fundraising.astro b/site/src/pages/use-cases/fundraising.astro index f370d1c4..9b8f0f8c 100644 --- a/site/src/pages/use-cases/fundraising.astro +++ b/site/src/pages/use-cases/fundraising.astro @@ -9,27 +9,27 @@ const traps = [ { n: '01', trap: 'Mailbox set up the same week as the raise', - detail: 'A fresh mailbox sending cold to a partner list looks like the worst-case sender. Providers default to suspicion. First catastrophic event can hit within days.', + detail: 'A mailbox you connected this week has no history, so the first thing it ever does is cold-email strangers. That is the textbook spammer pattern, and you can taint the domain for the whole raise in a couple of days.', defence: 'Warmup', - fix: 'Connect and start warmup 4 to 6 weeks before the raise. Ramp from 10 to 40 per day so the mailbox has behaviour history before the first cold send.', + fix: 'Connect the mailbox four to six weeks out and let warmup run. It climbs from 10 to 40 sends a day, so by the time you write the first partner the mailbox already looks lived-in.', link: '/warmup/', linkLabel: 'See warmup ramp', }, { n: '02', trap: 'CC the co-founders on every send', - detail: 'CC chains on cold sends normalise a behaviour Gmail treats as bulk. The partner sees an internal cast list before they see your one-line ask.', + detail: 'CC-ing your co-founders does two bad things at once: Gmail reads the chain as bulk mail, and the partner opens to a wall of names instead of a two-line ask from one person.', defence: 'Sender pool', - fix: 'Each cold message goes from one sender to one recipient. If a co-founder needs to be in the loop, route through the inbox once a reply lands. Keep the cold surface clean.', + fix: 'Send one to one, one founder to one partner. If someone on your side needs to be in the loop, bring them in from the shared inbox once the partner replies, not on the cold send.', link: '/inbox/', linkLabel: 'How inbox routing works', }, { n: '03', trap: 'Blast 80 partners at 9am Tuesday', - detail: 'Sending to a partner list in the same minute is the loudest possible spam signal. It bursts the same mailbox past safe spacing and trips volume anomaly heuristics.', + detail: 'Firing the whole list at 9am Tuesday is the loudest spam tell there is. One mailbox sends dozens of near-identical emails in the same minute, which is not something a person ever does.', defence: 'Business-hour scheduling · 600s gap', - fix: 'Distribute sends across each recipient business window in their own time zone. Default 600 second gap keeps the send pattern natural and within the per-mailbox cap.', + fix: 'Spread the sends across each partner’s own working hours, with a gap between them (600 seconds by default). It paces out like someone working through a list, and stays under the mailbox’s daily cap.', link: '/campaigns/', linkLabel: 'Scheduling rules', }, @@ -123,7 +123,7 @@ const faq = [ The three patterns that kill an investor sequence.

- The mistakes are not creative. They are the same three founders make every raise. Each has a specific platform defence so the mailbox stays out of promotions and the sequence keeps moving. + None of these are exotic. They are the same three mistakes founders make on almost every raise, and each one has a setting in Warmbly that quietly keeps it from happening.

From 839aaf16427af30bf05df0e47f9c436f31505015 Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Mon, 8 Jun 2026 15:06:28 +0200 Subject: [PATCH 7/8] feat: refresh fundraising hero copy --- site/src/pages/use-cases/fundraising.astro | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/site/src/pages/use-cases/fundraising.astro b/site/src/pages/use-cases/fundraising.astro index 9b8f0f8c..7a32b1bd 100644 --- a/site/src/pages/use-cases/fundraising.astro +++ b/site/src/pages/use-cases/fundraising.astro @@ -69,13 +69,13 @@ const toneClass = (t: string) => { const faq = [ ['How long before the raise should I connect the mailbox?', 'Four to six weeks. The ramp from 10 to 40 per day takes about 30 business days, and warmup needs at least 20 deliveries in the pool before the mailbox is rated Healthy.'], - ['Why only two steps?', 'Investor inboxes are saturated. A short two-step sequence respects that. Longer sequences push the same mailbox past safe spacing and read as automation. Two steps is a recommendation, not a measured outcome.'], - ['Should I attach the deck on the first send?', 'No. Cold attachments hurt deliverability and remove the reason to reply. Send the deck on reply, not before. The first touch is three sentences and an ask.'], + ['How short should an investor sequence be?', 'Shorter than you think. Partners get hundreds of these a week, so one strong first touch and a single follow-up does most of the work. You can build more, the editor goes up to 50 steps with branching, but for a raise we would not. A fourth and fifth email mostly buys you complaints.'], + ['Should I attach the deck on the first send?', 'No. A cold attachment hurts deliverability and, honestly, it takes away their reason to reply. Send three or four sentences and an ask, then send the deck once they answer. The reply is the whole point of the first email.'], ]; ---
-
+
The sequence

- Two steps. Plain text. Deck on reply. + You draw a flow, not a drip list.

- Investor inboxes are saturated. A short sequence respects that. Day 0 is three to four sentences and one ask. Day 5 is a one-paragraph breakup. After that, the sequence ends. + A campaign is a small canvas. Each step holds for as long as you set, sends, then splits on what the + investor actually did. There is no separate wait block to babysit, the wait sits on the step itself. A + reply can stop the chase on the spot, open a task, or ping you. For a raise we keep it to two emails, but + it is the same builder every campaign runs on.

-
    -
  • Pauses on any reply, bounce, or suppression.
  • -
  • No deck attached. Deck link sent on reply only.
  • -
  • Sends spread across recipient business hours, never the same minute.
  • +
      +
    • + + The wait lives on the step. Each one holds for the number of days you give it, then sends. Nothing to wire up in between. +
    • +
    • + + Branches read behaviour. Opened, clicked, replied, or a reply we have read as interested, not interested, or out of office: each can take its own path. +
    • +
    • + + A reply cuts the line. The moment a partner answers, the cold steps stop and a step can run right then: tag them, open a CRM deal, or drop you a notification. +

    - Two steps is a recommendation, not a measured outcome. Override in settings if you have data that says otherwise. + Two emails is our call for a raise, not a ceiling. The same canvas branches up to 50 steps when a campaign needs it.

+
- -
+
vc-seed-fy26
- 2 steps · 1 sender + 2 emails · 2 actions
- plain text · no attachments + + stop on reply: on +
- -
- {sequence.map((s, i) => { - const isSend = s.kind === 'send'; - const isWait = s.kind === 'wait'; - return ( -
-
-
- {s.idx} +
+ +
+
+ + First touch + Start +
+
+
+ Email 1 + sends on entry +
+
Subject  {email1Subject}
+
{email1Body}
+
+
+ + +
+ +
+
+ + + if they reply + + instant +
+
+
+ the moment a reply lands +
+
+
+ + Create task  Send the deck, book the call
-
-
{s.label}
-
{s.note}
-
-
- - {s.delay} - +
+ + Notify  Ping me in Slack
- - {s.body && ( -
{s.body}
- )} - - {isWait && ( -
- On reply · pause · auto-route to inbox -
- )} +
+ + Sequence stops here +
- ); - })} +
+ + +
+ + + no reply + + waits 5 days + + down to Email 2 +
+
+ + +
+
+ + One follow-up + 5d +
+
+
+ Email 2 + same subject → same thread +
+
Subject  {email2Subject}
+
{email2Body}
+
+
+ + +
+ +
+
+ + + if they opened it but never replied + + within 4 days +
+
+
+ + + + Add tag  warm · no reply, follow up after the raise +
+
+ + Sequence stops here +
+
+
+ + +
+ everyone else + + + + Stop + +
+
-
- After step 2 · sequence ends · no third send - Reply pauses for that contact only +
+ Drawn on the campaign canvas · up to 50 steps + A reply stops it for that contact only