“Which 360TFT product can help you?” router quiz
Why
The portfolio is One Engine, Many Doors, but a stranger arriving at any 360TFT surface has no way to find THEIR door. Kevin wants a family of compass-style lead magnets that give real value while routing people to the right product and lane (2026-07-25). This is the router: a short quiz funnel that asks who they are and what hurts, then sends them to the one product that fits, with an honest reason why.
The quiz shape is the proven house pattern: deterministic scoring, no runtime
LLM, instant result, share plumbing (coach-type, parent-type, fm-manager-type
on FGPT; coach-type on CoachPage; AI Readiness Scorecard on the hub).
Dedup-check run 2026-07-25: no existing cross-product router exists. The
closest sibling, the Agentic Pathway self-assessment
(FootballGPT_P1_2026-07-21-agentic-pathway-self-assessment-quiz.md), places
a coach on the pathway WITHIN FootballGPT; this PRD routes ACROSS products
and therefore cannot live on footballgpt.co (FGPT quiz surfaces must CTA
on-platform only, per
FootballGPT_P0_2026-07-15-quiz-share-ctas-off-platform.md).
Domain rule (Kevin, 2026-07-25): hub.360tft.com is NEVER a public-facing
URL. Public surfaces live on 360tft.com or 360tft.co.uk. 360tft.com
apex/www is Gumroad’s domain, so this lives on the 360tft.co.uk site (repo
360tft/360tft, GitHub Pages). The quiz is deterministic client-side JS, so
a static site hosts it fine; any capture posts to a hub API endpoint
(backend only, never a visitor-facing URL).
What
A public, anonymous quiz at 360tft.co.uk/which-product/:
- 6 to 10 multiple-choice questions: who are you (coach, referee, parent, FM gamer, club or academy role, coach educator), age group and context, the thing that hurts most right now, how they feel about AI.
- Deterministic routing to ONE primary recommendation plus at most one secondary. Routing targets are live, graduated surfaces only (Labs Graduation Playbook): FootballGPT (incl. FM Mode), RefereeGPT, CoachReflect, PlayerReflection, CoachPage, the relaunched Coach’s Compass (new-coach answers route here first), the book, free FCA community.
- Value-first result screen: the recommendation comes with one genuinely useful, situation-specific tip the visitor can use today even if they never click through (the compass standard, sell without selling).
- Result share card optional in v1; the router’s job is routing, not virality. If added, reuse the existing share plumbing.
Scope
In scope: quiz page in the 360tft/360tft site repo, question bank,
routing rubric, result copy per destination, analytics events per route
taken (so we learn which doors people actually need).
Out of scope: CruiseGPT and prsnce (different brands, not football surfaces); any Labs or non-graduated surface as a destination; any ACM enrollment or price copy; any Summit reference; any member or sales counts on results (never display low counts); runtime LLM calls.
Open questions (Gate 0)
- Should club or academy answers route to ClubOS interest capture, or hold until ClubOS is a graduated public surface? Default: hold, route those answers to FootballGPT plus a note that club tooling is coming.
- Email capture placement: none in v1, or optional post-result opt-in to the matching lane’s Substack? Default: optional post-result opt-in.
Expected Experience
- Job: a stranger answers a few honest questions in under 90 seconds and knows exactly which 360TFT product fits their situation, and why.
- Copy bar: British English, no emojis, no em dashes, helpful peer voice; the reason given for each routing must be true and specific, never salesy.
- Never-list: no off-platform CTAs beyond the routed 360TFT product, no fabricated proof, no low counts, no competitor names.
- Proof before Shipped: live 200, every routing path exercised once on production with the expected destination link present, Kevin review of result copy.
Note (mirrored into this repo 2026-07-25): this PRD is owned and tracked
canonically in 360tft-hub/docs/prd/, per the Hub_ prefix and the PRD
Naming & Per-Product Queues convention in that repo’s CLAUDE.md. It is
copied here only so this repo’s pre-commit Gate 1-3 PRD check has a local
artefact to point at, since the implementation (the quiz page) lives in this
repo (360tft/360tft) while the PRD process lives in the hub. Treat the hub
copy as the source of truth for status changes.
Honesty artifact
Stated assumptions (decided during implementation, task instructions override the PRD’s own defaults where the two conflict):
- Location and permalink:
360tft.co.uk/which-product/(directorywhich-product/index.html,layout: null, explicitpermalink:front matter), following the same static-page pattern ascoaches-compass/day-1/index.htmlon the siblingauto/coaches-compass-relaunchbranch (read viagit show, never checked out) and the existingfirst-agent.html/ai-coaching-mastery.htmlstandalone pages. - Destination set used exactly as given by the task, verified against this
repo’s own
_includes/footer.htmlandproducts.mdbefore use: FootballGPThttps://www.footballgpt.co, RefereeGPThttps://www.refereegpt.co, CoachReflecthttps://www.coachreflection.com, PlayReflecthttps://playreflect.com(confirmed live URL, notplayerreflection.com), the free Football Coaching Academy communityhttps://www.skool.com/coachingacademy, and the internal/coaches-compass/page (confirmed live viacoaches-compass.md’s Jekyllpermalink: prettyconfig, no explicitpermalink:override needed). - No email capture in v1: the task instructions explicitly say “No email capture in v1”, which overrides the hub PRD’s own default (“optional post-result opt-in”) for Open question #2 above. Following the task instructions as the binding scope for this build.
- 6 to 8 questions, branch-aware: implemented as one role question (5 options) plus role-conditional follow-ups. The richest branch (coach and club roles, the primary intended audience) sees 6 questions: role, pain, AI comfort, coaching experience level, age group, and current planning method. Shorter branches see fewer by design, per the task’s explicit permission (“a referee should not get coach questions, branch-aware is fine”): referee and FM gamer see 3 questions each (role, pain, AI comfort), parent sees 4 (adds age group, for their child’s age). None of the “what hurts most” pain options are literally lifted from the task’s example list where a role-specific nuance served the branch better (for example the parent branch’s second option, “knowing how to be useful without becoming a sideline nightmare”, and the FM gamer’s two options, neither literal example text was given for that role in the task instructions). All added options are true, specific to the role, and do not change which of the 6 allowed destinations is reachable.
- Deterministic routing is implemented as an explicit decision tree (a
switchon role, then on pain, with two boolean tie-breakers: whether the coach/club respondent is new to coaching, and their AI comfort level for the trailing note), not a weighted point-scoring system, per the task’s instruction to keep the logic “simple and readable”. The full routing table and 8 traced answer paths (script output) are in the PR body. - Added one pain option not named in the task’s literal pain list: “I don’t want another tool, I want other coaches to talk to” (coach and club branches only), routing to the free FCA community. This was necessary to make the FCA community destination reachable at all, since it is one of the fixed allowed destinations in the routing rubric but no combination of the task’s literally-specified pain options would ever reach it otherwise. When this option is chosen, the club-role “FootballGPT plus a note that club tooling is coming” rule is deliberately NOT applied, because forcing a FootballGPT recommendation onto someone who explicitly said they want people, not a tool, would not be an honest answer to what they asked. Flagging this interpretation for Kevin’s review since it is a judgement call beyond the literal rubric.
- The “comfort with AI” question drives a short trailing note under the
primary recommendation, but ONLY when the primary destination is
FootballGPT, RefereeGPT, or CoachReflect, the three destinations tagged
“AI Tool” on this site’s own
products.md. PlayReflect’s own listing never claims to be AI-based (tagged “Free Tool”, description does not mention AI), and the Coach’s Compass and the FCA community are not AI products at all (a rating-button diagnostic and a community respectively). Claiming “you just ask it your actual question in plain English” about any of those three would not be true and specific, so the note is omitted entirely for those three destinations rather than shown inaccurately. Caught and fixed during self-review before the PR was opened, not left as a known gap. - The age group / context question also drives a short, real content difference in the tip shown (a different closing sentence depending on young / 13-18 / adult, for both the coach branch and the parent branch), rather than being collected and discarded. This was a deliberate design choice so every question asked has a visible effect on the output the visitor actually gets.
- No share card built (PRD marks it optional for v1; task instructions do not mention one). No email capture form. No analytics event firing (see below).
Known gaps (explicitly out of scope for this PR):
- Analytics: checked whether any layout wires up the
google_analytics: G-L6CXTTSPV2value from_config.ymlinto an actual gtag.js loader script. It does not, anywhere in_includes/or_layouts/, on ANY page of this site (confirmed by grepping every include and layout forgoogletagmanagerandgtag(). This is a pre-existing, site-wide gap that predates this PR (the same finding is independently documented indocs/prd/Hub_P1_2026-07-25-coaches-compass-relaunch-new-url.md’s own Honesty artifact). Per the task’s explicit instruction, no loader was added (shared infra, out of scope). Instead, every outbound recommendation link (including the internal/coaches-compass/link) carriesutm_source=360tft_uk&utm_medium=quiz&utm_campaign=which_product, so routing is at least measurable from referrer and campaign data once Kevin wires up real analytics. - No local Jekyll build was run (no
ruby/bundle/jekyllon this machine). Verified instead with this repo’s ownnode scripts/manual-html-validator.js(the script scans the whole repo regardless of the path argument passed to it; zero warnings or errors attributed towhich-product/index.htmlin the full run), plus manual extraction and execution of the page’s routing JavaScript under Node to trace 8 distinct answer paths (see PR body), plus a full grep sweep for em dashes, emoji, spaced-hyphen dashes, and the banned-word list, all clean. - No dedicated ClubOS interest capture for club/academy answers (PRD’s Open question #1 default: hold, route to FootballGPT with a note that club-level tooling is being built). Implemented exactly as that default.
- Result copy has not yet had Kevin’s review pass (the PRD’s own “Proof before Shipped” bar requires this). This PR stops at Gate 3 (scope lock, diff posted) per the standard PRD execution SOP; Kevin reviews before merge.