Skip to content

fix(marketing): Team CTA contact-sales (not buyable) + hero self-serve reframe#214

Merged
mastermanas805 merged 2 commits into
mainfrom
polish/launch-readiness
Jun 8, 2026
Merged

fix(marketing): Team CTA contact-sales (not buyable) + hero self-serve reframe#214
mastermanas805 merged 2 commits into
mainfrom
polish/launch-readiness

Conversation

@mastermanas805

Copy link
Copy Markdown
Member

Launch-readiness polish for the public homepage (src/pages/MarketingPage.tsx).

(a) Display-detail accuracy — fix a Team-shown-as-buyable bug

The homepage Team tile's CTA pointed at the self-serve /app/checkout?plan=team&frequency=monthly path. Team is gated (TEAM-GATE, 2026-06-04 CEO directive): the server-side gate rejects a Team checkout with 400 tier_not_yet_available — so the homepage was marketing a tier the platform can't actually sell. The inline code comment already flagged this as a known reconciliation follow-up.

Fix: reconciled with PricingPage.tsx + BillingPage.tsx — the Team CTA is now "Contact sales →"mailto:sales@instanode.dev?subject=Team%20plan%20enquiry (extracted as the named const SALES_MAILTO_TEAM). No surface markets Team as buyable. Pro remains the only "Most popular"-badged tier; Team is not badged or highlighted.

Verified against live rendered output: curl https://instanode.dev/ currently serves the buyable Team CTA (/app/checkout?plan=team, "Start team →"). The freshly-built dist/index.html from this branch serves the contact-sales mailto, with exactly one "Most popular" badge on Pro.

(b) Marketing copy polish (safe, non-fabricated)

Hero subhead reframed to emphasize self-serve reliability and the "no sales call" angle:

Provisioned in <2 seconds. Self-serve from the first call to a paid plan — no signup, no Docker, no sales call.

(Hobby/Pro are genuinely self-serve checkout — no invented claims.)

Constraints honored

  • NO fabricated social proof — no invented deployment/customer counts, logos, or testimonials added.
  • Team NOT marketed as available/buyable/Most-Popular — the opposite: this PR removes the buyable Team CTA and keeps Team off the "Most popular" badge.

Regression guards

Two new MarketingPage.test.tsx tests:

  1. Homepage Team CTA is a contact-sales mailto, the plan=team checkout link is absent page-wide, and the old "Start team →" label is gone.
  2. Exactly one "Most popular" badge, inside the Pro card (not Team).

Gate

npm run gate green — tsc --noEmit + vite build (121 prerendered HTML files incl. scripts/prerender.mjs) + vitest run (1149 passed / 3 skipped, +2 new).

🤖 Generated with Claude Code

…e reframe

Launch-readiness polish for the public homepage (instanode-web).

Display-detail accuracy (HARD pillar) — fix a real Team-shown-as-buyable bug:
  - The homepage Team tile's CTA pointed at the self-serve
    /app/checkout?plan=team path. Team is gated (TEAM-GATE, 2026-06-04 CEO
    directive): the server-side gate rejects a Team checkout with
    400 tier_not_yet_available, so the homepage was marketing a tier the
    platform can't sell. The inline comment already flagged this as a known
    reconciliation follow-up.
  - Reconciled with PricingPage.tsx + BillingPage.tsx: Team CTA is now
    "Contact sales →" → mailto:sales@instanode.dev (named const
    SALES_MAILTO_TEAM). No surface markets Team as buyable. Pro remains the
    only "Most popular"-badged tier; Team is not badged/highlighted.
  - Verified against live rendered output: instanode.dev currently serves the
    buyable Team CTA; the freshly-built dist now serves the contact-sales mailto.

Marketing copy polish (safe, non-fabricated):
  - Hero subhead reframed to emphasize self-serve reliability: "Self-serve from
    the first call to a paid plan — no signup, no Docker, no sales call."
    (Hobby/Pro are genuinely self-serve checkout; no invented claims.)

NO fabricated social proof added (no invented counts/logos/testimonials).
NO Team marketing as available/buyable/Most-Popular.

Regression guards: two new MarketingPage.test.tsx tests pin the Team CTA to a
contact-sales mailto (forbidding plan=team / "Start team" from creeping back)
and assert exactly one "Most popular" badge, on Pro.

npm run gate green (tsc + build + 1149 vitest, +2 new).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jun 8, 2026

Copy link
Copy Markdown

size-limit report 📦

Path Size
dist/assets/index-CgN1XV4b.js 0 B (-100% 🔽)
dist/assets/index-BsJUZYRr.css 6.13 KB (0%)
dist/assets/index-BzAZ-cqU.js 162.1 KB (+100% 🔺)

@mastermanas805 mastermanas805 merged commit 8e4e7cd into main Jun 8, 2026
19 checks passed
@mastermanas805 mastermanas805 deleted the polish/launch-readiness branch June 8, 2026 18:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant