MARSON POOLS SYSTEM MONITOR

Pool Construction & Service — Custom Automation Infrastructure
Loading...
Connecting...
How Data Moves the 7 core automations
Go Live (Contract → Everything)
Trigger: user clicks GO LIVE in Contract Generator
1
Contract Generator POSTs to Cloudflare Worker, which creates Slack channel + pins spec sheet (instant)
2
Worker queues Dashboard + QBO creation to Cloudflare KV store
3
Go Live Processor (polls every 30s) picks up queue, creates QBO customer + Dashboard row
4
Posts summary to Slack #management. One button → 4 systems updated.
Photo Pipeline
Trigger: crew uploads photo to a job's Slack channel
1
Slack Bot receives the image via Slack Events API (real-time, always on)
2
Bot copies the photo to NAS at /Volumes/Construction Server/{job}/Photos from Slack/
3
Bot uploads the photo to QBO as an attachment on the matching customer record
4
Photo now lives in 3 places: Slack (original), NAS (backup), QBO (accounting)
Auto Push & Archive
Trigger: every 5 minutes (auto-detects milestones)
1
Scans Dashboard for jobs with a plaster date that haven't been pushed to QBO yet
2
Queues push → QBO Push Watcher (always-on) builds construction notes and writes to QBO customer
3
Verifies in QBO — actually reads back the customer record to confirm notes landed
4
When all 6 final inspections pass AND QBO verified → auto-archives Dashboard job
New Job Onboarding
Trigger: new job added to Google Sheets (via Dashboard)
1
New Job Sync polls Dashboard API every hour for new jobs
2
For each new job, creates a Slack channel named #{job-number}-{customer}
3
Maps the channel to its NAS folder and QBO customer in channel_folder_map.json
4
Channel is ready for crew — photos posted there auto-route to NAS + QBO
Cash Invoice Handling
Trigger: daily at 7:00 AM (cron)
1
Queries QBO API for invoices matching the 21 known cash-pay customers
2
Exports each invoice to Excel + PDF (local archive)
3
Uses Playwright browser automation to delete the invoice from Pool Brain
4
Deletes the invoice from QBO — cash customers get paper invoices only
Contract → Layout → Build
Trigger: salesperson creates a contract
1
Contract Generator (web app) captures pool specs, options, pricing
2
Contract data syncs to Pool Layout Tool which auto-generates the engineering drawing
3
Layout uses Fabric.js + Maker.js — rectangle pool, cross-section, coping, features
4
Both feed back to Dashboard API which tracks the job through construction
Health Monitoring V2
Trigger: every 15 minutes (cron) — 22 checks
1
Calls QBO API with live token to verify it works (not just file age). Checks token expiry math.
2
Logs into all 4 Gmail accounts via IMAP to verify app passwords are valid and mailboxes accessible
3
Checks all 8 LaunchAgents loaded, 2 always-on processes running, 4 logs for errors + staleness
4
Pings 4 web apps, NAS read test, Dashboard API. Posts failures to Slack #management
Systems 0 click to expand
Services & Automations
APIs & Integrations
Web Applications
MCP Servers (Claude AI access layer)
Health Checks 0
System Architecture
Healthy
Warning
Error
Data flow
Control / MCP
Hover nodes for details
USER INPUT AUTOMATION Open Claw Mac Mini DATA LAYER MCP BRIDGE AI AGENTS WEB APPS SLACK WORKSPACE Crews post photos + updates to job channels GOOGLE SHEETS Master job list — source of truth POOL BRAIN (EXTERNAL) Field service mgmt — webhooks only CUSTOMERS Email (5 accounts) inbound Open Claw — Mac Mini 24/7 Slack Bot (Always On) Listens for photos, routes to NAS + QBO PID --- | CPU --% | MEM --% New Job Sync (Hourly) Polls for new jobs, creates Slack channels --- Cash Invoice (Daily 7AM) Extracts cash invoices, deletes from QBO+PB --- Health Check (Every 15m) Pings all systems, writes live_status.json --- QuickBooks Online MARSON POOLS, INC. Token: --- Customers, invoices, payments, attachments NAS / Construction Server Synology — mounted at /Volumes/ ---% used Job folders with photos, docs, contracts Dashboard API Google Apps Script web app ---ms response Job data, permit status, schedules Email (5 Accounts) 4 Gmail + 1 Outlook marsonpools@ | christian@ | lydia@ construction@ | outlook (seasonal service) Pool Brain External SaaS Jobs, routes, invoices Webhooks + Playwright only MCP BRIDGE — gives Claude real-time read/write access to business data Email MCP search, read, list across all 5 accounts QBO MCP invoices, customers, payments, reports Dashboard MCP job data, permit status, schedules Claude Desktop AI assistant for daily operations Email triage, customer Q&A, invoice lookup Claude Code (System Caretaker) Builds, deploys, monitors, fixes Reads health data, diagnoses failures, ships code Contract Generator Pool specs, pricing, customer contracts marson-contracts.pages.dev Pool Layout Tool Engineering drawings from contract data marson-pool-layouts.pages.dev Construction Dashboard Live project tracker for all active jobs glittering-taffy-7eee8a.netlify.app This Dashboard Live system health monitor marson-system-map.html events + photos data backend polls for new jobs Playwright deletes inbound email upload photos copy to job folder create channels fetch job list query + delete invoices delete via Playwright failure alerts to #management live_status.json read/write read/write builds + deploys sync reads status 4 automations on Open Claw | 5 data backends | 3 MCP servers | 2 AI agents | 4 web apps
Hardening Phases
1
Bug Fixes
4 fixes deployed and verified
DONE
2
Health Check System
Runs every 15min, posts failures to #management
DONE
3
Script Hardening
Retries, alerts, crash safety on bot + sync + cash invoice
DONE
4
Contract Integration
Manual push: Dashboard, QBO, Pool Brain
DONE