The SF Child Care Dashboard wasn’t planned. It grew — the way understanding grows. One layer of nuance at a time, each one triggered by the one before it.

The ZIP code that started everything

It started with a ZIP code. Not a research agenda. Not a grant proposal. A committee member looking at a spreadsheet and saying, “We don’t even know how many slots exist in our district.”

That frustration became the propeller for everything that followed. It pushed me into the state licensing database. The licensing database pushed me into geocoding. The geocoding pushed me into district boundaries. And each push revealed a new gap that someone in the room had already been trying to name.

What people don’t see

Here’s what I learned early on: everyone in the room is working from a different picture of reality. A policymaker sees a funding formula. A provider sees empty cribs and a waitlist. A parent sees one closed door after another. A researcher sees a table of numbers that doesn’t match any of those experiences.

The real work isn’t adding more data. It’s finding the discrepancies between what different people believe is true — and then making sense of what’s actually available to see where those worldviews diverge and where they align.

People see a dashboard. They don’t see the dozens of conversations that surfaced the gaps between competing realities.

A committee member says the licensing data doesn’t show which programs accept subsidies. That’s a new layer — now I need to cross-reference two datasets that were never designed to talk to each other. A colleague mentions that two federal programs overlap at the same sites, but nobody tracks that. More nuance — now I’m pulling from three separate agencies to map connections that didn’t exist in any single database.

I realize the small family child care homes aren’t in the public data at all. If I don’t name that gap on the dashboard itself, someone will look at the map and think it’s the full picture. They’ll make decisions based on incomplete data. So the disclaimer goes in — not as a footnote, but as a design decision to prevent wrong conclusions.

In theory, the agencies could assemble this at a different level — they have access to the data. But having data and having the capacity to connect dots across licensing databases, contract records, and census tables in a form that serves a local committee — those are different things. The agencies hold the pieces. The people in the room know which pieces matter.

Each conversation adds a layer. Each layer reshapes what I build next.

Years of accumulation

None of this happened in a sprint. My mother has had her family child care license since 2010. I’ve been in this world — attending planning council meetings, budget hearings, provider association calls, coalition conversations — for years before I ever opened a dataset.

A provider describes what happens when families can’t find her in the system. A policy staffer walks through how the funding formula actually works. A committee member explains why the waitlist numbers don’t tell the full story.

You can’t download that context. You accumulate it. It lives in the questions people ask, the frustrations they name, the corrections they offer when the data doesn’t match what they see on the ground.

By the time the dashboard took shape, the architecture wasn’t designed — it was already organized by the conversations. Five disconnected public data sources, stitched together because different people had told me, at different times, that the connections mattered. The tool reflects the understanding. The understanding took years.

The supply-and-demand leap

Then came a harder question. Not “where are the programs?” but “is there enough?”

This is a different kind of nuance. The first phase mapped what exists. The second phase required understanding what’s needed — and those numbers come from completely different places. Census data. Income thresholds. Eligibility rules that change every year.

A member points out that families cross district lines for care. Now I need corridor-level analysis, not just district-by-district. Another flags that subsidy eligibility is expanding — now the dashboard needs to show not just current demand but future demand.

The research problem always comes back from the room. Someone names a discrepancy — what they see versus what the data shows. That becomes a technical question. The technical answer reveals new gaps. Those gaps go back to the room. The room realigns around what’s now visible. The cycle continues.

Organizing at different levels

The hardest part isn’t getting the data. It’s deciding how to arrange it so different people can use it.

A citywide view for the public who needs the big picture. A district view for the supervisor’s aide who needs to know their neighborhoods. A corridor view for the planner thinking about regional capacity. A ZIP code view for the researcher drilling into specific communities.

Same data. Four lenses. Each one exists because someone in a meeting said, “Can you show me just my area?”

That’s what the geographic lens toggle is — not a UI feature. It’s the accumulated result of every time someone asked a question the dashboard couldn’t yet answer.

Answering an eight-year-old question

In 2018, I asked a simple question: why are we expanding capacity without first verifying how many existing providers have vacancies? In February 2026, a supervisor asked the same question at a budget hearing — and the system still didn’t have the answer.

The supply-and-demand analysis on this dashboard is that answer — or the beginning of one.

When you break it down by district and corridor, the data tells you something no citywide average can: where providers are struggling and where there’s still room. One district has more licensed slots than children. Another has families lined up with nowhere to go. A corridor where family child care homes are closing has different needs than one where centers have open enrollment.

That’s the nuance the system has been missing. Not “is there enough?” in the abstract — but where is there enough, for whom, and through which programs? The dashboard can show that nearly half of all licensed facilities sit outside the subsidy network. It can show which districts have surplus capacity and which have genuine shortages. It can show what happens when you expand eligibility without expanding provider participation.

These are the numbers that should precede every expansion decision. Not because expansion is wrong — but because building new capacity while existing providers can’t fill their programs is a structural failure, not a supply problem.

That’s what I was trying to say in 2018 with a survey and an email. The dashboard says it with data the whole room can see.

What this teaches

If you’re an advocate or a community leader thinking about building something with data, here’s what I’ve learned:

You don’t need to know the whole picture before you start. I didn’t. I started with a ZIP code and some dots on a map. The structure emerged from conversations.

Every meeting is data collection. Not just the formal presentations — the sidebar comments, the frustrated questions, the “you know what would be useful?” moments. Those are where nuance lives.

The real work is finding discrepancies in worldviews and realigning around what’s available. Someone says there aren’t enough infant slots. The data says capacity looks fine. Both are right — the data counts licensed slots, not open enrollment. Your job is to surface those discrepancies so the room can see the same picture and talk about what’s actually happening.

Public data exists, but it’s scattered across agencies that don’t coordinate. Nobody assembles the full picture because nobody’s job description says to. But if you’re in the room where the questions are being asked, you’re in the best position to connect the dots.

AI is a force multiplier, not a replacement for understanding. I used AI as a pair programmer throughout this project. It made me faster at execution. But it couldn’t attend the meetings. It couldn’t hear the frustration in someone’s voice when they said “that number doesn’t match what I see.” The direction comes from the room. The tool helps you build what the room needs.

The nuance keeps building

The dashboard today has over a thousand facilities mapped, supply-demand analysis across 11 districts and 27 ZIP codes, and program tags from 6 different data sources. But it’s not finished. It can’t be.

Every time I bring it to a meeting, someone asks a question it can’t answer yet. And that question becomes the next layer.

That’s how tools grow. Not from roadmaps — from rooms.