Three primitives.
Composed to fit.
Most automation problems decompose into three primitives: a workflow that runs on a trigger, an agent that reasons over context, an integration that moves data between systems. Each is delivered to spec, with documentation and access on day one.
Workflow automation
End-to-end data flows that replace manual work. Specified as a sequence of triggers, transforms, branches, and retries. Built once. Run forever. Inspectable at every step.
trigger: source: inbox.invoices@nullfield.ai schedule: on_receive steps: - parse.attachment → application/pdf - extract.line_items → schema:line_item[] - classify.gl_account → llm:claude-haiku-4-5 - validate.totals → assert: sum(items) == header.total - post.sevdesk → endpoint:/v1/vouchers - notify.operator → channel:slack#bookkeeping retries: 3 (exponential, max 60s) on_error: route → queue.review_manual sla: p95 < 14s
AI agents and assistants
Autonomous agents that reason over internal documentation, call tools, and execute multi-step tasks. Bounded by a specification, not by a prompt. Evaluated against real cases before they reach production.
{
"scope": {
"inputs": ["ticket.subject", "ticket.body", "customer.tier"],
"outputs": ["category", "priority", "draft_reply", "needs_human"]
},
"tools": [
"search.kb",
"lookup.contract_terms",
"fetch.recent_tickets"
],
"guardrails": {
"must_cite_source": true,
"must_escalate_when": "priority >= P1 OR sentiment.angry",
"must_not": ["promise.refund", "modify.account"]
},
"evaluation": {
"dataset": "tickets_q1_2026 (n=412)",
"threshold": "category_accuracy >= 0.92",
"human_review": "weekly, sample n=20"
}
}
System integration
The connective tissue between systems that were never meant to talk. API layers, webhooks, sync jobs, middleware. Data moves on a contract. State is reconciled. Nothing is silently dropped.
source: hubspot.deal target: sevdesk.invoice direction: one-way (source → target) trigger: deal.stage = "closed-won" mapping: deal.id → invoice.external_ref deal.amount → invoice.total deal.contact.email → invoice.recipient.email deal.line_items[] → invoice.positions[] idempotency: external_ref (upsert) on_conflict: source wins, log to audit.crm_billing backfill: supported via /sync/replay?from=:date
+ // ENGAGEMENT
Two ways to work together.
Build a system, hand it over.
A specified workflow, agent, or integration delivered against a fixed scope and timeline. Documentation and access on day one. Standalone, not a dependency.
- Discovery and specification, signed off before code
- Sandbox build, tested against real data
- Deployment, training, source code handover
- 30-day stabilization window
A system that grows with you.
Ongoing engineering capacity for organizations running multiple automations. New flows shipped on a sprint cadence. Existing systems maintained and extended.
- Roadmap reviewed quarterly, executed in two-week sprints
- On-call coverage for production systems
- Cost-tracking, eval harness, monitoring included
- Cancel on 30 days notice