{
  "corpus_size": 2405,
  "relevant_pairs": 836,
  "core_pairs": 290,
  "adjacent_pairs": 546,
  "searchable_field": "title + description (CPV excluded)",
  "words_absent_pct": {
    "all": 36.0,
    "core": 19.3,
    "adjacent": 44.9
  },
  "by_structure": {
    "one_off": {
      "words_absent_pct": 29.2,
      "median_desc_len": 775,
      "share_under_250": 17
    },
    "dps_framework": {
      "words_absent_pct": 42.2,
      "median_desc_len": 848,
      "share_under_250": 4
    }
  },
  "bm25_recall_raw_queries": {
    "top_50": 29.9,
    "top_200": 43.9
  },
  "stacking_ablation_or_queries": {
    "n_or_queries": 9,
    "first_phrase": {
      "match_pct": 27.1,
      "recall_top50": 23.7,
      "recall_top200": 26.4,
      "precision_top20": 37.2,
      "precision_top50": 28.9
    },
    "full_stack": {
      "match_pct": 82.7,
      "recall_top50": 33.3,
      "recall_top200": 52.0,
      "precision_top20": 48.3,
      "precision_top50": 33.1
    },
    "by_grade_match_recall200": {
      "core": {
        "match_first": 43.2,
        "match_full": 92.4,
        "recall_first": 42.1,
        "recall_full": 64.5
      },
      "adjacent": {
        "match_first": 14.6,
        "match_full": 76.0,
        "recall_first": 14.6,
        "recall_full": 44.2
      }
    }
  },
  "residual_after_stacking": {
    "found": {
      "n": 412,
      "median_field_len": 927
    },
    "still_missing": {
      "n": 134,
      "median_field_len": 596,
      "examples": [
        "Child Exploitation Specialist Support Service",
        "Support for Young Carers and Young Adult Carers in Worcester",
        "T26-095HCO Community Hubs to Support Asylum Seekers and Refu",
        "Connect to Work - Supported Employment Quality Framework (SE",
        "NHSL655-26 South ADP Assertive Outreach Service",
        "Crisis and Resilience Fund - Financial Resilience and Commun"
      ]
    }
  },
  "stacking_depth_curve": [
    {
      "phrases": 1,
      "avg_terms": 1.8,
      "match_pct": 27.1,
      "recall_top200": 26.4
    },
    {
      "phrases": 2,
      "avg_terms": 3.2,
      "match_pct": 40.9,
      "recall_top200": 38.9
    },
    {
      "phrases": 3,
      "avg_terms": 4.9,
      "match_pct": 44.4,
      "recall_top200": 40.9
    },
    {
      "phrases": 4,
      "avg_terms": 5.8,
      "match_pct": 45.2,
      "recall_top200": 42.5
    },
    {
      "phrases": 6,
      "avg_terms": 8.2,
      "match_pct": 55.9,
      "recall_top200": 48.5
    },
    {
      "phrases": 8,
      "avg_terms": 10.3,
      "match_pct": 63.9,
      "recall_top200": 49.5
    },
    {
      "phrases": 12,
      "avg_terms": 13.8,
      "match_pct": 71.7,
      "recall_top200": 57.4
    },
    {
      "phrases": 16,
      "avg_terms": 16.3,
      "match_pct": 76.2,
      "recall_top200": 54.5
    },
    {
      "phrases": "full",
      "avg_terms": 25.2,
      "match_pct": 82.7,
      "recall_top200": 52.0
    }
  ],
  "results_depth_curve": [
    {
      "depth": 50,
      "recall": 33.3,
      "precision": 33.1
    },
    {
      "depth": 200,
      "recall": 52.0,
      "precision": 15.6
    },
    {
      "depth": 500,
      "recall": 72.3,
      "precision": 9.0
    },
    {
      "depth": 1000,
      "recall": 81.2,
      "precision": 6.9
    },
    {
      "depth": 2405,
      "recall": 82.7,
      "precision": 6.6
    }
  ]
}