Automation Lab

Automation Lab

Systems and workflows built in n8n with language models. Each one is marked honestly: running for a client, live, or built and tested.

  • Running for a client
  • Live
  • Built and tested
  • Every diagram is drawn from the real node graph, with names simplified and nothing sensitive in it.

Systems

Each of these is several workflows working as one — shown as the system, not as a pile of parts.

LiveAI scraping engine2026

Universal Web Scraper

One link in, the whole site out. A shared engine fetches pages and escalates only as far as it must, reads structured data before it spends anything on AI, and writes the rows into a spreadsheet — with quick jobs and long crawls run as separate, controllable workers.

Universal Web Scraper Scrape job API / Crawl worker tick → Plan the job → Quick batch loop → Escalating fetch → Needs AI? → AI field extraction → Collect rows → Dedupe and merge → Excel and Sheets Scrape job API Webhook Crawl worker tick Plan the job Quick batch loop Escalating fetch Engine Needs AI? AI field extraction OpenAI Collect rows Dedupe and merge Excel and Sheets Google Sheets
7 workflows · 136 nodesSee the real n8n canvas (opens in a new tab)
  • One engine, called as a sub-workflow by both the quick runner and the crawl worker
  • The AI call is skipped entirely when structured data already answers the page
  • The crawl worker locks each job, opens a new sheet when a part fills up, and writes one tab per category
  • Pause, resume, cancel, restart and delete, routed through a single control endpoint
Trigger
Web app (webhook) and a crawl schedule
Services
  • n8n
  • OpenAI
  • Google Sheets
  • Excel
  • n8n Data Tables
  • Webhooks
Outcome
Collecting a website into Excel stops being copy-and-paste or a new script per site.

LiveAI agents behind a product2026

CV Screener agents

The AI engine of CV Screener: sibling agents that profile one CV, screen one CV against a job, and summarise a whole pool. The product server calls them; every one checks a secret first, fences the CV as data, and returns typed JSON or a typed error.

CV Screener agents CV request webhook → Secret header check → Validate and fence → Valid request? → Profile the CV / Reject request → Structural check → Return JSON CV request webhook Webhook Secret header check Validate and fence Valid request? Profile the CV OpenAI Reject request Webhook Structural check Return JSON Webhook
4 workflows · 38 nodesSee the real n8n canvas (opens in a new tab)
  • A secret header is checked before anything else; a bad call never reaches the model
  • The CV text is wrapped in random fences, so instructions hidden inside a CV are read as data
  • The model scores with quoted evidence; weighted totals and must-have caps are computed in code
  • Set not to store executions, because CVs are personal data
Trigger
Server-to-server webhook
Services
  • n8n
  • OpenAI
  • Webhooks
  • Structured outputs
Outcome
Hundreds of CVs become a ranked, explainable pool that a recruiter can defend.

LiveProduction document AI pipeline2026

Smart Scanner Extraction Pipeline

The production pipeline behind Smart Scanner. Every invoice — photo or PDF — is verified as a real invoice, parsed with GPT-4.1 Vision, validated, deduplicated, and persisted. It reads Arabic, English, and mixed documents, and is tuned for handwritten Arabic invoices and Saudi e-invoice fields.

Smart Scanner Extraction Pipeline Receipt upload → Secret header check → PDF or image? → Read the PDF / Read the image → Parse and validate → Valid receipt? → Reply to app / Reject and clean up → Post to backend Receipt upload Webhook Secret header check PDF or image? Read the PDF OpenAI Read the image OpenAI Parse and validate Valid receipt? Reply to app Webhook Reject and clean up Post to backend
1 workflows · 15 nodesSee the real n8n canvas (opens in a new tab)
  • Rejects any file that is not a genuine invoice, before anything is saved
  • Extracts 70+ fields plus line items: vendor, buyer, totals, VAT, dates
  • Classifies every line item into per-company expense categories at extraction time
  • Refuses politely and explains why when required data is missing — accuracy before speed
Trigger
Webhook (image or PDF upload)
Services
  • n8n
  • OpenAI GPT-4.1 Vision
  • PDF Extract
  • Validation
  • Deduplication
  • Webhooks
Outcome
Manual invoice entry disappears entirely; a photo becomes structured accounting data in about ten seconds.

Built and testedContent system run from a chat2026

Telegram Publishing System

Plan, review, approve and publish posts to LinkedIn, Instagram and Reddit from a Telegram chat. The AI only understands what you meant; every decision after that is made by a deterministic state machine.

