Written in April 2026. The setup has grown since, and the current map is at duncansmith.tech/homelab.
I replaced about $120 a month of tools, including Zapier and IFTTT, with n8n workflows on my own server. Most of them did the same thing: take data in, apply some rules and push data out.
An email digest service reads RSS feeds and sends a summary. A document processor runs OCR and tags files. A notification tool watches for events and pings you. n8n does all of it self-hosted, with no per-execution limits.
Three sub-workflows came first
Almost every workflow I run calls one of three shared building blocks:
LM Studio call. A webhook takes a system prompt and a user message, sends them to my local model and returns clean text. It allows three attempts and has a 120-second timeout.
OpenRouter fallback. The same call, but it tries a larger cloud model first and falls back to the local one. I use it for long documents and harder analysis.
Qdrant embedder. It takes any text, generates an embedding with nomic-embed-text, validates it and stores it in Qdrant with metadata.
Building these first was the best architectural decision I made. Every new workflow gets LLM calls and vector search by calling a sub-workflow.
What the 80 workflows do
Document processing (12). New files in Paperless-ngx are OCR’d, tagged by the model and embedded for search. Receipts yield amounts, vendors and dates. A contract comes back as a summary of terms, dates and obligations in under a minute.
Knowledge management (15). New Obsidian notes are embedded automatically. Every Sunday the model reads the week’s daily notes and writes a summary with themes and action items. Linkwarden bookmarks are summarized and tagged.
Notifications (10). At 7am, RSS items filtered for relevance and the weather arrive on my phone through ntfy. Uptime Kuma failures become readable alerts. Raw events are reworded, so I get “Paperless processed 3 new documents” instead of “webhook_event: docs_added, count: 3”.
Content and media (8). High-value feeds become a daily digest email. Voice memos are transcribed by SolScribe, summarized and saved as Obsidian notes. New 3D prints get draft listings for several platforms.
System operations (15). Backups are checked for size, checksum and freshness. A health check covers all 24 services. Docker is pruned weekly. TLS certificates raise an alert 30 days before they expire.
AI and integration (20). Important Claude conversations are scored, summarized and stored. New content is cross-referenced against what I already have, and checked for near-duplicates before it is embedded.
Patterns that held up
Webhook, LLM, action. About 90% of the workflows have this shape: something triggers a webhook, a model enriches or analyzes the payload and an action follows. Once that shape is familiar, a new workflow takes minutes.
Errors that don’t wake me up. Every workflow has an error branch. A failed LLM call retries, and a second failure logs the error and sends a low-priority notification. Backups and security checks alert at high priority. RSS summaries and bookmark enrichment fail quietly and run again on the next schedule.
Safe to re-run. A workflow should check before it acts: whether a document is already embedded, whether a note with that title exists and whether the same alert went out in the last hour. That prevents duplicates during error recovery.
What I stopped paying for
Zapier: $49 a month
IFTTT Pro: $5
Notion AI: $10, replaced by LM Studio and Obsidian
Readwise: $8, replaced by FreshRSS and an n8n digest
Monitoring tools: $15, replaced by Uptime Kuma and n8n alerts
Cloud transcription: $30, replaced by SolScribe
That is roughly $120 a month, plus semantic search and local LLM processing those tools didn’t offer.