{
  "generatedAt": "2026-06-12T16:04:04.943Z",
  "success": true,
  "summary": {
    "totalNeeds": 14,
    "criticalNeeds": 14,
    "needsWithGaps": 12,
    "errors": 0
  },
  "requiredDataNeeds": [
    "official_fantasy_players",
    "fantasy_team_mapping",
    "official_rules",
    "confirmed_lineups",
    "bench_status",
    "formations",
    "injuries_suspensions",
    "set_piece_takers",
    "penalty_takers",
    "predicted_lineups",
    "odds_clean_sheet_probability",
    "press_conference_minutes_risk",
    "live_match_status",
    "user_manual_evidence"
  ],
  "errors": [],
  "coverage": [
    {
      "dataNeed": "official_fantasy_players",
      "critical": true,
      "primary": {
        "id": "fifa-fantasy-players-json",
        "name": "FIFA Fantasy players JSON",
        "urlOrAccessNote": "https://play.fifa.com/json/fantasy/players.json",
        "sourceType": "api_json",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "high",
        "accessMethod": "unauthenticated_https_json_get"
      },
      "fallback": {
        "id": "cloudflare-pages-generated",
        "name": "Cloudflare Pages hosted generated files",
        "urlOrAccessNote": "Public base URL is not configured yet; files originate from data/generated and briefs.",
        "sourceType": "hosted_generated_file",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "high",
        "accessMethod": "public_https_after_deployment"
      },
      "unresolvedGaps": [],
      "notes": "Hosted generated files are a stale-safe fallback only after a successful refresh and deployment."
    },
    {
      "dataNeed": "fantasy_team_mapping",
      "critical": true,
      "primary": {
        "id": "fifa-fantasy-squads-json",
        "name": "FIFA Fantasy squads JSON",
        "urlOrAccessNote": "https://play.fifa.com/json/fantasy/squads.json",
        "sourceType": "api_json",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "high",
        "accessMethod": "unauthenticated_https_json_get"
      },
      "fallback": {
        "id": "cloudflare-pages-generated",
        "name": "Cloudflare Pages hosted generated files",
        "urlOrAccessNote": "Public base URL is not configured yet; files originate from data/generated and briefs.",
        "sourceType": "hosted_generated_file",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "high",
        "accessMethod": "public_https_after_deployment"
      },
      "unresolvedGaps": [],
      "notes": "The deprecated squads_fifa feed is not a fallback."
    },
    {
      "dataNeed": "official_rules",
      "critical": true,
      "primary": {
        "id": "fifa-fantasy-rules-json",
        "name": "FIFA Fantasy help pages JSON",
        "urlOrAccessNote": "https://play.fifa.com/json/fantasy/help_pages.json",
        "sourceType": "api_json",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "high",
        "accessMethod": "unauthenticated_https_json_get"
      },
      "fallback": {
        "id": "fifa-fantasy-rules-help",
        "name": "FIFA Fantasy rules and help page",
        "urlOrAccessNote": "https://play.fifa.com/fantasy/help/rules",
        "sourceType": "website_js_rendered",
        "scriptReadable": false,
        "chatgptReadable": false,
        "phoneUsable": true,
        "confidence": "high",
        "accessMethod": "interactive_browser_with_javascript_or_user_text_screenshot"
      },
      "unresolvedGaps": [
        "Mystery Booster exact effect is not yet published.",
        "Third-place play-off packaging is not explicit.",
        "Appearance rows remain semantically ambiguous."
      ],
      "notes": "The HTML page is official but requires JavaScript or manual capture."
    },
    {
      "dataNeed": "confirmed_lineups",
      "critical": true,
      "primary": {
        "id": "fifa-official-match-centre",
        "name": "FIFA match centre and official match pages",
        "urlOrAccessNote": "https://www.fifa.com/en/tournaments/mens/worldcup/canadamexicousa2026/scores-fixtures",
        "sourceType": "website_js_rendered",
        "scriptReadable": false,
        "chatgptReadable": false,
        "phoneUsable": true,
        "confidence": "high",
        "accessMethod": "interactive_browser_with_javascript"
      },
      "fallback": {
        "id": "apple-sports",
        "name": "Apple Sports",
        "urlOrAccessNote": "https://apps.apple.com/app/apple-sports/id6446788829",
        "sourceType": "mobile_app",
        "scriptReadable": false,
        "chatgptReadable": false,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "mobile_app_then_screenshot_or_text"
      },
      "unresolvedGaps": [
        "Neither source is currently script-readable.",
        "Publication timing and World Cup coverage must be validated on match day."
      ],
      "notes": "Use timestamped user screenshots or copied text when direct access fails."
    },
    {
      "dataNeed": "bench_status",
      "critical": true,
      "primary": {
        "id": "fifa-official-match-centre",
        "name": "FIFA match centre and official match pages",
        "urlOrAccessNote": "https://www.fifa.com/en/tournaments/mens/worldcup/canadamexicousa2026/scores-fixtures",
        "sourceType": "website_js_rendered",
        "scriptReadable": false,
        "chatgptReadable": false,
        "phoneUsable": true,
        "confidence": "high",
        "accessMethod": "interactive_browser_with_javascript"
      },
      "fallback": {
        "id": "human-user-evidence",
        "name": "Human or user supplied evidence",
        "urlOrAccessNote": "Provided directly by the user as a screenshot or copied text.",
        "sourceType": "manual_user_input",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "screenshot_or_text"
      },
      "unresolvedGaps": [
        "Bench detail availability has not been validated.",
        "Fantasy API matchStatus timing is not accepted as lineup proof."
      ],
      "notes": "Require named source and capture time."
    },
    {
      "dataNeed": "formations",
      "critical": true,
      "primary": {
        "id": "fifa-official-match-centre",
        "name": "FIFA match centre and official match pages",
        "urlOrAccessNote": "https://www.fifa.com/en/tournaments/mens/worldcup/canadamexicousa2026/scores-fixtures",
        "sourceType": "website_js_rendered",
        "scriptReadable": false,
        "chatgptReadable": false,
        "phoneUsable": true,
        "confidence": "high",
        "accessMethod": "interactive_browser_with_javascript"
      },
      "fallback": {
        "id": "apple-sports",
        "name": "Apple Sports",
        "urlOrAccessNote": "https://apps.apple.com/app/apple-sports/id6446788829",
        "sourceType": "mobile_app",
        "scriptReadable": false,
        "chatgptReadable": false,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "mobile_app_then_screenshot_or_text"
      },
      "unresolvedGaps": [
        "Displayed formations may be provider interpretation rather than official tactical shape."
      ],
      "notes": "Treat listed personnel as stronger evidence than a provider's formation label."
    },
    {
      "dataNeed": "injuries_suspensions",
      "critical": true,
      "primary": {
        "id": "bbc-sport-football",
        "name": "BBC Sport football website",
        "urlOrAccessNote": "https://www.bbc.com/sport/football",
        "sourceType": "website_html",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "public_web_html"
      },
      "fallback": {
        "id": "espn-soccer-web",
        "name": "ESPN soccer website",
        "urlOrAccessNote": "https://www.espn.com/soccer/",
        "sourceType": "website_html",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "public_web_html"
      },
      "unresolvedGaps": [
        "No single official tournament-wide injury feed is registered.",
        "Federation and press-conference confirmation may be newer than articles."
      ],
      "notes": "Cross-check material availability claims close to deadlines."
    },
    {
      "dataNeed": "set_piece_takers",
      "critical": true,
      "primary": {
        "id": "fantasy-football-scout",
        "name": "Fantasy Football Scout",
        "urlOrAccessNote": "https://www.fantasyfootballscout.co.uk/",
        "sourceType": "website_html",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "public_web_html; some content may require membership"
      },
      "fallback": {
        "id": "human-user-evidence",
        "name": "Human or user supplied evidence",
        "urlOrAccessNote": "Provided directly by the user as a screenshot or copied text.",
        "sourceType": "manual_user_input",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "screenshot_or_text"
      },
      "unresolvedGaps": [
        "No official tournament-wide set-piece hierarchy exists.",
        "Specialist content may require membership and can become stale."
      ],
      "notes": "Treat as researched role evidence, not guaranteed future assignment."
    },
    {
      "dataNeed": "penalty_takers",
      "critical": true,
      "primary": {
        "id": "fantasy-football-scout",
        "name": "Fantasy Football Scout",
        "urlOrAccessNote": "https://www.fantasyfootballscout.co.uk/",
        "sourceType": "website_html",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "public_web_html; some content may require membership"
      },
      "fallback": {
        "id": "human-user-evidence",
        "name": "Human or user supplied evidence",
        "urlOrAccessNote": "Provided directly by the user as a screenshot or copied text.",
        "sourceType": "manual_user_input",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "screenshot_or_text"
      },
      "unresolvedGaps": [
        "Penalty order can change by personnel and match context.",
        "No official tournament-wide hierarchy source is registered."
      ],
      "notes": "Record date, likely order and evidence basis."
    },
    {
      "dataNeed": "predicted_lineups",
      "critical": true,
      "primary": {
        "id": "fantasy-football-scout",
        "name": "Fantasy Football Scout",
        "urlOrAccessNote": "https://www.fantasyfootballscout.co.uk/",
        "sourceType": "website_html",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "public_web_html; some content may require membership"
      },
      "fallback": {
        "id": "fotmob-web",
        "name": "FotMob website",
        "urlOrAccessNote": "https://www.fotmob.com/",
        "sourceType": "website_js_rendered",
        "scriptReadable": false,
        "chatgptReadable": false,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "interactive_browser_or_mobile_app"
      },
      "unresolvedGaps": [
        "World Cup 2026 prediction coverage is untested.",
        "Predictions are signals, never confirmed facts."
      ],
      "notes": "Always label predicted lineups and retain uncertainty."
    },
    {
      "dataNeed": "odds_clean_sheet_probability",
      "critical": true,
      "primary": {
        "id": "oddsportal-football",
        "name": "OddsPortal football odds",
        "urlOrAccessNote": "https://www.oddsportal.com/football/",
        "sourceType": "website_js_rendered",
        "scriptReadable": false,
        "chatgptReadable": false,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "interactive_browser_or_user_screenshot"
      },
      "fallback": {
        "id": "human-user-evidence",
        "name": "Human or user supplied evidence",
        "urlOrAccessNote": "Provided directly by the user as a screenshot or copied text.",
        "sourceType": "manual_user_input",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "screenshot_or_text"
      },
      "unresolvedGaps": [
        "No script-readable odds source is validated.",
        "Clean-sheet probability requires a documented derivation from current markets."
      ],
      "notes": "Record bookmaker/market scope and observation time."
    },
    {
      "dataNeed": "press_conference_minutes_risk",
      "critical": true,
      "primary": {
        "id": "bbc-sport-football",
        "name": "BBC Sport football website",
        "urlOrAccessNote": "https://www.bbc.com/sport/football",
        "sourceType": "website_html",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "public_web_html"
      },
      "fallback": {
        "id": "espn-soccer-web",
        "name": "ESPN soccer website",
        "urlOrAccessNote": "https://www.espn.com/soccer/",
        "sourceType": "website_html",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "public_web_html"
      },
      "unresolvedGaps": [
        "No dedicated press-conference transcript feed is registered.",
        "Manager comments may be ambiguous or superseded."
      ],
      "notes": "Separate direct quotes, reporter interpretation and coaching inference."
    },
    {
      "dataNeed": "live_match_status",
      "critical": true,
      "primary": {
        "id": "fifa-official-match-centre",
        "name": "FIFA match centre and official match pages",
        "urlOrAccessNote": "https://www.fifa.com/en/tournaments/mens/worldcup/canadamexicousa2026/scores-fixtures",
        "sourceType": "website_js_rendered",
        "scriptReadable": false,
        "chatgptReadable": false,
        "phoneUsable": true,
        "confidence": "high",
        "accessMethod": "interactive_browser_with_javascript"
      },
      "fallback": {
        "id": "apple-sports",
        "name": "Apple Sports",
        "urlOrAccessNote": "https://apps.apple.com/app/apple-sports/id6446788829",
        "sourceType": "mobile_app",
        "scriptReadable": false,
        "chatgptReadable": false,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "mobile_app_then_screenshot_or_text"
      },
      "unresolvedGaps": [
        "Direct script access is unvalidated.",
        "Fantasy players.json matchStatus timing remains unproven."
      ],
      "notes": "Use timestamped human evidence where necessary."
    },
    {
      "dataNeed": "user_manual_evidence",
      "critical": true,
      "primary": {
        "id": "human-user-evidence",
        "name": "Human or user supplied evidence",
        "urlOrAccessNote": "Provided directly by the user as a screenshot or copied text.",
        "sourceType": "manual_user_input",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "screenshot_or_text"
      },
      "fallback": {
        "id": "direct-user-text-confirmation",
        "name": "Direct user text confirmation",
        "urlOrAccessNote": "A direct user message containing copied source text, observed facts, or explicit action confirmation.",
        "sourceType": "manual_user_input",
        "scriptReadable": true,
        "chatgptReadable": true,
        "phoneUsable": true,
        "confidence": "medium",
        "accessMethod": "direct_user_message"
      },
      "unresolvedGaps": [
        "Manual evidence quality depends on timestamp and visible context."
      ],
      "notes": "Screenshots and copied text are acceptable when direct source access fails."
    }
  ]
}
