StudioKeeper: a studio dashboard for my art business
My art business sells the same work five different ways, each with its own margin and payment schedule. I built the one screen that makes sense of all of it, so I can get back to painting.
the problem · five businesses wearing one smock
My studio's income does not arrive one way. A market weekend pays cash on the spot at full margin. The gallery takes half and pays on consignment, weeks later. Wholesale moves volume at half price. Online trickles daily. A civic purchase lands once and moves every number for the year.
Some products are editions, prints and cards that can be remade forever. Some are originals that exist exactly once. So the retrospective questions that decide what to make next — what is actually worth making more of, which channel deserves the weekend — had no single place to be answered. Neither did the operational ones: how many prints are left, and how much of that market cash belongs to the tax man.
How could one screen give me my whole business, sliced by year, month, channel or product, without becoming a bookkeeping job of its own?
01 · understand the business — margins first, charts later
Before designing anything I sat with a year of my own receipts and mapped how each channel really behaves: what it keeps, when it pays, and what it costs in weekends. That table became the spine of every view that followed. The same $100 sale is worth wildly different amounts depending on which channel it came through, and nothing I had weighed them against each other.
02 · model the data — three tables, one truth
Everything reduces to products, orders, and the line items that join them. Every product carries a SKU, a type (original or edition), a cost, and a restock point. Every order carries a channel and a date, and can hold many line items, because one market day or one big civic sale is still one order. Get that join right and every question becomes a filter.
The source of truth stayed a Google Sheet on purpose. That is where I already log sales after a market day, and a tool you will not update is a tool that lies. Notion holds product notes and photos; the build reads both. Records can be typed in, imported from a CSV, or snapped from a photo of the handwritten market journal, where OCR drafts the line items and I confirm them.
SKU · name · type
price · cost · stock
restock point
order id · SKU
qty · unit price
discount
date · channel · status
venue · total
tax status
03 · build — sentences before charts
The pipeline is deliberately boring: Sheets and Notion feed a small build on GitHub, Vercel serves it, nothing costs a monthly fee. It ended the cycle of paying for one almost-right tool after another and wrestling each into shape.
The design decision that mattered most was not visual. It was that every insight reads as a plain English sentence with the caveat built in. A number that says "up 681%" without explaining the bookkeeping change behind it is not insight, it is a jump scare.
- Honest numbers. Every stat names its comparison window and its asterisk. "Part of this jump is bookkeeping" ships right in the insight card.
- Slicing over dashboards. One set of views filtered by the window you pick — 30 days, year to date, last year, all time — instead of a page per question.
- Alerts that act. Stock crossing a restock point sends an email with the reorder quantity and the next market date. Tax set-asides compute themselves against the filing calendar.
StudioKeeper, live
Switch time windows, read the insights, work the task list, open an order for its line items, check the restock radar and the tax envelope.
outcome
- $37.2K year to date revenue, up 96% against the same point in 2025.
- Five revenue channels and every SKU on one screen, sliceable by any time window.
- Restocking moved from reactive to scheduled; the tax envelope computes itself.
- $0 a month, replacing a carousel of paid tools that each did part of the job.
three lessons
- Meet the data where it lives. The Sheet stayed the source of truth because that is what I actually update after a long market day. Adoption beats architecture, even when the user is you.
- Caveats are a feature. The most trusted card on the page is the one that says read this one gently. Numbers with their asterisks attached get believed.
- The goal is fewer screens. Not more charts. Every view had to earn its place against the question it answers.
a note on the figures
The headline numbers here are real: revenue, growth, channel mix, SKU counts. The order-level rows inside the live dashboard are scrubbed, because those are actual customers, venues and tax records for a business I still run. Same call I make with the employer work on this site — show the capability, not the ledger.
open to marketing operations, analytics and martech roles
Let's talk.
Remote, or Albuquerque and hybrid. If you want the architecture behind any of the work here, ask me and I will walk you through it.