Telegram Publishing System Telegram command / Review and publish scheduler → Allowed chat? / Multi-platform publisher → Load post context → Parse intent → State machine → Save post job → Reply in chat → Content generator Telegram command Telegram Allowed chat? Load post context Parse intent OpenAI State machine Save post job Reply in chat Telegram Review and publish scheduler Content generator OpenAI Multi-platform publisher
4 workflows · 75 nodesSee the real n8n canvas (opens in a new tab)
  • Button presses skip the AI and go straight to the state machine
  • Only allow-listed chats are processed
  • The scheduler locks an approved post before publishing, so nothing goes out twice
  • Jobs stuck too long are marked failed, with a retry button
Trigger
Telegram message and a scheduler
Services
  • n8n
  • OpenAI
  • Telegram
  • LinkedIn
  • Instagram
  • Reddit
  • n8n Data Tables
Outcome
A content calendar that lives in a chat, with a human approving every post.

Built and testedInbox with AI triage2026

Unified Inbox

Messages from every channel land in one inbox. Each one is enriched with its dialect, intent, priority and a summary, plus a draft reply written in the sender's own dialect — and replies leave through an outbox that records every result.

Unified Inbox Telegram inbound / New message hook / Outbox poll → Atomic ingest / Worth a model call? / Send via Telegram → Dialect-aware enrichment / Classify locally / Record send result → Save enrichment Telegram inbound Telegram New message hook Webhook Outbox poll Atomic ingest Supabase Worth a model call? Send via Telegram Telegram Dialect-aware enrichment OpenAI Classify locally Record send result Supabase Save enrichment Supabase
3 workflows · 16 nodesSee the real n8n canvas (opens in a new tab)
  • Greetings and emoji-only messages never reach the model — they are classified locally to save cost
  • Every channel is normalised to one contract and written with a single atomic call
  • Enrichment continues on error, so no message is ever lost
  • The outbox sends one message at a time and records a readable failure reason
Trigger
Incoming message, webhook and schedule
Services
  • n8n
  • OpenAI
  • Supabase
  • Telegram
  • Structured outputs
Outcome
A team answers every customer from one place, starting from a draft that already sounds like them.

Built and testedReview management for shops2026

Google Review Reply Manager

New Google reviews are picked up on a schedule and answered in the reviewer's own language. Happy reviews get a reply on their own; unhappy ones go to the owner on Telegram, who approves or skips with one tap.

Google Review Reply Manager Review poll / Approval button tap → Fetch new reviews / Approve or skip? → Draft reply / Post approved reply / Mark as skipped → Positive review? → Auto-post reply / Ask owner approval Review poll Fetch new reviews Google Business Profile Draft reply OpenAI Positive review? Auto-post reply Google Business Profile Ask owner approval Telegram Approval button tap Telegram Approve or skip? Post approved reply Google Business Profile Mark as skipped
2 workflows · 26 nodesSee the real n8n canvas (opens in a new tab)
  • Reviews already answered or already tracked are skipped
  • High ratings are posted automatically; low ratings wait for the owner
  • The owner's tap posts the stored draft and edits the message to confirm
  • A one-off helper fetches each new client's account and location
Trigger
Schedule and a Telegram button
Services
  • n8n
  • OpenAI
  • Google Business Profile
  • Telegram
  • n8n Data Tables
Outcome
Every review gets an answer, and the owner only spends time on the ones that need them.

LiveScheduled agent with human-in-the-loop2026

AI Job-Match Pipeline

A scheduled pipeline that runs five daily search queries across LinkedIn, Indeed, and Glassdoor, scores each role's fit from one to ten with a structured-JSON LLM evaluator, and delivers only the high scorers.

AI Job-Match Pipeline Daily job search → Search job boards → Keep new jobs → AI fit scoring → Save to table → High score? → Has apply email? → Approve on Telegram / Manual apply alert → Send application email Daily job search Search job boards JSearch Keep new jobs AI fit scoring OpenAI Save to table High score? Has apply email? Approve on Telegram Telegram Manual apply alert Telegram Send application email Gmail
3 workflows · 47 nodesSee the real n8n canvas (opens in a new tab)
  • Structured-JSON evaluator scoring fit on a 1–10 scale
  • Deduplication against n8n Data Tables so nothing is seen twice
  • Telegram delivery of high-scoring matches only
  • Human-in-the-loop approval before any application is sent
  • Semi-automated applications with tailored AI-generated cover letters via Gmail
  • A factory clones the search into a separate daily bot for each user, through the n8n API — automation that builds automation
