Problem and solution
01/Problem
02/Solution
03/How it works
The system, end to end.
- 01next →
Trigger
Schedule, webhook, or event.
- 02next →
Validate
Deterministic preconditions.
- 03next →
Decide
Agent node: plan the next move.
- 04next →
Act
Tool calls with retries + idempotency.
- 05loop
Verify
Post-condition checks before continuing.
04/Architecture
Components and data flow.
How the moving parts fit together. Solid arrows are synchronous calls; dashed arrows are queued or batched.
- 01
Scheduler
- 02
Workflow engine
- 03
Agent nodes
- 04
Tool registry
- 05
Deterministic nodes
- 06
State store
- 07
Audit log
- 08
Replay tooling
05/Technology
The stack.
- AI / ML
- Agent runtimeTool-use loopsLightweight verifier
- Frontend
- ReactWorkflow editor
- Backend
- PythonTemporal
- Database
- PostgresRedis
- Infrastructure
- KubernetesGitHub Actions
- APIs
- SlackGitHubLinearOpenAI
06/Engineering decisions
What we picked, and why.
- 01
Deterministic graph + agent nodes
Choice
Hybrid DAG with explicit agent boundaries
Alternatives
- Pure agent loop
- Pure DAG
Why
Pure agent loops drifted; pure DAGs couldn't handle unstructured input. The hybrid shipped reliably.
07/Evaluation
What we measured.
- 01
99.2%
Workflow success
- 02
47s
Median runtime
- 03
1.4/wk
Manual interventions
08/Challenges
What almost broke us.
- 01
Replay determinism
What happened
Agent calls weren't reproducible.
What we did
Captured full tool I/O + seed, replay from log.
09/Results
Replaced 11 bespoke automation scripts across ops. One on-call rotation went from weekly pages to monthly.
10/Future improvements
- ›Visual workflow diff
- ›Approval gates for risky branches
Have an interesting AI problem?
Let's build something.
If you're working on something that needs real AI engineering — not just a demo — let's talk.