Sign out

Loading…

New Task

ReadTomato Command Center

Your workspace hub — pick an area to open it, or ask an agent below to run the work.

Areas
Accounting
Confidential — P&L, invoices, billing. Opens the local dashboard.
Marketing
GHL migration and the dental lead pipeline.
Workforce
Employee portal, payroll, and TopTracker time audit.
Operations
System health, build progress, meetings, to-dos, droplet.
Agents · ask TALLI in chat to run one
Nexus
Orchestrator — routes work to the right specialist. Use for anything spanning multiple areas.
Nexus, plan and route the June 2026 close across the right specialists.
Forge
Builder — multi-file features, new routes, schema changes. Always follows the playbook + Gate 0.
Forge, build [feature] following the playbook — present Gate 0 first.
Pulse
Investigator — read-only root-cause analysis. Use when something is broken and you need the why.
Pulse, investigate why [X] is failing and find the root cause.
Patch
Bug fixer — surgical, minimal changes. Needs a known reproduction case.
Patch, fix [bug]. Repro: [steps]. Smallest change only.
Queue
Triage — manages the backlog, sets priorities. Use to decide what to work on next.
Queue, triage my open items and tell me what is most urgent.
Lens
Reviewer — architecture, dead code, duplication, quality. Read-only; run before shipping.
Lens, review [area] for dead code, duplication, and structural risk.
TopTracker Time Audit
Hours, rate, and total per employee per pay period — pulled from submitted TopTracker invoices. Review view; no automatic flagging.
👥 Employee portal 🧾 Payroll summary 📅 Payroll archive
Loading time audit…
Build Progress
Live project and task status from the board. Open full board →
Loading build progress…
Meeting Summaries
Summaries captured by the twice-daily meeting digest. Action items land in the To-Do tab.
Loading meeting summaries…
Client Success
The machine that carries ReadTomato from ~20 to 200 clients with four human touchpoints — everything else is automation, Malcolm, and self-serve. Assigned at Band Camp Jun 24 · verified against Drive SOPs & onboarding transcripts Jul 14.
📄 Open Client Success — structure & intake
The Four Human Gates
🤝 Sales call 🎉 Welcome Party 🎙️ HTE interviews 🛟 Save-the-deal — everything between is automation + Malcolm + self-serve, with backflows: referrals feed sales, saves rejoin the loop, escapes grow the machine.
Targets Once Live
< 1h
First response (Malcolm)
≥ 80%
Resolved without a human
≥ 90%
Interview show-rate
< 2%
Monthly churn
1 : 60
Clients per CSM (AI-leveraged)
⏳ Decisions waiting on Marshall
  1. Volume forecast — monthly onboarding numbers Q3–Q4
  2. Ratio target — 1:60 AI-leveraged vs 1:40 high-touch
  3. The CS Lead — formal offer to Ashley, or external hire
  4. Backup content policy — one per quarter as courtesy
  5. Partner-delivered CS — do 25%-tier clients live inside the machine
  6. Save budget — CSM's per-account discretionary ceiling
