From ccff802163e9ced5b9044342135ada0da2f559d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Guti=C3=A9rrez?= <35082514+alezmad@users.noreply.github.com> Date: Sun, 5 Apr 2026 23:32:48 +0100 Subject: [PATCH] fix(web): rewrite pricing to match shipped product (honest beta tier) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 6-tier grid was selling features that don't exist yet: - Pro \$12/mo: dashboard, peer registry, message history (not built) - Plus \$24/mo: Tailscale mesh (already default), MCP bridge (free), audit log (not built) - Team \$99/mo: \"self-hosted broker\" AND \"25 peers\" AND \"unlimited peers\" — three contradictions in one tier - Business \$499/mo: multi-region, retention, Slack/Linear (roadmap) - Enterprise: claimed \"SOC 2 pack\" without certification Replaced with a single Public-Beta card: - Free, no card required - Two columns: Shipping today (verified against source) + Roadmap v0.2–v0.3 (clearly labeled) - Promise: \"Beta users keep the free plan for life\" Non-additive rewrite of a shipped section. Authorized by user explicitly; required because the prior pricing created refund + legal risk. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/modules/marketing/home/pricing.tsx | 231 +++++++++--------- 1 file changed, 112 insertions(+), 119 deletions(-) diff --git a/apps/web/src/modules/marketing/home/pricing.tsx b/apps/web/src/modules/marketing/home/pricing.tsx index 3ae2b2c..a6e55d7 100644 --- a/apps/web/src/modules/marketing/home/pricing.tsx +++ b/apps/web/src/modules/marketing/home/pricing.tsx @@ -1,64 +1,25 @@ -"use client"; -import { useState } from "react"; import Link from "next/link"; import { Reveal, SectionIcon } from "./_reveal"; -const TIERS = { - individual: [ - { - name: "Solo", - desc: "Run the broker on your laptop. Pair your Claude Code sessions across repos.", - price: "Free", - cta: "Start free", - href: "/auth/register", - }, - { - name: "Pro", - desc: "Mesh dashboard, peer registry, message history, priority routing.", - price: "$12", - note: "per month", - cta: "Start free trial", - href: "/auth/register", - }, - { - name: "Plus", - desc: "Cross-machine mesh via Tailscale / WireGuard, MCP bridge, audit log.", - price: "$24", - note: "per month", - cta: "Start free trial", - href: "/auth/register", - }, - ], - team: [ - { - name: "Team", - desc: "Self-hosted broker. SSO, shared presence, team audit log, 25 peers.", - price: "$99", - note: "per month · unlimited peers", - cta: "Start free", - href: "/auth/register", - }, - { - name: "Business", - desc: "Multi-region brokers, retention controls, Slack/Linear bridges.", - price: "$499", - note: "per month", - cta: "Start free", - href: "/auth/register", - }, - { - name: "Enterprise", - desc: "Air-gapped deploy, custom SAML, dedicated support, SOC 2 pack.", - price: "Contact", - cta: "Contact sales", - href: "/contact", - }, - ], -}; +const SHIPPING = [ + "CLI + MCP server (Claude Code integration)", + "Hosted broker on claudemesh.com", + "End-to-end encrypted direct messages (crypto_box)", + "Priority routing (now / next / low)", + "Mesh invites + membership", + "Windows, macOS, Linux support", +]; + +const ROADMAP = [ + "Mesh dashboard (browser UI)", + "Message history + retention controls", + "Audit log", + "Slack / WhatsApp / Telegram gateways", + "Self-host broker + SSO", + "Cross-broker federation", +]; export const Pricing = () => { - const [tab, setTab] = useState<"individual" | "team">("individual"); - const tiers = TIERS[tab]; return (
@@ -73,72 +34,104 @@ export const Pricing = () => { Get started with claudemesh - -
- {(["individual", "team"] as const).map((k) => ( - - ))} -
-
- -
- {tiers.map((tier) => ( -
+ -
- -
-

- {tier.name} -

-

- {tier.desc} -

-
-
- {tier.price} -
- {tier.note && ( -
- {tier.note} -
- )} -
- - {tier.cta} - -
- ))} + Start free + + → + + +