__MK__tabaqat · StrataHealth & Community
Counted need │ Funded inventory — Continuums of Care

Both counts have been
published all along.
Nobody sets them side by side.

A Continuum's counted need beside its funded inventory, for one reference night, on one shared class-break set — so a colour means the same quantity in both panes. The divergence carries its sign and its word, and the unsheltered residual sits beside it, never inside it.

California reference implementation · 44 of 44 Continuums · 447 assertions green Nothing synthetic — synthesizedRows: 0
© 2026 Tabaqat · Built on Strata — sovereign geospatial applications. Every figure is HUD's published 2025 Point-in-Time count and 2025 Housing Inventory Count, verified 2026-08-24 and re-gated 2026-08-25. A planning surface — never a bed-availability screen.
The decision this drives

Where to fund or open capacity — and what goes into the gaps analysis.

The annual gaps analysis obliged by 24 CFR 578.7(c)(3), the homeless-needs input to the Consolidated Plan, the System Performance section of the CoC Application — 40 points of it — and, in California, the system performance and improvement plan inside the HHAP regional action plan.

Deliberately not "find a bed for this person tonight." That is a case-management action, it requires a write path, and it touches beneficiary data. This is a planning surface, and it says so on screen and in every export.

Buyer: CoC lead agency · county human-services department 30 of California's 44 Continuums are government entities

The person who owes the gaps analysis is the person who buys the application. There is no private-buyer reading of this product, and none is offered.

87.1 %of California's funded crisis inventory held people on the 2025 reference night — the reading that looks like a system near capacity

115,583 people were outside that inventory that night.

A utilisation percentage on its own reports a system with room to spare. The residual is the half of the count that ratio is structurally blind to — which is why it sits beside the divergence and is never folded into it.

What already exists — every product opened and read

Both halves of the answer are already published. In two charts, in one PDF, once a year.

What existsWhat it isWhat it does not do
HUD HDX 2.0where every Continuum submits both countsLogin-gated submission system — where the numbers are born, not where anybody looks at them across a geography
HUD's per-CoC report PDFsthe PIT as subpopulations; the HIC as beds by typeTwo charts, one PDF, one Continuum, once a year — no way to set one against the other or against the next Continuum
HUD's CoC GIS Toolkitsboundaries, geocodes, HIC and census, per stateA download for ArcGIS Pro. Federal catalogue record last updated 31 Dec 2019, ACS 2010–14, no REST endpoint named
Esri's health & human services setPIT collection · shelter status · service locatorOwns the collection leg and the live-operations leg. Nobody owns the read
Built for Zero · the HMIS tierthe by-name list, person-level, real timeInside the perimeter, and its unit is a person — the shape a public artefact may not wear
NAEH State of Homelessnessthe only verified product with both 2025 counts in one placeInteractive charts, not a map — and it does not resolve the two against each other by project type and dedicated subpopulation
The regulated deliverable itselfa Gaps Analysis & Needs AssessmentA PDF every few years, assembled from provider surveys and interviews, with no stated formula for computing a gap

The annual gaps analysis that federal rule requires is, in practice, a consultant report produced every few years from interviews — while the two published counts that could answer a large part of it are already sitting in the authority's own files.

The finding that shaped the app

The subtraction everyone reaches for is arithmetic nonsense.

The count covers three project types

Only people in emergency shelter, transitional housing and safe havens are in the sheltered Point-in-Time count. That is what the count is.

Three more are not counted at all

People in permanent supportive housing, rapid re-housing and other permanent housing are not homeless, and are not in the PIT. Their beds are still in the inventory.

So the difference inverts

All beds minus all counted people reports the largest surplus in the Continuums that built the most permanent housing — the exact inversion of the truth.

The forbidden number is not merely absent from the interface — it is not expressible in the domain module.

gaps.mjs throws when asked to pair a count across the crisis/permanent boundary, and three live assertions prove the throw. No control anywhere in the interface can produce it — a stronger guarantee than a footnote saying not to.

This is the single most likely way an application in this space ships a confident, inverted, wrong answer. It is why the project-type axis is load-bearing from the first line of the build, and not a filter added later.

The rule, named

24 CFR 578.7(c)(3), verbatim.

"Conducting an annual gaps analysis of the homeless needs and services available within the geographic area."

  • 578.7(c)(2) — the point-in-time count, at least biennially, while the sheltered count is annual. This is why a Continuum's counted need may be a year older than its inventory, and why a comparison that does not say so is dishonest.
  • Notice CPD-23-11 — one night in the last ten days of January; bed-level targeting collected for chronically homeless people, veterans and youth. Three, and no more.
  • 578.57 — victim service providers keep a comparable database. So DV beds are inside this inventory while the people in them are, by rule, outside HMIS. California 2025: 76,194 − 72,800 = 3,394 beds, shown as a figure and never silently netted out.
