SERVICE · A·02

State-driven lifecycles,
engineered to be enforced.

State machines, audited transitions, conditional gates, operator surfaces. We build the workflow substrate one layer below the glue tools — the layer that knows what work is in flight and who owns it.
TYPICAL STATES
5–14
AUDIT
Append-only
REVERSIBLE
One operator click
SCALE
Millions of lifecycles
What a Gruntflow workflow does.
Four primitives, present in every engagement. The shape varies; the foundations do not.
// 01

State machines, written down

Every workflow we build is a finite state machine with named transitions. Not implicit, not emergent from a CRM — declared, auditable, enforced.

  • Explicit state diagrams
  • Compile-time enforcement
  • No drift between code & docs
// 02

Audited transitions

Every state change carries who, what, when, and why. Reversible by design. The audit log is not retrofit; it is the source of truth.

  • Append-only event log
  • Provenance per decision
  • Replayable to any point
// 03

Conditional gates

Approval gates, escalation paths, branching by attribute or by operator decision. The interesting decisions are surfaced; the routine ones disappear.

  • Declarative conditions
  • Human approval surfaces
  • Time-based escalation
// 04

Operator surfaces

The person living inside the workflow gets a console designed around their actual job — not a flat list of tickets, not a Kanban board, not a CRM stage column.

  • Job-shaped, not table-shaped
  • Bulk actions where they help
  • Reversal in one click
How we build it.
Four phases. We map what you actually do, declare the state machine, ship in cycles, and tune until it disappears.
01
OBSERVE

Watch the real workflow.

We sit with operators, read tickets, follow handoffs. The flowchart you sent us is rarely the workflow you run. We map both.

Annotated as-is workflow diagram
02
MODEL

Declare the state machine.

States, transitions, guards, side-effects. We write it on paper before we write it in code. The drawing is the spec.

State diagram + transition table
03
BUILD

Ship in cycles.

Smallest end-to-end slice first. Every Friday: what shipped, what is still ambiguous, what your operators saw this week.

Working slice + weekly read
04
TUNE

Watch the system breathe.

Operators meet the system; the system meets reality. Some transitions get faster, some get harder, some disappear. We tune for three weeks before we walk away.

Tuning report + operator interview notes
What we build with.
Boring, durable, instrumented. The point is that your team can read the code in three years.
CORE
TS · Python
Typed state machines
STORE
Postgres · Event store
Append-only event log
QUEUE
SQS · Temporal
Durable workflow execution
API
tRPC · GraphQL · REST
Whatever your edge uses
UI
React · Web Components
Operator consoles, not CRUD
DEPLOY
AWS · GCP · on-prem
Audited, instrumented
What we get asked.
A few that come up in almost every workflow engagement.

Those are glue. They are excellent at moving JSON between SaaS APIs. They are not state machines, they do not enforce lifecycles, and their audit story is whatever the underlying tools provide.

We build the substrate one layer below. If your workflow has named states, real lifecycles, audit obligations, or operators who need to override and roll back — glue is the wrong primitive.

Workflow tools optimize for drawing diagrams. State machines optimize for being correct.

Every workflow tool we have inherited had an unreachable state, a transition that ran twice under contention, or a guard that compiled but never fired. We declare the state machine explicitly and enforce it at runtime. The "diagram" is generated from the code, not the other way around.

Usually not. We sit underneath, alongside, or in front of it. The CRM continues to be the record-of-customer. We own the record-of-work.

For BASELINE we replaced the workflow layer entirely; the existing CRM became a read-only customer index. For other engagements we have left the CRM untouched and built parallel state.

One operator action, with a paper trail, undoes the most recent transition. Two actions back-out a multi-step sequence. The event store is append-only — we do not delete history, we add compensating events. Three months in, you can reconstruct the system at any moment in the past.

A purpose-built UI that the operator opens every day. It looks like what they need to do, not like a database table.

For BASELINE it is a dispatcher's console with regional view, current technician status, and a one-click reassign. For NORTHWIND it is a queue of qualified leads with the system's reasoning visible per row. Both took longer to design than to build.

Yes. Postgres, MySQL, Snowflake, BigQuery, Salesforce, custom REST — we wire in. The workflow layer owns its own state but reads cleanly from whatever you have.

The workflow substrate for your operation.

Send a brief. A principal replies within 48 hours with an architecture sketch and a recommendation.