Every number is computed —
never guessed.
Two Slack reports — company totals and a by-rep breakdown — assembled every Friday by a deterministic workflow. MCP tools compute every count, dollar, and week-over-week delta; the agent only writes the words. It runs unattended on your own box for nothing, assembled entirely from primitives the platform already provides.
The control room fits in your pocket
Every box, run, and dollar is live on iOS. Watch temperatures and utilization, track spend and power draw, review memory — and build or edit agents, workflows, and schedules from anywhere. This pipeline is monitored and managed from the same app it runs behind.
- Live vitals — temps, CPU / GPU / MEM, uptime
- Cost & power, per day and per run
- Configure agents, workflows & schedules
One run, seven steps, one decision to trust
workflow · bablic-migration-summary · DAG (parallel branches, isolated failure)
Pull the pipeline
Your CRM aggregates the deals server-side — count and ARR per status, rolled up to totals or split by rep. The database does the sum.
Flatten to a table
Normalize the response into a flat, keyed table — the shape every downstream step expects.
Snapshot this week
Persist the numbers to your box. This file becomes next week's baseline — the pipeline builds its own history.
Load last week
Read the baseline from exactly seven days ago. Runtime templating resolves the date — no fragile "compute a filename" agent. Missing file? Treated as empty, not a crash.
Compute the deltas
Join this week to last week on the key, and compute every change — counts, dollars, movement per rep. Deterministic to the cent. No model touches these numbers.
Write the report
The agent receives finished numbers and does the one thing a language model is good at — turning them into a clean, readable Slack message. It never invents a figure.
Post to Slack
Deliver the finished report to the team channel — unattended, no hand on the wheel. These two run on a schedule with zero touches.
get_pipeline_summary, delta_by_key, assets.write, the {{date-7d}} templating, the DAG engine — all general-purpose primitives. Point the same machinery at any dataset, any cadence, any channel.The whole report hangs on one join
Every sentence in the message is really one question — what changed since last week — and answering it means joining this week's snapshot to last week's on a key, then subtracting. That step is where a report like this is won or lost.
✓ Tools do the work
Correctness lives here. Same input, same output, every time.
- aggregate the pipeline
- flatten & snapshot
- resolve last week's file
- diff every number
The agent does the judgment
Tone, ordering, emphasis — what language models are actually good at.
- write the headline
- lead with what matters
- phrase the deltas
- keep it scannable
delta_by_key does the join and every subtraction before the agent sees anything; what reaches the model is a finished row with the deltas already in it. Move the join into a tool and the model's job shrinks to writing a sentence — which is the job it is actually good at, and small enough to run on your own hardware for nothing.
What the platform gives you — and what you wire up
Building this was composing primitives, not writing code. Worth seeing where the line sits when you scope your own.
Dispatch provides
Built-in capability — available to every workflow, on every box.
- the
delta_by_keyjoin tool {{date-7d}}runtime templating- snapshot storage on your own box
- scheduling, approvals, run history
✓ You wire up
A row in your box's database. Live the moment you save it — no deploy, no rebuild.
- both report workflows
- the two writer agents & prompts
- the Friday schedule
- which channel they post to
delta_by_key answers "what changed since last time" for any dataset with a key, and {{date-7d}} resolves a filename for any cadence you like. That is what makes the right-hand column an afternoon rather than a project: the deterministic parts already exist, and the job is deciding how to arrange them.
The join is a tool, so nothing is left to guess.
Shipping today · Fridays 14:00 ET → #migration
dispatch