🗺️ Rollout
Days 1–30 — decisions locked · FAQ box into Malcolm · Welcome Party piloted · manual health list starts
Days 31–60 — engagement tracking · chase sequences · first monthly CS report · guide library 1–6
Days 61–90 — health dashboard live · save playbook exercised · deflection ≥70% · ratio reviewed against real volume
📥 Intake responses — interviewers & sales, due one week from send
Rob — pending Jody — pending Marshall — pending Jim — pending Sherry — pending
Update these by hand for now — the tracker automates when the CS build starts (Phase A).
System Health
📊 Financial
Current month
Revenue
Net P&L
👥 Payroll
Period
Total this period
Pending review
🔗 GHL Migration
Contacts (RT account)
Workflows
Pipelines
Server
Portal
port 8081
Accounting
port 8080
GHL
port 8090
CPU
loading…
Integrations
Checking Drive…
Alerts
Loading…
Current Month P&L
Revenue
loading…
Expenses
tools + people
Net P&L
margin —
Gap to Break-Even
revenue needed
6-Month Revenue vs Expenses
Revenue Expenses
Open Full Accounting Dashboard ↗
Current Period
Period
Total Payroll
Paid
Pending Review
Employee Status
Employee Silo Amount Status Waiting
Loading…
RT Account Status
Contacts
in RT account
Workflows
of 34 needed
Pipelines
complete ✓
Opportunities
Custom Fields
of 48 needed
Migration Progress
Workflows Migrated
— of 34 workflows —%
Contacts Imported
— of 2,958 contacts —%
Open Full GHL Dashboard ↗
Main Tools
👥
Employee Portal
Invoice submissions, manager review queue, payroll summaries, and approvals.
Live
Open Payroll
📊
Accounting System
Monthly P&L, bank expenses, Chargify revenue, partner payouts, and closing books.
Live
Open Accounting ↗
🔗
GHL / CRM
GoHighLevel contact management, pipeline views, and CRM operations.
Coming Soon In development
Command Center
RT operations dashboard, campaign tracking, and pipeline workflow.
Live
Open Command Center
Analysis Tools
AI Cost Tracker
Monthly AI and tool subscription costs. Identify high-spend vendors and unnecessary subscriptions.
Analysis
Cost Analysis
Expense trends across silos. Spot cost concentrations and month-over-month changes.
Analysis
Pricing Analysis
Per-client profitability, tier breakdowns, cut candidates. Finance-level subscription intelligence.
Analysis
Partner Payout Calculator
Monthly silo totals and partner split calculations. Payout approval and locking workflow.
Live
Reporting & Communication
Report Generator
Generate monthly P&L reports and send to Jim with a 30-day secure link.
Email
Billing Email Tool
Send card update and invoice emails to clients. Branded templates, tracked sends.
Email
Invoice Manager
Employee invoices — create, send, track payment. Generates PDF invoices.
HR
Campaign Report
FI campaign analytics dashboard with lead flow, cost-per-lead, and conversion metrics.
Live
Operations & Data
Expense Categorizer
Review and assign silos to bank transactions. Merchant memory auto-fills known vendors.
Live
Partner Adjustments
Manual silo-to-silo transfers for partner payout corrections.
Manual
System Status
Import health, data freshness, last-run timestamps for all data sources.
Ops
DigitalOcean — 152.42.198.212
CPU Usage
loading…
Load 1m
Load 5m
Load 15m
Memory
loading…
Used
Total
Storage
loading…
Used
Free
Uptime
152.42.198.212
Running Services
Portal (8081)
Accounting (8080)
Command Center (8082)
Financial Reports
Monthly P&L Reports
View and generate monthly profit & loss reports. Send to Jim via secure link.
Live
Accounting Dashboard
Full financial overview — revenue, expenses, silo breakdown, KPIs, trend analysis.
May 2026
Totals & Partner Payouts
Monthly totals by silo, partner split calculations, payout approval workflow.
Live
Pricing Analysis
Per-client profitability, subscription tier breakdown, cut candidate identification.
Analysis
Billing Emails
Send card update requests and invoice emails to clients.
Outbound
Employee Invoices
Manage employee invoice submissions and payroll summaries.
Portal
Campaign & Operations
FI Campaign Report
First Impression campaign performance — leads, costs, conversion tracking.
May 2026
System Status
Import agent health, data freshness, last run timestamps for all data sources.
Ops
Partner Adjustments
Manual silo-to-silo transfers and partner payout adjustments.
Manual
Payroll Summary
Employee payout history, invoice archive, period totals, and pay period management.
Portal
Loading projects…
Edit Project
Loading web dev requests…
Dental Lead Generation Pipeline
Zero-cost strategy · 14 US cities · Built June 2026 · Due June 30
DELIVERABLE
Current lead counts
total leads
with email
need enrichment
📄 View full pipeline report 📐 How the list was built →
Methodology memo — sourcing, dedup, and QA. Safe to share; no per-lead data.
Lemlist Export4,981 contacts
+
NPPES DownloadAll US dentists, free
Phase 1verify_npi.py
Phase 2find_websites.py
Phase 3find_emails.py
Masterlistbuild_masterlist.py

