One in-house system crews use every day, two in-house automations, and a set of working example builds. Every workflow diagram below is drawn from the real thing.
A phone checklist and a live office board that replaced a 3-page paper form at the concrete floor coating company where Max runs operations.
of paper per van, per day, replaced
3pages
became items the crew actually counts
38tick boxes
to scope, build and launch it
6days
Read the case study
In-house automations
Built for the same concrete floor coating company, where the paperwork is real and mistakes cost real money.
Supplier invoices, read and checked into a sheet
Supplier invoices arrive by email as PDFs. Each one is read, and every line item, plus shipping and tax, becomes a row in the invoice sheet.
The detail that matters: Nothing is written unless the rows add up to the invoice total. If they don’t, or the PDF can’t be read, a review email goes to the office instead.
Runs on: Gmail, Claude, Google Sheets
Scroll sideways to see every step.Starts the workflowAI stepRegular step
New Invoice Email
Split PDF Attachments
Read PDF Text
Extract Invoice Fields
Totals Reconcile?
Alert: Parsing Failed
Build Sheet Rows
Alert: Totals Mismatch
Append to Invoice Sheet
A monthly inventory report that builds itself
Someone uploads the month’s stock movement report in a simple form. A new tab named for the month appears in the inventory sheet.
The detail that matters: AI reads the lines, but plain code does all the adding, so the AI never totals anything. If a line is missing it refuses to write, and re-uploading a month makes a new tab instead of overwriting.
Scroll sideways to see every step.Starts the workflowAI stepRegular step
Upload the movement report
Extract PDF Text
Parse Line Items (AI)
Build Report
Create Month Tab
New Tab Created?
Tab Exists - Create Dated Tab
Prepare Rows
Write Rows to Tab
Show Result
Example builds
Working demos built to show a pattern. They are examples, not client results, and they run on sample data where a live account would go.
Everyday questions answered from approved replies
Emails asking the usual questions get the answer the business already wrote. Anything else stays in the inbox for the team.
The detail that matters: The AI only picks which approved question an email matches. The reply is sent word for word from a table, so it can never invent an answer.
Runs on: Gmail, n8n Data Table, AI label only
Run the demoSample emailfrom a prospectMatch it to oneapprovedquestionIs it aconfidentmatch?Fetch thestudio'sapproved answerSend theapprovedanswer, word f…Leave it in theinbox for theteamThe model thatreads the email
Scroll sideways to see every step.Starts the workflowAI stepRegular step
Run the demo
Sample email from a prospect
Match it to one approved question
Is it a confident match?
Fetch the studio's approved answer
Leave it in the inbox for the team
Send the approved answer, word for word
Support emails triaged, with a person approving every ticket
Each new support email is checked, de-duplicated and drafted into a ticket, then sent to Slack for approval.
The detail that matters: Nothing is created until a person clicks approve. Unreadable emails and off-spec AI answers are parked for manual triage, never lost.
Runs on: Gmail, Claude Haiku, Slack
New supportemail (Gmail)Run the testset manually5 samplesupport emails(test set)Normalize theemail into oneshapeIs the emailusable?Quarantine theunusable emailDrop repeatsinside thisbatchAlready triagedin an earlierrun?Skip: alreadyin the queueNew email - notseen beforeClassify anddraft theticket (AI)Manual triage -AI wasunavailableIs the AIoutput in spec?Manual triage -output was offschemaBuild the draftticketSave the draftas awaitingreviewAsk a human toapprove theticketRecord:reviewer couldnot be reachedApproved?Mark the ticketapprovedCreate theticket in yourhelpdeskMark the ticketrejectedTriage model -Claude Haiku 4.5via OpenRouter
Scroll sideways to see every step.Starts the workflowAI stepRegular stepSwitched off until an account is connected
Run the test set manually
5 sample support emails (test set) (switched off)
New support email (Gmail)
Normalize the email into one shape
Is the email usable?
Drop repeats inside this batch
Quarantine the unusable email
Already triaged in an earlier run?
New email - not seen before
Classify and draft the ticket (AI)
Skip: already in the queue
Is the AI output in spec?
Manual triage - AI was unavailable
Build the draft ticket
Manual triage - output was off schema
Save the draft as awaiting review
Ask a human to approve the ticket
Approved?
Record: reviewer could not be reached
Mark the ticket approved
Mark the ticket rejected
Create the ticket in your helpdesk (switched off)
Documents read into a table, with the figures checked
Invoices and documents arriving as PDFs or pasted text are read into one operations table.
The detail that matters: Subtotal plus tax must equal the total, and scanned PDFs with no text are stopped before AI can guess at them. Anything that fails is held, not written.
Runs on: Gmail, Claude Sonnet, n8n Data Table, Slack
New documentemail (Gmail)Run the sampledocumentsmanually3 sampledocuments (testset)Is there a PDFattached?Read the textout of the PDFUse the emailbody as thedocumentPut everydocument intoone shapeIs there enoughtext to read?Hold: nothingreadable inthis documentDrop repeatsinside thisbatchAlreadyimported in anearlier run?Skip: alreadyin the tableNew document,not importedbeforeRead the fieldsoff thedocument (AI)Hold: thereader wasunavailableDo the figuresadd up?Hold: thefigures do notreconcileBuild the rowWrite it to theoperationstableAlso write itto your Excel /Google SheetAlso write itto yourdatabaseFlag it inSlack for ahumanReading model -Claude Sonnet 4.5via OpenRouter
Scroll sideways to see every step.Starts the workflowAI stepRegular stepSwitched off until an account is connected
New document email (Gmail)
Run the sample documents manually
Is there a PDF attached?
Read the text out of the PDF
Use the email body as the document
3 sample documents (test set)
Put every document into one shape
Is there enough text to read?
Drop repeats inside this batch
Already imported in an earlier run?
New document, not imported before
Read the fields off the document (AI)
Hold: nothing readable in this document
Skip: already in the table
Do the figures add up?
Build the row
Hold: the figures do not reconcile
Hold: the reader was unavailable
Flag it in Slack for a human
Write it to the operations table
Also write it to your Excel / Google Sheet (switched off)
Also write it to your database (switched off)
New leads into the CRM in seconds, with an alert
Form leads are checked, matched or created in HubSpot, and the owner hears about them by Slack and email straight away.
The detail that matters: If the CRM is down, the form gets a clear error back instead of the lead quietly disappearing.
Runs on: Web form, HubSpot, Slack, Gmail
Lead FormSubmissionRun Demo LeadSample Lead(Demo)Normalize LeadLead Is Valid?Respond:Invalid LeadFind ExistingContactContact Exists?Update ExistingContactCreate NewContactMerge CRMResultBuild LeadSummaryNotify SlackEmail OwnerText OwnerMergeNotificationsRespond:SuccessRespond: CRMUnavailable
Scroll sideways to see every step.Starts the workflowAI stepRegular stepSwitched off until an account is connected
Lead Form Submission
Run Demo Lead
Sample Lead (Demo)
Normalize Lead
Lead Is Valid?
Find Existing Contact
Respond: Invalid Lead
Contact Exists?
Update Existing Contact
Create New Contact
Merge CRM Result
Respond: CRM Unavailable
Build Lead Summary
Notify Slack
Email Owner
Text Owner (switched off)
Merge Notifications
Respond: Success
Leads scored, with a first reply drafted
Each new lead is scored and gets a drafted first email based on what they actually wrote. Cold leads stop there.
The detail that matters: Sales gets the draft in Slack to check and send. Nothing goes to a customer automatically.
Runs on: AI scoring, Slack
Run the demoSample newleadsScore the leadand draft afirst emailSkip cold leadsSave lead andscore toActiveCampaignSend sales thelead and draftemailScoring model
Scroll sideways to see every step.Starts the workflowAI stepRegular stepSwitched off until an account is connected
Run the demo
Sample new leads
Score the lead and draft a first email
Skip cold leads
Save lead and score to ActiveCampaign (switched off)
Send sales the lead and draft email
A morning summary written for each client
Every morning a short status message is written for each client from their numbers, in their own language, ready to send by WhatsApp.
The detail that matters: A failure for one client is logged and the rest of the run carries on.
Runs on: GPT-4.1 mini, WhatsApp (switched off in the demo)
Run the morningpulseTwo samplebookkeepingclientsWrite theclient messageSend theWhatsAppmessageLog thedeliveryLog the failureand keep goingGPT-4.1 Mini viaOpenRouter
Scroll sideways to see every step.Starts the workflowAI stepRegular stepSwitched off until an account is connected
Run the morning pulse
Two sample bookkeeping clients
Write the client message
Send the WhatsApp message (switched off)
Log the failure and keep going
Log the delivery
Want one of these for your business?
Tell us what eats your week on a free 30-minute call.