How the rule becomes the interface
Kind of readWhat it pairs, and why that is legitimate
Utilisation
reads 1–4
the sheltered count against crisis inventory (ES / TH / SH) — the count counts exactly the people who were in those beds that night
Dedication
reads 5–9
a counted subpopulation against the beds dedicated to it — because bed-level targeting for those three is exactly what the reporting rule collects

The strip names which kind is on screen at all times. The pairing is fixed by the reporting rule, never chosen by the reader — which is what stops this becoming a chart builder.

Permanent inventory appears in exactly one place: a labelled stacked bar in the detail pane, captioned "permanent inventory — shown, never differenced against a count."

The stepper's entire vocabulary

Nine fixed reads. One shared break set. Both vintages, always.

#ReadCounted need · PIT 2025Funded inventory · HIC 2025California divergence
1Crisis · all people66,35176,194−9,843 long
2Crisis · emergency shelter56,29062,521−6,231 long
3Crisis · transitional housing9,73913,292−3,553 long
4Crisis · safe haven322381−59 long
5Dedication · chronically homeless68,94923,833+45,116 short
6Dedication · veterans, crisis2,4982,553−55 long
7Dedication · veterans, permanent8,68629,786−21,100 long
8Dedication · youth, crisis3,5033,308+195 short
9Dedication · youth, permanent8,0863,239+4,847 short

Reads 6/7 and 8/9 are split on purpose. A veteran read that folded crisis and permanent inventory into one denominator would smuggle the forbidden subtraction back in through a side door — permanent dedicated beds hold people who are no longer counted. Split, the crisis side sits within 55 beds of level while the permanent side is long by 21,100. Combined, it reports a comfortable surplus and hides both facts.

Three subpopulations, not four, and the limit is the rule's. A tenth read would be a comparison against a number that does not exist — and HUD's own served copy of this data has exactly that hole, which is why this is a design rule and not a nicety.

The application, first paint

Two panes over the same place, on one break set.

Counted need beside Funded inventory: two flush synced choropleths of California's 44 Continuums of Care, one shared five-class legend across the strip, the divergence and unsheltered residual beneath it, and the sortable Continuum table below.
Shipped build, driven 2026-08-25 — a browser screenshot taken by the automated driver, not a mock-up.
  • One legend, one break set, both panes. Computed from the pooled values of both measures, so a colour means the same quantity on the left and on the right. That is the whole reason the panes can be read against each other.
  • The strip names the kind of readUTILISATION READ or DEDICATION READ — beside the read's own name, on every step.
  • Both vintages beside every number. PIT 2025 · HIC 2025 · boundaries FY2024. On screen, in every popup, in every export. No exceptions.
  • The status line reconciles what was drawn against what was in scope: 44 of 44 drawn · 14 carried forward · 0 no published count.
  • The notice is not the status line. It states the four refusals before the first pixel of data, and it stays put.
26 – 2141,863 – 25,585

The ramp is identical in light and dark. A data colour that followed the UI would make two screenshots of the same reading disagree — and this app's whole argument is that two pictures of the same thing can be compared.

The number that is new

A divergence with a sign and a word — and a residual held beside it.

What the authority already derives from these two counts is a utilisation rate: a ratio of the sheltered count to the beds that held it. It is not a gap, and it is structurally blind to the half of the count that was outside.

counted 66,351 (Sheltered Total Homeless, PIT 2025)
funded 76,194 (Total Year-Round Beds ES/TH/SH, HIC 2025)
= divergence −9,843 beds · long, at 87.1 % utilisation
unsheltered residual 115,583held separate, never inside it

Direction is never carried by colour alone. Every divergence prints its sign and the word short, long or level, so the reading survives a monochrome print and a colour-vision difference. Two tokens per direction — a fill and a text value — measured at 5.20:1 or better in both modes.

Step the read and the breaks, both pane labels, the divergence, the residual, the table's title and sort, and the legend's counts all move in one frame — because they are one expression.

Counted need
66,351
Sheltered Total Homeless · 44 of 44 Continuums · PIT 2025
Funded inventory
76,194
Total Year-Round Beds (ES, TH, SH) · 44 of 44 · HIC 2025
Divergence
−9,843 beds
long · 44 counted / 44 funded of 44
Unsheltered residual
115,583
Unsheltered Homeless · held separate, never inside the divergence · 44 of 44
carried forwardthe unsheltered figure is not from this year's night — 14 of California's 44
not countedsheltered-only, and no unsheltered figure. Never 0
n/a — no beds of this typethe literal . in 447 cells. Never 0 % coverage
no published counta boundary with no row. Never the lowest class
no boundary publisheda row with no polygon. Never a silent omission
suppressednever a blank, and never a computed gap of zero
Each state exists because a probe produced a value that would otherwise have reached the screen as a confident lie.
The signature interaction

