Brief in. Invoice out.
The software our studio runs on: the sale, the plan, the client's portal, the files they approve and the invoice, on one set of records. We built it for ourselves, and it opens to other studios by invitation.
- Runs on
- Web, phone and Mac
- Client side
- English and Czech
- Access
- By invitation
1
Record behind the plan, the portal and the invoice
n+1
A new version for every change. Nothing overwritten
SHA-256
Every file stored once, by its content
1 line
To put your own Claude on the board
Five tools. One loop.
Most studios run these in five different tools. We run them in one, so a proposal, the task it became, the file it produced, the client's yes and the invoice all point at each other.
- 01Sell.A brief becomes a proposal the client accepts part by part.
- 02Plan.Every request lands on one board, in phases or sprints.
- 03Deliver.Rules take the routine; people and agents take the cards.
- 04Show.One portal per client: progress, files to approve, invoices.
- 05Get paid.An accepted phase becomes a draft invoice a person checks.
One record. Every screen.
Our plan, the client's portal and the invoice don't keep copies. They read the same records, so a change in one place is the change everywhere.
The phase holds its tasks, its deliverables and its payment. The client accepted it, and that released the invoice.
One link per client
Proposal, project, files, brand and invoices sit behind one client link, closed in one place.
Frozen when it counts
An issued invoice and a sent deck version never change under the client's feet.
Read by everything
Search, Ask and our agents read the same records the team does. No exports, no sync.
Win it before you plan it.
Every new client of ours starts in Sell: one door for whatever they send, research, a map of routes, approaches put through a panel, and a proposal priced part by part. For now it runs only in our studio.
- 01BriefPasted as it came; sorted into goals, deliverables and what isn't ours.
- 02QuestionsWhat the brief leaves out, drafted as an email and tracked until answered.
- 03ResearchThe client from the open web, every source numbered, kept internal.
- 04ApproachEight to twelve routes. We pick; then a panel argues with each one.
- 05PriceParts priced from hours and the rate card, lean or full.
- 06OfferAccepted part by part in the portal. Won, it becomes a project.
Nothing waits in an inbox.
Every way work arrives ends as a card on the board, in one place to sort. Then phases or sprints, a calendar in step with Google's, and docs and databases edited together.
- A pasted briefIntake reads it into tasks
- A voice memoTranscribed, fields filled in
- A meeting's to-dosFrom the notes page
- Changes asked on a filePer version, from the portal
- A client requestFiled in their portal, with uploads
- A webhookAn automation creates the task
- An agentBottom of the column, always
Automate the routine. Delegate the work.
When a task moves to Review,
email the client.
One trigger, one action, written once and left running. Triggers: a schedule, a task created, a status change, a due date, an incoming webhook (signed). Actions: create or update a task, send an email, call a webhook, generate a report.
Put Claude on the board.
Our coding agents connect with one command. They claim a card, write the plan on it, do the work on a branch and move it to Review, on the same board as everyone else.
Clients can bring their own agent too, on the projects they manage.
- 10:02ClaimedClaimed · NWD-014Hook the case-study CMS to the new templates
- 10:04Wrote planWrote plan · NWD-0144 steps, on the card for you to read
- 10:41AttachedAttached · NWD-014Pull request #18 · preview link
- 10:42MovedMoved · NWD-014In Progress → Review
- 10:43CommentedCommented · NWD-014Two questions for you before this goes to the client
A fence, not a menu.
Agents use the same API, permission checks and redaction as people. There is no side door, and these rules are written into the product, not into a prompt.
- 01
Yours
It belongs to one person and works only on the projects they switch it on for, with at most Editor rights.
- 02
Accountable
To everyone else, its work shows under its owner's name.
- 03
Hands off
It can rewrite a card's description, never its title, priority, due date, assignees or tags.
- 04
Polite
Its new cards go to the bottom of the column, so it can't reorder anyone's queue.
Every token has a scope, checked on every request. An agent token can't send invoices; an invoicing token can't touch the board. Every change to who can see or do what goes into an audit log.
Show the work. Hide the mess.
Each client company gets one portal: proposal, progress, decks, files, their brand and their invoices, in English or Czech. Nobody has to make an account.
Access
An open link, a code sent by email, a passcode, or only certain addresses or domains. Links can expire.
Progress
Phases and the work inside them. Anything marked internal stays internal.
People
Each person on the client side gets one page: every link sent to them, and what waits for them.
Every file. Every version. Every yes.
Deliverables live in folders per client. The client approves the exact version they mean, and brand sheets and decks hand over through the same place.
- 1v122 Sepsha256 3f9a…07c1✕ Changes askedNWD-024 in Triage
- 2v23 Octsha256 b72e…5d0d✕ Changes askedNWD-031 in Triage
- 3v312 Octsha256 e41c…a29a✓ Approved · Jana N.
- 09:12Jana N. opened v3
- 09:20Jana N. approved v3
- 10:02Petr K. opened the folder for the first time. You were told.
- 10:05Petr K. downloaded v3
Never overwritten
Every upload writes a new version. Going back writes a new one too.
Stored once
Files are kept by their content hash; the same bytes are never stored twice.
Links that last
Rename a file or move a folder and the old address still answers.
Safe to open
HTML reports open as sandboxed pages, with their own images, styles and scripts.
They said yes. Bill it.
Payment terms are set per phase. When the client accepts a phase in their portal, its payment is drafted as an invoice. A person previews it, the preview seals it, and then it goes.
87 120,00
CZK · Phase 2
Drafted on accept
- 1The client accepts02DesignFinishedAccept phaseAccepted
14 Oct - 2A draft appearsDraftInvoice2026-041Phase 2 — Design72 000,0030 % of the agreed 240 000 · + VAT 21 %87 120,00
- 3Previewed, sealed, sentPreview · sealedFaktura 2026-041 — Design
Sending checks the preview's seal. Change a line after the preview and the invoice waits for another look.
2026-041.pdf✓ Sent 10:12
Under the hood.What was hard, and what we did about it.
Three apps into one.
In September 2026 IteroZen absorbed our selling tool and our brand portals: one database, one sign-in, one shell. The selling tool's code moved from SQLite to Postgres across 582 call sites, and then its data followed.
A seal on every invoice.
The preview seals the invoice's contents; sending checks the seal. Change one line after the preview and the invoice can't leave until someone looks again. That's enforced by the server, not by asking nicely.
A fence, not a menu.
The agents' tool list used to look like the boundary, but a valid token could reach everything its owner could. Now every token carries a scope the server checks on every request: a board token can't invoice, and an invoicing token can't touch the board. Changes to who may see or do what go into an audit log.
Stored once, by content.
Client files are kept under their SHA-256 digest, so the same bytes are never stored twice, and a push from the command line sends only what the studio doesn't hold yet. Versions are never edited: going back to an old one writes a new version.
Money that drifted.
Imported projects billed slightly different figures than their offers had quoted, by rounding. So a project now bills exactly what the client accepted, and holds if the price changed since.
Deploys that wait.
Every deploy used to end in a hard kill after ten seconds, because the shell never passed the stop signal on. Now the app is told, and finishes the step in flight first.
Tested around the clock.
The unit tests run in Kiritimati, Honolulu and Amsterdam time, because a date that's right in Prague can be wrong at midnight somewhere else. Then a real database and a real browser: 262 test files and 109 browser specs.
The stack.
Bun, Astro and Vue; Postgres with Drizzle; TipTap and Yjs for editing together; S3 storage; one Docker image. On the Mac, a native SwiftUI menu-bar app with widgets.
Where it is now
It runs our studio every day and opens to other studios by invitation, at iterozen.com. Selling works only in our own studio for now; offline use isn't built yet.