Scope Rates on this page use substantiated CPS investigations (Categories I – III). n = 289,280 · 23% of records with a recorded outcome. All-cases values shown as comparisons where relevant.

Every CPS investigation of alleged child abuse or neglect closes with a disposition summary — the caseworker's written account of what was reported, what was found, and how the case is being resolved. Michigan closes about 78,141 such investigations a year; 1,250,271 across the period this dataset covers.

What's in a disposition summary that isn't in the administrative record

Every case already carries a structured administrative row — case ID, dates, county, allegation type, disposition category. Those fields answer who, when, and where. They don't answer what did the caseworker actually see.

That part lives in the narrative:

Narrative Insights reads every one of those narratives with small, local AI and extracts key risk indicators as structured data for analysis. The administrative record is not replaced — it is enriched with the qualitative context that was previously locked in prose.

Investigation summaries enriched
1,250,271
Per year on average
≈78,141
Years of coverage
16
Michigan counties
83

The volume above is the AI-solved problem — every narrative gets read. The mention rates on the tiles below focus on substantiated CPS cases (Categories I–III, n = 289,280), where the program-relevant signal lives. All-cases comparisons are shown beside each rate.

At a glance

Headline mention rates by topic — tap any tile to drill into the maps, trends, and top counties.

Substance use
45.4%
substantiated · 35.3% in all cases
Any substance involvement

Highest in Ionia at 59.8%. rose from 39.0% (2010) to 41.6% (2024).

Explore →
Opioids
9.0%
substantiated · 5.3% in all cases
Opioids

Highest in Marquette at 17.3%. held steady around 9.0%.

Explore →
Domestic violence
29.1%
substantiated · 18.5% in all cases
Domestic violence

Highest in Lenawee at 39.1%. rose from 21.1% (2010) to 35.2% (2024).

Explore →
Homelessness
6.8%
substantiated · 4.8% in all cases
Homelessness

Highest in Muskegon at 12.6%. rose from 5.0% (2010) to 8.2% (2024).

Explore →
Housing instability
7.1%
substantiated · 6.4% in all cases
Housing instability

Highest in Muskegon at 13.8%. rose from 6.0% (2010) to 8.1% (2024).

Explore →
Firearms in the home
7.2%
substantiated · 6.5% in all cases
Firearms in the home

Highest in Sanilac at 8.6%. rose from 6.4% (2010) to 12.3% (2024).

Explore →

The problem this solves

A team of human reviewers cannot read ~312 disposition summaries every working day. No structured field captures whether a parent's substance use is current or in remission, whether firearms are accessible, whether housing instability is at the edge of homelessness. It's all in the prose. Left untouched, that information stays locked in free text and never surfaces in any dashboard, any report, or any program evaluation.

Small local AI reads every narrative — all 1,250,271 — and turns those free-text observations into structured data analysts can query, aggregate, and cross-tabulate. Program analysts then work with the enriched structured data alongside the fields they already have.

How this works — and doesn't

Five things to know about how Narrative Insights reads these narratives.

Small tools, one job each

Not the giant AI systems in the news. Each risk signal is handled by a small, specialized program trained to spot one specific thing in a narrative. Small tools are enough because each job is well-defined.

Runs on our own hardware

Every piece of the pipeline runs on the lab's own computers. No narrative is ever sent to a cloud service, a commercial AI provider, or across any outside network. The data never leaves the building.

Small energy footprint

Because we don't rely on massive data centers, running the whole pipeline uses about as much electricity as a household appliance for a few hours. Comparable cloud-AI processing at this scale uses orders of magnitude more energy.

Humans define what counts

Every indicator has a written definition ("codebook") that human reviewers wrote. The AI applies that human-written standard consistently across every case. It's a tool for extraction at scale, not a decision-maker.

Humans verify the work

Every indicator is measured against a set of cases that human coders labeled first. If the AI doesn't agree with the human standard, it doesn't ship. If it drifts, it's pulled and re-trained.

Privacy first

Names, addresses, phone numbers, and case numbers are removed from every narrative before any AI touches it. Only aggregate county-by-year numbers appear in the dashboard; per-case labels stay inside existing data protections.

See the Methodology for how each indicator is built, checked, and released.

Explore the risk indicators

Methodology

How to use the tabs

Every topic tab packages three views of an indicator together: where in Michigan (a county map), year by year (a trend line), and top counties (ranked bar chart with a statewide reference). Tap any county on the map to swap the trend chart for that county's history vs. statewide.

Mention rate, not diagnosis

Every rate on this dashboard is a mention rate — the share of case narratives in which the indicator was recorded. It is not a population-wide prevalence and it is not a clinical diagnosis. See Methodology for the full framing.