{
 "schemaVersion": "1.0.0",
 "constitutionVersion": "1.0.0",
 "createdAt": "2026-08-12T00:00:00Z",
 "description": "Append-only Evidence Passport records. Old revisions are immutable; corrections create a new revision and preserve the previous permalink.",
 "entity": {
  "type": "project",
  "id": "kansas-city-311",
  "title": "311 and MyKCMO: The Whole Request Record, Channel Included",
  "canonicalUrl": "https://1001smartcities.org/projects/kansas-city-311/"
 },
 "currentRevisionId": "2026-08-20-source-dates",
 "revisions": [
  {
   "id": "2026-08-19-baseline",
   "createdAt": "2026-08-19T00:00:00Z",
   "effectiveAt": "2026-08-19",
   "changeType": "baseline",
   "summary": "Created the first structured Evidence Passport with 8 claims and 3 source dossiers.",
   "preparedBy": {
    "type": "automation",
    "label": "AI-assisted evidence preparation",
    "humanApproved": false
   },
   "review": {
    "status": "unreviewed",
    "by": null,
    "date": null,
    "note": "Awaiting operator and domain-expert review; publication of this revision implies neither."
   },
   "changes": [
    {
     "operation": "add",
     "path": "/evidencePassport",
     "summary": "Added claim-level evidence mapping and source dossiers."
    },
    {
     "operation": "add",
     "path": "/revisionHistory",
     "summary": "Established a permanent, hash-addressed baseline revision."
    }
   ],
   "snapshotHash": "sha256:0099cb198fdab61626999e572407d617a744efe12793772b6170ca60605bbb40",
   "snapshot": {
    "asOf": "2026-08-19",
    "projectFingerprint": "sha256:84162a29acc3122ced797ce4653fde2b687760ec99d405353bdd436ec2d15879",
    "assurance": {
     "status": "unreviewed",
     "scope": "evidence-passport-revision",
     "statement": "AI-assisted structural preparation. This revision has not been reviewed by a human or subject-matter expert.",
     "machineChecks": [
      "schema",
      "publication-diff-contract",
      "material-project-fingerprint",
      "claim-text-drift",
      "source-reference-resolution",
      "complete-source-dossier",
      "snapshot-hash"
     ]
    },
    "projectState": {
     "status": "live",
     "outcome": "ongoing",
     "evidenceGrade": "official",
     "timeline": {
      "started": 2007,
      "ended": null
     }
    },
    "governance": {
     "operator": "City of Kansas City, Missouri — 311 Action Center",
     "actorTypes": [
      "city-government"
     ],
     "fundingModel": "public",
     "fundingDescription": "City budget",
     "cost": null,
     "ownership": null,
     "decisionRights": null,
     "exitConditions": null
    },
    "claims": [
     {
      "id": "clm-bca7b00970b993ae",
      "field": "snippet",
      "text": "Kansas City's 311 centre has taken service requests since 2007",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-5ed03dd88c6ae732"
      ],
      "supportNote": "The legacy dataset published by the city covers 311 call centre service requests from 2007 to March 2021, dating the service to 2007.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-052a768caf672971",
      "field": "snippet",
      "text": "in March 2021 the city replaced the PeopleSoft system behind it with MyKCMO, an app and web front end through which residents report potholes, illegal dumping and missed trash pickups",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9",
       "src-ad4a446066d7b6f1"
      ],
      "supportNote": "The dataset description states that the current 311 data comes from MyKCMO, which replaced PeopleSoft CRM on 4 March 2021; the city's 311 page describes reporting potholes, illegal dumping and missed trash pickups through the app.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-25f45a13e0b9ce56",
      "field": "snippet",
      "text": "not only the issue type, council district, status and days to close, but the channel it arrived on",
      "statementKind": "descriptive",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9"
      ],
      "supportNote": "The published dataset carries issue_type, council_district, current_status, days_to_close and report_source as columns, the last of which is the arrival channel.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-bed94845b23d8fda",
      "field": "impact",
      "text": "813,077 requests between 18 February 2021 and 10 August 2026, counted from the city's own dataset on 19 August 2026",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9"
      ],
      "supportNote": "Counted through the Socrata SoQL API against the published dataset on 19 August 2026: 813,077 rows, earliest open_date_time 18 February 2021, latest 10 August 2026.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-4c9285cd3789fc93",
      "field": "impact",
      "text": "395,606 answered calls, 48.7%, against 243,836 from the iOS and Android apps, 30.0%, and 136,403 from the web, 16.8%",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9"
      ],
      "supportNote": "Aggregated by report_source over the whole dataset on 19 August 2026: Phone Answered 395,606; iOS 164,220 plus Android 79,616 = 243,836; WEB RAI 136,403. Percentages are of the 813,077 total.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-074d010d334a171c",
      "field": "impact",
      "text": "In calendar 2025 the city logged 167,088 requests, 43.9% by phone and 35.9% by app",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9"
      ],
      "supportNote": "Same query restricted to open_date_time in calendar 2025: 167,088 rows, of which Phone Answered 73,347 and iOS plus Android 59,985.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-900a3b64529e54a5",
      "field": "impact",
      "text": "Half closed within five days; the mean was 25.7 days, five times the median",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9"
      ],
      "supportNote": "Median and mean of days_to_close for requests opened in calendar 2025, computed through the same API: median 5 days, mean 25.73 days.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-ffe43aec19247a25",
      "field": "impact",
      "text": "Requests ranged from 35,849 in the third council district to 17,879 in the first",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9"
      ],
      "supportNote": "Grouped by council_district for calendar 2025: district 3 highest at 35,849, district 1 lowest at 17,879. The counts are raw and not normalised by population; the entry says so in the lesson.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     }
    ],
    "sources": [
     {
      "id": "src-c7350bc191cbfae9",
      "title": "Open Data KC — 311 Call Center Reported Issues",
      "url": "https://data.kcmo.org/311/311-Call-Center-Reported-Issues/d4px-6rwg",
      "publisher": {
       "name": null,
       "domain": "data.kcmo.org",
       "classification": "not-classified"
      },
      "sourceType": "web-page",
      "language": "und",
      "role": "claim-evidence",
      "claimRefs": [
       "clm-052a768caf672971",
       "clm-25f45a13e0b9ce56",
       "clm-bed94845b23d8fda",
       "clm-4c9285cd3789fc93",
       "clm-074d010d334a171c",
       "clm-900a3b64529e54a5",
       "clm-ffe43aec19247a25"
      ],
      "temporal": {
       "publishedAt": null,
       "updatedAt": null,
       "sourceCheckedAt": null,
       "recordLastVerifiedAt": "2026-08-19",
       "dossierCreatedAt": "2026-08-19",
       "retrievedAt": null,
       "status": "record-date-only"
      },
      "locator": {
       "type": "descriptive-source-note",
       "value": "All counts computed from this dataset through the Socrata SoQL API on 19 August 2026.",
       "exact": false
      },
      "preservation": {
       "archiveUrl": null,
       "archivedAt": null,
       "contentHash": null,
       "status": "not-captured"
      }
     },
     {
      "id": "src-5ed03dd88c6ae732",
      "title": "Open Data KC — 311 Call Center Service Requests: 2007 - March 2021",
      "url": "https://data.kcmo.org/browse?tags=kcmops311",
      "publisher": {
       "name": null,
       "domain": "data.kcmo.org",
       "classification": "not-classified"
      },
      "sourceType": "web-page",
      "language": "und",
      "role": "claim-evidence",
      "claimRefs": [
       "clm-bca7b00970b993ae"
      ],
      "temporal": {
       "publishedAt": null,
       "updatedAt": null,
       "sourceCheckedAt": null,
       "recordLastVerifiedAt": "2026-08-19",
       "dossierCreatedAt": "2026-08-19",
       "retrievedAt": null,
       "status": "record-date-only"
      },
      "locator": {
       "type": "descriptive-source-note",
       "value": "The legacy PeopleSoft-era record, closed when MyKCMO replaced it on 4 March 2021.",
       "exact": false
      },
      "preservation": {
       "archiveUrl": null,
       "archivedAt": null,
       "contentHash": null,
       "status": "not-captured"
      }
     },
     {
      "id": "src-ad4a446066d7b6f1",
      "title": "City of Kansas City — 311",
      "url": "https://www.kcmo.gov/city-hall/311",
      "publisher": {
       "name": null,
       "domain": "kcmo.gov",
       "classification": "not-classified"
      },
      "sourceType": "web-page",
      "language": "und",
      "role": "claim-evidence",
      "claimRefs": [
       "clm-052a768caf672971"
      ],
      "temporal": {
       "publishedAt": null,
       "updatedAt": null,
       "sourceCheckedAt": null,
       "recordLastVerifiedAt": "2026-08-19",
       "dossierCreatedAt": "2026-08-19",
       "retrievedAt": null,
       "status": "record-date-only"
      },
      "locator": {
       "type": "descriptive-source-note",
       "value": "The city's own site blocks automated retrieval (Akamai 403).",
       "exact": false
      },
      "preservation": {
       "archiveUrl": null,
       "archivedAt": null,
       "contentHash": null,
       "status": "not-captured"
      }
     }
    ],
    "coverage": {
     "claimsTotal": 8,
     "claimsMapped": 8,
     "sourcesTotal": 3,
     "sourcesUsedByClaims": 3,
     "sourcesWithPublicationDate": 0,
     "sourcesWithArchive": 0,
     "sourcesWithExactLocator": 0,
     "sourcesWithContentHash": 0
    },
    "limits": [
     "Publisher names and source languages have not yet been classified; domains are recorded without guessing.",
     "Existing source notes are descriptive locators, not page- or paragraph-exact citations.",
     "A missing archive, publication date or content hash is shown as null rather than inferred.",
     "The project-level evidence grade ranks the strongest source in the entry; it is not a truth score for every claim."
    ]
   }
  },
  {
   "id": "2026-08-20-source-dates",
   "createdAt": "2026-08-20T00:00:00Z",
   "effectiveAt": "2026-08-19",
   "changeType": "update",
   "summary": "Recorded the two dates each source states — publication in date, a stated revision in updated, an explicit null where the source gives neither.",
   "preparedBy": {
    "type": "automation",
    "label": "AI-assisted evidence preparation",
    "humanApproved": false
   },
   "review": {
    "status": "unreviewed",
    "by": null,
    "date": null,
    "note": "Awaiting operator and domain-expert review; publication of this revision implies neither."
   },
   "changes": [
    {
     "operation": "replace",
     "path": "/snapshot/projectFingerprint",
     "summary": "Updated projectFingerprint to the current sourced project record."
    },
    {
     "operation": "replace",
     "path": "/snapshot/sources",
     "summary": "Updated sources to the current sourced project record."
    }
   ],
   "snapshotHash": "sha256:1640407c9a5a454679271d6474ce8b15903722e376668903fbfbf93513f36745",
   "snapshot": {
    "asOf": "2026-08-19",
    "projectFingerprint": "sha256:e3bf6e2b89af3958dcbc6b355e8ff1a672edfc2eec0aa4277c6a163ffa45d522",
    "assurance": {
     "status": "unreviewed",
     "scope": "evidence-passport-revision",
     "statement": "AI-assisted structural preparation. This revision has not been reviewed by a human or subject-matter expert.",
     "machineChecks": [
      "schema",
      "publication-diff-contract",
      "material-project-fingerprint",
      "claim-text-drift",
      "source-reference-resolution",
      "complete-source-dossier",
      "snapshot-hash"
     ]
    },
    "projectState": {
     "status": "live",
     "outcome": "ongoing",
     "evidenceGrade": "official",
     "timeline": {
      "started": 2007,
      "ended": null
     }
    },
    "governance": {
     "operator": "City of Kansas City, Missouri — 311 Action Center",
     "actorTypes": [
      "city-government"
     ],
     "fundingModel": "public",
     "fundingDescription": "City budget",
     "cost": null,
     "ownership": null,
     "decisionRights": null,
     "exitConditions": null
    },
    "claims": [
     {
      "id": "clm-bca7b00970b993ae",
      "field": "snippet",
      "text": "Kansas City's 311 centre has taken service requests since 2007",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-5ed03dd88c6ae732"
      ],
      "supportNote": "The legacy dataset published by the city covers 311 call centre service requests from 2007 to March 2021, dating the service to 2007.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-052a768caf672971",
      "field": "snippet",
      "text": "in March 2021 the city replaced the PeopleSoft system behind it with MyKCMO, an app and web front end through which residents report potholes, illegal dumping and missed trash pickups",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9",
       "src-ad4a446066d7b6f1"
      ],
      "supportNote": "The dataset description states that the current 311 data comes from MyKCMO, which replaced PeopleSoft CRM on 4 March 2021; the city's 311 page describes reporting potholes, illegal dumping and missed trash pickups through the app.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-25f45a13e0b9ce56",
      "field": "snippet",
      "text": "not only the issue type, council district, status and days to close, but the channel it arrived on",
      "statementKind": "descriptive",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9"
      ],
      "supportNote": "The published dataset carries issue_type, council_district, current_status, days_to_close and report_source as columns, the last of which is the arrival channel.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-bed94845b23d8fda",
      "field": "impact",
      "text": "813,077 requests between 18 February 2021 and 10 August 2026, counted from the city's own dataset on 19 August 2026",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9"
      ],
      "supportNote": "Counted through the Socrata SoQL API against the published dataset on 19 August 2026: 813,077 rows, earliest open_date_time 18 February 2021, latest 10 August 2026.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-4c9285cd3789fc93",
      "field": "impact",
      "text": "395,606 answered calls, 48.7%, against 243,836 from the iOS and Android apps, 30.0%, and 136,403 from the web, 16.8%",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9"
      ],
      "supportNote": "Aggregated by report_source over the whole dataset on 19 August 2026: Phone Answered 395,606; iOS 164,220 plus Android 79,616 = 243,836; WEB RAI 136,403. Percentages are of the 813,077 total.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-074d010d334a171c",
      "field": "impact",
      "text": "In calendar 2025 the city logged 167,088 requests, 43.9% by phone and 35.9% by app",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9"
      ],
      "supportNote": "Same query restricted to open_date_time in calendar 2025: 167,088 rows, of which Phone Answered 73,347 and iOS plus Android 59,985.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-900a3b64529e54a5",
      "field": "impact",
      "text": "Half closed within five days; the mean was 25.7 days, five times the median",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9"
      ],
      "supportNote": "Median and mean of days_to_close for requests opened in calendar 2025, computed through the same API: median 5 days, mean 25.73 days.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     },
     {
      "id": "clm-ffe43aec19247a25",
      "field": "impact",
      "text": "Requests ranged from 35,849 in the third council district to 17,879 in the first",
      "statementKind": "quantitative",
      "textMode": "verbatim-from-project-record",
      "mappingStatus": "mapped",
      "sourceRefs": [
       "src-c7350bc191cbfae9"
      ],
      "supportNote": "Grouped by council_district for calendar 2025: district 3 highest at 35,849, district 1 lowest at 17,879. The counts are raw and not normalised by population; the entry says so in the lesson.",
      "caveat": null,
      "interpretation": {
       "added": false,
       "interpolation": false,
       "note": "The passport copies the published claim and its recorded source mapping without adding a conclusion."
      }
     }
    ],
    "sources": [
     {
      "id": "src-c7350bc191cbfae9",
      "title": "Open Data KC — 311 Call Center Reported Issues",
      "url": "https://data.kcmo.org/311/311-Call-Center-Reported-Issues/d4px-6rwg",
      "publisher": {
       "name": null,
       "domain": "data.kcmo.org",
       "classification": "not-classified"
      },
      "sourceType": "web-page",
      "language": "und",
      "role": "claim-evidence",
      "claimRefs": [
       "clm-052a768caf672971",
       "clm-25f45a13e0b9ce56",
       "clm-bed94845b23d8fda",
       "clm-4c9285cd3789fc93",
       "clm-074d010d334a171c",
       "clm-900a3b64529e54a5",
       "clm-ffe43aec19247a25"
      ],
      "temporal": {
       "publishedAt": "2021-03-04",
       "updatedAt": null,
       "sourceCheckedAt": null,
       "recordLastVerifiedAt": "2026-08-19",
       "dossierCreatedAt": "2026-08-20",
       "retrievedAt": null,
       "status": "publication-and-record-dates-recorded"
      },
      "locator": {
       "type": "descriptive-source-note",
       "value": "All counts computed from this dataset through the Socrata SoQL API on 19 August 2026.",
       "exact": false
      },
      "preservation": {
       "archiveUrl": null,
       "archivedAt": null,
       "contentHash": null,
       "status": "not-captured"
      }
     },
     {
      "id": "src-5ed03dd88c6ae732",
      "title": "Open Data KC — 311 Call Center Service Requests: 2007 - March 2021",
      "url": "https://data.kcmo.org/browse?tags=kcmops311",
      "publisher": {
       "name": null,
       "domain": "data.kcmo.org",
       "classification": "not-classified"
      },
      "sourceType": "web-page",
      "language": "und",
      "role": "claim-evidence",
      "claimRefs": [
       "clm-bca7b00970b993ae"
      ],
      "temporal": {
       "publishedAt": null,
       "updatedAt": null,
       "sourceCheckedAt": null,
       "recordLastVerifiedAt": "2026-08-19",
       "dossierCreatedAt": "2026-08-20",
       "retrievedAt": null,
       "status": "record-date-only"
      },
      "locator": {
       "type": "descriptive-source-note",
       "value": "The legacy PeopleSoft-era record, closed when MyKCMO replaced it on 4 March 2021.",
       "exact": false
      },
      "preservation": {
       "archiveUrl": null,
       "archivedAt": null,
       "contentHash": null,
       "status": "not-captured"
      }
     },
     {
      "id": "src-ad4a446066d7b6f1",
      "title": "City of Kansas City — 311",
      "url": "https://www.kcmo.gov/city-hall/311",
      "publisher": {
       "name": null,
       "domain": "kcmo.gov",
       "classification": "not-classified"
      },
      "sourceType": "web-page",
      "language": "und",
      "role": "claim-evidence",
      "claimRefs": [
       "clm-052a768caf672971"
      ],
      "temporal": {
       "publishedAt": null,
       "updatedAt": null,
       "sourceCheckedAt": null,
       "recordLastVerifiedAt": "2026-08-19",
       "dossierCreatedAt": "2026-08-20",
       "retrievedAt": null,
       "status": "record-date-only"
      },
      "locator": {
       "type": "descriptive-source-note",
       "value": "The city's own site blocks automated retrieval (Akamai 403).",
       "exact": false
      },
      "preservation": {
       "archiveUrl": null,
       "archivedAt": null,
       "contentHash": null,
       "status": "not-captured"
      }
     }
    ],
    "coverage": {
     "claimsTotal": 8,
     "claimsMapped": 8,
     "sourcesTotal": 3,
     "sourcesUsedByClaims": 3,
     "sourcesWithPublicationDate": 1,
     "sourcesWithArchive": 0,
     "sourcesWithExactLocator": 0,
     "sourcesWithContentHash": 0
    },
    "limits": [
     "Publisher names and source languages have not yet been classified; domains are recorded without guessing.",
     "Existing source notes are descriptive locators, not page- or paragraph-exact citations.",
     "A missing archive, publication date or content hash is shown as null rather than inferred.",
     "The project-level evidence grade ranks the strongest source in the entry; it is not a truth score for every claim."
    ]
   }
  }
 ]
}
