AINA Platform · Phase 1 Audit (report only) Copy · Voice · UX 2026-05-30

The Front Door Makes Promises the Product Breaks

A copy, voice, and UX audit of every surface a real AINA user reads, sees, and feels — landing, assessment chat, and the results screen where the journey stalls.

Ali Mehdi Mukadam · co-authored with Claude · ~6 min read · source: apps/web/src
The single idea

AINA's substance is good — a chat-first diagnostic, five named learner postures, a genuine founder manifesto. But the front door promises an experience the product doesn't deliver, the results screen ends on a placeholder ("your shape.") instead of a payoff, and the voice carries a recognisable AI cadence the copy never gets edited out of. This is not a rebuild. It is a coherence problem: pick one vocabulary, make the landing tell the truth, and finish the one screen where the user is most ready to commit.

What the landing promises

"No separate report page, no jarring redirect. After Q6, AINA hands back your score as a structured message in the same conversation."

StickyShellStage.astro:41

What the product does

A hard browser redirect to a standalone results page the moment question 6 is answered.

DiagnosticChat.tsx:266 — window.location.href = '/score/…'
01 — Findings

Seven things, ranked by how much they cost trust

F1 · The landing sells an experience the product doesn't deliver

The hero scroll-stage (Scene 02) promises the score arrives inside the chat, with no redirect. The real product redirects to a separate page the instant Q6 is answered (see the strip above). The most prominent demo on the homepage is a mockup of a flow that was never built. The stated ICP is skeptics — and a skeptic who spots the bait-and-switch is gone. This is the most important thing in the audit; it forces Decision D1.

F2 · The results page ends on a broken placeholder

The results headline reads "Here's what I see, your shape." — and the script that should personalise it literally writes the placeholder back in:

el.textContent = 'your shape.';   // score.astro:529

The data-name slot was built for a real value (a name, or the posture) but renders the literal words "your shape." It reads like a template with the blank still showing. Worse, the genuinely good posture copy that already exists — "Skeptic — ROI grounding, no hype", "Founder / Operator — systems-level leverage" — sits in a block that is hidden by default (score.astro:35) and only appears if a posture slug happens to arrive. The best copy is buried; the placeholder leads.

The moment the user is most ready to commit, the product hands them a placeholder, a generic demo, and a promise nothing fulfils.

F3 · The "next step" is generic and disconnected

The results page does have buttons, but the primary one is hardcoded for everyone — "Start Lesson 01 — Structure a Better Request" (score.astro:72) — the same lesson regardless of the posture just computed, pointing at a sandbox demo rather than an enrolled path. The footer then asserts "Path locked. 32 lessons · ~14 hours · 3 milestones" (score.astro:201): a confident, specific promise that nothing in the flow actually fulfils.

F4 · "Shape" is undefined jargon competing with three other models

The user is asked to track four overlapping concepts: a score (0–100), a band (Cautious Start → Native), a posture (five named types), and a shape — used in three places (quiz-data.ts:34, DiagnosticChat.tsx:536, score.astro:27) and defined in none. "Shape" is the vaguest and the only one with no data behind it.

F5 · Two divergent intake systems; one is orphaned

/assessment/quiz (orphan)
ComponentDiagnosticChatQuizChat
Questions67
Title"Discover Your AI Readiness""Which AI Learner Are You?"
Role options… manager / director / founder… manager / leader / founder
Linked from site?Yes, everywhereNo inbound link anywhere

Both compute the same five postures with different questions and role taxonomies. /quiz is reachable by URL but linked from nothing — a live-but-dead surface fragmenting the voice, the analytics, and the maintenance burden.

F6 · The voice has a recognisable AI cadence

Two patterns mark the copy as machine-written — and neither is "too many em-dashes" on its own. First, the "[statement] — [punchy fragment]" rhythm repeated relentlessly: five in one screen of the scroll-stage. Second, the triple-beat cadence — "Three minutes. Six honest questions. A real readiness score." / "AINA explains. You try. You get scored. You retry." Third, the "honest" tic — the word is load-bearing in at least five separate places.

The nuance that matters The fix is not "delete every em-dash." The About page uses them freely and still reads unmistakably human — because its rhythm varies and its specifics are real ("two tribes, one algorithm", "80% in the middle, quietly drowning"). The real fix is to break the repetitive cadence, cut the tics, and earn the punctuation. About is the voice north star; the rest of the site should sound like it.

F7 · CTA labels drift; stale surfaces remain

At least eight labels for what should be one or two canonical actions: "Start your AI Readiness Assessment", "Start Assessment", "Start your assessment", "Find your baseline", "Join the beta", "Notify me when it's live", "Re-take assessment", even "Start Lesson 01" vs "Start Lesson 1". Plus /index-pre-v6 (an old landing still reachable by URL), an About CTA that hops "Join the beta" → /waitlist → redirect → /assessment, and two different nav systems.

02 — Lenses

The same site, read six ways

