System Architecture · Bird's-Eye View

Every moving part,
in one place.

The full Addason Digital stack — data pipelines, APIs, costs, automation, and client journey. Click any node to expand. Built for operators and investors.

7
external APIs
25
audit checks
~$260
monthly cost at 3 clients
$2,400
monthly revenue at 3 clients
Live
In progress
Planned
$0 Free tier
$/use Pay per use
$/mo Subscription
🧭
Client Journey
How a prospect becomes a paying client — discovery to onboarding
Live
+
🔍
Discovery
How clients find Addason Digital
Live+
📈 Organic SEO — addasondigital.com
Google ranking for "SEO audit Santa Fe" and adjacent terms. Site built by the same system we sell.
$0Live
How25-check SEO audit applied to addasondigital.com itself. Netlify hosting, schema markup, GSC submission daily at 6 AM via gsc-submit.mjs
Key pagesHomepage, /workflow/, /stack/, /pricing/, /about/
CostDomain: $10/yr (Cloudflare). Hosting: free (Netlify). Total: ~$1/mo
📸 Casey Addason Photography → referral
addasonphoto.com links to addasondigital.com. Footer + case study card. Cross-domain authority flow.
$0Live
Anchor text"Santa Fe Wedding Photographer" (footer), "See Casey Addason Photography" (cross-sell CTA)
Directionaddasonphoto.com → addasondigital.com and addasondigital.com → addasonphoto.com (reciprocal)
Free Mini-Scan (homepage audit form)
Prospect enters their URL. Firecrawl + 25 checks run live. Score + top 3 issues shown instantly. No email required.
$/scanLive
TechNetlify Function → Firecrawl scrape → 25 audit checks → score rendered client-side
Cost per scan~$0.005 (Firecrawl page scrape). At 100 scans/mo = $0.50
Filescripts/generate-audit-report.mjs
📋
Qualification + Intake
Mini-scan → qualified call → proposal → close
Live+
📝 HoneyBook — Intake Form
7/20 custom fields live. Collects: business name, URL, category, goals, monthly budget, timeline, referral source.
$19/moLive
Intake URLHoneyBook form
FieldsBusiness name, website URL, category, monthly budget, timeline, primary goal, how they found us
No APIHoneyBook has no public API for forms. Casey configures manually. Client data lives in HoneyBook dashboard.
Fileknowledge/client-honeybook-setup.md — full field spec
📄 HTML Proposal System
Dark editorial HTML proposal generated per client. 11 sections: problem, solution, case studies, pricing, guarantee, timeline.
$0Live
Templateaddason-audits-site/templates/remaster.html — parameterized, generates per-client
First clientOjo Caliente Mineral Springs — built as template proof
Pricing shown$1,000 setup + Standard $500/mo or Builder $800/mo. Beta 50% off for first 10 clients.
📦
Core Product
What clients actually get — the deliverables
Live
+
🏗️
Website Remaster
Migrate from Squarespace/Wix to Netlify. Full ownership, $0/mo hosting.
Live+
🚀 Netlify — Hosting
Every client site auto-deploys from GitHub on git push. ~15 second deploys. SSL automatic. Free tier per site.
$0/siteLive
Sites liveaddasondigital.com (f5e18f3f), addasonphoto.com, marinaremaster (clients/modern-mind-alchemy/site)
Deploy triggergit push origin main → Netlify webhook → auto-deploy in ~15s
CostFree tier for static sites. Pro team plan if needed (~$19/mo).
ConfigEach site has its own netlify.toml in its base dir. Never a root-level netlify.toml.
🚂 Railway — Hosted Editors
Each client gets a Railway-hosted editor. They log in, edit copy, hit save — changes commit to GitHub and auto-deploy to Netlify.
$5/moLive
Casey editoraddason-photo-editor — project d2c1c05e
Marina editormma-editor — project 96449373
Kayla editorkayla-editor — service 1f62953b inside Casey's project
AuthPassword: addason2026. Any username. No email required.
Deploybash scripts/deploy-editors.sh [casey|marina|kayla|all]
CostHobby plan $5/mo. Free plan maxed at 2 projects (Casey + Marina).
🖼️ Cloudinary — Image CDN
All client site images served via Cloudinary. Auto-format (WebP/AVIF), auto-compress, responsive sizing via URL params.
Free tierLive
Cloud namednajp1vs4
URL patternres.cloudinary.com/dnajp1vs4/image/upload/w_1400,q_auto,f_auto/[public_id]
Free tier25GB storage, 25GB bandwidth/mo, 25K transformations/mo
Cost at scale$89/mo for Plus plan. At 10 clients: still likely free tier.
🐙 GitHub — Source Control
Single private repo: caseyaddason/casey-addason-photography. All client sites live as subdirectories. Every change is tracked.
$0Live
Repogithub.com/caseyaddason/casey-addason-photography (private)
Structure02-WEBSITE/site/ → addasonphoto.com · addason-audits-site/ → addasondigital.com · clients/[slug]/site/ → client sites
Editor integrationRailway editors commit directly to GitHub via GitHub token env var. Save = commit = Netlify deploy.
📊
Monthly SEO
Ongoing rank improvement — blog posts, tracking, schema, internal links
Live+
🔎 Google Search Console API
Real keyword positions, impressions, clicks for each client. Pulled daily at 6 AM. Drives the rank tracking widget on the dashboard.
$0Live
Endpointssearchanalytics.query (positions/clicks/impressions) + urlInspection (indexed/not indexed)
Schedulelaunchd: com.addason.gsc-rank-tracker.plist — daily 6 AM
Scriptscripts/gsc-rank-tracker-lite.mjs · scripts/gsc-submit.mjs (URL submission)
AuthService account JSON in ~/.openclaw/secrets/. Each client site must be verified in GSC by the client first.
📡 DataForSEO API
Live keyword volumes, SERP rank positions, competitor data. Flips trust bars from amber "estimated" to green "live" on client dashboards.
$/callLive
Logincaseyaddason@gmail.com — API password in ~/.openclaw/secrets/openclaw.env
Endpoints usedkeywords_data/google_ads/search_volume/live · serp/google/organic/live/regular
Cost per callSearch volume: ~$0.0006/keyword · SERP live: ~$0.006/keyword · balance: $1.00
MCPdataforseo-mcp-server in ~/.claude/mcp.json — available in every Claude session
✍️ Blog Pipeline (Gideon)
AI-assisted blog post creation for Casey Addason Photography. 174+ posts live. Venue-specific, keyword-targeted, 1000–1200 words with gallery images.
API costLive
AgentGideon — agents/gideon/agent/system.md
CMSSquarespace (Casey's photography blog). API: scripts/lib/sq-client.mjs (cookie-based)
ImagesSelected from gallery catalog: shared-context/gallery-catalog/INDEX.md
Target1000–1200 words, H1 contains target keyword, 8–15 images, no banned phrases
📱
Client Dashboard
Live SEO score, rank tracking, ROI calculator, homework queue
Live+
🎯 SEO Score — How it's calculated
25 automated checks across 5 categories. Starts at 100, deductions per issue. Investor Q: "How did you get that 95 score?" — it's right here.
InternalLive
Score formula100 − (critical × 10) − (warning × 5) − (info × 1). Capped at 0. Casey's current score: 95/100.
CategoriesSEO (meta, schema, canonicals) · Local (NAP, GBP, citations) · Social (OG tags, IG) · Reviews (count, recency, platforms) · Technical (speed, mobile, SSL)
Scriptscripts/generate-audit-report.mjs — 25 checks, outputs JSON + HTML report
Data sourcesFirecrawl (page content) · DataForSEO (volumes, SERP) · GSC (positions) · Manual checks (GBP verification)
Score breakdown example (Casey, 95/100): Critical issues: 0 × −10 = 0 Warnings: 1 × −5 = −5 Info items: 0 × −1 = 0 ───────────────────────────────── Final score: 95 / 100
💰 ROI Calculator
Live revenue potential based on real keyword volumes (DataForSEO) and real positions (GSC). Shows the money on the table.
InternalLive
FormulaΣ(keyword_volume × page1_ctr × conversion_rate × avg_booking_value)
Inputs_roi_inputs in each client JSON. avg_service_price, conversion_rate, page_one_ctr, current_position, keywords[]
Trust barGreen "Live · DataForSEO + GSC" = all inputs verified. Amber "Estimated" = some inputs still estimated.
Casey example: top-3 keywords: 370/mo combined volume × 0.055 CTR (page 1 avg) × 0.02 conversion (wedding photography) × $3,500 avg booking = $1,424/mo potential at page 1
🐕 Times AI Assistant
Client-facing AI chat inside the dashboard. Powered by Claude Haiku. Answers questions about the audit, queues change requests, explains recommendations.
$/msgLive
ModelClaude Haiku 4.5 ($0.00025/1K input tokens, $0.00125/1K output)
Tools4 tools: get_client_data · get_audit_findings · queue_change_request · get_seo_explanation
ContextClient profile JSON loaded on first message. Firecrawl used for live page checks. Supabase for message history.
Rate limiting20 messages/day per client. Cached in Supabase.
Endpointaddason-audits-site/netlify/functions/chat-message.mjs
Named"Times" — named after Marina's dog. Never called "AI" in the UI.
🗄️ Supabase — Database
All structured data: leads, SEO snapshots, blog posts, gallery catalogs, agent activity, approvals. 13 tables, 234+ rows.
Free tierLive
Project refCreds in ~/.openclaw/secrets/openclaw.env — SUPABASE_URL + SUPABASE_ANON_KEY
Key tablesfunnel_snapshots · leads · seo_keywords · blog_posts · gallery_catalogs · approvals · agent_activity
Client liblib/supabase_client.py (Python) · scripts use @supabase/supabase-js directly
Backupscripts/backup-supabase.mjs — runs nightly, stores JSON snapshots in state/
CostFree tier: 500MB DB, 5GB bandwidth. At 10 clients likely still free. Pro: $25/mo.
🤖
AI Visibility Tracking
Are clients being cited by ChatGPT, Claude, Perplexity, Google AI Overviews?
In progress+
📜 llms.txt — AI Crawler Access
Structured plain-text file at /llms.txt that AI crawlers read to understand a site. addasonphoto.com has this live.
$0Live
Live ataddasonphoto.com/llms.txt — readable by Claude, GPT, Perplexity crawlers
ContentBusiness summary, services, prices, location, key URLs, voice/style notes for AI
Standardllms.txt spec by Anthropic — growing adoption in AI search optimization
🔬 Monthly AI Citation Check
Ask Claude, ChatGPT, Perplexity "best [category] in [city]" and record whether client is cited. Tracked in dashboard AI visibility panel.
$/checkBuilding
Queries"Best wedding photographer in Santa Fe NM" across Claude, ChatGPT, Perplexity, Google AI Overviews
Cost~$0.01/check set (4 queries × 4 platforms). At 10 clients monthly: ~$0.40
StatusDashboard panel built, checks not yet automated. Manual check run monthly until script is ready.
⚙️
Data Pipeline
How raw web data becomes an SEO score — every step
Live
+
🕷️
Crawl Layer
Fetching and parsing the client's website
$16/moLive+
🔥 Firecrawl — JS-rendered crawling
Handles JavaScript-heavy sites (Squarespace, Wix) that block simple HTTP fetches. Returns clean markdown + structured data.
$16/moLive
API keyfc-03492b64f3ee4939945cb02d4157d19e (in ~/.claude/mcp.json)
Use casesMini-scan scraping · audit report generation · Times AI live page fetch · sitemap discovery
MCPfirecrawl-mcp server in ~/.claude/mcp.json — usable directly in Claude sessions
Stealthy modefirecrawl_stealthy_fetch for bot-blocking sites (Four Seasons, Hyatt). Bypasses Cloudflare.
Cost$16/mo Hobby plan = 3,000 pages/mo. At 10 clients + monthly recrawls: ~1,000 pages. Well within budget.
🦎 ScraplingServer — Stealth Fallback
Secondary scraper when Firecrawl hits bot-blocking. MCP available in Claude sessions.
$0Live
MCP toolsbulk_fetch, stealthy_fetch, bulk_stealthy_fetch — available via ToolSearch in Claude
Use caseFallback when Firecrawl's stealthy mode still fails on heavily-protected sites
25 Audit Checks
Every check that runs to produce the SEO score — with weights
InternalLive+
🏷️ SEO Checks (8 checks)
Title tag, meta description, H1, canonical, og:tags, robots.txt, sitemap, page speed signal.
Internal
Check Weight Data source ───────────────────────────────────────── Title tag Critical Firecrawl scrape Meta description Warning Firecrawl scrape H1 present Critical Firecrawl scrape Canonical tag Warning Firecrawl scrape og:title + image Warning Firecrawl scrape robots.txt Warning HTTP fetch sitemap.xml Warning HTTP fetch SSL/HTTPS Critical URL check
📍 Local SEO Checks (7 checks)
NAP (name/address/phone) consistency, Google Business Profile, LocalBusiness schema, citation count.
Internal
Check Weight Source ────────────────────────────────────────────── Phone number on homepage Critical Firecrawl Address in footer/contact Warning Firecrawl LocalBusiness JSON-LD Critical Firecrawl GBP claimed + verified Critical Manual / DataForSEO NAP consistent (3 checks) Warning Cross-reference Map embed present Info Firecrawl
Review Checks (4 checks)
Total review count, star rating, platform diversity (Google/Knot/WW/Thumbtack), recency.
Internal
Data sourceManually entered in client JSON (review_count, avg_rating, platforms). DataForSEO can auto-pull Google reviews at scale.
Casey's stats89 reviews · 5.0 avg · 4 platforms (Google 27, The Knot 8, WeddingWire 7, Thumbtack 47)
🤖
Automation System
Scheduled agents that run without Casey's involvement — 25 launchd services
Live
+
🕐
Scheduled Scripts (launchd)
macOS launchd plist services — always running on Casey's machine
$0Live+
📅 GSC Rank Tracker + URL Submitter
6 AM daily. Pulls real keyword positions from Google Search Console. Submits new URLs for indexing.
$0Live
Scriptsscripts/gsc-rank-tracker-lite.mjs · scripts/gsc-submit.mjs
Schedule6 AM daily via com.addason.gsc-rank-tracker.plist
OutputWrites to Supabase seo_keywords table. Dashboard reads from there.
💬 Cleo — Follow-up Scheduler
10 AM daily. Checks lead pipeline for overdue follow-ups. Drafts outreach for Casey to review and send.
API costLive
Scriptscripts/cleo-followup-scheduler.mjs
Data sourceSupabase leads table. Checks last_contact date vs follow-up window.
ImportantDrafts only — Casey approves and sends all outreach. Cleo never sends automatically.
❤️ Monica — Health Monitor
Monitors all sites and agents. Alerts Casey via Discord if anything breaks.
$0Live
Configagents/monica/agent/system.md
ChecksSite uptime (curl 200), agent last-run timestamps, Supabase connectivity, GSC API auth
AlertsDiscord message bus. All agent communication goes through Discord for visibility.
📸 Sonny — Instagram
Drafts Instagram captions for Casey's photography business. Matches brand voice. Casey approves before posting.
API costLive
Configagents/sonny/agent/system.md · IG: @caseyaddason
Voice rulesSame brand voice as addasonphoto.com. No "stunning", "amazing", "captured". Direct, editorial.
👥
Clients
Current client roster — 1 live, 1 onboarding, 1 trial
3 clients $1,300/mo MRR
+
📷
Casey Addason Photography
Self — proof of concept. Builder tier. Santa Fe, NM.
BuilderLive+
📊 Current stats
SEO score 95/100 · 51 pages indexed · 89 reviews · booking 2026 & 2027
Live
Target keyword"santa fe wedding photographer" — currently ~#15 GSC avg, 140/mo volume (DataForSEO live)
ROI potential$2,156/mo at page 1 (top 3 keywords × CTR × conversion × $3,500 avg booking)
Score history83 → 92 → 94 → 95 (improving each month)
🧠
Modern Mind Alchemy — Marina Pirkle
Clinical hypnotherapist. Austin, TX. Standard tier. Month 1.
Standard $500/moLive+
📊 Current stats
Score 41/100 (F) → improving. Site remastered, editor live, dashboard live.
Month 1
Top keyword"hypnotherapy austin" — 390/mo (DataForSEO live). Currently unranked.
Homework9 pending items: title tag, phone number, LocalBusiness schema, GBP claim, 3 reviews, blog
Forbes angleMarina is Forbes-featured. High E-E-A-T signal once properly marked up in schema.
💍
Mineralbound Silver — Kayla
Silversmithing workshop + jewelry. Santa Fe, NM. Trial.
TrialTrial+
📊 Current stats
Score 47/100 (D). Remaster preview live. Editor deployed. Dashboard live. 4 critical items locked behind subscribe gate.
Trial
Top keyword"bachelorette party santa fe" — 110/mo (DataForSEO live). Unranked.
Niche noteSilversmithing keywords return null from Google Ads API — too hyper-local. Real traffic from Instagram + tourist referrals.
Monthly Cost Breakdown
Every dollar spent running Addason Digital at current scale (3 clients). Most costs don't scale linearly — hosting 10 clients costs almost the same as 3.
Service Cost Type What it does File / config
Anthropic Claude API ~$50–200/mo $/use Powers Times AI chat, audit generation, blog writing, all Claude Code sessions. Was $205 in April (Opus overuse). Target: $50–80 with Sonnet default. ~/.claude/settings.json — model: "sonnet"
Firecrawl $16/mo $/mo JS-rendered page crawling for audits and Times AI live fetch. 3,000 pages/mo included. FIRECRAWL_API_KEY in ~/.claude/mcp.json
Railway $5/mo $/mo Hosts client editors (Casey, Marina, Kayla). Hobby plan = 2 projects. Third editor added as service inside existing project. scripts/deploy-editors.sh
HoneyBook $19/mo $/mo CRM for both businesses (photography + Addason Digital). Intake forms, contracts, invoices. knowledge/client-honeybook-setup.md
DataForSEO ~$2–5/mo $/use Live keyword volumes and SERP positions. Pay per call. ~$0.0006/keyword volume check. Balance: $1.00. DATAFORSEO_* in openclaw.env
Netlify $0 Free Hosts all sites (addasondigital.com, addasonphoto.com, client remasters). Free tier per site. Each site/netlify.toml
Supabase $0 Free Database for all structured data (leads, SEO data, blog posts, agent activity). 13 tables. ~/.openclaw/secrets/openclaw.env
Cloudinary $0 Free Image CDN for all client sites. Auto-format, auto-compress, responsive. 25GB/mo bandwidth free. Cloud name: dnajp1vs4
GitHub $0 Free Source control. Single private repo contains all client sites as subdirectories. caseyaddason/casey-addason-photography
Cloudflare (domains) ~$2/mo $/yr Domain registrar for addasondigital.com, addasonphoto.com. At-cost pricing (~$10/yr each). DNS records in Cloudflare dashboard
Google Search Console $0 Free Real keyword positions, impressions, clicks. API called daily. Best free SEO data available. scripts/gsc-rank-tracker-lite.mjs
Total (3 clients) ~$94–244/mo Revenue at 3 clients: $500 + $800 + $0 (trial) = $1,300/mo. Gross margin: 81–93%.
Total (10 clients) ~$150–300/mo Revenue at 10 clients (mix Standard/Builder): ~$5,500–6,500/mo. Costs barely move. Gross margin: 95%+.