← Back to selected work

Workflow automations

n8n pipelines that take repetitive, error-prone work off people's hands, with the checks built in: what triggers each one, where the model reasons, and what happens when something doesn't fit.

Invoicing Workflow

Vendor invoices land in a shared inbox in every format imaginable. This pipeline reads them, extracts the fields with a language model, blocks duplicates, files the PDF and writes the ledger, all done with zero manual intervention.

31
nodes in one workflow
2
duplicate checks before filing
7
real-world edge cases handled
  • n8n
  • Gemini
  • Gmail
  • Google Drive
  • Google Sheets
  • JavaScript
Workflow sheetInbox → Ledger → Summary
Gmail trigger Label as processed Split into PDFs Loop over each PDF Extract & clean text Has a text layer? Gemini extraction Validation gate Already in ledger? Already in Drive? File to Drive Ledger row
If the PDF is a scan
Gemini reads the image Rejoin at validation
If a gate fails or it's a duplicate
Errors log Reply to sender
When every PDF is done
Today's invoices & errors Run summary email
TriggerAI modelGuardrailOutputMain pathFallback path
Edge cases from the real sample set
  • Not every PDF is an invoiceA delivery note marked "this is not an invoice" is classified and rejected, not forced through.
  • One PDF, two invoicesThe model returns an array; each invoice becomes its own item before filing.
  • The second-notice duplicateA reminder copy is caught twice, against the ledger by invoice number, then against Drive by file name.
  • European number formats2.280,04 € is explicitly normalized to 2280.04, never left to chance.
  • Scans with no text layerEmpty extraction falls back to a vision-capable model reading the page image.
  • Total due vs. discountThe prompt targets the final amount due, not the early-settlement figure beside it.
Invoicing Workflow in n8n
Invoicing Workflow in n8n · Open full size ↗

AI Customer Support Qualifier

Built for a makeup and beauty brand's support inbox. Every new email is read by a language model, classified as a refund request or a product inquiry, summarised, logged to a Google Sheet and answered with the right acknowledgement, addressed to the customer by name.

8
nodes end to end
2
strict categories
1 min
inbox polling interval
  • n8n
  • OpenAI GPT-5 mini
  • Gmail
  • Google Sheets
Workflow sheetInbox → Log → Reply
Gmail trigger LLM classifier Structured output Log to support sheet Is it an inquiry? Reply: inquiry received
If it's a refund request
Reply: refund request received
TriggerAI modelGuardrailOutputMain pathFallback path
How it stays reliable
  • Exactly two categoriesThe prompt defines what counts as a refund or an inquiry, and the model may answer with nothing else.
  • Structured output, not free textA parser enforces name, category and summary before anything is written.
  • Every email is on recordName, category, summary and sender are logged to the support sheet before any reply goes out.
  • The right reply, by nameRefunds and inquiries each get their own acknowledgement, addressed to the customer.
AI Customer Support Qualifier in n8n
AI Customer Support Qualifier in n8n · Open full size ↗

AI Sourcing Agent

The ingestion side of a recruitment sourcing agent. When a candidate is added in ClickUp, the workflow pulls their CV, files it in a clean candidate database on Google Drive and embeds it into a Supabase vector store, so the whole talent pool is ready for semantic search.

21
nodes end to end
3
CV formats accepted
1
file per candidate, matched by email
  • n8n
  • ClickUp
  • Google Drive
  • Supabase
  • Gemini embeddings
  • JavaScript
Workflow sheetClickUp → Drive → Vector store
ClickUp: task created Read candidate fields One item per CV Download CV Word document? Find candidate by email Update their file Gemini embeddings Supabase vector store
If it's a Word document
Convert in Google Docs Export plain text Delete temp copy
If the candidate is new
Upload as "Name – Email"
TriggerAI modelGuardrailOutputMain pathFallback path
How it keeps the database clean
  • One file per candidateBefore filing, it searches the database by email. A returning candidate's CV is updated, never duplicated.
  • Only real CVsAttachments are filtered to PDF, DOC and DOCX; anything else on the task is ignored.
  • Word files converted firstDOCX files go through Google Docs to plain text, and the temporary copy is deleted afterwards.
  • Consistent namingEvery CV is saved as "Name – Email", with details read from the task's custom fields.
AI Sourcing Agent ingestion workflow in n8n
AI Sourcing Agent ingestion workflow in n8n · Open full size ↗