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.