NACH Analytics
Demonstration project. Public data.

One question about Houston construction

A demonstration on real public data, built around one decision. The page puts one number at the top, marks one thing on the chart, and writes down every reason the numbers could mislead you.

Our AI assistant asks about your project and can build you a free plan.

Houston residential building permits

Is residential construction speeding up or slowing down?

One screen for one decision: whether the direction of residential construction supports committing capacity. Read it as a trend, not as this quarter's order book.

Permits in the last 12 months Data through December 2025

12,033

+5% against the previous 12 months, and rising for 2 months.

December 2020 to December 2025 December 2004 to December 2025

2020 2021 2022 2023 2024 2025
The marked point is May 2025, where the 12-month total last changed direction.
no usable data 2004 2007 2010 2013 2016 2019 2022 2025
The marked point is May 2025, where the 12-month total last changed direction.
Latest month
1,803

December 2025, the most recent month in the data

Same month a year earlier
966

+87% year over year

Single-family share
16%

of that month's permits

Direction
Rising

2 months on the 12-month total

Last turn
May 2025

when the 12-month total last changed direction

Same month, five years
2021 1,822 2022 824 2023 1,177 2024 966 2025 1,803

December each year

What this does not tell you

  • Permits are not completions. They are applications and approvals, so they lead actual building work by a gap this data cannot measure.
  • A permit is not a contract. Some never get built, and none of them are orders for your business.
  • Compare a month with the same month a year earlier, never with last month. Permits are seasonal, and consecutive months invent trends that are not there. That is why the number at the top is a 12-month total.
  • A single large multi-family project can dominate a month. In December 2025 multi-family permits were 84% of the total, which is what moved the year-over-year figure. One large project barely moves the rolling total.
  • City limits are not the metro area. Work in the surrounding counties is not in here at all.
  • There is a hole in the published data, and the chart leaves it in plain view. In the source file, 2019 repeats the previous year exactly: every month, every column. We cannot tell whether those months are missing or were duplicated by mistake, so they are excluded, any 12-month window touching them is dropped, and the line is broken across the gap. Nothing is interpolated and nothing is carried forward. The default range starts after the break; the full history shows it.
  • The data lags. The snapshot was taken on 2026-09-21 and the most recent month in it is December 2025. Hiding that gap would make a dashboard worse than none, so it is stated here.

This application uses data made available by the City of Houston through its Open Data Portal (https://data.houstontx.gov). The City of Houston makes no claims as to the content, accuracy, timeliness, or completeness of the data. Snapshot taken 2026-09-21. The most recent month the portal publishes is December 2025, so the figures are that old at source, not because the page is stale. The file is committed to our repository, so this page cannot change without a commit. Source dataset.

The problem

Say you run a trades business, supply building materials or work as a subcontractor. You have to decide whether to commit capacity: hire, buy stock or hold. Getting it wrong in either direction is expensive. The information that would help is public, but not in a shape you can use.

Our own dashboards page argues for one decision, one number first and one thing marked, so it was fair to ask whether we follow that advice. We built a dashboard that does exactly that.

Permit counts move before the construction work does, which makes them a leading indicator of residential construction activity in the city. That head start is what makes them useful for a capacity decision, and it's also what makes them easy to misread.

The data

The source is the City of Houston Open Data Portal: residential building permits by month, 2004-01 to 2025-12. That's 264 monthly rows, each with single-family, multi-family and total counts.

The portal's terms allow reuse, including commercial use, with attribution. The required wording appears under the dashboard, unedited.

We keep the snapshot in our repository with its date in the filename, so this page can't change just because the source moved. Refreshing it takes one command and leaves a commit you can see.

How we approached it

We started from the decision: "Should I commit capacity for the next quarter?" Anything that didn't help answer it stayed out, including several things that would have looked good.

Why the top number is the dull one

The obvious headline was the most recent month against the same month a year earlier. In this data that's a jump of 87%, the kind of number that gets quoted in a meeting.

It's also mostly one large multi-family project. Single-family permits were only 16% of that month. Leading with it would have put the loudest number ahead of the one the decision needs, which is exactly what our dashboards page warns against. So the number at the top is the 12-month rolling total. It's slower and duller, and much harder to fool. The monthly figure is still there, one row down, next to the share that explains it.

One thing marked

The orange mark is the month the 12-month total last changed direction. A turn only counts once the new direction has held for three months, so ordinary wobble doesn't get promoted to a signal. Someone reading the raw monthly counts would miss that point.

How it is built

The numbers come from a dated snapshot of the city's published file and are computed when the page is built, so nobody types them in by hand. The page works with JavaScript turned off, because the figures, the chart and the caveats are all in the page itself. Nothing loads from a third party.

Methods and tools: a fetch-and-check script that refuses to write if the source columns change, calculations run at build time, a hand-written chart, and about forty lines of browser JavaScript for the optional hover readout.

What we can show

The dashboard above is the result, on real data, with every number computed from the committed snapshot.

If we were walking you through it, we'd point at the box headed "what this does not tell you". It says that permits are not completions and a permit is not a contract; that one month is seasonal and can be dominated by a single project; that city limits are not the metro area; and that the data lags. People trust a dashboard that states its own limits, and they abandon one that hides them the first time they check it.

What it demonstrates

Most of the work on this dashboard went into deciding what to leave out. A version that states its limits is usually less exciting than one that leads with the biggest percentage, and it is more useful.

What decision should your dashboard make easier?

Tell us the decision you're trying to make. If we're not the right people, we'll say so.

Our AI assistant asks about your project and can build you a free plan.

Or book a 30-minute call

Nacho AI

NACH Analytics' AI assistant

Book a call