Built twice before breakfast
Production Attendance Dashboard, V1 + V2
May 2026 · V1 in 23 min · V2 in 15 · 4 visual styles
← carried in TDD protocol — from the Briefing Agent
→ carried forward Portable build-kit pattern
→ carried forward The dark ops-center look
Who hasn't clocked in by 7:10am? A wall-monitor dashboard that answers at a glance — built twice in one morning, on entirely made-up data.
Timeline: from timestamped test logs. May 14, 2026: V1 from red baseline to all-eight-tests-green in about 23 minutes (~5:00–5:25am); V2 — a rebuild against a realistic payroll-export format — red to green in 15 more minutes (5:35–5:50am). The following week: four visual styles, a fullscreen version, and a portable rebuild kit. Every employee name and number is synthesized; no real workforce data was ever involved.
What it is
A Python script reads a time-punch export and an employee roster, joins them, and renders a dark, full-screen dashboard: nine work areas, each showing expected / clocked-in / missing, color-coded green or amber, with missing people listed by name and location. It's a sandbox rehearsal of a real operations problem — knowing at shift start who's missing, without anyone walking the floor with a clipboard.
Why I built it
Third test-driven build in three days, and the first one aimed at a visual deliverable instead of an email. Also the first with genuinely tricky input data: V2 uses a realistic fake of a payroll system's export — 26 columns, real datetime quirks, and employee IDs with leading zeros.
The walls
The session was supposed to be a different build. I opened it to build the Briefing Agent — but the document I attached turned out to be the dashboard spec instead. We pivoted on purpose, and the dashboard got built. The stranger part surfaced later: this session's logs confidently recorded the Briefing Agent as "never started" — when it had shipped the previous day, in a subfolder this session couldn't see. Three official-looking documents recorded a false belief because AI sessions don't share memory and only see the folder they're pointed at. I only caught it months later, reading both logs side by side.
Leading zeros eat employee IDs. IDs like
0001140silently become1140the moment anything treats them as numbers — and then nothing joins to anything. V2 made string-preservation a dedicated test, with three canary IDs tracked through every step. Those same three IDs show up hard-coded in a database script I built a month later: the lesson stuck.The file-writing tool truncated my CSS. Writing the dashboard's styles through the normal file tool kept cutting them off mid-block. Workaround: push the whole script through the shell instead. Mundane, undocumented, and exactly the kind of thing that burns twenty minutes.
Excel locked my roster file. Windows had the roster spreadsheet locked (Excel/OneDrive held it open), so adding a column meant writing a new file and re-pointing every script at it. The awkward
.NEW.xlsxfilename is still there in the folder — a fossil of the workaround.Racing the auth token. The session started with about 37 minutes left on the auth token and I chose not to re-authenticate. The log tracks the countdown and notes, at the end: made it with 14 minutes to spare. Cheap thrills, but it's also why syncing files to OneDrive kept getting deferred — and it never did happen in-session.
"THREAT STATUS" on a factory wall. One of the four visual styles I tried was a threat-map aesthetic. Seeing it, the obvious problem: nobody wants the word THREAT over an attendance board. Renamed to "OPS STATUS." The one recorded instance of the human vetoing the machine's taste.
Dead ends
Three of the four visual styles — threat-map, gamer HUD, and a spacecraft terminal — were built as complete renderers for an A/B comparison and lost to the clean "Professional Ops Center" look. They still run; they just didn't win. V1 itself is a superseded prototype: invented data format, light theme, replaced the same morning by the realistic-format V2.
What I'd do differently
Do the file sync instead of deferring it three times. Check the sibling folder before declaring something "not started." And confirm the right document is attached before opening a build session — that one bit two sessions in two days.
What carried forward
The portable build kit — a single document with three rebuild paths (copy-and-run, a paste-in prompt for a fresh AI session, or type-the-code-yourself) — became my standard way of making a build survive contact with a new machine. The filter-pipeline and ID-normalization rules moved wholesale into a SQLite rebuild a month later. And the dark ops-center look walked straight into the Pixel Agents dashboard.