Before You Run Anything — Two Setup Steps
STEP 0A
Download the NPPES File (free government database)
This is the US registry of every licensed dentist. It's a free download from the Centers for Medicare & Medicaid Services. About 500MB zipped.
Go to this URL → download "Full Replacement Monthly File" → unzip it → save the big CSV as:
data/nppes_full.csv inside the marketing-platform folder
https://download.cms.gov/nppes/NPI_Files.html
The ZIP extracts to ~6GB. That's normal — it has every healthcare provider in the US. The script filters it down to dentists in your 14 cities.
STEP 0B
Export Your Lemlist List as a CSV
Save the 4,981 contacts you already scraped from Lemlist as a CSV file. Name it:
data/lemlist_export.csv
The script auto-detects column names — whatever Lemlist exports (First Name, Last Name, LinkedIn URL, City, State) it will pick up correctly.
First check: open the file and count the rows for Sarasota. If Sarasota only has 100 rows instead of 178, Lemlist's "select all" only got the first page. You'll need to re-export page by page for any city that looks capped at exactly 100.

Phase 1 — Verify Every Contact Against NPPES
Phase 1
verify_npi.py — Cross-Reference Against Government Registry
Reads the NPPES file (~6GB) and extracts every licensed dentist in your 14 cities. Then fuzzy-matches them against your Lemlist export by name. Any contact that matches gets a "NPI Verified" flag — meaning they're a real, licensed practitioner.
What it produces
Run command
cd /home/gly/projects/marketing-platform venv/bin/python verify_npi.py \ --nppes=data/nppes_full.csv \ --lemlist=data/lemlist_export.csv
Test run first (fast — stops at 500K rows)
venv/bin/python verify_npi.py \ --nppes=data/nppes_full.csv \ --lemlist=data/lemlist_export.csv \ --dry-run
Takes 60–90 seconds on the full file. Normal — it's scanning millions of healthcare records to pull out your 14 cities.

Phase 2 — Find Every Practice Website
Phase 2
find_websites.py — Practice Domain Discovery
For each verified dentist, searches DuckDuckGo using their name + city to find their practice website. No API key needed. The website domain is what we need to find their email in Phase 3.
How it searches
Run command
venv/bin/python find_websites.py \ --input=data/masterlist_phase1.csv
Test on one city first
venv/bin/python find_websites.py \ --input=data/masterlist_phase1.csv \ --city=Sarasota \ --limit=20
Runs at 2 seconds per contact to be respectful. For 5,000 contacts this takes a few hours — run it overnight or use --limit to do it in batches. Use --resume to pick up where you left off.

Phase 3 — The Email Hack
Phase 3
find_emails.py — Email Discovery (4 Methods)
This is the core of the strategy. For every dentist with a practice website, it tries four methods in order to find their email address. Zero paid tools required.
Method 1 — Scrape the Contact Page (confidence: 90–95%)
Goes to the practice website's contact page and looks for:
Method 2 — Email Pattern Prediction (confidence: 40–80%)
Generates every plausible email pattern for the domain and optionally verifies via SMTP (checks if the mailbox exists without sending anything):
Method 3 — Footprint Search (confidence: 70%)
Method 4 — SMTP Verify (optional — confirms pattern emails)
Run commands
# Basic (scrape + pattern — no SMTP verify, faster) venv/bin/python find_emails.py --input=data/masterlist_phase2.csv # With SMTP verification (slower, higher confidence on pattern emails) venv/bin/python find_emails.py --input=data/masterlist_phase2.csv --verify # Test on Sarasota only venv/bin/python find_emails.py --input=data/masterlist_phase2.csv --city=Sarasota --limit=20
Output: data/masterlist_phase3.csv — every contact now has an email field, email source (scraped/pattern/footprint), and confidence score 0–100.

