Every banking dashboard I’ve seen has the same quiet habit: it fills space.

A metric is missing for this month, so last month’s number quietly stays. A source hasn’t published yet, so the tile shows a dash and everyone scrolls past. A figure comes from a different reporting basis than its neighbour, and nobody notices because both look like numbers.

I built a public dashboard of Bangladesh’s financial indicators — forex reserves, inflation, remittance flows, MFS volumes — sourced from Bangladesh Bank, BTRC and the World Bank. The interesting design decisions are not in what it shows. They’re in what it refuses to show.

1. Tiles that decline to exist

Five of the banking-sector metrics I wanted — NPL ratios, capital adequacy, advance-deposit ratio among them — have no machine-readable monthly source I could verify. Bangladesh Bank publishes them quarterly, inside PDF reports.

The standard move is to leave the last known value up with a small footnote. The honest move is to render nothing. If a metric can’t be sourced this period, its tile simply doesn’t ship to the page. An empty grid slot is a visible question; a stale number is an invisible lie.

This costs visual completeness. That’s the point. A dashboard with a hole tells you where to push your data providers; a full dashboard hides the negotiation you still need to have.

2. Quality badges that embarrass the data

Each section carries a plain-language badge: complete, or partial when any field is missing.

The banking section says partial on my own site, permanently. It will keep saying partial until either the PDFs become parseable or someone hand-verifies them each quarter — and I’d rather advertise that gap than bury it under a confident-looking layout.

There’s a professional reason beyond aesthetics. In bank operations work you learn that a report nobody argues with is usually a report nobody checked. A visible imperfection invites correction; a polished surface deflects it.

3. Per-field dates instead of one global timestamp

The USD/BDT rate updates from a different cadence than CPI, which updates differently than MFS volumes. A single “last updated” banner would claim freshness for every number while being true for maybe one.

So each volatile field carries its own as of date. The rate says 20 August; inflation says April. It looks less tidy than one timestamp. It is more true than one timestamp.

4. “Snapshot” as a load-bearing word

The page header reads Snapshot — April 2026. Not “live”. Not even “latest”.

This was partly forced by honesty about my own pipeline: the underlying JSON is refreshed monthly (now automatically), not continuously, and pretending otherwise would be the first small lie on a page whose entire value proposition is not lying.

But there’s a second effect worth naming. Calling it a snapshot sets the reader’s expectations at the right altitude — these are official figures for a reporting period, not real-time market data. Anyone comparing the reserve figure against a news headline learns something from the word choice itself: both are right; they’re measuring different moments on different bases.

5. The basis problem, stated out loud

Bangladesh Bank publishes total international reserves around $35bn for recent months. My reserve series reads ~$25bn. Both are correct.

One is gross reserves; mine follows the BPM6 net/usable measure — the narrower definition the IMF and most analysts quote when assessing import cover. When I first wired the pipeline, pulling the gross figure straight off the reserves page would have rendered a fabricated 40% jump in the trend line.

Nothing in the data warns you about this. Only a written decision does: the series basis lives in the repo notes, and the automation is forbidden from touching that field by hand-curated policy. Some integrity you can’t compute; you have to legislate it.

What this has to do with actual banking work

None of this is exotic. It’s the same discipline as a branch reconciliation: differences don’t get smoothed over, they get logged, labelled and chased.

The transferable principles:

  1. Design the absence. A missing metric should look missing.
  2. Label provenance per field, not per page. Cadence differs; so must trust.
  3. Pick a basis and write it down — then make your tooling physically unable to mix bases.
  4. Prefer the awkward truth over the tidy falsehood. “Partial” on the homepage costs pride and buys credibility.

Dashboards are how institutions remember. An institution whose memory quietly overwrites gaps with plausible numbers eventually makes decisions on fiction. The fix starts embarrassingly small: a badge that admits the data is incomplete.

That badge is doing more useful work than any chart on the page.