Index
Click a row to jump to the full write-up ↓
From empty Wix blog to auto-scheduled 30 posts a month.
The client had a content calendar. A Wix site. And a 3-person editorial team that kept missing deadlines because of the copy-paste tax between drafting, image generation, OAuth refresh, and Wix’s admin UI.
Brief
Publish 30 on-brand posts per month to a Wix blog, fully unattended, from a single Airtable queue. Editorial team reviews titles only.
What we built
A Make.com scenario watching Airtable for new briefs. GPT-4 drafts title and 1,200-word body. DALL·E generates a 1792×1024 hero. An HTTP module handles Wix OAuth refresh every run — the hardest single part of this job. Post is created as draft, scheduled for 9am local, and the Airtable row updated with the live URL.
Gotcha
Wix’s blog API rejects posts >80KB with images inlined. We split into two calls: upload media first, then reference by ID in the post payload. Nobody in Make.com forums had documented this — cost us a day, now costs you nothing.
| # | Module | Action | Notes |
|---|---|---|---|
| 01 | Airtable | watch_records | poll blog_queue · status=ready |
| 02 | OpenAI · GPT-4 | gen_title | SEO keyword match · 60char cap |
| 03 | OpenAI · GPT-4 | gen_body | 1,200 words · clinic tone preset |
| 04 | DALL·E 3 | gen_image | 1792×1024 · brand palette |
| 05 | HTTP | wix_oauth | refresh token if <15m left |
| 06 | Wix | upload_image | media ID returned |
| 07 | Wix | draft_post | schedule 09:00 local |
| 08 | Airtable | update_record | status=scheduled · post_url |
Google reviews, monitored, replied, and emailed.
The practice manager was checking Google My Business three times a day, copying reviews into a spreadsheet, and drafting replies in clinic voice. Bad reviews sometimes sat 48 hours before anyone saw them.
Brief
Monitor all six clinic locations, auto-reply to 4–5 star reviews, flag 1–3 star reviews for human review with a drafted response ready, and email the practice manager a daily digest.
What we built
Scenario polls every 15 minutes. GPT-4 classifies sentiment and drafts replies in the clinic’s voice (we fed it 40 example past replies). High-star reviews post automatically. Low-star reviews become Todoist tasks with drafted replies attached and a 2-hour SLA timer.
Gotcha
GMB’s reply endpoint is brutally rate-limited and only returns a generic 429 — no retry-after header. We built exponential backoff with a 6h max, persisted in Make’s Data Store, with a manual kick from a secondary scenario if a review sits unactioned >90 min.
| # | Module | Action | Notes |
|---|---|---|---|
| 01 | Airtable | every_15m | cron trigger · all 6 clinics |
| 02 | OpenAI · GPT-4 | score_review | sentiment + urgency score |
| 03 | OpenAI · GPT-4 | draft_reply | clinic voice · 40-shot primed |
| 04 | OpenAI · GPT-4 | gen_summary | daily digest prose |
| 05 | HTTP | gmb_post | exponential backoff · max 6h |
| 06 | Drive | upload_doc | digest archived by week |
| 07 | Todoist | flag_low | star ≤3 → 2h SLA task |
| 08 | Airtable | log_row | audit log · all replies |
| 09 | Data Store | persist | retry state · next poll time |
Shopify products, created by chat command.
The merchandising team was spending 14 minutes listing each new product — filling title, description, variants, SEO meta, images, and tags. For a brand adding 800+ SKUs a month, that’s a full-time job disguised as “data entry.”
Brief
Let the merchandising team type /product vintage-denim jacket $129 in Slack and have a complete Shopify listing go live within 30 seconds.
What we built
A Slack slash-command triggers a Make.com scenario. A router splits by product type (apparel, accessory, footwear — each has different size grids). Three parallel GPT-4 calls generate title, variants, and SEO meta. Drive fetches pre-uploaded product photography by SKU code. An aggregator merges the JSON, Shopify’s Admin API creates the product, and a confirmation posts back to the Slack channel with the live URL.
Gotcha
Shopify’s Admin API silently truncates the tags field at 255 characters — no error, just truncation. We added a pre-flight module that hashes and compresses the tag set, then reconstructs on retrieval. Also added a dead-letter queue for products that fail validation so the team can inspect + fix rather than losing the payload.
| # | Module | Action | Notes |
|---|---|---|---|
| 01 | Slack | slash_cmd | /product parser · regex |
| 02 | Router | by_type | apparel · accessory · footwear |
| 03 | OpenAI · GPT-4 | title | branch A · brand tone |
| 04 | OpenAI · GPT-4 | variants | branch B · size grid by type |
| 05 | OpenAI · GPT-4 | seo_meta | branch C · 155char max |
| 06 | Drive | get_images | lookup by SKU prefix |
| 07 | Aggregator | merge_json | wait for all 3 branches |
| 08 | Shopify | create_product | Admin API · DLQ on fail |
| 09 | Slack | post_url | reply in thread · live URL |
Supplier invoices, read, coded, and reconciled on arrival.
The bookkeeper was opening 200+ supplier invoices a week from a single shared inbox — PDFs, scanned photos, line-of-sight Tradies’ phone snaps. Each one took 4–6 minutes to manually code into Xero against the right project, GL account, and tax rate.
Brief
Auto-process every PDF or image invoice arriving at accounts@ — extract supplier, ABN, line items, GST, then push as a draft bill in Xero coded to the right job.
What we built
Gmail watcher captures every attachment. GPT-4 Vision reads the invoice — handwritten or printed — and returns structured JSON. A lookup against an Airtable supplier registry resolves ABN → contact ID. The job code is matched from invoice PO references. Drafts a Xero bill, attaches the original PDF, and posts a Slack card so the bookkeeper can approve in one click.
Gotcha
Vision occasionally hallucinates supplier names on poor-quality phone photos. We added a two-pass confidence gate: if name confidence < 0.85, the invoice queues into a “Needs review” Slack channel instead of auto-drafting. False-positive rate dropped from 11% to 0.4%.
| # | Module | Action | Notes |
|---|---|---|---|
| 01 | Gmail | watch_attachments | label:supplier-invoice · pdf+jpg |
| 02 | GPT-4 Vision | extract_fields | supplier · ABN · line items · GST |
| 03 | Filter | confidence_gate | supplier conf ≥ 0.85 |
| 04 | Airtable | resolve_supplier | ABN → Xero contact_id |
| 05 | GPT-4 | match_job | PO reference → project_id |
| 06 | Xero | create_bill | status=draft · attach pdf |
| 07 | Slack | approval_card | 1-click approve in #accounts |
| 08 | Sheets | log_row | audit · supplier · amount · gst |
| 09 | Gmail | label_done | archive original thread |
Inbound leads, qualified and routed in under 90 seconds.
A 22-person SaaS was leaking pipeline at the front door. Inbound leads landed in HubSpot, sat in a Round Robin, and the average first-touch was 14 hours. By then most had already booked a competitor demo.
Brief
The moment an inbound demo form fires, enrich the lead, score fit, route to the right SDR, post a briefing card in Slack, and offer the prospect a self-serve booking link — all in under two minutes.
What we built
Webhook catches the HubSpot form. Clearbit + LinkedIn enrichment fills firmographics. Claude Sonnet reads website + funding data and scores against an ICP rubric we built with the head of sales. A router assigns the SDR by territory + book-of-business. Cal.com sends a personalised booking link with the SDR’s calendar pre-filtered to the prospect’s timezone.
Gotcha
SDR territory rules changed mid-quarter and the routing fell apart silently. We rebuilt the routing table as an Airtable view the RevOps lead can edit, with a dry-run preview module that simulates the next 50 routings before saving. Zero misroutes since.
| # | Module | Action | Notes |
|---|---|---|---|
| 01 | HubSpot | webhook_in | form: book-a-demo |
| 02 | Clearbit | enrich | firmographics · headcount · funding |
| 03 | HTTP | linkedin_lookup | title · seniority · tenure |
| 04 | Claude · Sonnet | icp_score | 0–100 · rubric v3 |
| 05 | Router | by_territory | NA / EMEA / APAC · book of biz |
| 06 | Airtable | get_owner | SDR rotation · capacity gate |
| 07 | HubSpot | assign_owner | set lifecycle=SQL |
| 08 | Slack | brief_card | SDR DM · enrichment + score |
| 09 | Cal.com | send_link | SDR calendar · prospect TZ |
| 10 | Sheets | audit_row | routing log · dry-run diff |
Bring us the spreadsheet
you secretly hate.
30-minute call. You describe the manual work. We tell you what’s automatable, what isn’t, and roughly what it would cost. No slides, no NDA, no follow-up drip.
