personal · agent and automation design · 2026-08 to 2026-09

Capture pipeline: Telegram, Whisper and a vision model writing into an Obsidian vault

A self-hosted n8n agent pipeline. A Telegram bot captures text, voice and photos; Whisper transcribes; a vision model files receipts. LLM passes write daily and topic notes, and a verified pull lands them in an Obsidian vault that the AI tools read through MCP.

problemconstraintswhat I builtoutcomestackredacted screenshot

Step through it live: pipeline.skabene.id.lv, a re-enactment on synthetic data.

Problem

The goal was low-friction capture that loses nothing, handed to a later AI learning pass that acts as a thinking partner rather than a completeness logger.

Constraints

What I built

phoneTelegram n8n capture bot13 cmds, auth guard voice -> Whisperphoto -> vision evening 21:00notes 00:30 / save morning 07:30calendar, plan error alerts Postgres04:00 rollover LLM passesvalidate/retry VPS inboxdaily+topic pull (PS)MD5-verified Obsidianvault Claudevia MCP
fig 1. Capture to vault. A Next.js review app (not shown) corrects captures and receipts.
 Telegram -> n8n "Capture Bot"  auth guard, 13-command router
                voice -> Whisper container -> transcript
                photo -> vision model -> structured receipt | image note
          -> Postgres  captures (04:00 Europe/Riga day rollover), state,
                       expenses, expense_items, calendar
 21:00  evening      one LLM call -> report + <=3 questions
 00:30  notes/save   LLM -> daily + topic markdown on the VPS inbox, validate/retry
 07:30  morning      no LLM: weather, agenda, restock candidates from receipt history
 any    error-trigger workflow -> alert
 hourly PowerShell pull: stage -> pack -> transfer -> verify each file by MD5 -> archive -> vault

Outcome

dateresult
2026-08-28Error-alert workflow and review app in place
2026-08-30Redesign made the evening run report-first and turned the day into a parameter
2026-09-02Calendar integration (/cal, a nightly plan proposing <=5 blocks). Pull rewritten into a staged, MD5-verified transfer: 2,163 -> 12,501 bytes
2026-09-12v1.0.0: hourly scheduled pull, a backlog sweep of up to 5 days per run, and the /save triple-generation bug fixed. 7 stranded notes recovered, 9 duplicates removed
since 2026-09-03Capture paused by choice. The pipeline itself is not failing

7 workflows: capture bot, evening, generate notes, morning brief, calendar, nightly plan, error alerts · 13 Telegram commands

Stack

n8nTelegram Bot APIPostgreSQLWhisper (self-hosted)OpenRouterNext.js 15PowerShellObsidianMCP

Redacted screenshot

fig 2. Mock chat with placeholder content. Chat IDs, store names and amounts are redacted. A 60-second screen video following one voice note to a vault note is planned.
evidence: brain/projects/n8n.md · n8n/context.md · n8n/known-issues.md · brain/cv.md