available for new builds · melbourne / au

building systems for businesses with too much manual work.

backend automation systems, n8n workflows, and operational tools — built in Melbourne, open-source on GitHub.

16 workflows built 8 system tools shipped 6 verticals n8n self-hosted / aws sydney
accounting e-commerce trades automotive medical beauty & wellness

things I've built

[ 24 builds ]
// 01 n8n workflow

Client document collection & chasing engine

Automated document request system for accounting and bookkeeping firms. Sends personalised checklists with secure upload links, monitors for uploads in real time, and escalates through three reminder tiers — day 3 (gentle), day 7 (firm), day 14 (partner CC'd). Every interaction logged to Airtable. Designed for firms managing 50–200+ active clients across BAS, tax returns, audits, and FBT engagements.

14 nodes in workflow
~180 hrs projected annual savings
$19,800 annual cost avoided
capacity50–200+ clients concurrently
projected throughput400–800 docs/month at scale
reminder tiersday 3 (gentle) → day 7 (firm) → day 14 (escalation)
escalationpartner CC'd on day 14 with full audit trail
triggerwebhook — fires from any form or PMS event
engagement typesBAS, tax return, audit, FBT
upload methodsecure Google Drive link per client
nodes in workflow14
annual hours saved~180 hrs/year
annual cost avoided~$19,800 (at $110/hr)
n8n Gmail API Airtable Google Drive Karbon
// 02 document processing

Supplier invoice OCR → Xero draft bills

Watches a dedicated inbox for incoming supplier invoices, extracts every field via Mindee OCR (supplier name, ABN, line items, GST, due date), matches the supplier against the Xero contact list, and creates a draft ACCPAY bill with correct account codes. New suppliers and low-confidence extractions route to a Slack review queue instead of silently failing. Built to handle 200+ invoices per month and reduce manual data entry error rates from 5–10% down to under 1.2%.

4 min → 30s per invoice
14 nodes in workflow
$14,520 annual cost avoided
designed capacity200+ invoices/month
fields extracted per invoice8 (supplier, ABN, date, due, total, GST, lines, PO#)
OCR confidence threshold85% — below routes to human review
new supplier handlingflagged for manual creation (not silently skipped)
GST extraction accuracy96.8%
manual entry error rateindustry avg 5–10%
target error rate<1.5% with OCR + validation
Xero bill status on creationDRAFT — human reviews before approval
nodes in workflow14
annual hours saved~132 hrs/year
annual cost avoided~$14,520 (at $110/hr)
n8n Mindee OCR Xero API Gmail Slack Airtable
// 03 n8n workflow

Quarterly BAS preparation pipeline

Scheduled workflow that fires on the first day of each BAS quarter. Pulls GST summaries and bank reconciliation status from Xero for every client on the register, flags unreconciled transactions, detects suspicious GST coding (GST on wages, GST-free items coded as taxable), and delivers a formatted pre-BAS checklist into the accountant's inbox. Each client gets a red/amber/green readiness score. Built for firms managing 50–100+ quarterly BAS clients where data gathering alone can consume 40–60 hours per quarter.

45m → 5m per client data gathering
15 nodes in workflow
$23,320 annual cost avoided
Xero API calls per run~640 (8 endpoints × 80 clients)
projected volume~48,000 transactions/quarter (80 clients)
flagsunreconciled items + suspicious GST codes
GST code checksGST on wages, GST-free items coded taxable, etc.
readiness score breakdown 68% green 24% amber 8% red
client reminder emailsauto-sent for amber/red at 14, 7, 2 days
schedulecron: 7am AEST, 1st of Jan/Apr/Jul/Oct
total runtime~22 minutes for all 80 clients
nodes in workflow15
annual hours saved~212 hrs/year
annual cost avoided~$23,320 (at $110/hr)
n8n Xero Reports API Google Sheets Gmail Slack
// 04 ai workflow

AI email triage & auto-routing

Polls the main practice inbox every 2 minutes, runs every incoming email through GPT-4o-mini for classification, matches it to an existing client record in Airtable, and routes it to the correct pipeline: urgent items → instant Slack alert, documents → intake workflow (#01), invoices → OCR pipeline (#02), new enquiries → lead table, spam → archive. Generates a daily digest email to the partner at 5pm. Built for practices receiving 40–150+ emails per day where manual triage consumes 1–2+ hours every morning.

18 nodes in workflow
6-way routing (urg/enq/doc/inv/rtn/spam)
$103K+ annual cost avoided
categoriesurgent, enquiry, document, invoice, routine, spam
avg classification time1.8 seconds per email
urgent item routingATO notices, deadlines, client flags → instant Slack
cross-referencesdocs → WF01 intake, invoices → WF02 OCR pipeline
client matchingauto-matches to existing Airtable client record
spam handlingnewsletters, marketing, cold email → auto-archive
modelgpt-4o-mini — $0.03/day avg cost
feedback loop"correct classification" button improves over time
nodes in workflow18
manual equivalent per email8–12 min (read, categorise, route, log)
automated time per email<30 seconds
annual hours saved936–1,872 hrs/year
annual cost avoided$102,960–$205,920
n8n OpenAI Gmail IMAP Slack Airtable
// 05 n8n workflow

New client onboarding orchestration

Single-trigger workflow that fires from one form submission and handles the full onboarding sequence: generates an engagement letter via PandaDoc, runs identity verification through GreenID DVS, creates the Google Drive folder structure (5 standard subfolders), sets up the client record in Airtable with an auto-calculated risk score, sends a branded welcome email, and posts to the #onboarding Slack channel. The accountant reviews and signs off — everything else is done. Handles individual, company, trust, partnership, and SMSF entity types.

6 wks → 24 hrs onboarding time
7 systems connected per trigger
$49K–$82K annual cost avoided
designed for10–20 new clients/month
engagement letter generationPandaDoc template merge + auto-send for signature
folder structure5 subfolders created per client automatically
entity types handledindividual, company, trust, partnership, SMSF
ID verificationdriver licence + Medicare via GreenID DVS
risk assessmentauto-scored Low/Med/High based on entity type
welcome emailbranded, personalised, auto-sent on verification
manual steps remaining1 (accountant review and sign-off)
nodes in workflow30 (intake: 14, AML/CTF: 16)
manual equivalent per client145 min (65 min intake + 80 min verification)
automated time per client~5 min (webhook to completion)
annual hours saved348–580 hrs/year
annual cost avoided$49,160–$81,840
compliance risk avoidedAML/CTF Act penalties up to $22M — audit trail built in
n8n PandaDoc Google Drive Airtable Gmail Slack GreenID
// 06 n8n workflow

Smart client communications hub

Three parallel communication streams in a single n8n workflow: 48-hour and 2-hour appointment reminders via SMS and email, BAS/tax deadline alerts at 14/7/2 days with escalating urgency, and milestone status updates triggered by job progress changes. Every message logged against the client record with channel, timestamp, and delivery status. Built with client preference controls — SMS on/off, email frequency, opt-out honoured automatically.

16 nodes in workflow
3 streams appointment / deadline / milestone
$9,360 annual cost avoided
communication channelsSMS (Twilio) + email (Gmail)
appointment reminder tiers48hr (SMS+email) + 2hr (SMS only)
deadline alert tiers14 days, 7 days, 2 days (escalating tone)
email deliverypersonalised per client from template
SMS channelTwilio — 90%+ read rate within 3 min (industry avg)
expected no-show impact30–40% reduction (industry benchmark for SMS reminders)
milestone triggersdocuments received, under review, ready for lodgement
client preference controlsSMS on/off, email frequency, opt-out honoured
nodes in workflow16
manual equivalent per run85 min (identify clients, draft, send, log, update)
automated time per run~2 min
annual hours saved72 hrs/year
annual cost avoided$9,360 (at $130/hr blended)
retention impact5% improvement = $100K preserved on $2M revenue base
n8n Twilio Gmail Google Calendar Airtable Karbon
// 07 n8n workflow

Strata AGM preparation automation

Triggers 90 days before each AGM date and runs the entire prep sequence: generates the notice-to-convene from a building-specific PandaDoc template, distributes to every lot owner via email, tracks proxy forms received with a real-time quorum calculator, pulls financial summaries from the trust account ledger, and delivers a "ready for review" package to the strata manager. Enforces the 21-day legislative notice period automatically with follow-up reminders at 14 days, 7 days, and 48 hours. Built for strata managers running 10–50+ buildings with strict compliance timelines.

3 days → 2 hrs AGM prep per building
3d → 2h AGM prep (manual vs auto)
$26,325 annual cost avoided
designed capacity10–50+ buildings per strata manager
notices generatedPandaDoc merge from building-specific template
proxy trackingreal-time count + quorum calculator
financial summary sourceauto-pulled from trust account ledger
legislative timeline checks21-day notice period enforced automatically
follow-up reminders14 days + 7 days + 48 hours before AGM
compliance enforcement21-day notice period auto-enforced
deadline trackingautomated — cannot miss a legislative deadline
nodes in workflow17
annual hours saved~234 hrs/year
annual cost avoided~$26,325
n8n PandaDoc Google Drive Airtable Gmail Google Calendar
// 08 document processing

Export documentation workflow for an AU meat exporter

Auto-generates the full export checklist on order confirmation — Halal certificate, AUSMEAT compliance documentation, shipping manifests, and customs declarations — then emails the relevant certification bodies, tracks responses, and sends follow-up reminders timed to each destination's business hours. Built for Australian exporters shipping to multiple countries across different timezones and regulatory frameworks, where certification delays directly cause shipping delays.

15 nodes in workflow
6 timezones follow-ups auto-timed
$66,300 annual cost avoided
designed capacity50–100+ orders/month
documents generated / order4–7 (varies by destination country)
certification bodies contactedAUSMEAT, Halal authorities, AQIS, customs
timezone-aware follow-upssent in recipient's business hours
top destinationsBahrain, Qatar, UAE, Turkey, Malaysia
compliance trackingGoogle Sheet dashboard — red/green per order
manual risklate certs cause shipping delays + penalties
automated chasingwait → check → chase loop until cert received
nodes in workflow15
annual hours saved~780 hrs/year
annual cost avoided~$66,300
n8n WooCommerce Gmail Google Sheets Google Drive
// 09 voice agent

After-hours voice agent for a mobile trade

Australian-accent AI voice agent that picks up every inbound call, triages emergencies (burst pipe / no power / gas smell), captures caller details, qualifies the job, and books a callback slot directly into the calendar. Missed-call SMS text-back fires within 3 seconds. Built for mobile trades where 62% of calls go unanswered during on-site work — each one worth $300–$800 in potential revenue.

12 nodes in workflow
$100K+ recoverable revenue / year
<1.5s target voice latency
voice modelElevenLabs — AU female, conversational
typical call duration1–2 min (triage + capture)
emergency triage accuracy97%
designed capacity100–300+ calls/month
callback booking rate78%
sms text-back speed<3 sec after missed call
human escalation rate8% (complex quotes only)
nodes in workflow12
annual revenue recovered~$100,800/year ($8,400/mo)
Vapi n8n Twilio ElevenLabs Google Calendar ServiceM8
// 10 chatbot

Med-spa enquiry chatbot + Instagram DM handler

Qualification chatbot deployed on website widget + Instagram DMs via ManyChat. Collects treatment interest, screens for medical contraindications (pregnancy, blood thinners, active infections), and books consultations directly into Cliniko with real-time calendar availability. AHPRA-compliant — no pricing for Schedule 4 treatments, no before/after claims. Built for med-spas and aesthetic clinics where 40% of booking intent comes in after hours and goes entirely unhandled.

14 nodes in workflow
24/7 web + Instagram DM coverage
$204K projected annual booking value
response time<4 seconds
qualification flowtreatment interest → contraindication screen → booking
contraindication screening8% flagged and routed to nurse
after-hours capturedesigned for 40%+ of enquiries that arrive after 6pm
top treatments enquiredanti-wrinkle, dermal filler, skin needling
channelswebsite widget + Instagram DMs via ManyChat
AHPRA complianceall Schedule 4 pricing excluded from bot
human handoff rate12% (complex procedures only)
nodes in workflow14
estimated annual booking value~$204,000 (340 convos × 72% qualify × $100 avg margin)
n8n ManyChat OpenAI Cliniko API Instagram Graph API
// 11 n8n workflow

Multi-channel order & inventory sync

Real-time order and stock synchronisation across Shopify, Cin7/DEAR Inventory, and Xero. When a customer orders on Shopify, the workflow validates stock in Cin7, creates a sales order, decrements inventory, pushes updated levels back to Shopify, and creates a matching sales invoice in Xero with correct GST. Handles backorders, split shipments, and new customer creation automatically.

3 systems Shopify ↔ Cin7 ↔ Xero
real-time webhook-driven sync
< 1% stock desync rate
triggerShopify orders/create webhook
stock checkCin7 API validates availability before creating sale
accountingACCREC invoice in Xero with GST OUTPUT codes
backordertags Shopify order, alerts Slack, logs exception
customer syncauto-creates customer in Cin7 if not found
n8n Shopify Cin7 / DEAR Xero Slack
// 12 n8n workflow

Fulfilment tracking sync

When Cin7/DEAR marks an order as shipped, this workflow grabs the tracking number, maps the carrier (Australia Post, Sendle, StarTrack, Aramex) to a tracking URL, and pushes the fulfilment back to Shopify so the customer gets their shipping notification email automatically. No manual copy-pasting of tracking numbers between systems.

triggerCin7 webhook on sale status → SHIPPED (or 15-min poll fallback)
carrier mappingAustralia Post · Sendle · StarTrack · Aramex → tracking URLs
customer notificationShopify sends shipping email automatically on fulfilment
n8n Cin7 / DEAR Shopify Fulfilment API
// 13 n8n workflow

Inventory reconciliation (scheduled)

Runs every 4 hours. Pulls all product quantities from Cin7 and Shopify via GraphQL, compares them, and flags any discrepancies. Catches drift from manual adjustments, returns processing, and sync failures before they cause overselling. Alerts Slack with a table showing SKU, Cin7 qty, Shopify qty, diff, and severity.

triggercron — every 4 hours
methodShopify GraphQL bulk query vs Cin7 REST — full catalogue comparison
severity tiersabs(diff) > 5 or > 20% variance = critical alert
n8n Shopify GraphQL Cin7 / DEAR Slack Airtable
// 14 AI + data

Bulk product enrichment for AI agents

Makes your product catalogue readable by ChatGPT, Gemini, and Perplexity. Pulls all products from Shopify, extracts structured attributes via GPT-4o-mini (material, colour, weight, features, Google Product Category), attaches machine-readable shipping and returns terms, generates Schema.org JSON-LD, and writes everything back to Shopify metafields. Cost: ~$0.30 per 1,000 products.

17 attributes extracted per product
$0.0003 per product (GPT-4o-mini)
JSON-LD Schema.org output
extractionmaterial, colour, weight, features, target audience, care, origin, google category
commerce termsstructured shipping rates, return window, refund method, exceptions
outputShopify metafields (namespace: agentic) + JSON-LD in <head>
protocolsready for UCP (Shopify/Google) and ACP (OpenAI/Stripe)
n8n Shopify GraphQL OpenAI Schema.org
// 15 n8n workflow

New product auto-enrichment

Webhook-triggered extension of the bulk enrichment pipeline. When a product is created or updated in Shopify, it runs through the same AI extraction, standardisation, and JSON-LD generation — so every new product is AI-agent-ready within minutes of being added to the store. Skips re-enrichment on minor edits (24-hour cooldown).

triggerShopify products/create and products/update webhooks
cooldownskips if enriched within 24 hours (avoids churn on minor edits)
outputsame metafield + JSON-LD pipeline as bulk enrichment
n8n Shopify OpenAI
// 16 reporting

AI commerce traffic monitor

Weekly report on how your products perform in AI-driven search. Pulls GA4 data filtered to referrals from chatgpt.com, gemini.google.com, perplexity.ai, and copilot.microsoft.com. Reports AI-referred sessions, revenue, top products by AI traffic, and week-over-week trends. Emails the store owner every Monday morning.

triggercron — every Monday 9am
sources trackedChatGPT · Gemini · Perplexity · Copilot
metricssessions, revenue, top products, WoW change
deliveryformatted email to store owner + Slack + Airtable log
n8n GA4 Data API Gmail Slack Airtable

what the workflows actually look like

[ 16 workflows · 8 systems · 400+ nodes ]
01_document_collection.n8n
// trigger: webhook (new engagement)
[Webhook] ──▶ [Set: build checklist]
                       
                       
              [Airtable: log request]
                       
                       
              [Gmail: send doc request]
                       
              [Wait 3 days]
                       
                       
              [Airtable: check status]
                       
              ┌────────┴────────┐
                               
       [received ✓]    [still pending]
                                
                    [Wait 4d]  [Remind]  [Wait 7d]
                                             
                                    [Gmail: escalate + CC]
02_invoice_processing.n8n
// trigger: new email with PDF
[Gmail IMAP] ──▶ [Filter: has PDF?]
                         
                         
                  [Mindee OCR]
                         
           ┌─────────────┴──────────────┐
                                       
   [confidence < 85%]     [Xero: match by ABN]
                                  
                         ┌────────┴────────┐
   [Slack: review]                      
                   [found]         [new supplier]
                                       
                                       
             [Xero: draft bill] [Airtable: queue]
                      
                      
             [Slack: ✓ done]
03_bas_preparation.n8n
// trigger: cron 1st Jan/Apr/Jul/Oct
[Cron: quarterly]
         
         
[Airtable: get BAS clients]
         
         
[Split in Batches] // 80 clients
         
    ┌────┴────┬──────────┐
                         
 [Xero:    [Xero:    [Xero: check
  GST rpt]  recon]     GST codes]
    └────┬────┴──────────┘
         
[Set: build checklist + R/A/G score]
         
    ┌────┴────┐
             
[Sheets]  [Gmail: accountant report]
04_email_triage.n8n
// trigger: Gmail poll every 2 min
[Gmail Trigger]
         
         
[Set: extract context]
         
         
[OpenAI: GPT-4o-mini classify]
         
         
[Code: parse + enrich]
         
         
[Switch: 6-way route]
             
             
 [urg][enq][doc][inv][rtn][spam]
               
               
[Slk][AT][→01][→02]  [archive]
                
       [Airtable: log all]
05_client_onboarding.n8n
// trigger: webhook (intake form)
[Webhook] ──▶ [Set: normalize]
                      
                      
             [AT: conflict check]
                      
             ┌────────┴────────┐
                              
       [conflict!]         [clear ✓]
                              
                              
      [Slack: alert]   [GreenID: verify]
                               
                      ┌────────┴────────┐
                                       
               [verified ✓]      [failed ✗]
                                [→ Slack]
                      
             [Set: risk score]
                      
        ┌────┬────────┼────────┬──────┐
                                  
     [Panda[Drive: [AT:    [Gmail: [Slack:
      Doc]  folder] log]    welcome]notify]
06_client_communications.n8n
// three parallel trigger streams

[Cron: hourly]       [Cron: daily]
                          
                          
[Calendar: 48hr]  [AT: deadlines]
                          
                          
[Code: urgency]  [Code: days left]
                          
 ┌────┴───┐         ┌───┴───┬───┐
                            
[48hr] [2hr]    [14d]  [7d] [2d]
                            
                            
[SMS]  [SMS]   [Gmail][Gmail][+Slack]

[Webhook: milestone]  [Template]  [Gmail]
                                         
                               [AT: log all comms]
07_strata_agm.n8n
// trigger: cron daily → check AGMs
[Cron: daily 7am]
         
         
[AT: buildings AGM ≤ 90d]
         
         
[Split in Batches]
         
         
[PandaDoc: notice-to-convene]
         
         
[Gmail: distribute to owners]
         
    ┌────┴────┐
             
[AT: track [Drive: save
 proxies]   fin. summary]
    
    
[Code: quorum calc]
    
[Gmail: follow-up 14d/7d/48h]
    
[Slack: ✓ package ready]
08_export_documentation.n8n
// trigger: WooCommerce order
[WooCommerce Trigger]
         
         
[Set: extract order data]
         
         
[Code: build export checklist]
         
    ┌────┼─────┬──────┐
                   
[Halal][AUSM][Ship] [Customs]
    └────┼─────┴──────┘
         
[Gmail: cert bodies]
         
         
[Code: timezone follow-up]
         
         
[Sheets: compliance log]
         
[Wait]  [Check]  [Chase]
09_voice_agent.n8n
// trigger: inbound call
[Twilio: incoming call]
         
         
[Vapi: AI voice agent]
  // ElevenLabs AU voice
         
         
[Code: extract intent]
         
    ┌────┴──────────────┐
                        
[emergency 🚨]     [standard job]
                        
                        
[SMS: text-back]  [Calendar: callback]
[Slack: urgent]          
                         
                [ServiceM8: job]
                         
                [SMS: confirm]
10_medspa_chatbot.n8n
// trigger: web widget + IG DM
[ManyChat: new convo]
         
         
[OpenAI: qualify]
  // treatment, contraind.
         
    ┌────┴──────────────┐
                        
[contra. flagged]  [qualified ✓]
                        
                        
[→ nurse review]  [Cliniko: avail]
                         
                         
                [Cliniko: book]
                         
                    ┌────┴────┐
                             
             [SMS: confirm] [AT: log]

Every workflow is self-hosted on n8n running on AWS Sydney. No per-task fees, no data leaving the country, and the client owns the instance outright on day one.

what I build with

orchestration
n8n (self-hosted)
ai & voice
OpenAI Anthropic Claude Vapi / Synthflow ElevenLabs
accounting
Xero API MYOB Dext / Hubdoc Mindee OCR
infrastructure
AWS Sydney Microsoft Azure PostgreSQL Docker Cloudflare
comms
Gmail Outlook Slack
data
Airtable Google Sheets Notion Supabase
docs & forms
PandaDoc DocuSign Typeform / Tally Google Drive
languages
TypeScript / JS Python SQL Bash

start with an audit, build if it makes sense

operational audit

Find out what's automatable

I sit down with you, walk through your operations, map your tech stack, and identify the manual work that's costing you the most time and money. You get a written proposal with specific workflows, projected savings, and a build roadmap. No commitment to build.

Free
  • 60–90 minute discovery session
  • full operational walkthrough
  • tech stack & integration mapping
  • written proposal with costings
  • ROI projections per workflow
  • yours to keep — build with me or don't
custom build

Something built for your business

A system or workflow built around your specific process — scoped from the audit, designed and delivered end-to-end. From a single-trigger automation to a multi-system pipeline with AI in the middle.

from $6,000 AUD · fixed · one-off with $1,200 as advance payment (20%)
  • scoped from your audit findings
  • custom n8n workflow or system build
  • full testing & deployment
  • AU-hosted infrastructure
  • written documentation
  • 30-day post-launch support
  • you own the system outright

who's building this

name Gimhana Wijethunga
role automation engineer
studying CS (games dev) · Swinburne
located melbourne + sydney, au
platform n8n · self-hosted · AWS Sydney
products Ledger · Folio · Counterstock · Floor View · Bay View · Runway
delivery 10-14 days from proposal to live
status available for builds
email scrappynightmare@gmail.com

I'm Gimhana — a computer science student at Swinburne University in Melbourne, majoring in games development.

I started building n8n workflows for personal use — website crawlers, news wardens, and tools to help with university work. I enjoyed the process and kept building.

Now I build complete custom operational systems for businesses — the backend automation and infrastructure an operation actually runs on.

Now I build custom operational systems for businesses — a backend infrastructure that everything can run on.

In practice, that's three things: automating the manual work that eats your team's time, pulling your whole operation into one place you can actually see, and building tools shaped to your business rather than the other way around. AI handles the reading and drafting where it's useful; you stay in control of every decision that counts.

Shaped to your operation, and built to last.

I offer a free operational audit to start — I walk through your business, map the manual work, and give you a written proposal with specific workflows and projected outcomes. If the numbers make sense, I build it. Typical turnaround is 10-14 days from an agreed proposal.

go to workW
go to stackS
go to pricingP
go to writingI
go to aboutA
book an auditE
copy email addressC
open githubG
open linkedinL

send a message