Forward Deployed Engineer · case study

FieldOps Co. Procurement Approval, Automated

The written brief, a node-by-node runbook of every workflow, and a live environment you can submit a real request to and watch it route.

The short version

FieldOps Co. runs procurement approvals across eight business units. Requests arrive by email and form, get priced, and route to the right approver by amount. Today that is manual, and a request can sit for days with nobody sure where it stopped.

I built one business unit end to end in n8n, on a pattern that carries over to the other seven. The workflow prices each request itself against the approved vendor catalogs, and that price is what decides where it routes, so the requester's guess never drives the decision. Everything that changes between units lives in data tables the platform team edits, so onboarding the next unit is a few rows of config and the workflow logic stays the same.

The decision path has no model in it. Routing a spend approval should be auditable and repeatable, so correctness here is proven by a test suite that runs the same way every time. I only reach for AI where a plain rule cannot do the job.

Every request writes one audit row when it finishes. Cycle time, stall rate, off-contract rate, and rework rate are all queries against that row, so the measurement comes for free from running the workflow. A monitor watches every workflow and alerts on Slack and email the moment one fails.

1 of 8
One business unit built end to end, on a pattern that ports to the other seven.
3 tables
Onboarding the next unit is row edits to the config tables. The workflow logic never changes.
19
Golden regression cases that gate every change before it reaches production.
0
Models in the decision path. Routing is deterministic and auditable.

Read the package

Open the live environment

The intake form is live. Submit a procurement request and watch it price against the catalogs, route by amount, and post a decision. The scenario is FieldOps Co.; the data in here is mock.
Submit a request
The n8n instance is open too. Open the editor to see the workflows on the canvas, the config tables that drive them, and the execution history behind the demo. Sign in with the shared demo login. It will be provided at the time of the interview so we can walk through it together.
Open n8n

What is inside

The pipeline
Intake to record in six zones: normalize the request, load the unit's rules, price against the catalogs, route by amount, approve on a Slack card that works from a phone, and write the audit row. A rejection sends the request back for revision so it can be fixed and resubmitted.
procure-to-approve + revision loop
Safety
A dev sandbox and a golden regression suite that runs the workflow's own decision code, so a change to one unit cannot quietly break another. A global error poller checks every five minutes and alerts on Slack and email the moment any run fails.
regression runner + error poller
Measurement
One outcome row per request at its terminal state, with submitted and decided timestamps and revision lineage. Cycle time, stall rate, off-contract rate, and rework rate are queries against that table, with no separate dashboard to build.
pr_events audit log

The spine underneath it all: n8n orchestrates, the rules and catalogs live in data tables the platform team owns, the approval runs on a signed single-use link that holds even when Slack is down, and the notification channel is easy to swap: Slack here, but Teams, Google Chat, or any provider by changing the send node.

Built to be owned

The team that maintains this is often deeply technical without being coders. Network engineers, database engineers, people who understand systems cold but do not write code every day. n8n is built on the low-code premise, and AI covers the rest of the gap. Someone who understands the concept of the workflow can read it, change a rule, and extend it with an assistant next to them.

That is what the config-in-tables design and the documentation are for. The whole doc set also ships as a single plain-text file, llms-full.txt: the maintaining team loads the entire system into their assistant in one file, so it can help them read and grow the build from day one. Understand the first principles of what a system does and you can run it, whether or not you write the code.

What it leaves out

The pilot proves one unit end to end and the pattern to roll out the rest. It stops where the next decision belongs to FieldOps. Three things are left as roadmap on purpose, with the reason for each.

Automated RFQ sourcing
An item with no approved vendor is detected today and routed to a sourcing state. The three-quote request itself is specified but not yet built.
ERP write-back
The workflow stops at ready for PO. The ERP owns that sequence, so writing the purchase order back is the next integration.
A reporting dashboard
The measurement is already captured in the audit table. The dashboard puts the stats, errors, requests, approvals, and rejections on one screen.