{
  "ok": true,
  "strict": false,
  "generated_at": "2026-06-11T21:34:14+00:00",
  "summary": {
    "errors": 0,
    "warnings": 0,
    "analyses": 8370,
    "company_scores": 71634,
    "market_theme_signals": 114,
    "company_strategy_rankings": 123
  },
  "checks": [
    {
      "check": "analysis_count",
      "ok": true,
      "severity": "error",
      "detail": "analyses rows=8370, minimum=20",
      "row_count": 8370,
      "minimum": 20
    },
    {
      "check": "analysis_required_field_summary",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have empty summary",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "analysis_required_field_technology_direction",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have empty technology_direction",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "analysis_required_field_current_tech_linkage",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have empty current_tech_linkage",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "analysis_required_field_theme_classification",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have empty theme_classification",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "analysis_required_field_market_impact",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have empty market_impact",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "analysis_required_field_strategy",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have empty strategy",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "analysis_required_field_watchpoints",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have empty watchpoints",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "analysis_required_field_explainers",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have empty explainers",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "analysis_required_field_market_scope_summary",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have empty market_scope_summary",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "analysis_required_field_themes_json",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have empty themes_json",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "analysis_required_field_market_regions_json",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have empty market_regions_json",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "analysis_required_field_asset_classes_json",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have empty asset_classes_json",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "analysis_text_depth_summary",
      "ok": true,
      "severity": "warning",
      "detail": "0 analyses have summary shorter than 60 chars",
      "short_count": 0,
      "minimum_chars": 60,
      "samples": []
    },
    {
      "check": "analysis_text_depth_strategy",
      "ok": true,
      "severity": "warning",
      "detail": "0 analyses have strategy shorter than 80 chars",
      "short_count": 0,
      "minimum_chars": 80,
      "samples": []
    },
    {
      "check": "analysis_text_depth_watchpoints",
      "ok": true,
      "severity": "warning",
      "detail": "0 analyses have watchpoints shorter than 40 chars",
      "short_count": 0,
      "minimum_chars": 40,
      "samples": []
    },
    {
      "check": "analysis_json_valid_themes_json",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have invalid themes_json",
      "invalid_count": 0,
      "samples": []
    },
    {
      "check": "analysis_json_nonempty_themes_json",
      "ok": true,
      "severity": "warning",
      "detail": "0 analyses have empty themes_json",
      "empty_count": 0,
      "samples": []
    },
    {
      "check": "analysis_json_valid_market_regions_json",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have invalid market_regions_json",
      "invalid_count": 0,
      "samples": []
    },
    {
      "check": "analysis_json_nonempty_market_regions_json",
      "ok": true,
      "severity": "warning",
      "detail": "0 analyses have empty market_regions_json",
      "empty_count": 0,
      "samples": []
    },
    {
      "check": "analysis_json_valid_asset_classes_json",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses have invalid asset_classes_json",
      "invalid_count": 0,
      "samples": []
    },
    {
      "check": "analysis_json_nonempty_asset_classes_json",
      "ok": true,
      "severity": "warning",
      "detail": "0 analyses have empty asset_classes_json",
      "empty_count": 0,
      "samples": []
    },
    {
      "check": "score_bounds_analyses_novelty_score",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses.novelty_score values outside 0-1",
      "invalid_count": 0,
      "lower": 0.0,
      "upper": 1.0,
      "samples": []
    },
    {
      "check": "score_bounds_analyses_policy_signal_score",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses.policy_signal_score values outside 0-1",
      "invalid_count": 0,
      "lower": 0.0,
      "upper": 1.0,
      "samples": []
    },
    {
      "check": "score_bounds_analyses_market_theme_score",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses.market_theme_score values outside 0-1",
      "invalid_count": 0,
      "lower": 0.0,
      "upper": 1.0,
      "samples": []
    },
    {
      "check": "score_bounds_company_scores_score",
      "ok": true,
      "severity": "error",
      "detail": "0 company_scores.score values outside 0-100",
      "invalid_count": 0,
      "lower": 0.0,
      "upper": 100.0,
      "samples": []
    },
    {
      "check": "score_bounds_theme_company_scores_avg_score",
      "ok": true,
      "severity": "error",
      "detail": "0 theme_company_scores.avg_score values outside 0-100",
      "invalid_count": 0,
      "lower": 0.0,
      "upper": 100.0,
      "samples": []
    },
    {
      "check": "score_bounds_theme_company_scores_max_score",
      "ok": true,
      "severity": "error",
      "detail": "0 theme_company_scores.max_score values outside 0-100",
      "invalid_count": 0,
      "lower": 0.0,
      "upper": 100.0,
      "samples": []
    },
    {
      "check": "score_bounds_market_theme_signals_signal_score",
      "ok": true,
      "severity": "error",
      "detail": "0 market_theme_signals.signal_score values outside 0-1",
      "invalid_count": 0,
      "lower": 0.0,
      "upper": 1.0,
      "samples": []
    },
    {
      "check": "score_bounds_market_theme_signals_report_linkage_score",
      "ok": true,
      "severity": "error",
      "detail": "0 market_theme_signals.report_linkage_score values outside 0-1",
      "invalid_count": 0,
      "lower": 0.0,
      "upper": 1.0,
      "samples": []
    },
    {
      "check": "score_bounds_market_theme_signals_momentum_score",
      "ok": true,
      "severity": "error",
      "detail": "0 market_theme_signals.momentum_score values outside 0-1",
      "invalid_count": 0,
      "lower": 0.0,
      "upper": 1.0,
      "samples": []
    },
    {
      "check": "score_bounds_market_theme_signals_priced_in_score",
      "ok": true,
      "severity": "error",
      "detail": "0 market_theme_signals.priced_in_score values outside 0-1",
      "invalid_count": 0,
      "lower": 0.0,
      "upper": 1.0,
      "samples": []
    },
    {
      "check": "score_bounds_company_strategy_rankings_weighted_score",
      "ok": true,
      "severity": "error",
      "detail": "0 company_strategy_rankings.weighted_score values outside 0-100",
      "invalid_count": 0,
      "lower": 0.0,
      "upper": 100.0,
      "samples": []
    },
    {
      "check": "orphan_analyses",
      "ok": true,
      "severity": "error",
      "detail": "0 analyses point to missing documents",
      "orphan_count": 0
    },
    {
      "check": "orphan_company_scores",
      "ok": true,
      "severity": "error",
      "detail": "0 company scores point to missing analyses",
      "orphan_count": 0
    },
    {
      "check": "duplicate_document_analyses",
      "ok": true,
      "severity": "warning",
      "detail": "0 documents have duplicate analysis rows in sample",
      "samples": []
    },
    {
      "check": "analysis_company_links_present",
      "ok": true,
      "severity": "warning",
      "detail": "0 analyses have no related company scores",
      "missing_count": 0,
      "samples": []
    },
    {
      "check": "theme_signal_json_valid_trade_view_json",
      "ok": true,
      "severity": "error",
      "detail": "0 market theme signals have invalid trade_view_json",
      "invalid_count": 0,
      "samples": []
    },
    {
      "check": "theme_signal_json_complete_trade_view_json",
      "ok": true,
      "severity": "warning",
      "detail": "0 market theme signals have incomplete trade_view_json",
      "incomplete_count": 0,
      "samples": []
    },
    {
      "check": "theme_signal_json_valid_top_companies_json",
      "ok": true,
      "severity": "error",
      "detail": "0 market theme signals have invalid top_companies_json",
      "invalid_count": 0,
      "samples": []
    },
    {
      "check": "theme_signal_json_complete_top_companies_json",
      "ok": true,
      "severity": "warning",
      "detail": "0 market theme signals have incomplete top_companies_json",
      "incomplete_count": 0,
      "samples": []
    },
    {
      "check": "theme_signal_json_valid_source_ids_json",
      "ok": true,
      "severity": "error",
      "detail": "0 market theme signals have invalid source_ids_json",
      "invalid_count": 0,
      "samples": []
    },
    {
      "check": "theme_signal_json_complete_source_ids_json",
      "ok": true,
      "severity": "warning",
      "detail": "0 market theme signals have incomplete source_ids_json",
      "incomplete_count": 0,
      "samples": []
    },
    {
      "check": "theme_signal_json_valid_market_regions_json",
      "ok": true,
      "severity": "error",
      "detail": "0 market theme signals have invalid market_regions_json",
      "invalid_count": 0,
      "samples": []
    },
    {
      "check": "theme_signal_json_complete_market_regions_json",
      "ok": true,
      "severity": "warning",
      "detail": "0 market theme signals have incomplete market_regions_json",
      "incomplete_count": 0,
      "samples": []
    },
    {
      "check": "theme_signal_json_valid_asset_classes_json",
      "ok": true,
      "severity": "error",
      "detail": "0 market theme signals have invalid asset_classes_json",
      "invalid_count": 0,
      "samples": []
    },
    {
      "check": "theme_signal_json_complete_asset_classes_json",
      "ok": true,
      "severity": "warning",
      "detail": "0 market theme signals have incomplete asset_classes_json",
      "incomplete_count": 0,
      "samples": []
    },
    {
      "check": "company_ranking_json_valid_themes",
      "ok": true,
      "severity": "error",
      "detail": "0 company rankings have invalid themes_json",
      "invalid_count": 0,
      "samples": []
    },
    {
      "check": "company_ranking_json_nonempty_themes",
      "ok": true,
      "severity": "warning",
      "detail": "0 company rankings have empty themes_json",
      "empty_count": 0,
      "samples": []
    }
  ],
  "counts": {
    "documents": 10736,
    "analyses": 8370,
    "company_scores": 71634,
    "strategy_lenses": 19,
    "theme_company_scores": 348,
    "market_theme_signals": 114,
    "company_strategy_rankings": 123,
    "source_strategy_scores": 581,
    "documents_by_kind": [
      {
        "kind": "attachment_pdf",
        "count": 6682
      },
      {
        "kind": "page",
        "count": 4050
      },
      {
        "kind": "podcast",
        "count": 4
      }
    ],
    "last_run": {
      "id": 52,
      "started_at": "2026-06-11T21:20:05+00:00",
      "finished_at": "2026-06-11T21:32:30+00:00",
      "status": "ok",
      "sources_checked": 148,
      "candidates_found": 2309,
      "documents_new": 151,
      "analyses_new": 121,
      "error": null
    },
    "source_errors": [
      {
        "source_id": "oecd_economic_outlook",
        "error_count": 2,
        "last_error": "HTTP Error 403: Forbidden"
      },
      {
        "source_id": "gsi_news",
        "error_count": 1,
        "last_error": "<urlopen error [SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] unsafe legacy renegotiation disabled (_ssl.c:1016)>"
      },
      {
        "source_id": "nuveen_investment_outlook",
        "error_count": 1,
        "last_error": "The read operation timed out"
      },
      {
        "source_id": "iea_reports",
        "error_count": 1,
        "last_error": "HTTP Error 403: Forbidden"
      }
    ]
  }
}