Trigger
Daily schedule
Services
  • n8n
  • JSearch API
  • OpenAI GPT-4.1
  • n8n Data Tables
  • Telegram
  • Gmail
Outcome
Daily job hunting collapses into reviewing a short, pre-scored shortlist.

Smaller builds

Single-purpose workflows, each one solving a whole job from start to finish.

Running for a clientPayment check for registrations2026

Transfer Receipt Check

Behind a chess club's tournament registration: the uploaded bank-transfer receipt is read by a vision model, which also says whether it is a transfer at all. The site applies the rules; the workflow only reads.

Transfer Receipt Check Receipt upload → Check the request → Request allowed? → Read receipt with vision → Shape the reply / Model failed → Send the reply Receipt upload Webhook Check the request Request allowed? Read receipt with vision OpenAI Shape the reply Model failed Send the reply Webhook
1 workflows · 7 nodesSee the real n8n canvas (opens in a new tab)
  • Secret, contract version and image size are checked before any model call
  • Model failures take their own branch, so the site always gets a JSON answer
  • Successful runs are not stored, because receipts carry personal data
Trigger
Webhook (receipt upload)
Services
  • n8n
  • OpenAI GPT-4.1 Vision
  • Webhooks

Built and testedBooking bot for shops2026

WhatsApp Booking Bot

A customer taps a service, then a time slot, in WhatsApp buttons. The confirmed slot is written to Google Calendar and confirmed back on WhatsApp.

WhatsApp Booking Bot WhatsApp message → Normalize the message → Which step? → Service buttons / Time-slot buttons / Create the booking → Send confirmation WhatsApp message WhatsApp Normalize the message Which step? Service buttons WhatsApp Time-slot buttons WhatsApp Create the booking Google Calendar Send confirmation WhatsApp
1 workflows · 7 nodesSee the real n8n canvas (opens in a new tab)
  • Service and time chosen with buttons, not typing
  • Every booking lands in Google Calendar
  • The customer gets a confirmation on WhatsApp
Trigger
WhatsApp message
Services
  • n8n
  • WhatsApp
  • Google Calendar

Built and testedForm-driven messaging tool2026

WhatsApp Group from a Spreadsheet

Upload an Excel or CSV of contacts and a group name: the group is created, everyone is added in throttled batches, and anyone WhatsApp refuses to add receives the invite link instead.

WhatsApp Group from a Spreadsheet Contacts upload form → Read the spreadsheet → Normalize phone numbers → Create WhatsApp group → Batch the contacts → Add participants / Find members not added → Send invite link Contacts upload form Read the spreadsheet Normalize phone numbers Create WhatsApp group Whapi Batch the contacts Add participants Whapi Find members not added Whapi Send invite link Whapi
1 workflows · 13 nodesSee the real n8n canvas (opens in a new tab)
  • Phone columns are detected automatically, normalised and de-duplicated
  • Members are added in batches with a pause between them, to stay under spam limits
  • Whoever could not be added gets the invite link, one message at a time
Trigger
Form (file upload)
Services
  • n8n
  • Whapi.Cloud
  • Excel
  • CSV

Built and testedAI social media studio2026

Social Auto-Publisher

Send a post idea to a Telegram bot and get back captions for each platform and a branded image in your own colours, fonts and logo. Nothing is scheduled until you approve the preview.

Social Auto-Publisher Telegram post idea → Load brand kit → Plan and captions → Settings or post? → Save brand settings / Background image → Vision layout pass → Render branded image → Approve on Telegram → Schedule on Postiz Telegram post idea Telegram Load brand kit Plan and captions OpenAI Settings or post? Save brand settings Background image OpenAI Vision layout pass OpenAI Render branded image Browserless Approve on Telegram Telegram Schedule on Postiz Postiz
1 workflows · 33 nodesSee the real n8n canvas (opens in a new tab)
  • The brand kit is stored once and edited through chat commands
  • A vision pass picks the text zone, logo corner and overlay strength for each background
  • The final image is composed as HTML and rendered to PNG
Trigger
Telegram message
Services
  • n8n
  • OpenAI
  • Browserless
  • Postiz
  • Telegram
  • n8n Data Tables

Built and testedScraping and enrichment pipeline2025

Smart Lead Finder

