Skip to content

Sharpen the site into a pre-commitment feasibility gate - #5

Merged
TonyQ7 merged 1 commit into
mainfrom
phase-2-decision-gate
Jul 16, 2026
Merged

Sharpen the site into a pre-commitment feasibility gate#5
TonyQ7 merged 1 commit into
mainfrom
phase-2-decision-gate

Conversation

@TonyQ7

@TonyQ7 TonyQ7 commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Phase 1 of PLAN.md. The visual identity is deliberately untouched — hero headline, survey plates, contour generator, palette, typography, grid, spacing and motion language are all unchanged. What changes is what the site claims to be.

The previous copy could be read as a beautiful workforce-analysis consultancy. It now sells one thing: a pre-commitment talent feasibility gate for a named business decision, with the wedge stated in the hero so a visitor can self-select out in one screen.

Narrative

  • Hero — paid design-partner program, Sweden first; the decision the gate runs before; the wedge (10–25 critical roles, 1–3 Nordic locations, 90 days).
  • One CTA name everywhere — "Discuss one workforce decision".
  • The gate — "One workforce plan enters. A go, change, or stop decision leaves." Console relabelled illustrative decision logic; What the plate argues forDecision implication.
  • Decisions become triggers — when to run the gate, not questions to ponder.
  • Pilot — unmistakably paid and founder-led. Price uncertainty replaced with Format. "Pre-product" replaced with design-partner stage.
  • Positioning — "Where Capasight sits": a decision layer over four named inputs. The excluded-categories list moves to the FAQ rather than giving competitors the centre of the page.
  • Footer — repository link removed; Stockholm provenance line.

Enforcement, not intention

Config is split so the verifier checks real typed records rather than regexing source: copy.ts, claims.ts and scenarios.ts are free of Astro env imports; site.ts alone resolves the booking URL.

The evidence gate gains three rules:

  1. Illustrative scenarios may carry no counts at all — an "illustrative" label does not stop 18 roles reading as measurement. Durations ("three quarters") are allowed; counts are not. A record opts out only via dataClass: 'user-provided-sample', meaning the figures are the customer's own. Writing this rule caught two counts I had missed.
  2. No claim exceeding reality — customers, partnerships, data rights, proof, ROI.
  3. Placeholder booking URLs are rejected in production.

⚠️ The CTA is still a placeholder

The placeholder ban is suspended by an explicit, greppable ALLOW_PLACEHOLDER_BOOKING_URL. While it is set, the no production CTA is a placeholder test reports as skipped with its reason in every CI run rather than quietly passing. Enforcement is one deleted variable away.

This knowingly misses the plan's "No live link is a placeholder" Definition of Done, per an explicit decision to ship the narrative now.

Quality

93 Playwright tests pass on Chromium, Firefox and WebKit (3 skipped = the placeholder gate). Lint and astro check clean, no axe violations, no horizontal overflow at 360/768/1024/1440. On mobile the masthead gives up the wordmark's text rather than shortening the CTA, so the action keeps one name everywhere.

🤖 Generated with Claude Code

Phase 1 of PLAN.md. The visual identity, hero headline, survey plates, contour
generator, palette, typography, grid and motion language are unchanged; what
changes is what the site claims to be.

The previous copy could be read as a beautiful workforce-analysis consultancy.
It now sells one thing: a pre-commitment talent feasibility gate for a named
business decision, with the wedge stated in the hero so a visitor can
self-select out in one screen.

Narrative:
- Hero: paid design-partner program, Sweden first; the decision the gate runs
  before; the wedge (10-25 critical roles, 1-3 Nordic locations, 90 days).
- One CTA name everywhere: "Discuss one workforce decision".
- Gate: "One workforce plan enters. A go, change, or stop decision leaves."
  Stage definitions sharpened; console relabelled illustrative decision logic.
- Decisions become triggers: when to run the gate, not questions to ponder.
- Pilot is unmistakably paid and founder-led; price uncertainty replaced with
  Format. "Pre-product" candour replaced with design-partner stage.
- Positioning becomes "Where Capasight sits": a decision layer over four named
  inputs, with the excluded-categories list moved to the FAQ rather than giving
  competitors the centre of the page.
- Footer drops the repository link and carries a Stockholm provenance line.

Config is split so the verifier can check real records rather than regexing
source: copy.ts, claims.ts and scenarios.ts are free of Astro env imports, and
site.ts alone resolves the booking URL.

The evidence gate gains three rules. Illustrative scenarios may carry no counts
at all — an "illustrative" label does not stop "18 roles" reading as
measurement — unless a record declares dataClass: 'user-provided-sample'.
Durations are still allowed; counts are not. It also rejects copy that claims a
customer, partnership, data right, proof or ROI that does not exist. Writing
these rules caught two counts I had missed.

Booking URLs are now checked for placeholders and rejected in production. The
CTA is still a placeholder, so the ban is suspended by an explicit, greppable
ALLOW_PLACEHOLDER_BOOKING_URL: while it is set, the placeholder test reports as
skipped with its reason rather than passing, so the gap stays visible in CI.
Enforcement is one deleted variable away.

On mobile the masthead gives up the wordmark's text rather than shortening the
CTA, so the action keeps one name everywhere it appears.

93 Playwright tests pass on Chromium, Firefox and WebKit; 3 skipped are the
placeholder gate. Lint and astro check clean; no axe violations; no horizontal
overflow at 360/768/1024/1440.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@TonyQ7
TonyQ7 merged commit 812a64b into main Jul 16, 2026
1 check passed
@TonyQ7
TonyQ7 deleted the phase-2-decision-gate branch July 16, 2026 17:29
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