Automation
Back to Projects

Automation

A set of self-hosted n8n workflows that put Claude to work on everyday business processes. Each one is built the same way: a strict JSON contract the model has to satisfy, validation that rejects malformed output instead of trusting it, a human review gate before anything leaves the system, and a separate error workflow that alerts Slack when something breaks.

Tech Stack

Docs Q&A Assistant

Docs Q&A Assistant

A retrieval-augmented assistant that answers questions only from a curated document corpus. Questions arrive via webhook, chat trigger, or workflow call, get matched against a Qdrant vector store, and pass a relevance gate that refuses out-of-scope queries before any model call. Claude writes the answer with numbered citations, then two independent checks validate it: a lexical check that every quote really exists in the cited chunk, and a semantic check that judges whether the quotes support the claim. Failures alert Slack and log to BigQuery, and a weekly evaluation workflow scores 50 cases and posts a scorecard.

GitHub
Invoice Document Processing

Invoice Document Processing

Turns incoming invoices into structured, auditable records. Documents arrive by webhook, upload form, or Gmail attachment, then get routed by type: digital PDFs are read as text, while scanned images go through Claude Vision. Extracted JSON is validated, low-confidence or incomplete records go to a human review gate instead of being silently accepted, personal data is masked before storage, and duplicates are flagged rather than re-recorded. Google Sheets acts as the system of record with an audit trail.

GitHub
Support Ticket Triage

Support Ticket Triage

Triages inbound support tickets end to end. A webhook receives the message, Claude classifies it as billing, support, sales, or spam while scoring urgency, screening for PII, and drafting a reply. A validation step enforces a strict JSON contract and rejects malformed model output, a switch routes the ticket to the right team, and nothing goes out until a human approves the draft through a Slack notification and a hosted form.

GitHub