Generate best AI prompt using multi-model evaluation and save to Supabase
Analyzed
Fragile expression — likely to fail when production data shape differs from test data — These expressions work reliably against test data where all fields are present. In production, fields may be absent, null, or differently typed — causing a runtime error or silent null propagation at the point of the expression.
AI agent has no iteration limit — In production, agents can enter loops — repeatedly calling a tool that returns ambiguous results. Without an iteration cap, a single execution can generate hundreds of tool calls, causing unpredictable cost spikes and potentially triggering rate limits on connected APIs.
Side-effect node has no audit trail — If this action is disputed, replayed, or causes a data inconsistency, there is no structured record of what was sent, when, and with what data. Debugging requires cross-referencing n8n execution history with the external system's own logs.
| Check | Description | Status |
|---|---|---|
| Failure Alerting | Failures silent — only visible in execution log | Missing |
| Retry on Failure | Transient failures cause permanent stops | Present |
| Request Timeouts | Slow providers can block execution indefinitely | Missing |
| Duplicate Prevention | Retry on write events creates duplicate records | Missing |
| Empty Response Handling | Zero-result lookups break downstream logic | Present |
| AI Output Limits | Output cost and parsing risk unbounded | Present |
| AI Output Format | Free-form output will break downstream parsers 4 of 8 AI nodes lack structured output | Partial |
| Activity Logging | Side effects unlogged | Missing |
| Write Deduplication | Webhook replays may create duplicate records | Missing |
Run this analysis on your own workflows
- Create a row
These expressions work reliably against test data where all fields are present. In production, fields may be absent, null, or differently typed — causing a runtime error or silent null propagation at the point of the expression.
- In `fieldsUi.fieldValues[0].fieldValue`, change {{ $('Webhook').item.json.body.goal }} to {{ $('Webhook')?.item?.json?.body?.goal }}.
- In `fieldsUi.fieldValues[1].fieldValue`, change {{ $json.output }} to {{ $json?.output }}.
- Webhook
- Creative Prompt Agent
- Marketing Prompt Agent
Webhook senders have hard response timeouts: Slack 3 s, Shopify 5 s, GitHub 10 s, Stripe 30 s. AI calls typically take 10–60 seconds. When the sender times out, it marks the delivery failed and retries — the workflow processes the same event twice, potentially creating duplicate records, emails, or actions.
Respond to the webhook immediately with a 202 Accepted using a Respond to Webhook node placed before the AI work. Move the AI processing to continue asynchronously after the response.
- Google Gemini Chat Model
- OpenRouter Chat Model
- Groq Chat Model
A single slow external call can block the entire workflow execution. At high trigger frequency, accumulated stuck executions can exhaust the n8n execution queue.
Set a timeout under the node's Additional Options. A value of 10,000–30,000 ms (10–30 seconds) is a reasonable starting point for most APIs; adjust based on the provider's documented SLA.
- Google Gemini Chat Model
- OpenRouter Chat Model
- Groq Chat Model
Operators cannot tell from external signals that a run failed. Silent failures go undetected until a downstream system shows missing data or a user reports a problem.
Connect a dedicated Error Workflow in workflow settings, or add a per-node onError: "continueErrorOutput" path that sends an alert via Slack, email, or a logging service.
- Creative Prompt Agent
- Marketing Prompt Agent
- Technical Prompt Agent
Free-form text output varies between invocations. The downstream node assumes a specific format to parse or act on. When the model produces a slightly different structure — different key names, trailing text, markdown formatting — the downstream logic fails intermittently in ways that are hard to debug.
Enable JSON mode (responseFormat: "json") on the AI node or connect an Output Parser sub-node with a defined schema. This forces the model to produce output in a predictable format and fails fast when it does not.
- Create a row
If this action is disputed, replayed, or causes a data inconsistency, there is no structured record of what was sent, when, and with what data. Debugging requires cross-referencing n8n execution history with the external system's own logs.
After the write node, add a step that records the key fields of the action to a log — a Google Sheet row append, a database insert to an audit table, or a Slack message to a dedicated ops channel. Include: timestamp, action type, affected ID, and result.
- Webhook
- Extract Goal
- Creative Prompt Agent
Webhook providers retry on delivery failure. Without a unique key on the target record, a retried delivery creates a duplicate.
Add a unique field to the write operation using a stable identifier from the webhook payload (event ID, order ID, etc.), or add a read-before-write existence check before the write node.
- Creative Prompt Agent
- Marketing Prompt Agent
- Technical Prompt Agent
In production, agents can enter loops — repeatedly calling a tool that returns ambiguous results. Without an iteration cap, a single execution can generate hundreds of tool calls, causing unpredictable cost spikes and potentially triggering rate limits on connected APIs.
Set maxIterations to 10–20 for most agentic tasks. Monitor actual iteration counts in execution history and adjust up if legitimate tasks are being cut short.
Currently covers AI/LLM nodes. Non-AI API costs will be added in a future update.
- Creative Prompt Agent
- Marketing Prompt Agent
- Technical Prompt Agent
no max iterations set
Set maxIterations to 10–20 for most agentic tasks. Monitor actual iteration counts in execution history and adjust up if legitimate tasks are being cut short.
| # | Issue title | Issue description | Affected nodes | |||
|---|---|---|---|---|---|---|
| 1 | Reliability | AI node blocks synchronous webhook response path | Node "Webhook" executes in the synchronous response path of the webhook trigger. The webhook trigger's | Webhook, Creative Prompt Agent, Marketing Prompt Agent, Technical Prompt Agent | High | 85% |
| 2 | Reliability | AI output drives downstream logic without a structured format | Node "Best Prompt Evaluator" produces free-form text output that flows into downstream logic with no Output Parser or JSON mode configured. | Best Prompt Evaluator | High | 75% |
| 3 | Reliability | External call with no timeout configured | Node "Google Gemini Chat Model" makes an external call with no timeout parameter set. The n8n execution will wait indefinitely if the provider is slow or unresponsive. | Google Gemini Chat Model, OpenRouter Chat Model, Groq Chat Model, Cohere Chat Model, Create a row, Creative Prompt Agent, Marketing Prompt Agent, Technical Prompt Agent, Best Prompt Evaluator | High | 90% |
| 4 | Security | Finding: webhook no auth | authentication: absent. path: short custom path "__KIPNAI_SAN__WEBHOOK_URL__p7w4FJYj__" (enumerable). downstream write node(s): "Create a row", "Create a row", "Create a row" | Webhook, Create a row, Create a row, Create a row | High | 90% |
| 5 | Reliability | Fragile expression — likely to fail when production data shape differs from test data | Node "Create a row" contains expression(s) with risky patterns that assume fields are always present. | Create a row | High | 85% |
| 6 | Reliability | No error handler or failure notification path | Workflow has 11 high-risk nodes (external calls or writes) with no configured error workflow and no inline notification path. If a production execution fails, the failure only appears in execution history. | Google Gemini Chat Model, OpenRouter Chat Model, Groq Chat Model, Cohere Chat Model, Create a row, Creative Prompt Agent, Marketing Prompt Agent, Technical Prompt Agent, Best Prompt Evaluator, Extract Goal, Combine Agent Outputs | High | 85% |
| 7 | Cost Risk | AI agent has no iteration limit | Agent node "Creative Prompt Agent" has no | Creative Prompt Agent | Medium | 85% |
| 8 | Cost Risk | AI agent has no iteration limit | Agent node "Marketing Prompt Agent" has no | Marketing Prompt Agent | Medium | 85% |
| 9 | Cost Risk | AI agent has no iteration limit | Agent node "Technical Prompt Agent" has no | Technical Prompt Agent | Medium | 85% |
| 10 | Cost Risk | AI agent has no iteration limit | Agent node "Best Prompt Evaluator" has no | Best Prompt Evaluator | Medium | 85% |
| 11 | Reliability | AI output drives downstream logic without a structured format | Node "Creative Prompt Agent" produces free-form text output that flows into downstream logic with no Output Parser or JSON mode configured. | Creative Prompt Agent | Medium | 75% |
| 12 | Reliability | AI output drives downstream logic without a structured format | Node "Marketing Prompt Agent" produces free-form text output that flows into downstream logic with no Output Parser or JSON mode configured. | Marketing Prompt Agent | Medium | 75% |
| 13 | Reliability | AI output drives downstream logic without a structured format | Node "Technical Prompt Agent" produces free-form text output that flows into downstream logic with no Output Parser or JSON mode configured. | Technical Prompt Agent | Medium | 75% |
| 14 | Reliability | Fragile expression — likely to fail when production data shape differs from test data | Node "Creative Prompt Agent" contains expression(s) with risky patterns that assume fields are always present. | Creative Prompt Agent | Medium | 75% |
| 15 | Reliability | Fragile expression — likely to fail when production data shape differs from test data | Node "Marketing Prompt Agent" contains expression(s) with risky patterns that assume fields are always present. | Marketing Prompt Agent | Medium | 75% |
| 16 | Reliability | Fragile expression — likely to fail when production data shape differs from test data | Node "Technical Prompt Agent" contains expression(s) with risky patterns that assume fields are always present. | Technical Prompt Agent | Medium | 75% |
| 17 | Reliability | Fragile expression — likely to fail when production data shape differs from test data | Node "Best Prompt Evaluator" contains expression(s) with risky patterns that assume fields are always present. | Best Prompt Evaluator | Medium | 75% |
| 18 | Reliability | High fan-out with external calls — partial failure risk at merge point | Workflow fans out into 3 parallel branches, each calling an external service. No per-branch error handling was detected before the merge point. | Extract Goal, Merge, Creative Prompt Agent, Best Prompt Evaluator, Marketing Prompt Agent, Best Prompt Evaluator, Technical Prompt Agent, Best Prompt Evaluator | Medium | 70% |
| 19 | Observability | Side-effect node has no audit trail | Node "Create a row" performs a write node: "create a row" (sideeffect: external_write) operation with no logging or audit trail detected downstream. | Create a row | Medium | 70% |
| 20 | Reliability | Webhook trigger feeds write operation without unique-key protection | The webhook trigger feeds node "Webhook" without a visible unique key constraint or deduplication step. No ID field parameter was detected in the write node configuration. | Webhook, Create a row | Medium | 65% |
| 21 | Naming | Finding: poor naming generic | 2 node(s) use default/generic names.. Node "Webhook" (n8n-nodes-base.webhook) has a generic default name.. Node "Merge" (n8n-nodes-base.merge) has a generic default name. | Webhook, Merge | Low | 90% |
| 22 | Reliability | Finding: external without retry | Node "Google Gemini Chat Model" (@n8n/n8n-nodes-langchain.lmChatGoogleGemini) is a read-only external call with no retry configured.. sideEffect: read_only, role: ai_model_call. Read-only calls are typically safe to retry; enabling retryOnFail improves resilience to transient failures. | Google Gemini Chat Model | Info | 70% |
| 23 | Reliability | Finding: external without retry | Node "OpenRouter Chat Model" (@n8n/n8n-nodes-langchain.lmChatOpenRouter) is a read-only external call with no retry configured.. sideEffect: read_only, role: ai_model_call. Read-only calls are typically safe to retry; enabling retryOnFail improves resilience to transient failures. | OpenRouter Chat Model | Info | 70% |
| 24 | Reliability | Finding: external without retry | Node "Groq Chat Model" (@n8n/n8n-nodes-langchain.lmChatGroq) is a read-only external call with no retry configured.. sideEffect: read_only, role: ai_model_call. Read-only calls are typically safe to retry; enabling retryOnFail improves resilience to transient failures. | Groq Chat Model | Info | 70% |
| 25 | Reliability | Finding: external without retry | Node "Cohere Chat Model" (@n8n/n8n-nodes-langchain.lmChatCohere) is a read-only external call with no retry configured.. sideEffect: read_only, role: ai_model_call. Read-only calls are typically safe to retry; enabling retryOnFail improves resilience to transient failures. | Cohere Chat Model | Info | 70% |
| 26 | Reliability | Finding: external without retry | Node "Creative Prompt Agent" (@n8n/n8n-nodes-langchain.agent) is a read-only external call with no retry configured.. sideEffect: read_only, role: ai_agent. Read-only calls are typically safe to retry; enabling retryOnFail improves resilience to transient failures. | Creative Prompt Agent | Info | 70% |
| 27 | Reliability | Finding: external without retry | Node "Marketing Prompt Agent" (@n8n/n8n-nodes-langchain.agent) is a read-only external call with no retry configured.. sideEffect: read_only, role: ai_agent. Read-only calls are typically safe to retry; enabling retryOnFail improves resilience to transient failures. | Marketing Prompt Agent | Info | 70% |
| 28 | Reliability | Finding: external without retry | Node "Technical Prompt Agent" (@n8n/n8n-nodes-langchain.agent) is a read-only external call with no retry configured.. sideEffect: read_only, role: ai_agent. Read-only calls are typically safe to retry; enabling retryOnFail improves resilience to transient failures. | Technical Prompt Agent | Info | 70% |
| 29 | Reliability | Finding: external without retry | Node "Best Prompt Evaluator" (@n8n/n8n-nodes-langchain.agent) is a read-only external call with no retry configured.. sideEffect: read_only, role: ai_agent. Read-only calls are typically safe to retry; enabling retryOnFail improves resilience to transient failures. | Best Prompt Evaluator | Info | 70% |