{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "BioBenchmarks portal schema",
  "version": "1.0.0",
  "description": "Schema for biobenchmarks.json, experts.json, groups.json. See /Users/azhkclaw/.openclaw/workspace/skills/drug-discovery-benchmark-eval/SKILL.md §§1-5.",
  "$defs": {
    "stage": {
      "enum": [
        "virtual-cell", "disease-modeling", "target-id", "hit-id",
        "lead-id-admet", "developmental-candidate", "ind-enabling",
        "phase-1", "phase-2", "phase-3", "clinical-development",
        "post-market-rwe"
      ]
    },
    "modality": {
      "enum": [
        "small-molecule", "biologic-mab", "biologic-adc", "biologic-bispecific",
        "peptide", "protac", "cell-therapy", "gene-therapy", "rna-therapeutic",
        "vaccine", "protein-general", "cross-modality"
      ]
    },
    "rubric": {
      "type": "object",
      "required": ["rigor", "coverage", "maintenance", "adoption", "quality", "accessibility", "industry_relevance"],
      "properties": {
        "rigor": {"type": "integer", "minimum": 1, "maximum": 5},
        "coverage": {"type": "integer", "minimum": 1, "maximum": 5},
        "maintenance": {"type": "integer", "minimum": 1, "maximum": 5},
        "adoption": {"type": "integer", "minimum": 1, "maximum": 5},
        "quality": {"type": "integer", "minimum": 1, "maximum": 5},
        "accessibility": {"type": "integer", "minimum": 1, "maximum": 5},
        "industry_relevance": {"type": "integer", "minimum": 1, "maximum": 5},
        "regulatory_readiness": {"type": "integer", "minimum": 1, "maximum": 5},
        "reproducibility_pack": {"type": "integer", "minimum": 1, "maximum": 5}
      }
    }
  },
  "benchmark": {
    "type": "object",
    "required": ["id", "name", "stages", "modalities", "description", "rubric", "composite_score"],
    "properties": {
      "id": {"type": "string"},
      "name": {"type": "string"},
      "aliases": {"type": "array", "items": {"type": "string"}},
      "stages": {"type": "array", "items": {"$ref": "#/$defs/stage"}},
      "modalities": {"type": "array", "items": {"$ref": "#/$defs/modality"}},
      "task_types": {"type": "array", "items": {"type": "string"}},
      "description": {"type": "string"},
      "size": {"type": "object"},
      "primary_paper": {"type": "object"},
      "official_url": {"type": "string"},
      "github_url": {"type": "string"},
      "leaderboard_url": {"type": "string"},
      "huggingface_url": {"type": "string"},
      "license": {"type": "string"},
      "first_release": {"type": "string"},
      "last_updated": {"type": "string"},
      "maintainers": {"type": "array"},
      "rubric": {"$ref": "#/$defs/rubric"},
      "composite_score": {"type": "number", "minimum": 0, "maximum": 100},
      "flags": {"type": "array", "items": {"type": "string"}},
      "notes": {"type": "string"},
      "related_benchmarks": {"type": "array", "items": {"type": "string"}},
      "expert_ids": {"type": "array", "items": {"type": "string"}},
      "group_ids": {"type": "array", "items": {"type": "string"}}
    }
  },
  "expert": {
    "type": "object",
    "required": ["id", "name", "kind", "affiliation", "rubric", "composite_score"],
    "properties": {
      "id": {"type": "string"},
      "name": {"type": "string"},
      "kind": {"const": "expert"},
      "affiliation": {"type": "string"},
      "country": {"type": "string"},
      "website": {"type": "string"},
      "orcid": {"type": "string"},
      "github": {"type": "string"},
      "primary_benchmarks": {"type": "array", "items": {"type": "string"}},
      "group_ids": {"type": "array", "items": {"type": "string"}},
      "rubric": {
        "type": "object",
        "properties": {
          "benchmarks_authored": {"type": "integer", "minimum": 1, "maximum": 5},
          "benchmark_citations": {"type": "integer", "minimum": 1, "maximum": 5},
          "scope": {"type": "integer", "minimum": 1, "maximum": 5},
          "community_role": {"type": "integer", "minimum": 1, "maximum": 5},
          "recency": {"type": "integer", "minimum": 1, "maximum": 5},
          "rigor_flags": {"type": "integer", "minimum": 1, "maximum": 5}
        }
      },
      "composite_score": {"type": "number", "minimum": 0, "maximum": 100},
      "notes": {"type": "string"}
    }
  },
  "group": {
    "type": "object",
    "required": ["id", "name", "kind", "rubric", "composite_score"],
    "properties": {
      "id": {"type": "string"},
      "name": {"type": "string"},
      "kind": {"enum": ["lab", "company", "consortium"]},
      "type": {"enum": ["academic", "industry", "nonprofit", "government"]},
      "country": {"type": "string"},
      "website": {"type": "string"},
      "github": {"type": "string"},
      "primary_benchmarks": {"type": "array", "items": {"type": "string"}},
      "expert_ids": {"type": "array", "items": {"type": "string"}},
      "rubric": {
        "type": "object",
        "properties": {
          "output_volume": {"type": "integer", "minimum": 1, "maximum": 5},
          "quality_median": {"type": "integer", "minimum": 1, "maximum": 5},
          "breadth": {"type": "integer", "minimum": 1, "maximum": 5},
          "openness": {"type": "integer", "minimum": 1, "maximum": 5},
          "industry_uptake": {"type": "integer", "minimum": 1, "maximum": 5},
          "longevity": {"type": "integer", "minimum": 1, "maximum": 5},
          "translational_signal": {"type": "integer", "minimum": 1, "maximum": 5}
        }
      },
      "composite_score": {"type": "number", "minimum": 0, "maximum": 100},
      "flags": {"type": "array", "items": {"type": "string"}},
      "notes": {"type": "string"}
    }
  }
}
