n8n
The n8n-nodes-curva community node puts Curva in an n8n workflow. Its headline operation,
Route, sends each item down the branch of its answer, and every answer below your confidence
bar to a Needs review branch, where a human decides and the node’s Feedback operation
teaches Curva.
The package is n8n-nodes-curva on npm.
Install
Section titled “Install”- In n8n (self-hosted): Settings → Community Nodes → Install, enter
n8n-nodes-curva. - Start a Curva server:
curva serve(defaulthttp://localhost:7777; from n8n in Docker usehttp://host.docker.internal:7777). - Add a Curva API credential: the base URL, and a
curva_…key if the server has keys (curva keys create --name n8n).
Configure one question:
- Choice: instructions and options (key + description). Each option key becomes an output
branch, in order, plus
none_of_thesewhen None of These is on (the default). - Yes / No: branches
YesandNo.
Min Confidence (default 0.8) decides what a human sees: answers below it leave on the last branch, Needs review. The State is the whole item, some of its fields, or an expression.
Every routed item keeps its data and gains a curva field:
{ "curva": { "id": "dec_…", "question": "department", "answer": "billing", "confidence": 0.93, "probabilities": { "billing": 0.93, "technical": 0.04, "sales": 0.01, "none_of_these": 0.02 }, "calibrated": false, "abstain": false } }The branches update as you edit the options: like n8n’s Switch node, the node computes its outputs from its own parameters.
Close the loop with feedback
Section titled “Close the loop with feedback”End the Needs review branch with a Curva node on Feedback. Its defaults read the decision id
and question key from the item’s curva field; set True Label to the human’s answer (an
option key, true/false, or a level index). From 30 labels for a question in a project, Curva
calibrates its confidences for your data whenever that makes them more accurate; see
Calibrate with feedback. Calibration Report shows the before and after.
Several questions: Decide
Section titled “Several questions: Decide”Decide takes questions as JSON in the HTTP API format and attaches
all answers to the item as curva.answers, exactly as the server returns them. Use it when one
item needs a score, a yes/no and a choice at once, and route afterwards with an IF or Switch node.
Example workflow
Section titled “Example workflow”Import n8n-ticket-triage.json
with Workflows → Import from File: sample tickets → Route (billing, technical, sales,
none_of_these, Needs review) → queues, with the review branch ending in Feedback.
Options
Section titled “Options”Model (an id, or JSON for a fallback list, council or cascade), Project (calibration
namespace), and under Options: config, debias, images, privacy and think. With
On Error → Continue, a failed item goes to the last output with an error field.

