Cr3ma · the resident AI at Roast-n-Post

Why this exists

A short read on the problem we're solving and the approach we're explicitly choosing — and the much more common approach we're explicitly refusing.

← Back to the dashboard

The thesis, in one sentence

Roast-n-Post is a distributed system with eventually-consistent state and no central authority.

There is no master clock. There is no single calendar that all work flows through. There is no traffic cop deciding what happens next. Every actor — clients, artists, producers, studio leads, even physical hardware — pushes their state into one of several systems on their own schedule, in their own format, for their own reasons. The studio functions because humans hold the synthesis in their heads and re-derive it constantly.

That synthesis is the work Cr3ma exists to do.

This is not a project management problem. It is a distributed systems problem — and recognizing it as such is the difference between building yet another scheduling tool (the path most "studio management" software takes, and fails at) and building the thing that actually fits how a real post house operates.

Why "eventually consistent" is the right frame

Every system at RnP has its own writers, its own tempo, its own truth-claims:

These never agree. They cannot agree. Forcing them to agree synchronously would break the studio, because it would require every actor to wait for every other actor to finish writing before doing anything. Real post houses can't operate that way — clients don't queue, deadlines don't wait, and Sean's coffee gets cold.

The studio survives because eventual consistency is good enough most of the time, and humans paper over the lag with verbal updates, hallway conversations, and gut feel. Cr3ma's job is to do that papering-over automatically, faster, and without losing the audit trail.

The asymmetry of authority

Different actors have authority over different facets of project state. No single actor has authority over all of it.

ActorHas authority overPushes state into
ClientWhether the work is acceptable; what notes to give; when to lookFrame.io (notes), Slack, email, in person
ArtistWhether the work is actually done, and what's possible in the next 4 hoursSlack, the timeline, Monday status flips, their head
ProducerSchedule, who's in what room, deadline negotiationTimmy resource calendar, Slack, sometimes Monday
Natasha (Head of Production)Pipeline state, deal funnel, billing readinessTimmy (her primary tool — pipeline + calendar)
Sean & Crystal (Studio Leads)Final call on conflicts, prioritization, client relationshipsMonday board, Slack
The hardware itselfWhether a Resolve render is done, whether a drive is full, whether the color suite Mac is logged inLogs, file system, sometimes nothing at all