Bidirectional, or it does not ship.

Los Angeles City and County adopted: both panes flown to CA-600 with a popup open on each side, the table row highlighted and scrolled into view, and the detail panel filled with the measure, the divergence, the count type and both vintages.
Click a Continuum in either pane and both fly to it, both open a popup, and the table scrolls to and highlights its row. Click the row again and everything releases. Panning either pane moves the other; a re-entrancy flag stops the two oscillating.

The outbound half — row to map — is what every viewer in this shape ships. The inbound half is the one they skip, and without it the second pane is a picture rather than a partner.

  • The stepper /  walks the nine reads, and a selection survives the step, so a reader can walk one place through all nine.
  • The shared legend — click hides a class in both panes, shift-click isolates. A real filter, never a fade — and it changes what is shown, not the reading: the KPIs keep their full denominator.
  • The scope — state or national, plus CoC type as a multi-select including an explicit type not published.
  • The link — scope, read and selection round-trip in the address bar.
  • Esc unwinds one thing at a time — menu, then drawer, then legend filter, then selection, then back to read 1.
64 behaviours specified · 60 covered by a named suite
Proof, not promises

Built, driven and measured — re-gated 2026-08-25.

447assertions green — 179 live against HUD's own hosts · 153 offline · 115 in real headless Chrome
64behaviours specified, each mapped to the suite that exercises it
5.64worst informational contrast ratio, in either mode — the floor is 4.5
0synthesized rows. No generated lane, no seeded inventory, no placeholder

The workbooks are read by index

Both sheets carry duplicate headers whose copies happen to agree on all 386 rows — so a header-keyed read is wrong by luck, not wrong in value, and passes every spot check. The build reads by index and asserts the header text at 21 inventory and 18 count indices.

Screenshots found what 435 assertions could not

The national view fitted a footprint spanning the antimeridian and drew the whole world. At phone width the divergence readout — the product — was pushed off the screen entirely. Both were green on every non-visual assertion.

A licensing defect, caught by looking

The lon/lat chip painted over the OSM/CARTO attribution by 152 px per pane. Not clipped — covered — so the element's own metrics were clean. The guard now tests the attribution's rectangle against every opaque thing the pane paints, at both widths.

Reading the figures: every number here is HUD's published 2025 Point-in-Time count, 2025 Housing Inventory Count and FY2024 CoC boundaries, probed 2026-08-24 and re-verified against the live hosts 2026-08-25. Nothing in this application is generated. Where a source carries no value, the app names the absence rather than filling it.

Stated as boundaries, not caveats

What this application will not do.

  • It never renders availability, in any form. These counts are one night in the last ten days of January 2025. There is no control that could produce a current-state bed figure — and unlike most honesty failures, a person could act on this one.
  • Not a shelter finder, and not case management. No worked list, no status column, no assignee, no per-feature edit, no write path of any kind — so it runs identically on Strata Serve and on ArcGIS.
  • Not a determination. It does not certify or score a Continuum's compliance. It is an instrument the person writing the gaps analysis uses.
  • Never beneficiary-level data, under any framing. The question survives on published aggregates, and that was settled before the design, not after.
  • Single-vintage, deliberately. Both workbooks carry 2007–2025, and a year stepper is the most tempting wrong feature here: federal data-standard changes make some year-over-year subpopulation comparisons invalid.
  • No travel claim at all. No ring, no drive time, no isochrone, no catchment. No routing engine is named because none is called.
  • The Continuum polygon and nothing finer. Not a tract, not a neighbourhood, not an address, not a building.
  • English only, LTR — no switcher, no bilingual aliases. Keyless OSM-derived basemaps, and the only host touched at build time is HUD's own.

All of it is written into the delivered application's own README — alongside the three Continuums it names rather than drops: TX-625 has counts and no published boundary; AS-500 and MP-500 have boundaries and no published count. A tool that hides its edges costs you the project it cannot finish.

Point it at your Continuum

Two counts.
One reference night.

Nothing to extract and nothing to license — the spine is HUD's own published Point-in-Time count, Housing Inventory Count and CoC boundaries. Name your Continuum, or your state, and this reads your geography instead of California's.

The rule is federal, so the build is national. Any of the several hundred Continuums in the United States rests on the same published material and the same obligation. Behind your own perimeter it reads your finer aggregation the same way — where a suppressed cell will meet it on the first afternoon, and read suppressed.

tabaqat.net → Solutions → Health & Community info@tabaqat.net
© 2026 Tabaqat · Built on Strata. Reference implementation over California's 44 Continuums of Care. A planning surface serving 24 CFR 578.7(c)(3) — not a bed-availability screen, not a shelter finder, and not a determination of any Continuum's compliance.
1 / 12