Automated B2B lead generation across the Saudi and Jordanian markets: multi-query place search, website scraping to extract emails and WhatsApp numbers, prioritisation scoring, and duplicate-safe appends into segmented sheets.

Smart Lead Finder Manual run → Build search queries / Read existing leads → Search places → Split and dedupe → Has a website? → Scrape contact details → Merge the leads → Keep only new → Append to sheet Manual run Build search queries Read existing leads Google Sheets Search places Serper Split and dedupe Has a website? Scrape contact details Merge the leads Keep only new Append to sheet Google Sheets
3 workflows · 51 nodesSee the real n8n canvas (opens in a new tab)
  • Multi-query place search across two markets
  • Extracts emails and WhatsApp numbers from company websites
  • Prioritisation scoring so the best prospects surface first
Trigger
Manual run
Services
  • n8n
  • Serper.dev Google SERP API
  • HTTP scraping
  • Google Sheets

Built and testedVideo-to-data webhook service2026

Lesson Quality Evaluator

A webhook service that transcribes lesson videos with speaker separation and returns structured JSON scoring teacher quality and student engagement.

Lesson Quality Evaluator Lesson video URL → Normalize the input → Request transcript → Wait and poll → Transcript finished? → Build evaluation prompt → Transcript OK? → Analyze the lesson / Return an error → Return the scorecard Lesson video URL Webhook Normalize the input Request transcript AssemblyAI Wait and poll AssemblyAI Transcript finished? Build evaluation prompt Transcript OK? Analyze the lesson OpenAI Return an error Webhook Return the scorecard Webhook
1 workflows · 12 nodesSee the real n8n canvas (opens in a new tab)
  • Speaker diarization separates teacher from student
  • Structured outputs guarantee a parseable result every time
  • Returns a score, not a transcript — the caller gets data, not homework
Trigger
Webhook (video upload)
Services
  • n8n
  • AssemblyAI Speaker Diarization
  • OpenAI GPT-4.1 Structured Outputs

Built and testedPersonalised outreach2026

AI Email Campaigns

Fill in a form with a contact list and, for a job search, your CV. Each contact gets an email written for them, sent one at a time through Gmail with a random pause, and you get a report when it is done.

AI Email Campaigns Campaign form → Excel or sheet? / Read CV text → Clean the contacts → Attach CV context → Loop over contacts → Write personal email / Email the report → Send via Gmail Campaign form Excel or sheet? Read CV text Clean the contacts Google Sheets Attach CV context Loop over contacts Write personal email OpenAI Email the report Gmail Send via Gmail Gmail
1 workflows · 22 nodesSee the real n8n canvas (opens in a new tab)
  • Arabic or English column headers are mapped automatically
  • Your CV's text is given to the model as context for job-search emails
  • Every send is recorded as sent or failed
Trigger
Form
Services
  • n8n
  • OpenAI
  • Gmail
  • Google Sheets
  • Excel

Built and testedData quality pipeline · proof of concept2026

CRM Lead Cleaner

Incoming CRM leads arrive scattered — duplicates, malformed emails, missing fields — and cost sales teams hours of manual triage. This pipeline cleans them automatically and reports on what it did.

  • Removes duplicates and validates email addresses
  • Flags missing fields rather than silently dropping records
  • Splits results into Clean and Rejected, with a reason on every rejection
Trigger
Webhook or schedule
Services
  • n8n
  • Email validation
  • Google Sheets

A case study in cost: one branch, three quarters saved

  • $0.02 per PDF, vision model
  • $0.005 per PDF, text model
  • 75% cut per document
Webhook — file arrives PDF with extractable text?
  • Yes Text model reads it $0.005
  • No Vision model sees it $0.02
Extraction came back empty? The PDF was only a scan — send it back to the vision branch.

1,000 receipts a month, half PDF, half photos $20 $12.50

  1. The mistake in my first workflow was sending every file that arrived at the webhook straight to a vision model. It worked. It also cost roughly three times more than it needed to.

  2. The reason is simple: a PDF usually already contains readable text. A vision model does not need to look at the page when a text model can read it — and reading costs a fraction of seeing.

  3. The fix was a single branching decision placed just after the webhook: if the file is a PDF with extractable text, send the text to a text model; otherwise send the image to the vision model. The per-document cost dropped by about three quarters.

  4. One detail matters more than the branch itself: always keep a fallback. If text extraction returns empty — because the PDF is really just a scanned image — the file has to go back to the vision branch. Without that, the cheap path silently produces nothing.

Nour Aldeen Tofi