Product Use cases Compare Pricing Docs Blog
Read the docs Join the waitlist
compare · workflow & agent builders

unhardcoded vs workflow & agent builders.

They own the graph; we own where each step's model decision lives. Vellum, LangGraph, n8n, and Dify orchestrate the flow — but the per-step model is pinned in the node. unhardcoded moves that choice into a policy you change without redeploying, and traces every decision.

unhardcoded  vs  Vellum  ·  LangGraph  ·  n8n  ·  Dify

at a glance

Same flow — different place for the model decision.

A builder lays out the steps and ships the app. The question is where each step's model is chosen: pinned in the node, or sent as policy with the call. Different jobs — they stack.

unhardcodedWorkflow / agent builders
Where the model is decidedSent with the call as policyPinned in the node
Changing the choiceEdit the policy, no redeployRewire the node and ship
Which model runsCheapest that clears your rulesThe one you wired in
Quality floorEnforced per call, fails loudEval suites, no runtime gate
Decision auditReplayable by fingerprintRun logs for the flow

A fair, side-by-side read; both run over your own provider keys. Cost figures on this page are illustrative; the quality floor is the catalog field bench_intelligence, a 0..1 score. See the full lineup on the compare hub.

01 · what they're good at

Builders are good at the graph.

Vellum, LangGraph, n8n, and Dify are credible tools for the orchestration itself — visual or code canvases for steps, branches, and human-in-the-loop, plus prompt versioning, evals, integrations, and a deployable endpoint. That scaffolding is their core job, and a good one. What they don't make explicit is the per-step model choice: it's wired into each node, and changing it means editing the graph and shipping again.

02 · where unhardcoded is different

The model decision becomes policy, not wiring.

unhardcoded isn't a builder — it's the runtime policy layer inside an LLM node. The policy travels with the request: your backend sends a policy_ir with the call, and the router picks the cheapest model that clears your rules over your own provider keys. Change the rule, and every step routes differently on the next call — no graph edit, no redeploy.

1

An explicit choice

Instead of a model string baked into the node, each step states the constraint and lets the cheapest passing model win — gemini-3.5-flash at $0.018 when it clears the floor, a stronger model only where the rules demand it.

2

A quality floor that fails loud

The floor is the catalog field bench_intelligence, a 0..1 score, e.g. ["cmp","bench_intelligence","ge",0.5]: deepseek-v4-flash (0.42) is filtered out, gemini-3.5-flash (0.54) passes. No silent downgrade — if nothing clears, the call fails instead of guessing.

3

A trace you can replay

The proof is the receipt: candidates, the winner and why, which rule rejected the rest, the fallback path, and the fingerprint 301140696-1054914287 (sigma-pol/v1) to replay months later. See a trace →

03 · use them together

Keep your builder. Route each node through unhardcoded.

These aren't substitutes — they're complementary. unhardcoded speaks the OpenAI-compatible API, so it sits underneath the builder you already use: keep the graph where it is, point each LLM node at unhardcoded, and the model decision moves into policy.

What you get by stacking them

  1. Cheapest passing model per node — each step routes on its own policy; classify on gemini-3.5-flash, synthesize on claude-sonnet-4-6, guard on claude-opus-4-8 only where it earns its cost.
  2. Per-step fallback — when a node's model errors or times out, it advances to the next passing candidate without restarting the flow or redeploying.
  3. One audit you can replay — every node's decision lands in the trace, keyed by fingerprint, so a flow run is reviewable months later.

Prefer to express the whole task in unhardcoded? flow_ir is a bounded DAG where each step carries its own policy — one stitched trace, billed as one run up to 5 nodes. It composes policies; it doesn't replace your builder.

See how the per-step decision cuts model spend

Build the graph your way. Route every node by policy.

Keep the workflow or agent builder you like, and let unhardcoded pick the cheapest passing model for each step — with per-step fallback and a replayable trace. Join the waitlist to put the model decision layer under your flows.

Sits under your builderYour provider keysOpen policy_irEvery node traced