Phase 4 — Build the Campaign-Ready Masterlist
Phase 4
build_masterlist.py — Score, Tier, and Export
Takes all verified data and scores every contact. Assigns a tier for campaign sequencing. Exports the final CSV with all columns Hey Gen and Lemlist need.
Contact Tiers
TierWhat it meansAction
A NPI verified + scraped/confirmed email + phone Send immediately — highest priority for Hey Gen batch video
B NPI verified + pattern email (unverified) + phone Send with Lemlist warm-up — good volume, small bounce risk
C NPI verified + LinkedIn URL, no email Enrichment queue — use Apollo.io (50 free/mo) or Hunter.io (25 free/mo)
D Name + phone only — no email, no LinkedIn Low priority — manual verify or skip
Run commands
# Export Tier A + B only (campaign ready) venv/bin/python build_masterlist.py \ --input=data/masterlist_phase3.csv \ --tier=A,B # Stats only — see breakdown without writing file venv/bin/python build_masterlist.py \ --input=data/masterlist_phase3.csv \ --stats
Output: data/MASTERLIST_FINAL.csv — this is what you upload to Hey Gen and Lemlist. Also creates city-split files under data/by_city/ so you can upload Sarasota, Jacksonville, etc. separately.

What to Tell Marshall
The 100,000 number is not achievable for private practice owners specifically. The addressable pool of licensed, privately-owned dental practices across these 14 cities is 10,000–18,000.

What we are building delivers a smaller, verified list — every contact is a confirmed licensed practitioner with a real email address and phone number. A 15,000-person list where every contact is a confirmed practice owner will outperform 100,000 unverified names every time for Hey Gen batch videos.

Before spending any money — the NPPES file is free and gives us phone numbers for every dentist. Website scraping is free. The only cost question is email enrichment for Tier C contacts (Apollo.io free tier: 50/mo, Hunter.io free tier: 25/mo).

Current Status Checklist

14 Target Cities
CityStateLemlist Location FormatLemlist Contacts
SarasotaFLSarasota, Sarasota County, Florida, United States178
JacksonvilleFLJacksonville, Duval County, Florida, United States~varies
RaleighNCRaleigh, Wake County, North Carolina, United States~varies
CharlestonSCCharleston, Charleston County, South Carolina, United States~varies
DallasTXDallas County, Texas, United States~varies
San AntonioTXSan Antonio, Bexar County, Texas, United States~varies
PhoenixAZPhoenix, Maricopa County, Arizona, United States~varies
ScottsdaleAZScottsdale, Maricopa County, Arizona, United States~varies
San DiegoCASan Diego, San Diego County, California, United States~varies
SacramentoCASacramento, Sacramento County, California, United States~varies
SeattleWASeattle, King County, Washington, United States~varies
PortlandORPortland, Multnomah County, Oregon, United States~varies
NashvilleTNNashville, Davidson County, Tennessee, United States~varies
DenverCODenver, Denver County, Colorado, United States~varies

Email Patterns the Script Tries
Generic practice emails (tried first — most common)
info@domain.com contact@domain.com office@domain.com appointments@domain.com reception@domain.com frontdesk@domain.com hello@domain.com admin@domain.com
Doctor-specific patterns
dr.smith@domain.com drsmith@domain.com dr.john@domain.com
Personal name patterns
john@domain.com smith@domain.com johnsmith@domain.com john.smith@domain.com jsmith@domain.com j.smith@domain.com

Vendor Research Note (Jim's research doc, June 2026)
PlatformScoreBest ForCostDecision
OpenMart AI92/100Local SEO lead discovery — 200M+ local profiles, intent-based natural language search $105–149/mo (5K credits) Skip for now — use NPPES free first
Lemlist90/100Outbound campaign execution $55–109/user/mo Already have Jim's account
AI Ark88/100High-volume B2B data, real-time verification $27/mo (5K credits) Pilot if NPPES volume is not enough
Recommendation from Jim's research: OpenMart (discovery) + Lemlist (outreach). Our approach achieves the same with zero cost using NPPES + website scraping. If email yield is below 50% after Phase 3, revisit AI Ark at $27/mo.