TenantAtlas/specs/409-evaluation-procurement-rollout/research.md
ahmido 2e6504618c 409: add evaluation, procurement and rollout website surface (#408)
## Summary
- add the localized evaluation-readiness route pair at `/evaluierung` and `/en/evaluation` with a shared page component
- wire homepage, platform, trust, review-pack, use-case, footer, and locale-switcher discovery paths into the new evaluation surface
- add smoke coverage plus full Spec Kit artifacts for the evaluation, procurement, and rollout readiness feature

## Validation
- `corepack pnpm --filter @tenantatlas/website build`
- `WEBSITE_PORT=4322 corepack pnpm --filter @tenantatlas/website test tests/smoke/public-routes.spec.ts`
- `WEBSITE_PORT=4323 corepack pnpm --filter @tenantatlas/website test tests/smoke/interaction.spec.ts`

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #408
2026-05-30 18:09:16 +00:00

99 lines
6.5 KiB
Markdown

# Research: Evaluation, Procurement & Rollout Readiness Website Surface
## Decision: Use `/evaluierung` and `/en/evaluation`
**Rationale**: The current public website already uses root-level buyer and commercial routes such as `/contact`, `/pricing`, and `/trust`, with English counterparts under `/en/*`. The evaluation journey spans demo, pilot, trust, and procurement readiness rather than one product feature, so it fits the top-level buyer-route family better than a nested `/platform/*` path.
**Alternatives considered**:
- `/platform/evaluation`: too tightly nested under product detail for a broader buyer-readiness flow.
- `/procurement`: too narrow relative to evaluation and rollout readiness.
- `/start` or `/demo-pilot`: weaker SEO and weaker alignment with the existing public route family.
## Decision: Reuse the localized thin-route plus shared-page-component pattern
**Rationale**: Existing public pages already use thin locale route files plus shared page components, for example `platform.astro`, `trust.astro`, `contact.astro`, and their English wrappers. The evaluation page is section-heavy in both German and English, so one shared `EvaluationPage.astro` is the narrowest way to avoid duplicating large amounts of markup.
**Alternatives considered**:
- Duplicate full German and English route markup: acceptable, but repetitive and harder to maintain.
- MDX/docs content route: mismatched with the current marketing-page CTA and metadata pattern.
- Inline-only homepage or platform section: weaker SEO, weaker smoke coverage, and weaker discoverability.
## Decision: Keep all localized page copy in `site-copy.ts`
**Rationale**: The website already centralizes public copy, metadata, navigation labels, footer links, homepage copy, platform copy, trust copy, review-pack copy, and use-case copy in `apps/website/src/data_files/site-copy.ts`. Adding a dedicated `evaluation` section there keeps the new page aligned with the existing locale strategy and avoids a second content source.
**Alternatives considered**:
- Page-local constants: simpler for one file, but weaker for German/English parity and CTA consistency.
- Separate JSON or YAML content file: splits public copy away from the current marketing-content source of truth.
- Runtime content source or CMS: out of scope for a website-only feature.
## Decision: Use `/contact` as the real conversion path for demo, pilot, and security-document requests
**Rationale**: The existing public site already routes buyer-facing demo and walkthrough CTAs to `/contact` and `/en/contact`. The current public CTA pattern is route-based rather than `mailto:`-based, so `Demo buchen`, `Pilot anfragen`, and `Security-Unterlagen anfragen` should all map to the same real contact destination unless implementation discovers another real route.
**Alternatives considered**:
- `mailto:` links: technically possible, but not the prevailing public CTA pattern.
- Fake demo-booking widget: explicitly forbidden.
- New dedicated request form route: out of scope unless it already exists.
## Decision: Keep discovery contextual and global, but skip a new main-nav item
**Rationale**: The current main nav is already dense. The stronger discovery path is contextual: homepage teaser, platform-page teaser, review-pack page crosslink, MSP page crosslink, Mittelstand page crosslink, and a footer link for global reachability.
**Alternatives considered**:
- Main-nav item: globally visible, but too expensive for current IA density.
- Footer only: too weak for a commercially important page.
- Homepage/platform only: helpful, but weaker for audience-specific discovery.
## Decision: Reuse existing smoke helpers and route metadata inventory as the narrowest proof
**Rationale**: `apps/website/tests/smoke/public-routes.spec.ts` and `apps/website/tests/smoke/smoke-helpers.ts` already validate route rendering, metadata, placeholder-link bans, forbidden public claims, trust handoffs, and layout stability. Extending those tests is the narrowest proof for this feature.
**Alternatives considered**:
- Manual-only browser review: insufficient for metadata and claim-guardrail regressions.
- New unit tests for copy objects: more brittle than public-route smoke for this use case.
- Platform-side tests: wrong layer because `apps/platform` is explicitly out of scope.
## Decision: Use only existing website commands for validation
**Rationale**: `apps/website/package.json` currently exposes `build`, `test`, `test:smoke`, `format:check`, and `preview`. The plan must not invent a `check` script because `astro check` already runs inside `build`.
**Alternatives considered**:
- `pnpm --filter @tenantatlas/website check`: not present.
- Root script changes: out of scope and would break workspace contracts.
- Platform/Sail validation: wrong scope for a static website-only page.
## Decision: Treat static claim scans as implementation blockers
**Rationale**: The main risk in this feature is overclaiming rather than runtime breakage. Static scans over `apps/website/src`, `apps/website/public`, and optionally `apps/website/dist` should block placeholder links, internal architecture jargon, false legal or provider claims, fake self-service promises, and invented downloads.
**Alternatives considered**:
- Code review only: too easy to miss metadata or generated-output regressions.
- New custom linter: too heavy for one bounded website feature.
- Placeholder-link scan only: insufficient because the main risk is claim language.
## Decision: Reuse existing trust and review-story routes as adjacent handoffs
**Rationale**: `/trust`, `/en/trust`, `/platform/review-packs`, and their locale-aware discovery surfaces already exist today. They are the safest real destinations for trust, security, privacy, and review-story follow-up questions from the new page.
**Alternatives considered**:
- Omit trust and review crosslinks: safer, but weaker than the spec goal of connecting evaluation readiness to adjacent proof surfaces.
- Invent a security-pack download or procurement portal route: explicitly forbidden.
## Decision: Keep the docs evaluation checklist as documentation, not as the feature route
**Rationale**: The docs route `/guides/first-project-checklist/` already touches evaluation language, but it is a documentation asset rather than a buyer-facing public conversion page. The new route should sit in the marketing/site IA, not inside docs.
**Alternatives considered**:
- Reusing the docs route as the public destination: wrong tone, weaker CTA handling, and weaker buyer-path visibility.
- Linking only to docs from existing marketing pages: too indirect for the primary sales goal.