First five seconds. The hero — "Stop watching AI courses. Start simulating your future." — is strong and ownable; "flight simulator" is the best asset in the copy. But the sub-line immediately stacks four nouns ("diagnostic, lesson, evaluator, all in one streaming conversation"). Lead with the feeling, defer the mechanism.

ICP fit. The About page defines the buyer sharply: the 80% in the middle, skeptical-but-willing, failed by too-technical and too-hype resources. The diagnostic voice often serves them ("we will not embarrass you"). But the product then leans on insider terms they won't parse — the five levels (MetaPrompting, Operator, Centaur, Builder, Orchestrator), "L1.2", "Tool Variant", "exposure ceiling". And the ICP/persona definitions live in the PKM wiki and docs/_archive, not in the repo.

UX & journey. The break is between "I got my score" and "I am actually learning" — the post-score routes are demos and a sample dashboard, with no real bridge into an enrolled path. The journey looks complete in the landing mockup and dead-ends in reality.

Conversion. The funnel breaks at both ends of the score moment: the landing over-promises score delivery (F1), the results page under-delivers the next step (F2, F3). Between a strong hero and a strong manifesto sits the one screen that loses the user.

Landing / /assessment /score "your shape." generic sandbox demo · sample dashboard no enrolled path
The journey looks complete on the homepage and dead-ends after the score: a placeholder hero, then demo surfaces with no real bridge to "I am learning."
03 — Preserve

What is NOT broken

The About manifesto is genuinely good writing and the clearest articulation of the ICP — make it the voice north star. The chat-first diagnostic is differentiated, polished, resumable. The posture system offers five specific, non-generic narratives — real substance, not horoscope copy. The "flight simulator" metaphor is ownable; keep it and stop stacking other metaphors on top. Theming and the mobile-native chat shape are solid foundations. The job is to edit and connect what exists, not replace it.

04 — Targets

Prioritised improvement areas

PriAreaMove
P0Landing truthResolve the score-delivery contradiction (D1).
P0Score heroReplace "your shape." with the computed posture + a real sentence; surface the narrative that already exists.
P0Next stepMake the post-score CTA posture-specific and real, or honestly frame it as preview. Back or cut "Path locked. 32 lessons…".
P1VocabularyOne primary model — recommend posture (label) + score (number); demote "shape".
P1IntakeConsolidate /assessment and /quiz; retire or redirect the orphan.
P1CTAs & stale surfacesOne canonical CTA label; retire /index-pre-v6; fix the About→beta→assessment hop.
P2Voice guideAuthor a repo-local guide (from About + PKM ICP): cadence, em-dash, "honest" tic, jargon ladder.
P2Copy sweepDe-AI-ify every user-facing surface against the guide.
P2ICP importAdapt personas/ICP into the marketing folder.
P3Journey & IAMap first-touch → enrolled; fix demo-vs-real boundary; unify the two navs.
05 — Structure

A repo-local marketing home

content/ currently holds only AGENTS.md — there is no home for copy, voice, or ICP, which is exactly how the placeholder and the contradiction crept in. Recommend creating content/marketing/ (markdown-first, CSV mirror for structured data):

content/marketing/
  voice-guide.md        # from About; the de-AI-ify rules
  icp-personas.md       # adapted from PKM wiki + docs/_archive
  messaging-pillars.md  # relevance · genuine skill · durability
  copy-deck/           # canonical per-surface copy
  journey-maps/        # first-touch → enrolled
  seo/               # AEO/GEO playbook adaptation

The payoff: engineers pull reviewed copy from the deck instead of inventing it inline. Source material (reference only, none canonical): PKM wiki AINA Personas & ICP and AINA Marketing & SEO, plus the practice-repo dumps in docs/_archive/.../marketing-positioning-and-research.

06 — Decisions

Four calls that shape the plan

  1. The score-delivery contradiction. (a) Build the score inline in the chat so the landing becomes true, or (b) change the landing copy to describe the redirect honestly. My lean: (a) — the inline reveal is the differentiated experience the homepage already sells.
  2. Vocabulary. Adopt posture + score as canonical and retire "shape"? Or keep "shape" as the consumer word and define it once?
  3. Intake. Make /assessment (6Q) canonical and retire /quiz (7Q)? Or merge the best of both?
  4. Marketing folder. content/marketing/ as proposed, or a different home?
07 — Phase 2 preview (not executed)

How the work slices for parallel agents

On your green light, the work cuts into vertical tracers, each through one surface — one Linear issue, one branch, one PR, per repo rules. No issues are created until you approve scope and answer D1–D4.

A
Score payoff
Real posture hero + posture-specific next step.
B
Landing truth
Resolve D1 in copy and/or flow.
C
Voice + sweep
Author the guide, then de-AI-ify per route.
D
IA cleanup
Retire orphans; unify CTAs and nav.
E
Marketing folder
Scaffold content/marketing; import ICP.
Where to start

Fix the one screen where the user is most ready to say yes — the results page — and make the homepage tell the truth about it. Everything else is editing.