I stopped building dashboards six months ago. Every one I ever shipped to a client rotted inside a week. Not because the design was wrong. Because the architecture was.

A static dashboard is a snapshot. The moment you generate it, it starts decaying. A Live Artifact re-reads the source on every open. The numbers are always current because they were just queried a second ago. Same screen, different architecture, completely different operational reality.

This post is the argument for switching, the three failure modes that kill static dashboards in practice, the five places Live Artifacts win, the cases where static still beats live, and a 30-minute migration path.


The Two Patterns

Static dashboard. You write a script. It pulls data, renders HTML, saves the file. You open the file and look at frozen numbers. To refresh, you re-run the script and regenerate the file. The artifact and the data are decoupled. The artifact is a snapshot.

Live Artifact. You write the same view once. Cowork stores it as a reusable artifact. Every time you open it, it re-reads the source. Sheet, CRM, Supabase table, ClickUp list, whatever. The numbers you see are the numbers right now. The artifact and the data are coupled. The artifact is a window.

The difference sounds small. In practice it is the difference between a dashboard you trust and a dashboard you stop opening after week two.


Why Static Dashboards Rot

Three failure modes. I have watched all three play out across client teams using what I shipped.

Failure mode one: the regenerate gap. A static dashboard is only as fresh as the last time someone ran the script. In a solo operation you forget. In a team you have one person who owns the cron and that person goes on holiday. The dashboard is now lying to everyone who opens it and nobody knows when it last refreshed because the timestamp at the top is the only signal and nobody reads timestamps.

Failure mode two: the trust collapse. One stale screen is enough. A client opens the status dashboard, the revenue number is wrong, they ask why, you explain the cron failed, they stop opening the dashboard. From that point on every status update has to be Slack messages and screenshots because the artifact lost credibility. The architectural fix is the only fix. You cannot retrain trust on a static surface.

Failure mode three: the diff problem. Static dashboards force you to track changes manually. What moved since last week? You have to either keep the old file around or build a comparison view. Either way you are doing the work the artifact should be doing. A Live Artifact reading from a source-of-truth table knows what changed because the source knows what changed.

The rule I run now: if a dashboard would be wrong if I went to sleep for 24 hours, it should not be static. Almost no operational dashboard passes that test.


Where Live Artifacts Win

Five places client builds have migrated and would never go back.

One. Pipeline view. Leads live in a CRM list. The Live Artifact reads the list, groups by stage, surfaces overdue follow-ups in red, and shows total pipeline value at the top. Every open is current. Operators open it before every morning sales block. The static version would have been wrong by 11am every day.

Two. Daily callsheet. A start-of-session view that reads the day's calendar, the active client list, today's revenue target, and any stale leads. Five different sources stitched into one artifact. Static would mean regenerating on five different schedules. Live reads each source on open and the whole thing is current in two seconds.

Three. Client status view. The only client-facing status surface in the build. Reads the swim-lane source file, the open project tasks, the change request list. The client opens the link, sees what is in flight today, not what was in flight on the Friday it was built. This single change cuts status-update Slack volume by roughly half.

Four. System health view. Last automation run, scheduled task status, recent failures, integration state. The point of a health view is that it tells you what is broken right now. A static health dashboard is a contradiction in terms.

Five. Financial summary. Reads the accounting source via existing scripts, surfaces this-month invoiced, this-month received, outstanding A/R, monthly trend. Opened every Monday morning. The number on screen is the number that is true. The refresh logic lives inside the artifact, not inside a cron someone has to remember to maintain.

5Live Artifacts Replaced 11 Static Dashboards
~50%Drop In Status Update Slack Volume
0Cron Jobs Still Maintained For Dashboards

Where Static Still Wins

Live is not always right. Three cases where static is the correct architecture.

Snapshots. A point-in-time view for a board meeting, a quarterly retrospective, a client kickoff summary. You want the numbers as they were on the day the meeting happened. A Live Artifact re-reading three months later will show different numbers and lose the historical meaning. Static HTML with a date in the filename is the right answer.

Audit trail. Anything that needs to survive the source disappearing or changing. If you migrate the CRM next quarter, your Live Artifact pointing at the old CRM is dead. A static export at the moment of migration is your only record of the state before the change.

Sendable deliverables. A PDF audit, a one-page proposal, a printable client report. The artifact is the deliverable. It needs to be a frozen object the client can save, attach, forward, archive. Live makes no sense for an artifact that has to leave your system.

Rule of thumb. If the value of the artifact comes from now-ness, go live. If the value comes from then-ness, go static.


How To Migrate A Dashboard In 30 Minutes

This is the exact path I run when a client has a static dashboard rotting in their stack.

