Perennial

Studio management software for independent artists and designers.

The home canvas: sketches, notes, tasks, and live studio objects on one surface, with the assistant anchored below.
Role
Founder: research, product design, and engineering
Timeline
April 2026 – Present
Team
Solo
Status
Live in beta

Try it at app.perennial.design with demo@perennial.design and PerennialDemo1.

Problem

After a year consulting for small studios, every engagement ended in the same place: good work and chaotic operations. I interviewed more than a dozen practitioners, from furniture designers to ceramicists to public artists, and heard the same story each time. Plans lived in a notes app, clients in a spreadsheet, and invoicing in a service of its own.

The research corpus: recorded calls, transcripts, and the working notes behind the product.
The research corpus: recorded calls, transcripts, and the working notes behind the product.

The tools that exist sit at two extremes. Salesforce is built for sales teams and feels absurd at studio scale. Notion hands you raw blocks and leaves the system design to you, which is exactly the work a maker wants to hand off.

How might we give a one-person studio the operations of a high functioning business, without asking them to become an operations person?

Solution

One connected model.

A client connects to their projects. Projects roll up time and expenses, which become invoice lines, which reconcile against the real bank feed. Every screen reads from that one model, so every screen tells the same story.

Every record opens onto a canvas

Projects, contacts, and organizations each open onto their own canvas, with the structured fields alongside. Makers think spatially, so the software opens the way a studio table does.

The canvas: sketches, notes, and live studio objects together.
Projects: cards with status, tasks, and deadlines.
Notes: asking about a contact from inside a note.
Money

From tracked time to money in the bank

Invoice lines pull from tracked time and expenses, go out as a branded email with a hosted payment page, and get paid through Stripe straight into the studio's own account.

Plaid brings in the real bank feed, and a deposit that matches an open invoice gets proposed as the match.

Banking in dark mode: the real feed, categorized and matched back to the invoices that produced it.
Banking in dark mode: the real feed, categorized and matched back to the invoices that produced it.
Ash

A pleasant, knowledgeable AI assistant

Press Space on any line and Ash is there. Factual questions get answers from live data. Judgment calls, like whether a 50 percent gallery split is fair, get the real options and their tradeoffs.

A hand-written knowledge base and a research brief on each user's corner of the market keep the advice local to the practice.

Outreach and opportunities

Pipelines for press, galleries, and stockists, with a parking lot for conversations that go quiet, beside a hand-curated feed of fairs, open calls, and grants.

Outreach: logging a follow-up straight from the pipeline.
Opportunities: curated fairs, open calls, and grants with real deadlines.

Beta

11 weeksFrom first commit to a working beta
462Commits, every layer from schema to interface
10Working users in beta

The beta ran through a shared Slack. A question in the channel became a conversation about what the person was actually trying to do, then a decision, then a ticket filed straight from the thread.

The beta Slack: the welcome note, and a real bug report beside the weekly error triage.
The beta Slack: the welcome note, and a real bug report beside the weekly error triage.

Process

Four moments that set the direction of the app:

1. Onboarding

In order to make a custom-feeling application for users, a comprehensive user onboarding experience is important. I weighed the options of including an assisted personal demo, making the process self serve, and how much of the onboarding phase is mandatory before viewing the application.

Onboarding step one: Welcome to Perennial, asking for a name and studio name. Onboarding step two: What do you make?, with discipline pills like furniture, ceramics, and graphic design.
Key onboarding screens.

2. Three options for every feature

Before any code, I made 28 standalone HTML wireframes. Every feature started as three directions, annotated red for what was still undesigned and blue for decisions to revisit, and filled with real maker content, since “Walnut slab idea for gallery show” tests line length and tone in ways placeholder text can’t.

Wireframe of the notes surface with the assistant's floating window. Wireframe of the outreach pipeline.
April wireframes. Red marks what was still to be designed.

3. Modeling the studio as one graph

Building the connected studio graph was iterative. It came together as I built the MVP, and seeing the full graph as one was the largest source of pride for me. Every surface reads from one connected model: an invoice line knows which time entry produced it, and a deposit knows its invoice. Row level security on all 43 tables from day one made the database itself the permission layer, so going from one studio to many is a switch.

The data model: clients, projects, time, expenses, invoices, and the bank feed as one connected graph.
The data model: clients, projects, time, expenses, invoices, and the bank feed as one connected graph.

4. Teaching Ash to act on the user’s behalf

Most of the people Perennial serves are skeptical of AI, so the assistant had to earn its place. I shaped Ash’s behavior in three layers:

Every release is gated by judged evals at 80 percent. The first version graded answers on whether they contained specific numbers and dates, which rewarded exactly the false confidence skeptics spot instantly, so I rewrote the tests to grade the behavior itself.

The Stack

Designs start in Figma. Beta testers report bugs and ideas in Slack, and I triage every one by hand before it becomes a Linear ticket, since text from users is untrusted input. Conductor runs Claude Code on several tickets at once, each in its own branch, and every pull request on GitHub gets a Vercel preview before it merges. Supabase holds the data, PostHog shows how people actually use the app, and Sentry feeds errors back into the same queue each week.

FigmaDesign SlackCommunication LinearIssue triaging ConductorHarness Claude CodeModel GitHubRepo VercelDeployment SupabaseDatabase SentryError tracking PostHogAnalytics

Status

Perennial is live and usable end to end: multi-tenant, documented, and waiting behind its eval gate for the next change. There are hundreds of features I’d like to implement, and am focusing my efforts on fixing bugs and talking with customers as I start to monetize the software.

Perennial was the tool I originally built for me, but quickly morphed to serve the hundreds of designers and artists I went to college with and met in my early career. I am excited to continue to build and pivot the software as new tooling makes creative development and operations more expansive.