The Problem Every Trades Business Knows
Jason McKay runs My Air Con Care — a split system and ducted air conditioning cleaning service based in Kariong, on the NSW Central Coast. He's been doing it for over seven years. He's good at it. His customers love him. He has 7,950+ Facebook followers and a reputation built on showing up, doing the work properly, and charging a fair price.
But in early 2026, Jason had a problem that every sole trader eventually hits:
- He couldn't answer the phone while he was on the tools. Every missed call was a missed job. Every delayed reply was a customer who booked someone else.
- He was doing his own follow-ups at 9pm after a full day of physical work — texting customers, checking calendars, confirming addresses.
- He had no consistent marketing. Facebook posts went up when he remembered. Ads ran occasionally. There was no system.
- His calendar was in his head. Double-bookings happened. Customers fell through cracks. The admin was killing him.
- He couldn't scale. The business was Jason. If Jason stopped, the business stopped.
Four months later, the business runs itself.
What We Built: The Complete Stack
The system that runs My Air Con Care today is not a chatbot. It is not a receptionist service. It is a full agentic business management system — two specialised AI agents (Steve and Anna) working inside a 6-gate compliance pipeline, backed by a unified CRM, an automated marketing engine, and a professional web presence. Every component was built, tested, and deployed in under four months.
Here is every piece, in detail.
1. The Digital Storefront
Landing Page & Service Pages
The My Air Con Care website at myairconcare.com is a dark-themed, video-driven single-page experience built on pure HTML, CSS, and vanilla JavaScript — no frameworks, no page builders, no ongoing costs. It loads fast, works on every device, and converts visitors into leads.
Key elements:
- Sticky video hero — autoplaying background video with radial gradient overlays and a hard-hitting headline: "Your Air Con Is Making You Sick. We Fix That."
- Trust bar — 7+ years experience, 7,950 Facebook fans, $250 split system clean, 90-minute same-day service — social proof before the fold.
- Inside-the-AC video section — a second embedded video shows mould growing inside a real unit. Customers see what they're breathing.
- 3 service cards with SVG icons — Split System Deep Clean ($250), Ducted System Clean (from $500), Mould Remediation (included).
- Lead capture form — Name, Phone, Suburb. On submit, it hits the CRM API. Steve gets the job card. The follow-up loop begins.
- Sparkle mouse effect — a canvas-based particle system that follows the cursor, creating subtle blue and green sparkles. It's the kind of polish that makes a site feel premium.
Why This Matters
A trades website doesn't need to be complicated. It needs to load instantly, show social proof immediately, communicate the offer clearly, and capture the lead. This site does all four — and converts at a rate that beats most $5,000 agency builds.
Blog & SEO Content
Five long-form blog posts were published, each targeting a specific search intent on the Central Coast:
- "Winter Air Con Health Check" — targets seasonal heating concerns, includes embedded testimonial video
- "The Drain Pan Problem" — technical deep-dive on where mould starts in every split system
- "How Often Should You Clean Your AC?" — educational post with cleaning schedules by system type, targets "air conditioner cleaning Central Coast"
- "No Heat? Check This Before Calling A Tech" — the 30-second filter fix that saves a $200 callout
- "Progressive Mould Intake Disease" — the flagship: a 2,800-word medical research article with 9 cited studies, documenting the 4-stage progression from mild cough to irreversible lung damage. This is the kind of content that gets bookmarked, shared, and linked to.
Every post follows the same pattern: valuable information first, soft CTA second. No aggressive selling. The content itself builds authority.
SEO & Tracking Infrastructure
- Meta titles and descriptions on every page, localised for Central Coast NSW
- Google Analytics 4 (G-7FQ2STVN33) on all pages
- Meta Pixel (1188256263128859) with both client-side
fbq.jsand server-side Conversions API (CAPI) — events fire from both the browser and the server, meaning ad-blockers can't hide conversions - Server-side event tracking logging page views, scroll depth, session duration, and section visibility to daily JSONL files
- Custom sparkle mouse canvas present on every page (including this one) — a subtle quality signal that separates the site from template builds
2. The AI Sales & Admin Engine
This is the core of the system. Every SMS that comes into the business flows through a 6-gate compliance pipeline before a single reply is sent. Two AI agents — Steve (sales and customer service) and Anna (calendar and booking management) — work together inside this pipeline, each with their own bootstrap identity, knowledge base, and operating rules.
Steve — The Sales Agent
Steve handles every customer conversation. When a lead texts the business, Steve:
- Reads 7 bootstrap files (SOUL.md, AGENTS.md, USER.md, KNOWLEDGE.md, claude-prompt.md, system-prompt.md, and the per-customer JOB-CARD.md) — every single time
- Reviews the full conversation history, contact details, pipeline stage, and any active bookings
- Determines the customer's intent — is this a new enquiry? A booking confirmation? A rejection of a proposed date? A random question?
- Drafts a reply in authentic Australian tradie voice — casual, direct, one thing at a time, never templated
- Outputs the draft with a proposed pipeline stage transition
- Submits it to the 6-gate pipeline for compliance verification before anything is sent
Steve's knowledge base includes:
- Complete pricing tables (Split: $250/$500/$750, Ducted: $350/$550/$750/$950, Saturday +$30, 5% off 4+ units)
- Pipeline stage rules (cold 1–8 forward only, return 9–12 cycling, no skipping, no backward moves)
- Australian coastal context — suburbs, zones, drive times
- AC technical knowledge — how systems work, mould biology, health effects, cleaning methodology
- SMS sales psychology — reciprocity, social proof, scarcity, authority
- Banned phrases: "just following up", "checking in", "touching base", "I'd be happy to assist"
Anna — The Calendar Manager
Anna owns the calendar. She never talks to customers. Her only job is placing holds, confirming bookings, and releasing slots. When Steve detects booking-related language (a customer accepts a date, rejects a date, or Steve says "let me check"), he delegates to Anna via an API call.
Anna's rules:
- Slots: 10:30am and 1:30pm only, Monday–Wednesday + Friday. Thursday and Sunday blocked. Saturday emergency only.
- Date format: DD/MM/YYYY (hard law — Australian format, no ambiguity)
- Zone routing: Furthest zone gets AM slot (10:30am), nearest zone gets PM (1:30pm). Sydney + Newcastle same day is forbidden. Coast AM + Sydney/Newcastle/Blue Mountains PM is forbidden.
- No double-booking: Gate 3 checks every proposed slot against the full 14-day calendar before placing
- Self-correction: If a slot is blocked, Anna finds the next available alternative automatically
The 6-Gate Compliance Pipeline
Every outbound SMS — whether it's a sales reply, a booking confirmation, or a follow-up — must pass through all six gates in sequence. If any gate fails, the message is blocked entirely. There is no bypass.
| Gate | Name | What It Checks |
|---|---|---|
| Gate 0 | Bootstrap | Verifies all 7 business files by MD5 fingerprint. Minimum 5,000 bytes required. Combined hash saved for token generation. If any file is missing, corrupt, or tampered with — hard fail. |
| Gate 1 | Context | Pulls contact record + last 5 conversations. Outbound guard: if the last message was from us, BLOCK. Deletes queue row, wipes drafts. This is the Double-Send Law — no reply without a fresh inbound. |
| Gate 2 | Draft | Scans for internal processing tags (INTENT:, PROPOSED_STAGE:, DRAFT_SMS:, etc.) leaked into the customer message. Any found = fail. Saves clean draft to runtime. |
| Gate 3 | Compliance | 8-point check: $ spacing, first name present, no banned phrases, max 1 question, ≤320 chars, landing page for bookings, within curfew (8am–8pm AEST), duplicate send guard (last message must be inbound). Issues clearance token (120s expiry). |
| Gate 4 | Fingerprint | Double-token handshake with PC-based GPG locker. Generates TOKEN_A (SHA-256 of fingerprints + phone + nonce), GPG-encrypts it. Generates TOKEN_B. Both tokens must validate before SMS fires. The passphrase never leaves the PC — it cannot be extracted from the VPS. |
| Gate 5 | CRM + Anna | Logs outbound to conversations table. Clears inbound flags. Updates contact record with proposed stage. Anna Bridge: detects booking language and delegates slot_confirm or slot_offer to Anna via API. Dedup guard prevents duplicate bookings for same date+time. |
| Gate 6 | Clear | Issues final clearance token. Wipes temp files. Job complete. All gates locked, ready for next job. |
The Steve–Anna Handshake
When a customer accepts a date, here is exactly what happens:
Total elapsed time: under 2 minutes. The customer never knows an AI was involved.
The Double-Send Law
This is the most important rule in the entire system. Steve never sends an outbound SMS without a fresh inbound message first. This is enforced at Gate 1 (outbound guard) and Gate 3 Check 8 (duplicate send guard). If the last message in the conversation was from us, the gate BLOCKS. No double-texting. No "just following up." No spam. This one rule is why customers trust the system — it feels human because it respects the rhythm of a real conversation.
3. The Unified CRM
At the centre of everything is a single SQLite database (crm.db) that every component reads from and writes to. There is no SaaS dependency. No monthly CRM subscription. No API rate limits. The database lives on the same VPS as the agents, the website, the dashboard, and the marketing engine.
Core tables:
- contacts — 35+ columns: name, phone, suburb, system_type, units, zone, pipeline_stage (1–12), pipeline_category (cold/return), tags (DNC, blocked, bad_number), lead_source, address, follow-up tracking
- conversations — full message history with direction (inbound/outbound/blast/internal), status, and needs_response flags
- bookings — all jobs with scheduled_date, scheduled_time, zone, status (hold/confirmed/completed/cancelled), price, payment_status
- steve_queue — FIFO job queue for Steve (inbound_sms, booking_check, booking_confirmation, followup_nudge)
- anna_queue — FIFO job queue for Anna (slot_offer, slot_confirm, slot_decline, booking_cancel, etc.)
- outbox — gate-processed messages waiting for delivery
- blast_recipients — campaign send records with conversion tracking
- blaster_stats — daily campaign metrics (sent, skipped_dnc, skipped_booked, skipped_recent, failed)
- stage_transitions — full audit trail of every pipeline stage change
- followup_queue — scheduled follow-up nudges with priority and retry counts
Pipeline Stage Management
Every contact moves through a 12-stage pipeline. Stages 1–8 are the cold pipeline (forward only, no skipping). Stages 9–12 are the return pipeline (cycling for repeat customers). Every transition is audited. Every stage has defined triggers and next actions.
| Stage | Name | Trigger |
|---|---|---|
| 1 | Cold Lead | Received blast or form submission, never replied |
| 2 | Warm Lead | Replied to SMS, asked about pricing or availability |
| 3 | Interested | Date offered, customer is considering |
| 4 | Confirmed | Booking placed (hold), awaiting address confirmation |
| 5 | Address Collected | Address confirmed, job details locked |
| 6 | Scheduled | Job is on the calendar, pre-job reminder queued |
| 7 | Completed | Job done, awaiting payment/follow-up |
| 8 | Customer | Payment received, in retention cycle |
4. The Marketing Engine
Facebook Content System
The Facebook posting engine runs on a 3x/day cadence:
- 07:30 — Pain-point or health education post
- 12:00 — Stat, tip, or before/after transformation
- 17:00 — Video, testimonial, or social proof
Content is drawn from a 77-asset media library organised by theme (mould_health, before_after, maintenance_tip, seasonal_prep, diy_check, local_service, energy_saving, social_proof, video_vlog, referral) plus 20+ AI-generated social cards from the Card Factory.
Captions are never repeated. A pool of 60+ captions across 10 themes ensures every post uses fresh language. The theme rotation ensures the hook angle changes every post — contrarian → stat shock → pain point → social proof → founder voice — so followers never see the same approach twice in a row.
The Caption Rule
Every caption sounds like Jason wrote it. Straight-talking Aussie tradie. Educational. Includes a CTA with the phone number. The system uses local AI (Ollama) to generate themed captions that are indistinguishable from ones Jason would write himself — and costs zero dollars per generation.
Card Factory — AI Social Media Graphics
An automated 6-step pipeline that generates professional social media cards without a designer:
- fal.ai background generation — 1480×1480 dark-themed backgrounds with green/blue accent lighting, generated from text prompts
- Animated HTML card — CSS gradient orbs, pulsing badges, geometric overlays, JetBrains Mono typography
- Puppeteer rendering — 1080×1080 JPG capture from the animated HTML
- Vision QC — AI vision model scores each card. Cards scoring below 8/10 are rejected and regenerated
- Publication — Cards that pass QC are copied to the public CDN and optionally posted to Facebook
- Dual format — V2 generates both 1:1 square for feed AND 9:16 for Reels simultaneously
SMS Blaster — Campaign Engine
For outbound campaigns, the system includes a full campaign wizard with:
- Safe Search Gateway — parameterised CRM search with suburb, system type, zone, and recency filters
- 7-filter compliance pipeline — DNC check, active booking check, 24h window check, 7-day dedup, unreplied inbound guard, bad number check, duplicate queue check
- Custom message support with [Name], [Suburb], [Day] placeholders
- Image attachment support via Join API
- 3-minute minimum gap between sends, 250/day limit, business hours only
- Atomic per-contact locks preventing double-sends within the process
- Full tracking — every send logged to blast_recipients with reply and conversion tracking
Follow-Up System
Three tracks handle every stage of the customer lifecycle:
| Track | Who | Cadence | Max |
|---|---|---|---|
| Track A — Cold | Stage 1 non-responders | +3d, +7d, +14d | 3 nudges then closed |
| Track B — Warm | Stage 2–3 quoted, not booked | +2d, +5d, +10d | 3 nudges then back to cold |
| Track C — Booked | Stage 4–6 confirmed jobs | Day before, +1d after, +60d | 3 nudges then retention |
Every follow-up goes through all 6 gates. Every follow-up gives value first (a tip, an insight, something useful) then a soft ask. The banned phrases list is enforced. One question max. First name used. Openings varied. The system processes one follow-up per cycle — never batch, never spam.
5. Infrastructure & Security
How SMS Actually Sends
Outbound SMS is routed through a physical Android phone with an Optus SIM via the Join API. The message flows:
The PC Token Locker
This is the security backbone. A Python HTTP server runs on a separate physical PC at Jason's location — not on the VPS. The GPG encryption passphrase lives in a file on that PC and never crosses the SSH tunnel. The VPS can only send encrypted blobs and receive encrypted blobs.
What this means: Even if the VPS is completely compromised, the attacker cannot send SMS. They would need the GPG passphrase, which exists only on the physical PC in Kariong. The agent (Claude) never sees raw tokens. Only encrypted blobs pass through the tunnel.
Curfew Valve
A dedicated script controls when Steve is allowed to run. During business hours (8am–8:30pm AEST), the valve is CLOSED — meaning the circuit is complete and Steve processes jobs. Outside those hours, the valve OPENS — Steve is killed, jobs freeze in the queue, and no outbound SMS can be sent until morning.
This is not a soft preference. It is enforced at the process level. Steve's pull daemon checks the lock file before every job. If the lock exists (valve open, circuit broken), Steve stops.
Integrity Tracing
Every gate execution, every SMS send, every booking change is traced with a Magic Cue fingerprint — a timestamped hash chain logged to daily trace files. Traces older than 90 days auto-rotate. Every outbound SMS receives a unique integrity ID. This is not customer-visible. It is an internal compliance mechanism that makes every action auditable.
6. Complete System Architecture
7. What Changed: Before vs After
| Function | Before (Jan 2026) | After (May 2026) |
|---|---|---|
| Lead Response | Jason replies when he can — sometimes hours later, sometimes next day | Steve replies within 2 minutes, 24/7. Every lead gets a response. Every time. |
| Booking Management | Calendar in Jason's head. Double-bookings happen. Dates offered that Jason can't do. | Anna owns the calendar. 14-day view. Zone routing. No double-bookings. Self-correcting. |
| Follow-ups | Jason texts people at 9pm after work. Inconsistent. Some leads forgotten. | 3-track automated follow-up. Every lead gets 3 nudges. Value-first, never spam. 100% coverage. |
| Marketing | Random Facebook posts when Jason remembers. No strategy. No tracking. | 3x/day posts. 10-theme hook rotation. 77-asset library. AI caption generation. Card Factory graphics. |
| Website | Basic page. No lead capture. No SEO. No tracking. | Video-driven landing page. Lead form → CRM. 5 SEO blog posts. GA4 + Meta Pixel + CAPI. Sparkle mouse. |
| Compliance | None. Messages sent without guardrails. | 6-gate pipeline. Double-Send Law. Token locker. Curfew enforced. Full audit trail. |
| Scalability | Business = Jason. If Jason stops, business stops. | Business = System. Jason does the jobs. The system does everything else. |
| Cost | $0 in software. But hours of admin every day. Missed jobs. Lost revenue. | ~$200/month in infrastructure. Zero SaaS subscriptions. The admin done by AI costs less than a single missed job. |
8. The Full Technology Stack
9. The Numbers
10. What It Costs To Run — Once Built
This is the part that surprises most business owners. Once the system is built and deployed, the ongoing running costs are negligible compared to what it replaces.
| Component | Monthly Cost | What It Replaces |
|---|---|---|
| VPS Server (Hetzner/Hostinger) | ~$10–20 | Runs everything: website, CRM, agents, dashboard, APIs. One box, no SaaS sprawl. |
| Android Phone + SIM (Optus) | ~$30 | The physical SMS gateway. One Android with the Join app. Unlimited texts on most plans. Also serves as the token locker host. |
| Domain Names | ~$2 | myairconcare.com + any campaign domains. ~$15/year each. |
| Join App | $0 | One-time $5 purchase. Bridges the VPS to the Android SMS radio. No per-message fees. No Twilio markup. |
| Caddy + SSL | $0 | Automatic HTTPS for all domains. Let's Encrypt certificates. Zero config renewal. |
| Ollama (Local AI) | $0 | Runs on the VPS. Generates captions, analyses content. No API keys. No per-token billing. No rate limits. |
| Claude API (Anthropic) | ~$20–50 | Powers Steve and Anna. Approx 300–500 customer conversations/month. Each conversation costs fractions of a cent. The only variable cost in the stack. |
| Brevo SMTP | $0 | Free tier: 300 emails/day. Plenty for booking confirmations, lead alerts, and nurture sequences. |
| fal.ai (optional) | ~$5 | AI-generated social media backgrounds. ~$0.08 per generation. Only used when the Card Factory runs. Not required for core operations. |
| TOTAL MONTHLY | ~$65–100 | Replaces: receptionist ($3,000/mo), booking software ($50/mo), marketing assistant ($2,000/mo), follow-up person ($1,500/mo). Total replaced: ~$6,500/month. |
The Return On Investment
The entire system costs less per month than a single missed job. A split system clean is $250. A ducted system is $500+. If the old way of doing things — answering calls when you can, following up when you remember — caused you to miss even one job per month, the system has already paid for itself 3–5 times over. And unlike a receptionist, Steve doesn't call in sick, doesn't forget to follow up, and works 24/7 for the same flat cost regardless of volume.
11. What This Means For Other Businesses
The My Air Con Care transformation is not a one-off. It is a repeatable pattern. Any service business — air conditioning, plumbing, electrical, landscaping, cleaning, pest control, building inspection — can be rebuilt the same way.
The pattern is:
- Unified CRM — every lead, conversation, booking, and follow-up in one database. No SaaS sprawl. No data silos.
- AI Sales Agent — responds to every lead instantly, in the owner's voice, following the business's rules. Never tired. Never forgets.
- AI Calendar Manager — owns the schedule. No double-bookings. Zone-optimised routing. Self-correcting.
- Compliance Pipeline — every outbound message verified through multiple gates. No spam. No mistakes. No legal risk.
- Marketing Engine — consistent posting, fresh captions, AI-generated graphics. Builds audience while the owner works.
- Professional Web Presence — fast, beautiful, converting. Video backgrounds. Lead capture. SEO content. Tracking.
- Physical Security Layer — GPG token locker on a separate machine. The VPS cannot send SMS without the physical key.
This is not a chatbot glued to a CRM. This is a complete business operating system where two AI agents work inside a compliance framework, reading the business's actual rules, making decisions autonomously, and handling every customer interaction from first enquiry to post-job follow-up — while the owner does the actual work.
The system was built in under 4 months. It costs approximately $200/month to run. It has processed hundreds of customer conversations, managed a full booking calendar, run multi-day SMS campaigns, and generated professional social media content — all without Jason touching a keyboard.
The Key Insight
Most "AI for business" products give you a chatbot that answers FAQs. This is different. This is an agentic system — the AI doesn't just answer questions, it operates the business. It reads the rulebook. It makes decisions. It manages the calendar. It sends follow-ups. It posts on social media. It enforces compliance. It does what a receptionist, a booking manager, a marketing assistant, and a follow-up person used to do — simultaneously, 24/7, for less than the cost of a single missed job.
My Air Con Care — 0432 055 804 — Central Coast NSW — ABN: 85 562 602 085
Powered by Autonomos AI — Agentic Business Management Systems