Skip to content

feat(pricing): Enterprise "contact us" wall above Team (#56)#189

Merged
mastermanas805 merged 3 commits into
mainfrom
feat/pricing-enterprise-wall-56
Jun 5, 2026
Merged

feat(pricing): Enterprise "contact us" wall above Team (#56)#189
mastermanas805 merged 3 commits into
mainfrom
feat/pricing-enterprise-wall-56

Conversation

@mastermanas805

Copy link
Copy Markdown
Member

GTM surface only — adds an Enterprise "contact us" wall to the right of Team on /pricing. Does NOT touch the api, does NOT un-gate Team, does NOT build dedicated infra (that is operator/permission-gated). Task #56.

What

  • src/pages/PricingPage.tsx — new enterprise column. Headline reads Custom (no price), CTA is mailto:sales@instanode.dev?subject=Enterprise%20inquiry (matches Team’s contact address). Every comparison row grows to a 5-tuple; Enterprise cells read Custom / Contact us — never numbers, never the retired word "unlimited". Adds a dedicated Enterprise callout card with the trigger criteria.
  • public/llms.txt — standalone **Enterprise** line so agents introspecting tiers see the wall.
  • src/lib/llmsContract.test.ts — pins the Enterprise line + sales@instanode.dev (rule 18/22).
  • scripts/fetch-content.mjsrequireMarkers gains **Enterprise** so a content sync missing the line preserves the local copy until the content PR lands.

Out of scope

No api/plans.yaml changes, no Team un-gating, no dedicated-infra build, no lead-capture endpoint (mailto only for v1).

Verify

npm run gate GREEN (tsc + build incl. prerender + 1127 vitest passing). Prerendered dist/pricing/index.html contains the Enterprise wall (Contact us / Custom / sales@instanode.dev) and zero "unlimited".

Cross-ref

Pairs with content PR adding the same Enterprise line to the llms.txt source of truth: InstaNode-dev/content feat/llms-enterprise-wall-56.

🤖 Generated with Claude Code

The strict-≥80%-margin redesign (#188) made Team a finite self-serve tier.
Anyone who breaches Team's caps — or needs dedicated/isolated infra,
multi-region, or compliance (SOC2/BAA/SSO/SLA/custom DPA) — now has a home:
an Enterprise column to the right of Team plus a dedicated "contact us" card.

GTM surface ONLY — no api changes, no Team un-gating, no plans.yaml row,
no dedicated-infra build. Enterprise is quote-based: no price, no checkout.

PricingPage:
- new `enterprise` TierKey + a 5th column (headline "Custom" / "let's talk",
  CTA = mailto:sales@instanode.dev?subject=Enterprise%20inquiry — matches
  Team's contact address).
- every ROW grows to a 5-tuple; Enterprise cells read "Custom" (capacity)
  or "Contact us" (SSO/SAML, SLA). No numbers, no "unlimited" (retired word).
- dedicated Enterprise callout card with trigger criteria + Contact-us CTA.
- grid widened 5→6 tracks; tier-scroll allowlist + section copy updated.

Docs contract:
- public/llms.txt gains a standalone `**Enterprise**` line so agents
  introspecting tiers see the wall.
- llmsContract.test.ts pins the Enterprise line + sales address (rule 18/22).
- fetch-content.mjs requireMarkers gains '**Enterprise**' so a content sync
  missing the line preserves the local copy until the content PR lands.

Tests: +6 PricingPage assertions (column renders, CTA is sales mailto not
checkout, "Custom" headline no $, callout card present, trigger criteria
surfaced, zero "unlimited" anywhere on the page). npm run gate green
(tsc + build incl. prerender + 1127 vitest passing).

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

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown

size-limit report 📦

Path Size
dist/assets/index-BPuqdbbj.js 0 B (-100% 🔽)
dist/assets/index-BsJUZYRr.css 6.13 KB (0%)
dist/assets/index-C51TcQjl.js 161.98 KB (+100% 🔺)

mastermanas805 and others added 2 commits June 6, 2026 00:26
…=enterprise)

diff-cover flagged PricingPage.tsx:305 (the validated-tier allow-list now
including 'enterprise') uncovered — the existing per-tier-id test renders
without a tier param so the requestedTier useEffect returns early. Add a
render with ?tier=enterprise that executes the path. 100% patch coverage.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mastermanas805 mastermanas805 merged commit 117ab5a into main Jun 5, 2026
18 checks passed
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