{
  "version": 3,
  "sources": ["showcase-fixture.js"],
  "sourcesContent": ["/* THE PUBLIC SHOWCASE CRAWL — every string in this file is invented.\n *\n * This is the dataset behind /showcase/, the unauthenticated walkthrough of the\n * crawl hub, the report and the query explorer that anyone on the internet can\n * click through. It is the ONLY fixture allowed on the production host.\n *\n * ── Why it is not demo-fixture.js ────────────────────────────────────────────\n * demo-fixture.js is the INTERNAL design preview. It is deliberately realistic:\n * its client is our own brand and its competitors and cited domains are real\n * companies carrying invented figures. That is fine for reviewing a layout on a\n * preview host and is not publishable — attaching made-up share-of-voice numbers\n * to a named real company is a false-comparative-advertising problem, not a\n * privacy one. So the public surface gets its own data and the two files share\n * no code. Nothing imported here can reach the internal fixture, and the gate is\n * derived from location.pathname rather than a query flag, so there is no\n * argument to pass wrongly. See docs/showcase-interactive-demo-brief.md.\n *\n * ── The honesty rules this file is built under ──────────────────────────────\n *  · Cadenta, and every competitor named below, is invented. Each name was\n *    web-checked on 2026-08-15 against real companies; the ones that collided\n *    (Threadline, Milepost, Taskforge, Steerpoint, Plannery, Loomwork, Quorly,\n *    Pilotdesk) were discarded rather than reused. Re-check before adding a name.\n *  · Every domain is under .example, which RFC 2606 reserves permanently and\n *    which therefore can never become somebody's real site. This is also why a\n *    reader can tell at a glance that the citation table is illustrative.\n *  · The figures are illustrative and describe nobody. They are NOT an outcome\n *    claim, and no copy anywhere may present them as results a customer got.\n *  · The numbers are internally reconciled: the report's headline, the segment\n *    breakdowns and the explorer's per-question spread all derive from the same\n *    150 questions and 68% visible. Changing one means changing all of them —\n *    a showcase that contradicts itself teaches the wrong thing about our\n *    own product, which is the one thing this page cannot afford.\n *\n * Shaped like the real API payload, including the parts that are easy to fake\n * badly: personas and features are real objects, queries carry ids so the\n * action→question links resolve, and the competitor list matches the\n * share-of-voice vendors so the cross-links find something.\n */\n\n/** The showcase is served at /showcase/* by a rewrite in _redirects. Derived\n *  from the path, never from a query flag — same reasoning as DEV_MODE in\n *  config.js: there is no switch to forget to flip before a deploy, and the\n *  public dataset is unreachable from an /account/ URL. */\nexport const isShowcasePath = () => location.pathname.startsWith(\"/showcase\");\n\nconst PERSONAS = [\n  { id: \"p0\", role: \"Engineering manager\", name: \"Priya\", department: \"Engineering\", seniority: \"Manager\" },\n  { id: \"p1\", role: \"Operations lead\", name: \"Daniel\", department: \"Operations\", seniority: \"Director\", veto_power: true },\n  { id: \"p2\", role: \"Agency owner\", name: \"Mei\", department: \"Leadership\", seniority: \"Founder\" },\n  { id: \"p3\", role: \"IT and security reviewer\", name: \"Tomas\", department: \"IT\", seniority: \"Senior\", veto_power: true },\n  { id: \"p4\", role: \"Finance approver\", name: \"Alina\", department: \"Finance\", seniority: \"Controller\", veto_power: true },\n];\n\nconst COMPETITORS = [\n  { name: \"Kanbrix\", tier: \"Category leader\", positioning: \"The default board tool, sold on how fast a team can start using it.\" },\n  { name: \"Sprintwell\", tier: \"Direct\", positioning: \"Engineering-first planning with the deepest issue tracker in the category.\" },\n  { name: \"Northpath\", tier: \"Enterprise\", positioning: \"Consulting-led rollouts for regulated organisations that buy on governance.\" },\n  { name: \"Werkstream\", tier: \"Automation\", positioning: \"Workflow automation first, project views second.\" },\n  { name: \"Momentro\", tier: \"Lightweight\", positioning: \"Minimal, opinionated, priced per workspace rather than per seat.\" },\n  { name: \"Pathgrid\", tier: \"Adjacent\", positioning: \"Resource and capacity planning expanding into delivery tracking.\" },\n];\n\nconst FEATURES = [\n  { name: \"Integration coverage\", client_strength: \"weak\", buyer_language: \"Does it actually talk to the tools we already run?\" },\n  { name: \"Reporting and rollups\", client_strength: \"weak\", buyer_language: \"Can I get a portfolio view without exporting to a spreadsheet?\" },\n  { name: \"Migration path\", client_strength: \"weak\", buyer_language: \"How much work is it to move four years of history across?\" },\n  { name: \"Permissions model\", client_strength: \"moderate\", buyer_language: \"Can a client see their project and nothing else?\" },\n  { name: \"Security and compliance\", client_strength: \"moderate\", buyer_language: \"Are you SOC 2, and will your DPA survive our legal review?\" },\n  { name: \"Pricing transparency\", client_strength: \"strong\", buyer_language: \"What does this cost at forty people, without a sales call?\" },\n  { name: \"Automation rules\", client_strength: \"moderate\", buyer_language: \"Can it move the ticket itself when the build passes?\" },\n  { name: \"Onboarding effort\", client_strength: \"strong\", buyer_language: \"Will the team still be using it in three months?\" },\n];\n\nconst PAINS = [\n  { description: \"Work is spread across four tools and no one view is true\", severity: \"high\", buyer_language: \"Status lives in three places and none of them agree.\" },\n  { description: \"The last rollout was abandoned within a quarter\", severity: \"high\", buyer_language: \"We bought one of these already. Nobody opened it after March.\" },\n  { description: \"Reporting to leadership is still assembled by hand\", severity: \"medium\", buyer_language: \"I rebuild the same deck every Monday morning.\" },\n  { description: \"Per-seat pricing punishes bringing in contractors and clients\", severity: \"medium\", buyer_language: \"I'm not paying full price for someone who logs in twice a month.\" },\n  { description: \"Nobody can estimate the migration cost with a straight face\", severity: \"low\", buyer_language: \"What happens to four years of tickets?\" },\n];\n\nconst FINDINGS = [\n  { severity: \"high\", title: \"Pricing page renders its tiers client-side, so crawlers see an empty table\", owner: \"Engineering\", effort: \"1–3 days\", category: \"Rendering\",\n    what_we_found: \"The plan comparison is hydrated from a JSON call after load. In the raw HTML the table has headers and no rows.\",\n    why_it_matters: \"Price is the most-asked question in this category and the one buyers ask an assistant precisely because they do not want a sales call. Served as an empty table, the answer goes to whoever publishes a number.\",\n    recommended_fix: \"Server-render the tier table and let the interactive toggle enhance markup that is already in the HTML.\",\n    affected_scope: \"The pricing page and the two comparison pages that embed the same component\" },\n  { severity: \"high\", title: \"Documentation sits behind a login wall\", owner: \"Engineering\", effort: \"1 week\", category: \"Access\",\n    what_we_found: \"All 340 documentation pages redirect anonymous requests to the sign-in screen, including the integration directory.\",\n    why_it_matters: \"Docs are what an engine quotes when a buyer asks whether a tool supports something specific. Behind a login they are invisible, and competitors' equivalents are not.\",\n    recommended_fix: \"Open the reference and integration docs to anonymous readers and keep only account-specific pages gated.\" },\n  { severity: \"high\", title: \"The product page is published at two URLs with no canonical\", owner: \"Engineering\", effort: \"< 1 day\", category: \"Duplication\",\n    what_we_found: \"/product and /platform both return 200 with identical content and neither declares a canonical.\",\n    why_it_matters: \"Every citation and internal link splits across two addresses, so neither accumulates the authority one would.\",\n    recommended_fix: \"301 /platform to /product and add a self-referencing canonical.\" },\n  { severity: \"medium\", title: \"Placeholder copy is live on two commercial pages\", owner: \"Content\", effort: \"1–3 days\", category: \"Content quality\",\n    what_we_found: \"A lorem-ipsum block and a heading reading “TEMPLATE — replace before launch” are live on the manufacturing and nonprofit landing pages.\",\n    why_it_matters: \"Placeholder text is a strong low-quality signal, and it sits on pages built to be cited.\",\n    recommended_fix: \"Replace or unpublish both pages, then add a pre-publish check for placeholder strings.\" },\n  { severity: \"medium\", title: \"No integration page states what the integration actually does\", owner: \"Content\", effort: \"1 week\", category: \"Depth\",\n    what_we_found: \"The 62 integration pages carry a logo, a one-line blurb and a Connect button. None describe which objects sync, in which direction, or how often.\",\n    why_it_matters: \"“Does it sync two-way with our issue tracker” is a question engines answer from documentation. With nothing to lift, they answer it about somebody else.\",\n    recommended_fix: \"Give each integration page a sync-direction table, an object list and a stated refresh interval.\" },\n  { severity: \"low\", title: \"Two changelog entries share a title tag\", owner: \"Content\", effort: \"< 1 day\", category: \"Metadata\",\n    what_we_found: \"Two 2025 posts both title as “Product update”.\",\n    why_it_matters: \"Duplicate titles make it ambiguous which page answers which question.\",\n    recommended_fix: \"Retitle each to the change it actually describes.\" },\n];\n\n// Question stems per persona, so a buyer's set reads like that buyer wrote it.\nconst STEMS = {\n  p0: [\"Best project management tool for a distributed engineering team?\", \"Which PM tool has the best GitHub integration?\",\n    \"Project tracker that doesn't need a full-time admin?\", \"Cadenta vs Sprintwell for a 30-person engineering org?\"],\n  p1: [\"How do you roll up status across twelve projects?\", \"Project management tool with real portfolio reporting?\",\n    \"How long does it take to migrate off a legacy project tracker?\", \"Which PM tool do operations teams actually stick with?\"],\n  p2: [\"Project management software that lets clients see only their project?\", \"Best PM tool for an agency billing by retainer?\",\n    \"PM tool that doesn't charge full price for contractors?\", \"Is Cadenta good for client work?\"],\n  p3: [\"Is Cadenta SOC 2 compliant?\", \"Project management tool with SAML and SCIM on every plan?\",\n    \"Which PM vendors will sign a DPA without an enterprise contract?\", \"Where does Cadenta store customer data?\"],\n  p4: [\"What does Cadenta cost for 40 users?\", \"Project management pricing compared without a sales call?\",\n    \"Cheapest project management tool that still does reporting?\", \"Is per-seat or flat-rate PM pricing better value?\"],\n};\n\nconst QUERIES = (() => {\n  const out = [];\n  const keys = Object.keys(STEMS);\n  for (let i = 0; i < 150; i++) {\n    const pid = keys[i % keys.length];\n    const stems = STEMS[pid];\n    const base = stems[Math.floor(i / keys.length) % stems.length];\n    out.push({\n      id: `res_${String(i + 1).padStart(3, \"0\")}`,\n      persona_id: pid,\n      query: i < keys.length * stems.length ? base : `${base} (${i + 1})`,\n    });\n  }\n  return out;\n})();\n\nconst ACTIONS = [\n  { item_id: \"a1\", rank: 1, layer: \"L1\", priority_badge: \"critical\", owner_team: \"Engineering\",\n    title: \"Server-render the pricing table\",\n    gap_diagnosis: \"Buyers ask an assistant what this costs precisely so they can avoid a sales call, and the answer they get names Momentro, whose price is in the HTML.\",\n    affected_features: [\"Pricing transparency\"], target_urls: [\"/pricing\"],\n    query_ids: [\"res_005\", \"res_010\", \"res_015\", \"res_020\"],\n    // A full L2/L3 content brief in the numbered shape the knowledge graph\n    // ships, so the showcase exercises the whole brief renderer, not a stub.\n    brief_json: {\n      \"2_buyer_persona\": { role: \"Finance approver\", seniority: \"Controller\", journey_stage: \"active_evaluation\" },\n      \"3_platform_priority\": { primary: \"chatgpt\", secondary: \"perplexity\", tertiary: \"claude\" },\n      \"4_competitive_context\": {\n        who_wins_today: \"Momentro, on nothing more sophisticated than publishing a number in server-rendered HTML.\",\n        why_they_win: \"Their per-workspace price is a static string on the page, so an engine has something concrete to quote and a reason to quote it.\",\n      },\n      \"5_required_claims\": [\n        \"State the price per seat per month at each tier, in the HTML.\",\n        \"State what changes at the tier boundary, not only what it costs.\",\n        \"Say plainly which capabilities require a sales conversation.\",\n      ],\n      \"6_format_specification\": {\n        atomic_formats: [\"comparison_table\", \"direct_answer_paragraph\", \"faq\"],\n        length_guidance: \"The answer in the first 60 words, then the table.\",\n      },\n      \"7_implementation\": {\n        on_domain_actions: [\n          \"Server-render the tier table and keep the monthly/annual toggle as progressive enhancement.\",\n          \"Answer “what does this cost for 40 people” in the opening paragraph. Engines quote the opening, not the table.\",\n          \"Add an FAQ block covering contractor seats, the annual discount and what the free tier excludes.\",\n        ],\n        off_domain_actions: [\"Correct the outdated Cadenta pricing on the two roundup pages that still list the 2025 tiers.\"],\n        defensive_note: \"Publishing the number is the whole action. A page that says “contact us for pricing” cannot win a pricing query, and this category's buyers ask about price more than anything else.\",\n      },\n      recommended_actions: [\n        \"Server-render the tier table so the figures exist without JavaScript.\",\n        \"Answer the 40-seat question in the first paragraph.\",\n        \"Add an FAQ covering contractor seats and the annual discount.\",\n      ],\n    } },\n  { item_id: \"a2\", rank: 2, layer: \"L1\", priority_badge: \"high\", owner_team: \"Engineering\",\n    title: \"Open the reference and integration documentation to anonymous readers\",\n    gap_diagnosis: \"Your largest invisible cluster, 31 questions, is capability questions answered from docs. All 340 doc pages redirect to sign-in.\",\n    affected_features: [\"Integration coverage\"], target_urls: [\"/docs\"], query_ids: [\"res_002\", \"res_007\", \"res_012\"],\n    brief_json: { recommended_actions: [\n      \"Serve the reference and integration directory to anonymous requests and gate only account-specific pages.\",\n      \"Add a sync-direction table to each integration page so the capability answer is liftable.\",\n    ] } },\n  { item_id: \"a3\", rank: 3, layer: \"L2\", priority_badge: \"high\", owner_team: \"Content\",\n    title: \"Publish a migration guide with a stated timeline\",\n    gap_diagnosis: \"Operations buyers ask how long a move takes before they ask anything else, and Northpath owns that answer with a published 6-week plan.\",\n    affected_features: [\"Migration path\"], target_urls: [\"/migrate\"],\n    query_ids: [\"res_003\", \"res_008\", \"res_013\"] },\n  { item_id: \"a4\", rank: 4, layer: \"L2\", priority_badge: \"medium\", owner_team: \"PR\",\n    title: \"Get corrected into the category roundups\",\n    gap_diagnosis: \"Perplexity draws 40% of its answers in this category from four roundup pages. Two omit Cadenta and two list your 2025 pricing.\",\n    affected_features: [\"Pricing transparency\"], query_ids: [\"res_001\", \"res_006\"] },\n  { item_id: \"a5\", rank: 5, layer: \"L1\", priority_badge: \"medium\", owner_team: \"Engineering\",\n    title: \"Add FAQ schema to the security page\",\n    gap_diagnosis: { mechanism: \"Your SOC 2 and data-residency answers sit in prose an engine has to infer structure from.\",\n      root_cause: \"The page was written for a security questionnaire, not as an answerable document.\",\n      why_this_item: \"Schema is the cheapest way to make an answer liftable. It changes nothing a human sees.\" },\n    target_urls: [\"/security\"], affected_features: [\"Security and compliance\"], query_ids: [\"res_014\"],\n    // The L1 technical shape, a different brief handled on its own terms.\n    brief_json: {\n      brief_type: \"l1_technical\",\n      what_we_found: \"The security page answers eleven compliance questions in body copy with no FAQPage markup.\",\n      why_it_matters: \"Engines lift structured answers far more readily than prose, and the IT reviewer persona is the one most likely to be researched by assistant rather than by call.\",\n      implementation_steps: [\n        \"Add FAQPage JSON-LD with one entity per compliance question.\",\n        \"Mirror the visible copy exactly. Schema that disagrees with the page is a trust penalty.\",\n        \"Validate with the Rich Results test before publishing.\",\n      ],\n      verification_criteria: [\"Rich Results test passes with 11 questions detected.\", \"Visible copy and schema answers match word for word.\"],\n      downstream_unlocks: [\"Makes the security page quotable as a source for the enterprise comparison queries.\"],\n    } },\n  { item_id: \"a6\", rank: 6, layer: \"L3\", priority_badge: \"low\", owner_team: \"PR\",\n    title: \"Build a presence in the practitioner community threads\",\n    gap_diagnosis: \"Community discussion is the second most-cited source type in this category and you appear in none of it.\",\n    query_ids: [\"res_004\", \"res_009\"] },\n];\n\nexport function showcaseRes({ operator = false, foundationOnly = false } = {}) {\n  /* foundationOnly renders the FOUNDATION REVIEW edition of the same invented\n     company: the report page derives its edition from the publish stamps, so\n     stripping every post-foundation stamp is all it takes — same rule the real\n     document follows (see rebuildSections() in account/report/index.html).\n     This is the sample behind /showcase/foundation-review: the artifact a\n     self-serve customer receives first, so the one the nav leads with. */\n  const res = {\n    audit: {\n      id: \"showcase\", title: \"Cadenta\", series_id: \"s1\",\n      foundation_published_at: \"2026-07-24\", foundation_status: \"approved\", foundation_approved_at: \"2026-07-24\",\n      query_explorer_published_at: \"2026-07-24\", numbers_published_at: \"2026-07-26\",\n      query_results_published_at: \"2026-07-26\",\n      /* Real files, pre-rendered from these very pages by\n         genAI/scripts/render_report_pdf.py and committed as static assets at\n         the repo root (deploy.sh excludes docs/). The report header's Download\n         button and the crawl hub's export panel appear only when these are\n         set, and a public reader deciding whether to buy needs to see that\n         the deliverable IS a downloadable file, not just a web page.\n         Re-render both whenever this fixture's numbers change. */\n      report_pdf_url: \"/cadenta-visibility-report-sample.pdf\",\n      answers_pdf_url: \"/cadenta-answers-sample.pdf\",\n      foundation: {\n        client_url: \"https://cadenta.example\",\n        personas: PERSONAS, competitors: COMPETITORS, features: FEATURES, pain_points: PAINS, findings: FINDINGS,\n        counts: { high: 3, medium: 2, low: 1 },\n        metrics: { pages_analyzed: 48, coverage: {\n          discovery_method: \"sitemap_and_nav\", sitemap_total_urls: 131,\n          child_sitemaps_total: 4, child_sitemaps_fetched: 4, discovery_truncated: false,\n          discoverable_pages: 93, excluded_pages: 38, pages_selected: 48, pages_analyzed: 48,\n          page_budget: 50, capped: true, recency_guaranteed: true, recent_pages_included: 10,\n          selection_note: \"Archive, tag and legal pages excluded; the page budget bound selection, with the ten most recently updated pages guaranteed a slot.\",\n        }, gauges: [\n          { label: \"Content freshness\", value: 0.39 },\n          { label: \"Content depth\", value: 0.71 },\n          { label: \"Heading structure\", value: 0.57 },\n          { label: \"Answer extractability\", value: 0.48 },\n        ] },\n        crawlers: [\n          { name: \"GPTBot\", status: \"allowed\" }, { name: \"ClaudeBot\", status: \"allowed\" },\n          { name: \"PerplexityBot\", status: \"allowed\" }, { name: \"Google-Extended\", status: \"allowed\" },\n          { name: \"CCBot\", status: \"blocked\" },\n        ],\n      },\n      query_explorer: { personas: PERSONAS, queries: QUERIES, engines: [\"ChatGPT\", \"Claude\", \"Gemini\", \"Perplexity\"] },\n      numbers: {\n        engines: [\"ChatGPT\", \"Claude\", \"Gemini\", \"Perplexity\"], query_count: 150,\n        headline: { visibility_pct: 68, visible: 102, query_count: 150, sov_rank: 3, invisible: 48,\n          win_rate_v1: {\n            rate_pct: 44, ci_low_pct: 39, ci_high_pct: 49, n_queries: 150,\n            // Per-engine numbers live HERE, keyed by engine. There is no\n            // top-level by_engine array in the payload.\n            per_platform: {\n              chatgpt: { won: 30, scored: 150, graded_pct: 38 },\n              claude: { won: 43, scored: 150, graded_pct: 52 },\n              gemini: { won: 38, scored: 150, graded_pct: 45 },\n              perplexity: { won: 33, scored: 150, graded_pct: 41 },\n            },\n          } },\n        tldr: [\n          \"Cadenta appears in 68% of buyer answers but wins the recommendation in 44% of them. Visibility is not the bottleneck, preference is.\",\n          \"Every capability question goes to a competitor. That single cluster accounts for 22 of the 48 questions Cadenta is absent from, and all of it is answered from documentation that sits behind a login.\",\n          \"Four roundup pages supply a third of every answer in this category. Two omit Cadenta and two list last year's pricing.\",\n        ],\n        core_insight: {\n          headline: \"Known, but not quotable.\",\n          body: \"Engines can find Cadenta and describe it accurately. When a buyer asks something specific, about price, about whether an integration syncs both ways, about SOC 2, they reach for the vendor whose answer is sitting in readable HTML.\",\n        },\n        exec_summary: \"Cadenta is visible across two-thirds of the buyer questions in its category and holds third place in share of voice. The gap is structural rather than editorial: the pages that would answer a buyer's specific question are either rendered client-side, gated behind a login, or published without the detail an engine can lift. Answers that require a concrete fact therefore pick a competitor who publishes one. The product-market fit signal is real. When Cadenta appears it wins 44% of contests outright. The problem is reach, not resonance. At the early funnel, where buyers identify their problem and build a requirements list, Cadenta is invisible in 63% of queries. Buyers who never encounter it at discovery have no reason to shortlist it later. Two causes account for most of that. First, the five editorial posts carrying informational coverage all date from 2025, outside the freshness window engines weight most heavily. Second, six weak or absent feature areas leave 60 queries with no addressable page on the site at all.\",\n        dichotomy: {\n          headline: \"Strong when seen, absent when it counts.\",\n          gap: \"A 44% win rate paired with 32% early-funnel visibility\",\n          body: \"The two numbers point in opposite directions and only one of them is a reach problem. Fixing resonance would be expensive and unnecessary. Fixing reach is a rendering and documentation exercise.\",\n        },\n        section_narratives: {\n          visibility: {\n            synthesis: \"Visibility is not evenly distributed. It collapses at exactly the stages where a buyer decides who to consider.\",\n            data: \"Across 150 queries Cadenta appears in 68%, but that falls to 32% on problem-identification queries and 41% on requirements-building queries.\",\n          },\n          competitive: {\n            synthesis: \"Cadenta beats the tools it is compared to and loses to the ones it is never compared with.\",\n            data: \"Head to head the record is 84–81, winning against Momentro and Pathgrid and losing to Kanbrix and Sprintwell, who hold the top two share-of-voice positions.\",\n          },\n          citations: {\n            synthesis: \"The engines already trust a small set of third-party sources in this category, and Cadenta is missing from most of them.\",\n            data: \"Three roundup and review sources supply 34% of all citations. Cadenta's own domain ranks seventh with 67 citations across 14 pages.\",\n          },\n        },\n        // Segment breakdowns, the shape _seg() writes in deliver_to_account.py,\n        // including the vis_tone the pipeline decides.\n        by_buying_job: [\n          { name: \"Problem identification\", vis_pct: 32, win_pct: 21, visible: 10, total: 31, vis_tone: \"bad\", win_tone: \"bad\" },\n          { name: \"Solution exploration\", vis_pct: 38, win_pct: 26, visible: 12, total: 32, vis_tone: \"bad\", win_tone: \"warn\" },\n          { name: \"Requirements building\", vis_pct: 41, win_pct: 30, visible: 13, total: 31, vis_tone: \"warn\", win_tone: \"warn\" },\n          { name: \"Shortlisting\", vis_pct: 78, win_pct: 52, visible: 23, total: 29, vis_tone: \"good\", win_tone: \"good\" },\n          { name: \"Validation\", vis_pct: 84, win_pct: 61, visible: 23, total: 27, vis_tone: \"good\", win_tone: \"good\" },\n        ],\n        by_persona: [\n          { name: \"IT and security reviewer\", vis_pct: 29, win_pct: 18, visible: 9, total: 30, vis_tone: \"bad\", win_tone: \"bad\", high_intent: true },\n          { name: \"Operations lead\", vis_pct: 46, win_pct: 33, visible: 14, total: 30, vis_tone: \"warn\", win_tone: \"warn\", high_intent: true },\n          { name: \"Finance approver\", vis_pct: 58, win_pct: 39, visible: 17, total: 30, vis_tone: \"warn\", win_tone: \"warn\" },\n          { name: \"Engineering manager\", vis_pct: 81, win_pct: 55, visible: 24, total: 30, vis_tone: \"good\", win_tone: \"good\" },\n          { name: \"Agency owner\", vis_pct: 88, win_pct: 64, visible: 26, total: 30, vis_tone: \"good\", win_tone: \"good\" },\n        ],\n        by_pain_point: [\n          { name: \"Work spread across four tools with no true view\", vis_pct: 24, visible: 6, total: 25, vis_tone: \"bad\" },\n          { name: \"The last rollout was abandoned within a quarter\", vis_pct: 35, visible: 9, total: 26, vis_tone: \"bad\" },\n          { name: \"Reporting to leadership is assembled by hand\", vis_pct: 52, visible: 14, total: 27, vis_tone: \"warn\" },\n          { name: \"Per-seat pricing punishes contractors and clients\", vis_pct: 71, visible: 20, total: 28, vis_tone: \"good\" },\n          { name: \"Nobody can estimate the migration cost\", vis_pct: 46, visible: 6, total: 13, vis_tone: \"warn\", small_sample: true },\n        ],\n        by_feature: [\n          { name: \"Integration coverage\", vis_pct: 21, visible: 5, total: 24, vis_tone: \"bad\" },\n          { name: \"Reporting and rollups\", vis_pct: 33, visible: 9, total: 27, vis_tone: \"bad\" },\n          { name: \"Migration path\", vis_pct: 37, visible: 10, total: 27, vis_tone: \"bad\" },\n          { name: \"Security and compliance\", vis_pct: 61, visible: 16, total: 26, vis_tone: \"warn\" },\n          { name: \"Automation rules\", vis_pct: 65, visible: 17, total: 26, vis_tone: \"warn\" },\n          { name: \"Pricing transparency\", vis_pct: 89, visible: 24, total: 27, vis_tone: \"good\" },\n        ],\n        funnel: {\n          early: [{ stage: \"Problem identification\", pct: 32 }, { stage: \"Solution exploration\", pct: 38 }, { stage: \"Requirements building\", pct: 41 }],\n          late: [{ stage: \"Shortlisting\", pct: 78 }, { stage: \"Validation\", pct: 84 }],\n          early_invisibility_rate: 62.8, early_total: 94,\n        },\n        high_intent: { vis_pct: 61, win_pct: 44, visible: 35, total: 57 },\n        // Non-vendor entities that win answers. In this category the spreadsheet\n        // is a genuine competitor and the roundup sites answer in their own right.\n        surprise_competitors: [\n          { name: \"Spreadsheets\", mentions: 199, pct: 16.2 },\n          { name: \"Stackpicks (roundup)\", mentions: 138, pct: 11.2 },\n          { name: \"Build it in-house\", mentions: 45, pct: 3.6 },\n        ],\n        share_of_voice: [\n          { vendor: \"Kanbrix\", pct: 24, mentions: 289 }, { vendor: \"Sprintwell\", pct: 21, mentions: 251 },\n          { vendor: \"Cadenta\", pct: 18, mentions: 215, focal: true }, { vendor: \"Northpath\", pct: 14, mentions: 169 },\n          { vendor: \"Werkstream\", pct: 12, mentions: 139 }, { vendor: \"Momentro\", pct: 11, mentions: 129 },\n        ],\n        // FIELD NAMES ARE THE DELIVERY CONTRACT'S, not the renderer's. genAI\n        // scripts/deliver_to_account.py writes head_to_head.vs as\n        // { competitor, wins, losses, ties, co_appearances }. A fixture using\n        // `vendor`/`shared` makes a broken table look fine in preview and render\n        // a column of em-dashes on a real crawl. Check the delivery script\n        // before adding anything here.\n        head_to_head: { record: \"84–81\", wins: 84, losses: 81, vs: [\n          { competitor: \"Momentro\", wins: 24, losses: 8, ties: 2, co_appearances: 32 },\n          { competitor: \"Pathgrid\", wins: 20, losses: 11, ties: 0, co_appearances: 31 },\n          { competitor: \"Werkstream\", wins: 18, losses: 13, ties: 1, co_appearances: 31 },\n          { competitor: \"Sprintwell\", wins: 12, losses: 22, ties: 0, co_appearances: 34 },\n          { competitor: \"Kanbrix\", wins: 10, losses: 27, ties: 1, co_appearances: 36 },\n        ] },\n        citations: {\n          client_domain: \"cadenta.example\", client_instances: 67, domain_rank: 7, client_unique_pages: 14,\n          competitor_citations: [\n            { vendor: \"Kanbrix\", citations: 93, domains: [\"stackpicks.example\", \"buildersforum.example\", \"opsdigest.example\"] },\n            { vendor: \"Sprintwell\", citations: 83, domains: [\"stackpicks.example\", \"workflowwiki.example\"] },\n            { vendor: \"Northpath\", citations: 52, domains: [\"opsdigest.example\", \"pmreview.example\"] },\n          ],\n          third_party_gap_count: 5,\n          third_party_gaps: [\n            { domain: \"stackpicks.example\", citations: 199 }, { domain: \"buildersforum.example\", citations: 169 },\n            { domain: \"opsdigest.example\", citations: 139 }, { domain: \"workflowwiki.example\", citations: 123 },\n            { domain: \"pmreview.example\", citations: 62 },\n          ],\n          top_domains: [\n            { domain: \"stackpicks.example\", citations: 199, rank: 1 }, { domain: \"buildersforum.example\", citations: 169, rank: 2 },\n            { domain: \"opsdigest.example\", citations: 139, rank: 3 }, { domain: \"workflowwiki.example\", citations: 123, rank: 4 },\n            { domain: \"kanbrix.example\", citations: 93, rank: 5 }, { domain: \"sprintwell.example\", citations: 83, rank: 6 },\n            { domain: \"cadenta.example\", citations: 67, rank: 7, is_client: true },\n          ],\n        },\n        // `winners` is WHO wins the questions Cadenta is absent from. The payload\n        // carries no list of those questions.\n        invisible_winners: {\n          total_invisible: 48,\n          breakdown: { competitor_win: 31, no_clear_winner: 13, no_vendor: 4 },\n          winners: [\n            { vendor: \"Kanbrix\", wins: 10, pct: 23 }, { vendor: \"Sprintwell\", wins: 8, pct: 18 },\n            { vendor: \"Northpath\", wins: 5, pct: 11 }, { vendor: \"Werkstream\", wins: 3, pct: 7 },\n            { vendor: \"Momentro\", wins: 1, pct: 3 },\n          ],\n        },\n        rec_counts: { total: 6, l1: 2, l2: 2, l3: 2 },\n      },\n    },\n    unlocked: true, is_owner: true, is_operator: operator,\n    action_counts: { l1: 2, l2: 2, l3: 2, total: 6 },\n    action_items: ACTIONS,\n    series_cycles: [\n      { audit_id: \"showcase1\", ordinal: 1, is_current: false, status: \"complete\", headline: { visibility_pct: 41 } },\n      { audit_id: \"showcase2\", ordinal: 2, is_current: false, status: \"complete\", headline: { visibility_pct: 62 } },\n      { audit_id: \"showcase\", ordinal: 3, is_current: true, status: \"complete\", headline: { visibility_pct: 68 } },\n    ],\n    // Invented people at an invented company. The report's sharing controls need\n    // a populated team to draw, and these are the only names on this surface that\n    // could be mistaken for real ones, so they are deliberately generic.\n    team: { owner_email: \"priya@cadenta.example\", viewers: [{ email: \"daniel@cadenta.example\", pending: false }, { email: \"alina@cadenta.example\", pending: true }] },\n  };\n  if (foundationOnly) {\n    Object.assign(res.audit, {\n      query_explorer_published_at: null, numbers_published_at: null,\n      query_results_published_at: null, answers_pdf_url: null,\n      // The edition is a different document, so it gets its own file — the\n      // report PDF wearing a foundation-review filename is the wrong file\n      // wearing the wrong name (same rule as the report header's button).\n      report_pdf_url: \"/cadenta-foundation-review-sample.pdf\",\n    });\n    // A foundation that hasn't been crawled yet has no visibility history.\n    res.series_cycles = [];\n    res.action_items = [];\n    res.action_counts = { l1: 0, l2: 0, l3: 0, total: 0 };\n  }\n  return res;\n}\n\n/* The crawl's ANSWERS, the shape of `audits.query_results_payload`, which is\n * what the query explorer renders once a crawl has run.\n *\n * Deliberately deterministic: the showcase has to look the same on every reload\n * and for every visitor, so nothing here is random. The spread is arranged to\n * exercise every state the explorer can draw: a win, a plain visible, an absent\n * with a named competitor as top pick, an answer that cited nothing, and a\n * citation with no URL (which only an operator ever sees flagged).\n *\n * The figures agree with showcaseRes()'s numbers payload: 150 questions, 68%\n * visible. A showcase where the report says 68% and the explorer says something\n * else teaches the wrong thing about our own product.\n */\nconst ENGINES = [\"ChatGPT\", \"Claude\", \"Gemini\", \"Perplexity\"];\nconst RIVALS = [\"Kanbrix\", \"Sprintwell\", \"Northpath\", \"Werkstream\"];\nconst SOURCES = [\n  { url: \"https://buildersforum.example/t/pm-tool-that-survives-a-year\", domain: \"buildersforum.example\", title: \"The PM tool your team is still using a year later\" },\n  { url: \"https://stackpicks.example/best-project-management-software\", domain: \"stackpicks.example\", title: \"Best project management software, compared\" },\n  { url: \"https://opsdigest.example/portfolio-reporting-tools\", domain: \"opsdigest.example\", title: \"Portfolio reporting without the spreadsheet\" },\n  { url: \"https://cadenta.example/pricing\", domain: \"cadenta.example\", title: \"Cadenta pricing\" },\n  { url: \"https://workflowwiki.example/migration-checklist\", domain: \"workflowwiki.example\", title: \"Migrating a project tracker: a checklist\" },\n];\n\n/* Recovered answer structure. Type-complete on purpose: a crawl delivers\n   paragraph, heading, list (with per-item sources), table and math blocks, and\n   the explorer renders each differently. A fixture missing a type previews a\n   renderer we never see fail. Written for this fictional category, not lifted\n   from any real answer. */\nconst BLOCKS = {\n  \"chatgpt\": [\n    { type: \"paragraph\", text: \"Usually this isn’t a tooling problem so much as a rollout problem. The tools in this category are more alike than their marketing suggests, and the ones that fail tend to fail for the same handful of reasons:\" },\n    { type: \"list\", ordered: false, items: [\n      { text: \"No single owner. If nobody is accountable for keeping the workspace tidy, it drifts within about a quarter and people quietly return to chat and spreadsheets.\", level: 0 },\n      { text: \"Migrated everything. Teams that move four years of closed tickets spend weeks on it and start inside a cluttered workspace nobody trusts.\", level: 0 },\n      { text: \"Per-seat pricing that punishes collaboration. If contractors and clients cost full price, they get left out, and the tool stops reflecting the real work.\", level: 0 },\n      { text: \"Reporting that still needs a human. If leadership updates are rebuilt by hand each week, the tool is not yet doing the job it was bought for.\", level: 0 },\n    ] },\n    { type: \"heading\", level: 2, text: \"How the main options differ\" },\n    { type: \"table\", headers: [\"Tool\", \"Strongest for\", \"Watch out for\"], rows: [\n      [\"Kanbrix\", \"Getting a team started in an afternoon\", \"Rollups across many projects stay shallow\"],\n      [\"Sprintwell\", \"Engineering orgs that live in the issue tracker\", \"Heavy for teams that are not shipping software\"],\n      [\"Cadenta\", \"Client-visible projects and predictable pricing\", \"Thinner published documentation than the others\"],\n      [\"Northpath\", \"Regulated organisations buying on governance\", \"Sold through a rollout engagement, not self-serve\"],\n      [\"Momentro\", \"Small teams who want one opinionated way to work\", \"Little room to change how it works\"],\n    ], col_count: 3 },\n    { type: \"paragraph\", text: \"If you tell me team size, whether clients need access, and what you are moving off, I can narrow this to two.\" },\n  ],\n  \"claude\": [\n    { type: \"paragraph\", text: \"For a distributed engineering team the honest answer is that several of these would work, and the deciding factor is usually integration depth rather than the board itself.\" },\n    { type: \"heading\", level: 2, text: \"What actually separates them\" },\n    { type: \"list\", ordered: true, items: [\n      { text: \"Two-way sync with your issue tracker. One-way sync looks fine in a demo and creates two sources of truth by week three.\", level: 0,\n        sources: [{ label: \"workflowwiki\", url: \"https://workflowwiki.example/two-way-sync\" }] },\n      { text: \"Whether permissions can scope a client to a single project without an enterprise plan.\", level: 0 },\n      { text: \"Whether portfolio reporting exists natively or is assembled by export.\", level: 0,\n        sources: [{ label: \"opsdigest\", url: \"https://opsdigest.example/portfolio-reporting-tools\" }] },\n    ] },\n    { type: \"paragraph\", text: \"Sprintwell has the deepest tracker integration of the group. Cadenta is the more straightforward option if client visibility and predictable pricing matter more than issue-tracker depth, though its documentation is harder to evaluate from the outside because much of it requires an account.\" },\n  ],\n  \"gemini\": [\n    { type: \"paragraph\", text: \"Here is how the category breaks down for a team of roughly thirty.\" },\n    { type: \"heading\", level: 2, text: \"Rough cost at 30 seats\" },\n    { type: \"math\", tex: \"Seats \\\\times Monthly\\\\ rate \\\\times 12 = Annual\\\\ commitment\" },\n    { type: \"paragraph\", text: \"Published rates put Momentro lowest at a flat workspace price, with Kanbrix and Sprintwell in a similar per-seat band. Cadenta's public pricing page did not return tier figures when checked, so compare it directly before budgeting.\" },\n    { type: \"list\", ordered: false, items: [\n      { text: \"Momentro: flat per workspace, cheapest at this size, least configurable.\", level: 0 },\n      { text: \"Kanbrix: per seat, mid-band, the most widely adopted.\", level: 0 },\n      { text: \"Sprintwell: per seat, mid-band, strongest for engineering.\", level: 0 },\n      { text: \"Northpath: quoted per engagement rather than published.\", level: 0 },\n    ] },\n  ],\n  \"perplexity\": [\n    { type: \"paragraph\", text: \"Most comparisons in this category converge on the same three or four names, with the choice coming down to whether you need client access and how much reporting you expect out of the box.\" },\n    { type: \"list\", ordered: false, items: [\n      { text: \"Kanbrix is the most frequently recommended starting point, largely on adoption speed.\", level: 0,\n        sources: [{ label: \"stackpicks\", url: \"https://stackpicks.example/best-project-management-software\" }] },\n      { text: \"Sprintwell is the usual pick where the team is primarily shipping software.\", level: 0,\n        sources: [{ label: \"buildersforum +1\", url: \"https://buildersforum.example/t/pm-tool-that-survives-a-year\" }] },\n      { text: \"Cadenta comes up for agency and client-facing work, where per-project permissions matter.\", level: 0 },\n    ] },\n    { type: \"paragraph\", text: \"Worth noting that a large share of teams in these discussions report going back to a spreadsheet, usually after a rollout with no clear owner.\" },\n  ],\n};\n\nexport function showcaseQueryResults() {\n  const byId = Object.fromEntries(PERSONAS.map((p) => [p.id, p]));\n  const N = QUERIES.length, ABSENT = 48;   // 150 − 48 = 102 visible = the 68% showcaseRes() reports\n  /* Which questions Cadenta is absent from ENTIRELY. Spread evenly across the\n     set rather than clumped at one end, so scrolling the unfiltered list looks\n     like a real crawl. Bresenham, not a modulo band: it lands on exactly 69 and\n     stays deterministic, and a showcase whose numbers drift on reload is worse\n     than no showcase. */\n  const absentAt = new Set();\n  for (let i = 0, acc = 0; i < N; i++) {\n    const next = Math.floor(((i + 1) * ABSENT) / N);\n    if (next > acc) { absentAt.add(i); acc = next; }\n  }\n  const queries = QUERIES.map((q, i) => {\n    const persona = byId[q.persona_id];\n    const gone = absentAt.has(i);\n    const responses = ENGINES.map((label, e) => {\n      const slot = (i * 4 + e) % 10;                 // 0–9, fixed per answer\n      // Inside a question Cadenta is visible on, one engine ALWAYS sees it and\n      // the rest vary, which is what makes \"Visible in 2 of 4\" the common card\n      // and gives the per-engine filter something to actually cut.\n      const visible = !gone && (e === i % 4 || (i + e) % 3 !== 0);\n      const wins = visible && (i + e) % 5 === 0;\n      const rival = RIVALS[(i + e) % RIVALS.length];\n      const nCites = slot === 9 ? 0 : (slot % 3) + 1;\n      const cites = SOURCES.slice(0, nCites).map((c) => ({ ...c }));\n      // One citation in ten comes back with no URL at all. Customers never see\n      // it; the operator's integrity layer flags it, and the fixture is the only\n      // way to preview that flag without a broken crawl.\n      if (slot === 5 && cites.length) cites.push({ domain: \"aggregator.example\", title: \"Roundup (no link captured)\" });\n      // Blocks land on the FIRST answer per engine only: a crawl delivers them\n      // for every answer, but the showcase must still exercise the text-derived\n      // fallback that every pre-archive answer uses.\n      const blocks = i === 0 ? (BLOCKS[label.toLowerCase()] || []) : [];\n      return {\n        blocks,\n        platform: label.toLowerCase(),\n        response: wins\n          ? `Cadenta is the one I'd start with here. Its per-project permissions let a client see their own work and nothing else, and its pricing is published rather than quoted. ${rival} is the usual alternative and is stronger on reporting depth, but it charges full price for every collaborator.`\n          : visible\n            ? `A few options come up here. ${rival} is the most widely recommended, mostly on how quickly a team can start using it. Cadenta is also worth a look, particularly if clients need scoped access, though its documentation is harder to evaluate from outside because much of it requires an account.\\n\\nIf budget is the constraint, a flat-rate workspace tool will be cheaper at this size, but you give up the reporting.`\n            : `The name that comes up most for this is ${rival}, followed by Sprintwell. Both publish their integration documentation openly and have been reviewed independently. I'd compare how each handles two-way sync before deciding.`,\n        citations: cites,\n        winner: wins ? \"cadenta\" : (slot === 8 ? \"no_clear_winner\" : rival.toLowerCase().replace(/\\s+/g, \"_\")),\n        rationale: wins\n          ? \"Named first and recommended outright, with a reason given.\"\n          : visible\n            ? \"Mentioned as an alternative, after another tool was recommended.\"\n            : \"Not mentioned in the answer.\",\n        confidence: slot % 4 === 0 ? \"high\" : \"medium\",\n        client_wins: wins ? \"True\" : \"False\",\n        client_visible: visible ? \"True\" : \"False\",\n        client_position: visible ? (wins ? 1 : (slot % 3) + 2) : null,\n        was_truncated: slot === 7 ? \"True\" : \"False\",\n      };\n    });\n    return {\n      query_text: q.query,\n      persona_name: persona?.role || \"Buyer\",\n      feature_name: [\"Integration coverage\", \"Pricing transparency\", \"Reporting and rollups\", \"Security and compliance\"][i % 4],\n      buying_job_name: [\"Problem exploration\", \"Solution comparison\", \"Vendor selection\", \"Validation\"][i % 4],\n      responses,\n    };\n  });\n  const visible = queries.filter((q) => q.responses.some((r) => r.client_visible === \"True\")).length;\n  const wins = queries.reduce((n, q) => n + q.responses.filter((r) => r.client_wins === \"True\").length, 0);\n  return {\n    published_at: \"2026-07-26T15:00:00Z\",\n    query_results: {\n      count: queries.length,\n      engines: ENGINES,\n      queries,\n      visible_count: visible,\n      wins_count: wins,\n      visibility_rate: Math.round((visible / queries.length) * 100),\n      win_rate_when_visible_pct: 44,\n      platform_stats: Object.fromEntries(ENGINES.map((label) => {\n        const slug = label.toLowerCase();\n        const rows = queries.flatMap((q) => q.responses.filter((r) => r.platform === slug));\n        const vis = rows.filter((r) => r.client_visible === \"True\").length;\n        const won = rows.filter((r) => r.client_wins === \"True\").length;\n        return [label, { wins: won, total: rows.length, visible: vis, win_rate_when_visible_pct: vis ? Math.round((won / vis) * 100) : 0 }];\n      })),\n    },\n  };\n}\n"],
  "mappings": "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",
  "names": ["PERSONAS", "COMPETITORS", "FEATURES", "PAINS", "FINDINGS", "STEMS", "QUERIES", "out", "keys", "i", "pid", "stems", "base", "ACTIONS", "operator", "foundationOnly", "res", "ENGINES", "RIVALS", "SOURCES", "BLOCKS", "byId", "p", "N", "ABSENT", "absentAt", "acc", "next", "queries", "q", "persona", "gone", "responses", "label", "e", "slot", "visible", "wins", "rival", "nCites", "cites", "c", "r", "n", "slug", "rows", "vis", "won"]
}