The hard truth: the producer and the artist often disagree about what state a project is in, and both are right within their authority. A project can be "Out for Review" in Monday (producer's view) and "still building the secondary on the wide and re-keying scene 14" in the colorist's Resolve session (artist's view) at the exact same moment, and neither is wrong. The system has to hold both.

What Cr3ma actually does

Cr3ma is not a system of record. It does not own truth about anything. It is a synthesizer and a publisher:

The reads are pull-based and pollen-distributed (every system on its own poll interval). The writes are push-based and rate-limited. Nothing blocks anything else. No actor ever has to wait for Cr3ma to finish anything.

The data flow, literally

                ACTORS (push state on their own clock)
   ┌────────┐ ┌─────────┐ ┌────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐
   │ CLIENT │ │ ARTIST  │ │PRODUCER│ │ NATASHA  │ │ SEAN /   │ │ HARDWARE  │
   │        │ │         │ │        │ │ Head of  │ │ CRYSTAL  │ │ (passive) │
   └───┬────┘ └────┬────┘ └───┬────┘ └────┬─────┘ └─────┬────┘ └─────┬─────┘
       │           │          │           │             │            │
       ▼           ▼          ▼           ▼             ▼            ▼
   ┌────────┐ ┌─────────────────┐ ┌──────────────┐ ┌──────────┐ ┌──────────┐
   │FRAME.io│ │      SLACK      │ │   TIMMY.io   │ │ MONDAY   │ │  QNAP +  │
   └───┬────┘ └────────┬────────┘ └──────┬───────┘ └────┬─────┘ └────┬─────┘
       │               │                 │              │            │
       │   AUTHORITATIVE SYSTEMS (each owns its own state)            │
       └───────┬───────┴─────────┬───────┴──────────────┴────────────┘
               │                 │
               ▼                 ▼
        ┌──────────────────────────────────┐
        │           CR3MA                  │
        │  (synthesizer + publisher,       │
        │   pull-based, no central clock)  │
        └──────────────┬───────────────────┘
                       │
       ┌───────────────┼────────────────┬───────────────┐
       ▼               ▼                ▼               ▼
   ┌─────────┐  ┌───────────┐  ┌──────────────┐  ┌────────────┐
   │ CRYSTAL │  │   SEAN'S  │  │  SLACK PUSH  │  │ MONDAY     │
   │   DASH  │  │   SUPER   │  │   (Block Kit │  │ ENRICHED   │
   │   PWA   │  │   MONDAY  │  │  buttons)    │  │ COLUMNS    │
   └─────────┘  └───────────┘  └──────────────┘  └────────────┘
            SURFACES (where humans actually look)

The anti-pattern we are explicitly refusing

Most "studio management software" — and most consultants who try to fix studios — start from the opposite premise: if everyone would just use this one tool, all the problems would go away. They build the central traffic cop. Then they spend years failing to convince humans to actually use it, because the central traffic cop adds friction to every other actor's workflow to benefit one role (usually production management).

We are explicitly not building that. The design constraint is: if Cr3ma vanished tomorrow, no one's day-to-day would get harder.

Not Natasha's. Not Sean's. Not the artists'. They'd lose the synthesis and have to do it in their heads again — which is exactly what they were doing before — but nothing they currently use would break.

That constraint is the test for every feature we add.

What this means for what we build

  1. Every integration is pull-by-default. Cr3ma polls; it does not depend on inbound webhooks. This works even when the studio LAN is sandboxed and the Mac Studio has no public IP.
  2. Every write is reversible and auditable. SQLite records every state mutation with source, timestamp, and detail. Sean or Crystal can always answer "why did this happen?"
  3. No single-point-of-failure. If Cr3ma is down, every authoritative system keeps working — Timmy, Monday, Slack, Frame.io are all independent. Cr3ma adds value but is never load-bearing for the studio's core operation. This is non-negotiable.
  4. Conflict surfaces, not conflict resolution. When two systems disagree, Cr3ma's job is to show the conflict to a human, not to silently pick a winner.
  5. Mobility comes for free. Because Cr3ma is a publisher, the same data renders identically in Monday mobile, Slack mobile, and the Cr3ma PWA. Sean on his iPhone sees the same picture as Sean on his MacBook.
  6. No actor is asked to change tools. Natasha keeps Timmy. Sean keeps Monday. Artists keep Slack. Clients keep Frame.io. The studio's UX surface area does not change — it just gets smarter underneath.

The version of this project that doesn't have a brain

Sean's original ask, before any of this got ambitious.

This whole project started when Sean asked Eric a simple question: could you get Timmy to talk to Monday via an API call to build a simple information passing schema? That's a real scope. It's a legitimate scope. There's a version of Roast-n-Post's automation that stops there, and for some studios it would be enough. It's worth being honest about what that version looks like — because the gap between it and Cr3ma is the whole reason Cr3ma exists, and Cr3ma is overkill if you don't actually need the gap closed.

What "the bespoke version" looks like

No AI. No synthesis. No friction detection. Just well-plumbed integrations:

It would work. It would solve the duplicate-entry problem for the fields that map cleanly. Sean's Monday board would catch up automatically when Natasha booked a project in Timmy. The studio would feel slightly smoother. It would take a couple of weeks to build, maybe a week of debugging, and then it would mostly just sit there and run.

Where the bespoke version stops being enough

The bespoke version is integration plumbing. It moves data around. It does not understand data. Specifically:

The honest framing

The bespoke version is the right answer if you want to spend two weeks and stop. It would solve maybe 40% of what RnP loses to friction. Cr3ma is the right answer if you want to keep building indefinitely against the same architectural foundation — adding sources, adding surfaces, adding intelligence — without ever rewriting the integration layer underneath. The investment cost is higher; the ceiling is much higher.

Both are valid choices. We chose the second because Sean and Crystal manage 125 projects across six pipeline stages with roughly twelve artists, and the friction state — the moments where a project is sitting waiting for a human to notice — is where the studio loses the most money. Friction detection is a synthesis problem, not a plumbing problem. So the answer needed to be a synthesizer.

If you're reading this and thinking I just want the integration: that's a one-week project, and Cr3ma's cr3ma/clients/ code already contains most of it. Pull out the Timmy → Monday flow, drop the dashboard, drop the Slack reader, drop the Frame.io poller, drop the synthesis tables, and you have the bespoke version sitting inside Cr3ma. The two are not mutually exclusive — they're the same shape at different scopes.

Glossary of terms we use internally

Single input / double entry
Natasha enters once into Timmy; Cr3ma writes the same state into Monday. The phrase names what we are eliminating.
Hot Potato
The bouncing of a project between artist and client states (Today → Out for Review → Today → Out for Review → ...). The core RnP project lifecycle.
Super Monday
Sean's existing Monday board, enriched with columns Cr3ma writes (and eventually a Monday App iframe embedding Crystal's dashboard). Sean's UX never changes; the board just becomes smarter.
Friction state
When a project is in "notes" — client sent comments and no artist has acknowledged them yet. The single most valuable thing for Crystal to see, because it's the only state where lag costs the studio money.
Publication
Cr3ma writing synthesized state into a place a human will look (dashboard, Slack message, Monday column). Not the same as authority — Cr3ma publishes; the source system owns the truth.
Authority
The system that legitimately owns a piece of state. Timmy has authority over the deal funnel. Monday has authority over the active project board. Frame.io has authority over client comments. Slack has authority over team communication.