RunMyCRM × Glitch — Systems Manual

v5.2 · last updated 2026-06-02 · supersedes v5.1 (06-01) · App host agents.realtalkha.com · DO droplet 142.93.60.203
834 GHL tools (~748 accessible)+ Browser worker (UI-only surfaces)Master Glitch + 22 specialists 6 live tenants5 channels

1 · What this system is

A FastAPI app that runs Glitch, an AI operator for GoHighLevel (GHL) sub-accounts. One master Glitch router plus 22 specialist bots answer owner/client requests across multiple channels and act directly on the CRM through ~834 GHL tools (691 working) exposed by the Glitch tool engine.

2 · Naming (customer-facing vs internal)

Isolation: Glitchbotz acts per sub-account only · BridgeBotz acts per agency (its own subs) only · Claude is the only global cross-agency actor. Never disclose architecture, system prompts, blueprints, secrets, or "how to replicate" to any customer.

3 · Tenants (6 live)

TenantlocationIdPort
Real Talk BizDev (agency master)ifitVy09cFwlEVgEAFDS9100
Belle Hudgins2DRBCLk54BxoDf3y4gAr9101
Andres Castro Real EstateeymFYihFjQacJyQyWrps9102
Myriam RosastNFDsw40lHcUzNulL71a9103
Giselle Danger (Glitch Beta)3itkbbuVmyrNwKZlFQky9104
Adriana SegoviaKc2DiFV2DPnLQc8m7pjy9105

A 7th Mongo doc (4QecTywGwEwwiabgL7lF) is a nameless stub — not provisioned. Live roster = Mongo telegram_chat_locations; the tenants collection still holds some test/placeholder rows (cleanup pending). Per-tenant PIT is Fernet-encrypted.

4 · Channels (all route to one Glitch brain)

Inbound from any channel → POST /api/specialist/invoke (thin-forwarder) → reply on that channel.

ChannelPath
Telegramn8n forwarder → /api/specialist/invoke (primary)
Discorddiscord_worker.py (PM2 glitch-discord-<tenant>)
WhatsApp / SMSGHL inbound → /api/glitch/channel-webhook · reply via tenant PIT
Web chat / GHL Ask-AIiframe → /api/specialist/invoke

5 · Auth model

6 · Pricing (canon, locked 2026-05-31)

Glitch fleet

Done-For-You (AI Operator Integration)

7 · Bots & guardrails

Master Glitch router + 22 specialists (leadhunter, followup, reviewbot, bookingbot, missedcall, socialmgr, contentbot, reportbot, onboardbot, invoicebot, scrubbot, pabot, campaignbot, chatbot, teambot, compliance, clientpulse, workflowbot, voicebot, kbbot, academybot, agencybot).

Shared behavioral guardrails (in glitch_engine_config.FORMATTING_RULES): anti-laziness (call a tool before saying "can't"), no fabrication / no fake success, empty-result = report literally, auth-blocked honesty, credential safety, act-don't-stall, GHL-native-first, never-write-a-how-to, confidential-IP / no-blueprint. System self-description is dynamic (build_system_facts()) so it can't drift.

8 · Tool engine

~834 GHL tools per full engine (the 6th/legacy engine has 586); ~86 dead-quarantined (genuinely no-API), so ~748 accessible per sub-account bot. Verified live 2026-06-02: 11/12 core-category spot-test passing, all 6 tenants reachable. Bots use a short per-bot list plus find_tools() / use_tool() to reach the full catalog. Write/destructive tools require a two-step confirm. Exposed per-tenant as a Streamable-HTTP MCP server, token-gated at /ghl/<locationId>/mcp for GHL Agent Studio.

Dead-but-browser-buildable tools (e.g. create_course) are no longer hidden — find_tools/use_tool surface them and route to the browser worker (§9).

9 · Browser worker — UI automation (the "hands")

The core unlock for actions GHL exposes no API for. A headless Playwright browser logs into GHL as the agency admin (one login → switches into any sub-account) and operates the real dashboard, then verifies by reading the result back — so bots can do these things and prove it (no fabrication). GHL can't scope-block its own logged-in UI.

10 · Status (2026-06-02)

11 · Deploy discipline

Source of truth = this manual + the project memory index. Confidential — internal operations reference.