Minute zero to five. Find the source. Where does the data actually live? A spreadsheet, a CRM list, a database table, an API. Write it down. If the source itself is stale and only a script keeps it current, you have a deeper problem and you are not ready for live yet. Fix the source first. Live Artifacts work because the source-of-truth contract is honest. Build them on top of a broken data model and they re-read garbage faster. The artifact is downstream of architecture.

Minute five to ten. Strip the dashboard to the four numbers that matter. Most static dashboards have twenty fields and nobody looks at fifteen of them. A Live Artifact should show what you actually act on. Pipeline value, count of overdue items, this week's number, one trend indicator. Four. Maybe five. The discipline of stripping is half the win.

Minute ten to twenty. Build the artifact in Cowork. Define the read contract first. Which source, which fields, which filter, what to render on a failed read, what to show when a field is null. Then prompt Cowork to scaffold the Live Artifact against that contract. Cowork writes the artifact syntax fast. The read contract and the failure-mode definition are the engineering work, not the scaffold. Preview, adjust the layout, lock it in.

Minute twenty to twenty-five. Connect it to your workflow. Save the artifact link in the place you actually start your day. Obsidian daily note, a pinned Slack message, the top of your callsheet skill output. The artifact is only useful if you open it. The link has to live where your eyes already go.

Minute twenty-five to thirty. Kill the old dashboard. Delete the cron. Archive the static HTML. Remove the bookmark. The new artifact has to be the only surface, otherwise you will keep opening the stale one out of habit. Cutover, not parallel run.

Total time, half an hour. Result, an artifact that is current every time it opens, zero ongoing maintenance, zero cron debt.


The Architectural Take

Static dashboards are a workaround for a world without Live Artifacts. We built them because we had to. The infrastructure to read source on demand from a knowledge work surface did not exist, so we wrote scripts, set crons, regenerated HTML, and lived with the rot.

That infrastructure exists now. Once you have it, the static dashboard is the wrong answer to almost every operational question. Pipeline, callsheet, status, health, finance. All five want to be live. Snapshots, audits, sendable deliverables, those stay static for good architectural reasons. Everything else moves.

If you are still regenerating dashboards on a cron, you are paying maintenance tax on an artifact that should be reading its own source. Stop the tax. Migrate one this week. Run it for a fortnight. You will not go back.

The reason I can compress this to a 30-minute migration is that the source-of-truth work and the failure-mode work were done first, on prior builds and client engagements that broke when I got it wrong. The artifact layer is fast once the architecture underneath it is honest. Most teams figure that order out by hitting it. You can also bring in someone who has already hit it.


Want this running on your ops? Book a free 45-min ops mapping call. We'll audit your stack, find the bottlenecks, and show you where Cowork moves the needle. cal.com/formaum/45

Run on a stack that's holding you back?

Book a 45-minute discovery call. I'll map what moves, what stays, and what makes sense for your operation.

Book a call

Frequently Asked Questions

What is a Live Artifact in Claude Cowork?
A Live Artifact is a reusable view that re-reads its source data every time you open it. Unlike a static HTML dashboard, which freezes the data at generation time, a Live Artifact stays current automatically because the source is queried on each open. There is no cron, no regenerate step, no stale window.
When should I still use a static dashboard?
Three cases. Point-in-time snapshots where the value is historical accuracy, audit trails that need to survive the source changing or disappearing, and sendable deliverables like PDFs or one-page client reports where the artifact has to be a frozen object. Everything else benefits from going live.
Do Live Artifacts work outside of Cowork?
The Live Artifact pattern itself is general. Any system that lets an interface re-read its source on open instead of caching at generation time gives you the same operational benefit. Cowork is the surface I use because it is where my skills, plugins, and scheduled tasks already live, but the architectural principle is portable.
How long does it take to migrate a dashboard from static to live?
Around 30 minutes if the source is already clean. Five minutes to identify the source, five to strip the view to the numbers that matter, ten to build the artifact, five to wire it into your workflow, five to delete the old version. If the source itself is stale, fix that first, otherwise you are putting a live window on a dead room.
What goes wrong when you keep both the static and live versions in parallel?
Habit. People open the URL they already had bookmarked. The stale dashboard keeps getting consulted, the live one gets ignored, and the migration never completes. Cutover, not parallel run. Delete the static version once the live one is in place.
GC
Genevieve Claire
Founder, Formaum — Claude Code Expert & Full-Stack AI Engineer

Builds bespoke AI automation systems for multi-location operations. Previously EA Sports FIFA ($7B franchise) and Film/TV VFX on Skyfall, Avengers, Game of Thrones. Based in Vancouver, BC.