8.6 KiB
n8n Workflow Testing Status
Last updated: 2026-05-18
✅ Confirmed Working
| # | Workflow | Version | Notes |
|---|---|---|---|
| 01 | Grafana Alert → AI + Gotify | v1.4 | Dedup + recovery branch confirmed |
| 08 | Class Recording RAG | v1.2 | Paperless + Gotify end-to-end confirmed |
| 09 | Class Transcript Ingest | v1.1 | Gotify confirmed |
| 14 | Paperless Inbox Reminder | current live alias + v1.2 artifact | Live auth header corrected again on 2026-05-18; repo artifact already matched Token auth |
| 15 | n8n Health Monitor | v1.2 | Fixed: workflow names (was showing IDs); Postgres dedup working |
| 16 | NFS Watchdog + Auto-Heal | v1.2 | Confirmed working |
| 07 | Git Commit → AI Summary → Gotify | v1.0 | Confirmed working |
⏸ Retired
| # | Workflow | Reason |
|---|---|---|
| 04 | Whisper Transcription | Replaced — transcription now runs via Docker on Rocinante (RTX 4090) and sends directly to n8n |
| temp | Temp Postgres Credential Probe | One-shot setup helper removed from live n8n during 2026-05-18 cleanup |
| temp | Temp School Intake Table Provision | One-shot provisioning helper removed from live n8n during 2026-05-18 cleanup |
🧹 Live Cleanup
- 2026-05-18: removed 22 no-longer-needed workflows from live n8n, including inactive superseded copies of Class Recording → RAG, Class Transcript Ingest v1.0, Grafana Alert → AI → Gotify v1.0/v1.1/v1.2, n8n Self-Health Monitor v1.0/v1.1, NFS Mount Watchdog + Auto-Heal v1.0, Paperless Inbox Reminder v1.0/v1.2, duplicate inactive Paperless Intake Triage flows, Whisper Transcription v1.0, RSS Digest v1.0, and the two active temp/setup leftovers.
- 2026-05-18: cleared 438 stale errored execution rows that still had
finished=falsedespite already havingstoppedAtset. Open execution count returned to0.
🔲 Not Yet Tested
02 — RAG Pipeline v1.0
What it does: Two webhooks — POST /rag/ingest chunks + embeds text into Qdrant; POST /rag/query embeds query, searches Qdrant, asks LiteLLM, returns answer.
Pre-test checklist:
knowledge_basecollection exists in Qdrant (GET http://10.5.1.6:6333/collections)nomic-embed-textmodel pulled in Ollama (ollama liston PD)- LiteLLM auth now reads
$env.LITELLM_API_KEY; hardcoded key removed from repo artifacts
Test approach: POST {"text": "some test content", "source": "test"} to /rag/ingest, then POST {"query": "test content question"} to /rag/query and verify an answer comes back.
03 — Paperless AI Processing v1.0
What it does: Paperless webhook on new document → AI classifies (type/summary/tags) → adds note to doc + sends Gotify + applies tags (parallel branches after Parse Analysis).
Pre-test checklist:
- Paperless webhook configured to POST to
https://n8n.paccoco.com/webhook/paperless/new-documenton document add - Paperless auth now reads
$env.PAPERLESS_API_TOKEN; hardcoded token removed from repo artifacts - LiteLLM auth now reads
$env.LITELLM_API_KEY; hardcoded key removed from repo artifacts - Gotify credential
ajvRjvj0QldLQYmo("Paperless") — already wired ✓
Test approach: Upload a test document to Paperless, then manually POST {"document_id": <id>} to the webhook to trigger processing. Check Paperless for note + tags, check Gotify for notification.
05 — Paperless → RAG v1.0
What it does: Webhook on POST /paperless/rag-ingest → fetches Paperless doc → chunks + embeds content → upserts to Qdrant knowledge_base → Gotify notification.
Pre-test checklist:
knowledge_basecollection exists in Qdrant (same as 02)- Paperless auth now reads
$env.PAPERLESS_API_TOKEN; hardcoded token removed from repo artifacts - Gotify credential
SETUP_REQUIRED("Paperless RAG") — needs wiring
Test approach: POST {"document_id": <id>} to the webhook. Verify chunks appear in Qdrant and Gotify notification fires.
06 — RSS Digest v1.0
What it does: Every 6 hours (+ manual webhook + manual trigger), fetches 33 RSS feeds, parses items, deduplicates via Postgres (rss_seen_items table), scores by keyword relevance/urgency, AI-summarizes new items per feed, pushes per-feed digests to Gotify.
Pre-test checklist:
rss_seen_itemstable exists in Postgres- LiteLLM auth now reads
$env.LITELLM_API_KEY; hardcoded key removed from repo artifacts - Postgres credential
n9svoXemqSZoNNUB— already wired ✓ - Gotify credential
ExUx3oqYQyhkqZcp("Rss Feed") — already wired ✓
Test approach: Use the "When clicking Execute workflow" manual trigger. First run will insert all items as new (expect lots of Gotify notifications). Second run should be silent (all deduped).
🐛 Known Issues / Tech Debt
| Workflow | Issue | Priority |
|---|---|---|
| 15 | includeData: false means error messages show as "Unknown error" |
Low |
17 — Paperless Intake Triage → Doris Review Queue v1.0
What it does: Paperless post-consumption webhook → fetch document → LiteLLM strict JSON triage → enforce review-first safety gate → write sanitized Doris Dashboard queue JSON → optional urgent Gotify notification. Safe title-only Paperless update branch exists but is disabled unless PAPERLESS_TRIAGE_APPLY_SAFE=true.
Local artifact checks completed:
- Workflow JSON validates with
python3 -m json.tool - Fixture JSON files validate with
python3 -m json.tool - Dashboard example queue JSON validates with
python3 -m json.tool
Pre-test checklist:
- Paperless webhook configured to POST
https://n8n.paccoco.com/webhook/paperless/intake-triage PAPERLESS_API_TOKENandLITELLM_API_KEYexposed to n8n through env vars; no hardcoded secretsNODE_FUNCTION_ALLOW_BUILTIN=fs,pathset for queue file writer- n8n has a writeable mount to
doris-dashboard/data/paperless_review.json PAPERLESS_TRIAGE_APPLY_SAFE=falseduring initial validation
Test approach: Upload a harmless test document to Paperless, POST {"document_id": <id>} to the webhook, and confirm doris-dashboard/data/paperless_review.json contains a sanitized review item. Use a bill/due-date fixture to verify forced human review.
18 — Telegram School Intake → Postgres → Paperless v1.2
What it does: Accepts multipart school-work upload plus metadata (class_name, assignment_name, submission_kind, optional semester/course_code/paper_kind), uploads it into Paperless with a deterministic intake_id-based filename/title, and returns webhook success context.
Local artifact checks completed:
- Workflow JSON validates with
python3 -m json.tool - Companion helper script validates with
node --check school/intake/submit_to_n8n.js - Class profile example JSON validates with
python3 -m json.tool - v1.1 removes the
require('crypto')dependency for easier live rollout - v1.2 fixes the Paperless multipart upload node to use
inputDataFieldNamefor binary form upload - Live-tested 2026-05-14 with
Why am I hereDOCX; Paperless created document49
Pre-test checklist:
PAPERLESS_API_TOKENexposed to n8n through env vars- Webhook path
https://n8n.paccoco.com/webhook/school/intake/uploadreachable from Doris/OpenClaw helper
Test approach: POST a small DOCX/PDF through the intake webhook and verify the document lands in Paperless with filename prefix school-... and deterministic title.
19 — Paperless School Intake Metadata Enrichment v1.1
What it does: Receives Paperless post-consumption webhook for intake-managed documents, resolves the deterministic intake_id from the stored filename, derives metadata from deterministic filename/title, then reapplies deterministic title/tags and optional correspondent mapping.
Local artifact checks completed:
- Workflow JSON validates with
python3 -m json.tool
Pre-test checklist:
- Paperless webhook target configured to POST
https://n8n.paccoco.com/webhook/school/intake/paperless-enrich - Workflow 18 working so intake-managed filenames exist in Paperless
PAPERLESS_API_TOKENexposed to n8n- Optional mapping env vars supplied when ready:
PAPERLESS_TAG_SCHOOL,PAPERLESS_TAG_ASSIGNMENTS,PAPERLESS_TAG_TELEGRAM,PAPERLESS_TAG_CLASS_MAP_JSON,PAPERLESS_TAG_SUBMISSION_KIND_MAP_JSON,PAPERLESS_CORRESPONDENT_CLASS_MAP_JSON
Test approach: After a workflow-18 upload is consumed by Paperless, POST {"document_id": <id>} to /webhook/school/intake/paperless-enrich and verify title/tags enrichment succeeds. Live-tested on document 49.