Skip to content
MrJev

n8n-nodes-typesafe

n8n community node for asking typed questions inside workflows.

View on GitHub →

Hands-on review

Fills in the form, sends one request per item, and can fan the answers out to one branch per question. No tests, and a retry that can sleep for hours.

Good for

  • Asking typed questions inside an n8n workflow without writing code
  • One branch per question, so the workflow reads like the decision
  • The key is n8n's to hold: the node never touches it

Watch out for

  • A `retry-after` header is obeyed without a cap — we measured a three-hour sleep
  • The answer type is taken from the response, so a mismatched type passes through
  • No tests at all

Tested Sep 20, 2026 at 98bde6a824d5 · Node 24 in Docker driving the compiled node against a local stand-in; tsc and eslint

How we reviewed this: we built it in Docker, ran its type check and lint, and drove the compiled node through a faked n8n execution context against a local stand-in, in both output modes. We made no Jev calls.

What it does

n8n-nodes-typesafe, by Marco Zampieri, is a community node that turns the n8n parameter panel into a System One request. You type the state and the questions; it sends one request per input item, with every question in it, and returns either the answers as one item or one branch per question.

Two things are done properly. The credential declares the API key as a password field and the node code never reads it — authentication goes through n8n’s own authenticated request helper, so the key stays where n8n keeps its secrets. And the publish workflow uses npm trusted publishing with no stored token, checking that the tarball is complete and the version matches the tag.

Two things to fix

The retry can sleep for hours. On a 429 the node reads retry-after and waits that many seconds — with no ceiling:

const waitMs = Number.isFinite(retryAfter) && retryAfter > 0 ? retryAfter * 1000 : 2 ** attempt * 500;

We had the stand-in answer retry-after: 3600 and measured three consecutive one-hour sleeps before it succeeded: three hours of a blocked n8n worker from one header. Compare jev-repl, reviewed in the same batch, which caps the whole retry sequence at 30 seconds.

The answer type comes from the response. answerValue() dispatches on answer.type as the server declared it, not on the type the question asked for. We had the stand-in answer a yes/no question with a choice; the node emitted {"is_urgent": "wat"}, and a downstream is_urgent > 0.8 quietly became false. Both of the other projects in this batch validate the answer against the question.

Both are reported.

What it sends, and what it doesn’t test

Only {state, model, questions} — no paths, no environment, no files. The state is whatever the workflow author typed, unredacted and untruncated, which is the right division of responsibility for a node like this.

There is no test suite: npm test reports a missing script. The type check and lint are clean, and the README’s claims all held when we checked them, but nothing runs against the code on a change.

Verdict

The right shape for n8n — one request per item, questions as parameters, branches as output — and a credential design that keeps the key out of the node entirely. Put a ceiling on the retry before you run it on a shared worker.

For the same job from a terminal, see jev-repl.

See how it compares with other tools in Best Jev tools, tested hands-on.

Review updated Sep 20, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.

More in Libraries & Integrations

agentrun

★ 423▲ 13

Parcha-ai/agentrun

A workflow DSL for agents with a Jev package for the steps that are decisions rather than generation.

TypeScript

switch

★ 420▲ 170

osolmaz/switch

TypeScript framework for decision-model harnesses: your program offers a short list of next steps and the model picks one at a time until it can answer, with chess, wikirace and rubric-judge examples run on Jev.

TypeScript

Ten Levels of Jev

★ 264▲ 10

disler/ten-levels-of-jev

Thirty worked uses arranged in ten levels, from one if statement to an agent that reaches for Jev itself, with a video walkthrough.

TypeScriptReviewed

Get new Jev projects every week

New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.

Powered by Buttondown. See our privacy policy.