A recipe for working on content.
A plan is a reusable, shared definition — a graph of steps you can run on any content. When you run one against a project, you get an activity: a live, watchable instance with its own state and audit trail.
Invoice processing
Reusable. Org-scoped. Versioned.
- Parse PDF
- Extract attributes
- Enrich (script)
- Reviewer approval
- Post to SoR
INV-2026-04812
Live · started 08:14:02
- Parse PDF
- Extract attributes
- Enrich (script)
- Reviewer approval
- Post to SoR
Steps. Strung together. Seven kinds.
Every step in a plan has a kind. Pick the right one for the job — run a Kodexa module, call a model, drop into a script, hand it to an agent, reach an external service, or bring a person into the loop.
Module
Run a Kodexa module on the content. The workhorse.
kodexa/fast-pdf-modelLLM
Ask a model to generate, classify or extract against a taxonomy.
kodexa/llm-taxonomy-modelScript
Inline JavaScript. Read inputs and earlier results; produce a value.
Agent
Hand the work to an autonomous agent that picks its own tools.
Bridge
Call an external service through a configured endpoint.
Task
Ask a person to do something. The plan waits if you want it to.
Approval
A human gate, with criteria and a captured outcome.
And more
The kind list grows with the platform.
SPLITPer-document fanout
Some steps run once. Others run once per document, in parallel. The plan rejoins when they're done.
SCRIPTInline JavaScript
Read the step's inputs and earlier results. Return a value the next step can use. Bring in reusable modules as sidecars.
// post-process extraction const attrs = steps.extract.result; const total = attrs.lineItems .reduce((s, li) => s + li.amount, 0); return { total, vendor: attrs.vendor, status: total > 10000 ? 'review' : 'ok', };
GUARDConditions & typed inputs
Gate a step on an expression. Validate plan inputs against a JSON schema. Templated titles render with the inputs and project context.
Here's one running.
A real invoice plan: parse the PDF, extract attributes with an LLM, run a script to enrich, wait for an approval, then post the result. Each step's outcome lands on the content object's audit trail.
Parse PDF
OCR, page segmentation, table extraction.
Extract
Pull structured attributes against the invoice taxonomy.
Enrich
Match vendor, normalise codes, compute totals.
Sign-off
A reviewer approves the attributes that carry risk.
Post status
Persist the approved content object to the system of record.
The content object holds the work.
The activity plan is how the work gets done.