{
  "graph_name": "Pet Aftercare Entity, Service-Area & Relationship Graph",
  "graph_version": "1.0.0",
  "catalog_version": "1.4.0",
  "updated": "2026-09-18",
  "site": "https://review.petfuneralcostcalculator.com/",
  "counts": {
    "nodes": 5363,
    "edges": 24460,
    "node_types": {
      "State": 50,
      "City": 150,
      "ServiceOrDecisionIntent": 30,
      "Provider": 15,
      "Action": 1,
      "Page": 916,
      "Price": 23,
      "Question": 1958,
      "Answer": 1945,
      "Claim": 211,
      "Evidence": 59,
      "ServiceArea": 5
    },
    "relationship_types": 18,
    "published_service_area_assertions": 5,
    "providers_with_explicit_service_area_assertions": 4
  },
  "files": {
    "nodes": "graph-nodes.json",
    "edges": "graph-edges.json",
    "adjacency": "graph-adjacency.json",
    "relationship_types": "relationship-types.json",
    "entity_aliases": "entity-aliases.json",
    "service_areas": "service-areas.json",
    "provider_market_service_area_index": "provider-market-service-area-index.json"
  },
  "rules": [
    "Market context and published service area are different concepts.",
    "A provider's comparison market must not be interpreted as proof that the provider serves every address in that geography.",
    "Published service-area assertions are created only where a current source-backed provider claim explicitly states geographic coverage.",
    "Free-text service areas are not geocoded or converted into polygons in Phase 5.",
    "Graph edges reuse stable object IDs from the knowledge catalog whenever possible.",
    "Bilingual pages/questions remain language-specific nodes while core providers, locations, services, prices, evidence and actions use stable language-neutral IDs where applicable."
  ]
}