Service · Internal Tools · Flask Dashboards

Internal dashboards
your team will actually use.

Retool is $50/user/month. Streamlit is fine for prototypes. Looker is for executives. What your warehouse team needs is a single URL with one card per automation, traffic-light status, one-click manual runs and one-click log access. That's what we ship — localhost-only Flask, no SaaS bill, no per-seat fee, runs on the warehouse PC you already have.

SaaS subscriptions
$0
Per-seat fees
$0
Dashboards built
1 per client
Setup time on client PC
~5m
Why dashboards die

Built for IT, not for ops.

Most internal dashboards fail the same way. They're built once, demoed in a meeting, ignored by everyone they were built for. Three reasons:

Too many features. The dashboard does eight things. Warehouse staff need it to do one. The one thing they need is buried.

Login friction. SSO, MFA, expired session, password reset. Three clicks of friction kills habitual use forever.

No live state. The dashboard renders yesterday's data because the cron broke six weeks ago and nobody noticed. Staff learn not to trust it.

The fix is boring: build less, host locally, render live state, make it the first thing staff bookmark on Monday.

What we build

One URL. One source of truth.

Layout

One tab per store. One card per automation.

Each card shows: last-run timestamp, status (ok/failed/idle), summary counts, run-now button, view-logs link. That's it.

State

Backed by status JSON, not the database

Each automation writes a status JSON when it finishes. Dashboard polls these files. No DB, no migrations, no separate ops surface.

Triggers

One-click manual runs

Staff can fire an automation themselves — useful when a supplier sends a price list early, or a manual upload needs reprocessing.

Visibility

Failed runs surface immediately

Red cards at the top. Click straight through to the log. No more two-day delays between failure and someone noticing.

Auth

Localhost-only — no auth needed

The dashboard binds to 127.0.0.1. The only thing that can reach it is something already on that PC. Auth removed, friction gone.

Tech

Flask · Jinja · vanilla JS polling

Three files of Jinja, fifty lines of JS, one Flask app. Less code, less to break. No SPA, no build step, no node_modules.

What it looks like

Bookmarked at localhost:5000.

Screenshot · Dashboard · six store tabs, automation cards with status badges and last-run timestamps
Boot · 5 seconds on the warehouse PC
$ run_dashboard.bat
Automation Hub · v2.4.1
loading config from .env ... ok
loading 6 store configs ... ok
loading 6 automation registry entries ... ok
Serving Flask app 'dashboard' on http://127.0.0.1:5000
Press CTRL+C to quit
Local-first, intentionally

No cloud. No vendor.

The dashboard runs on the same PC as the automations. Three reasons that's the right choice, not a limitation:

Latency. Polling status JSONs on local disk is microseconds. The dashboard feels instant. A cloud-hosted version would have to round-trip every poll.

Reliability. Internet down, dashboard still works. Cloud service has an incident, your dashboard doesn't care. Vendor changes pricing, your dashboard doesn't care.

Cost. Zero recurring. Forever. No per-user, per-automation, per-database, per-anything fee. The warehouse PC you already have is the host.

If you genuinely need remote access (managers checking from home), we wire it through a Cloudflare Tunnel or a small VPS reverse-proxy. But for 95% of warehouse dashboards, localhost-only is the right answer.

What it costs

Built into your platform, not billed separately.

Standalone dashboard
from $3,800
Bundled with platform
Included
Per-seat fee
$0
Per-month fee
$0

If we're building you the automation platform, the dashboard is part of the same build — you don't pay separately for it. If you have automations already and want a dashboard wrapped around them, that's a standalone project.

Related Builds

Other angles on the
same platform.

Every page on this list is drawn from the same Raw Blend build — different problems, same operating model.

Need a dashboard your
ops team will actually open?

Tell us what your ops team needs to see, what they need to trigger, and where their existing tools fail them. We'll quote a specific dashboard against your stack in 48 hours.

Discovery is free · Quote in 48 hours · No retainer required