Booked forecast — next 12 months · jobs + Tiers subscriptions
Active services — next 90 days
🏦 Bank ↻
🧪 Supplies
🗂 Aggie's desk
🏛 Boardroom
Aggie in your chair · MEG (money) · CAM (dispatch) · RAY (sales) · JUNE (customers & compliance)
Customers
One record per client, reused on every work order. Top Note is Apex-only and never shown to the client.
Clients (0)
New client
Client record — referenced by every work order.
Plan details
✎ edit plan
Square subscription — live from Square; edit price, billing day, card, plan, pause, cancel
✎ edit contract
✎ edit plan
One-time work is priced per job — save this client, then use "+ New job".
This cancels their Square subscription, removes future visits, and dates the cancellation today. Why are they leaving?
▸ Card on file — stored by Square, chargeable from any job
Loading…
🏢 Account — link multiple locations under one name. Each location keeps its own billing, steps, agreement, and schedule.
📄 Service agreement — signed PDF on the customer's record
Loading…
▾ Work order history
Leads
Callers and inquiries — not customers yet. Win one and it becomes a client record.
Pipeline
New lead
AGI reply — priced from your sheet
Leads
Work Orders
A job tied to a client. Pick an existing client or type a new one. Top Note rides along on every order — internal only.
Pipeline
Work orders (0)
KEYred ring = job done, invoice not sent, money owedyellow edge = confirmation text out, awaiting their Cstatus chip color = job status, same as the calendar key
Schedule
Your work orders on a calendar. Click any job to open it; click a day to add one.
New work order
☆ No top note for this customer
✎ edit job details
One job, one client.
⚙️ More options — job length · extra steps · add-on services
min
▾
—
—
Service Date: —
Next Service Date: —
Invoice —
2140 Trade Center Way, Naples, FL 34109 239-555-0100
ITEMQTYPRICEAMOUNT
Subtotal$0.00
Total$0.00
Amount paid$0.00
Amount due$0.00
DRAFT
Amount due
$0.00
SQUAREChecking…
Invoice preview
Service types
These fill the work-order dropdown. Hide ones you no longer offer (kept for old orders), or add new ones. Changes save to the sheet.
📊 Estimate funnel
🔄 Recurring IPM
1-year agreements, monthly billing
🔨 One-Time Project
Exclusion, trapping, installs — line items
Gulf Coast Pest Control
Commercial IPM Pricing Tool · Confidential
Use this calculator for: Recurring commercial IPM proposals only (signed 1-year agreements, monthly service). Not for: Single-unit residential / condo calls (use $350 one-time rate) · Emergency one-shot visits (use $350 or escalate to Owner) · Condo/HOA unit calls (use Multi-Unit Residential Authorization SOP first).
Hourly rate/ hr · all pricing derived from this
1. Customer info
Business name
Contact name
Service address
City, State, ZIP
Phone
Email
2. Facility square footage
sq ft
Determines service tier & estimated visit time
3. Building perimeters
Enter each building separately. Perimeters are summed for bait station calculation.
lin ft
+ Add building
- Remove last
Total perimeter— lin ft
4. Establishment type
Non-Food
Office, warehouse, retail, gas station
Food Establishment
Restaurant, deli, grocery, food processing
5. Audit status
Non-Audited
Standard commercial account
Audited Account
AIB, SQF, BRC, health dept.
6. Program
Traditional
Standard products & pricing
Organic
Organic program — 1.5× the monthly rate
6. Service frequency
Weekly
52x / year
Bi-Weekly
26x / year
Monthly
12x / year
Bi-Monthly
6x / year
Quarterly
4x / year
Yearly
1x / year
7. Time overrides (optional)▼ACTIVE
Override estimated hours. Leave blank to use defaults.
Recurring visit (hrs)
Setup / first visit (hrs)
Bait station count override
Overrides perimeter calc. Flagged on estimate PDF.
✕ Clear — restore defaults
7. Payment terms
Net 15
Standard commercial recurring (default)
Net 30
Gov / municipal / institutional — Owner approval required
Due Upon Receipt
Prior late payment history — trust reset
Custom payment terms — confirm at signing with Owner / President before issuing this estimate.
8. Notes / special conditions (optional)
Enter square footage and linear feet to see pricing.
Individual paid jobs. New names here are added to your client book automatically.
Portfolio
Revenue by month
Add job
Jobs
Commercial Accounts
Flat-rate recurring contracts.
Portfolio
Revenue by account
Accounts are added from Customers
Create or open the customer, set type to Commercial, and the contract lives on that record.
Accounts
Legacy Recurring
GorillaDesk recurring clients from before Tiers.
Portfolio
Annual value by client
Clients are added from Customers
Create or open the customer, set type to Legacy, and their pricing lives on that record.
Clients
Inventory
Track product on hand by location. Items can live in multiple spots.
Totals
Add item
$
Items
Equipment
Track equipment by location. Items can live in multiple spots.
Totals
Add equipment
Equipment
Activity
Everything that happened, one stream — every click and edit by every user, every checklist item, every action Aggie took in any chat, every pipeline verdict, every dial change. The answer to “what happened while I was gone.”
Loading…
📥 Inbox
all channels, one stream
Loading…
✉️ New email — sends as @✕
Fleet & Gear
Trucks and application equipment — Aggie researches each one's manufacturer maintenance schedule, watches for recalls and bulletins, and surfaces what's due.
🚚 Fleet
Service vehicles. Aggie researches the manufacturer schedule + open recalls for each, re-checks monthly (1st), and emails you the moment a new recall appears. Techs update miles; due items surface here and in Aggie's grounding.
Loading…
🧰 Equipment
Sprayers, foggers, bait guns, dusters. Aggie researches the manufacturer care schedule (seals, tips, calibration, seasonal care) + bulletins, re-checks monthly. Log service to roll the intervals.
Loading…
Settings
Short on purpose (v38.684): her controls first, the business, this device, setup, dev.
🎛 AGGIE CONTROLS
One tap sets every channel and the bookkeeping together — no more four separate switches. Current level shows below; hand-tuned channel settings read as CUSTOM.
While ON, confirmations park and mirror to your phone: reply SEND n / SKIP n / EDIT n <text>. Replies to inbound texts stay live. Stamps fire only when a parked confirm actually sends.
Critical alarms (🚨 booking guard · 📵 deaf text bridge · database down) always ring, any hour. Everything else obeys this dial — Important (default) spaces routine pushes 90+ minutes apart, holds them 8pm–7am, and tells you how many it held.
🎧 Read your last 30 days of calls. Every recording was transcribed and stored, but only ever reached the Calls sheet. This carries the complete transcript of every call and voicemail — including what was said after a transfer to Dana — into the customer's Inbox thread, with a link to the audio. Safe to run twice; it never double-posts. Does 60 at a time.
🧹 Old duplicate transcript rows? Calls carried home in an earlier format printed the whole conversation twice. This hides those rows — nothing is deleted, and Unhide puts them all back.
🔁 Call missing its beginning? The live feed used to cut long calls at 24 turns; the recording has all of it. This lays the full conversation into the thread, grouped into proper turns. One call per press, nothing deleted, Undo puts it back.
🔔 Phone alerts (Pushover). Calls, texts, leads and voicemails buzz your phone the moment they land — no carrier, nothing A2P can block. Someone asking to speak with you repeats until you tap it, even on silent. Add one Script Property named PUSHOVER with the value userkey:apptoken (a colon between them), then test.
These three lines are spoken as-is on her OLD telephone paths (voicemail, transfers, callback rescues), before she thinks — so they live here, not in her prompt. Blank any box to go back to the default.
📞 Her live-call greeting moved to her new telephone: Twilio Console → Functions → aps-proxy-1634 → /aggie (edit welcomeGreeting → Deploy All). It is live on the very next call.
How she sounds on the phone. Neural = fast · Generative = most human, ~1 second slower per reply. This sets her voice on callbacks, rescues, missions and voicemail — live on the next call, no deploy. Her inbound voice lives on her new telephone (Twilio → Functions → aps-proxy-1634 → /aggie); set it to the same one there.
🎙 Owner line. Call the business number from this cell and you get Aggie as your assistant, not the receptionist — ask her anything, have her do things. The spoken code is asked once per call before her first action (blank = caller ID only).
She answers customer emails with the same brain as the phones — The Canon, the tier pitch, her lessons. On/off lives at the 🎙 Aggie Autonomy dial above (Watch = drafts for your review · Answer = she replies herself). This section is the lane’s toolbox and health report. Processed threads get the "Aggie" label; newsletters and no-replies are skipped automatically. Sweeps every 5 minutes.
Press “Check lane” for a live health report.
⚡ WHEN SOMETHING IS WRONG
One tap, whole-system physical with LIVE probes — brain answers a real ping, Square and Maps get called, Twilio’s own 24h error feed is read, stale jobs counted. Anything sick gets a 🔧 Fix button. Runs itself here, and makes 7am rounds on its own — silent when green, loud in the Inbox when not.
Twilio's own error log + recent calls + every time Aggie's safety net caught something — no console trip needed. Error 11200/11205 = our webhook failed or timed out · 13xxx = bad TwiML.
Tap refresh to pull the last calls and errors.
START HERE for any data worry — one button runs everything in the correct order: structural check → safe self-heal → schedule repair. The Watchdog and Trust tabs hold its individual tools for targeted use.
The 12 nightly watchdog checks, on demand — orphan jobs, zombie statuses, broken links — with safe auto-fixes. (The Checkup tab's full run includes all of these.)
(Deeper than the full checkup — run when the schedule feels off.) Cross-checks every recurring plan against the actual work-order book and fixes drift.
🔍 Trust audit & 💰 Tier/MRR are read-only · 🩹 Fix-it writes logged repairs (never deletes anything) · 🕵 Reunite previews first, writes only on your confirm. Hover any button for the full story.
🏢 THE BUSINESS
One accent color drives the whole app; your mark prints on receipts, estimates, invoices and statements. Owner only.
Florida requires daily pesticide application records kept for 5 years (Rule §8.02(b)). Applications are logged on each work order; this generates the state-format report to print or hand an inspector.
Licensed applicators
Names + FL certification numbers that appear on application records.
Tells the AI your current field capacity. Used in all projections and board meetings.
Block whole days or just hours for any tech. The calendar wears the block, and Aggie will never book that tech into it — jobs overflow to the next tech in the pool instead.
Where each tech's day begins — the route optimizer leaves from here (override any run inside the optimizer).
Real bank truth for the CFO — connect M&T once, and every night the transactions and balances sync into the 🏦 BankFeed sheet and Aggie’s grounding. Read-only: Plaid can see, never move, money.
…
The dispatcher. Reports to Aggie once introduced; until then he runs in shadow — computing slot hand-offs and night passes into his log, touching nothing, invisible to her. The introduction is a deliberate act, never automatic.
…
📱 THIS DEVICE
▶ How a job opens
Work order opens as — how a saved job opens on THIS device. 🎯 Focus walks the visit one step at a time (Exit any time for the full screen); 📄 Full is the whole work order. Focus is the default.
📱 View mode
Force the field/mobile interface on any device — test Field Mode from a laptop. Saved per device/browser; a green chip in the corner resets it if you get stuck.
🔧 SETUP (RARELY)
Each person gets a username, password, and role. Roles set what they can do — enforced on the server, not just hidden buttons: Tech runs jobs & supplies · Sales + leads & customers · Lead Tech + scheduling, invoices, messaging · Office Manager everything but imports/healing/user admin · Owner/CEO/CFO/CMO/COO everything. They sign in at the bare app link — no key needed.
Paste your Web app URL here so the "Phone link" button builds safe links. Get it from Deploy → Manage deployments → your active deployment → copy the Web app URL (ends in /exec).
🛠 DEV — plumbing and test tools
📨 Carrier registration (A2P 10DLC)
Until the carriers approve the company's registration, Twilio may not carry a customer text (error 30034) and the Twilio number is only a dead fallback behind the relay. The day Twilio says approved, flip this: texts ride Twilio when the relay is down, and her alerts to your cell stop bouncing.
…
Texting + phone plumbing status. Webhook wiring is automatic now (apsSetup or twilioWireNumber sets Twilio's URLs correctly) — the Script Properties list below is reference, not a to-do.TWILIO_SID, TWILIO_AUTH, TWILIO_FROM (your Twilio number, +1802…), and WEBHOOK_KEY (any long random string). Then paste the Twilio URL below into your Twilio number’s "A message comes in" webhook, and the Square URL into Square’s webhook subscriptions (payment events). Daily backup: run installDailyBackupTrigger once from the Apps Script editor.
If everything else fails, callers hear THIS instead of “application error” — it lives on Twilio’s servers, so it works even if Google is down. Paste the TwiML Bin URL (starts with https://handler.twilio.com/). Saving re-wires the number automatically.
⏳ checking the server… (v29.7: if this line never changes, the loader never ran — screenshot it and that IS the diagnosis)
Google’s server occasionally slams the door on a webhook (a “502”) and a caller hears an error. With the proxy saved, every webhook rides through Twilio’s side first, and door-slams are retried silently before the caller notices. Paste the Function URL (https://….twil.io/voice). Saving re-wires the number in the same tap. Type CLEAR to remove.
⏳ checking the server…
The backend's pulse — when each background job last ran, how long it took, how big the data has grown, and the latest errors. When anything feels slow or frozen, screenshot THIS.
Within ~2 minutes of every finished call, a deterministic safety sweep reads the transcript for promises, cancellations, and bookings-without-records — red obligations in near-real-time, no AI judgment. Sale/lead judgment belongs to Aggie’s morning review (her clock-in, one mind, her memory) — verdicts land on the 🏭 desk’s call list. No machine ever creates a lead, client, or work order at any dial position; “Answer + her bookings” means exactly that — HER bookings, earned on the 🪜 ladder. Below is the sweep’s activity log.
Verdicts live in Activity → 🏭 Pipeline.
Make the new key at the provider, paste it here, press Save & verify. Each one is checked against the provider with one read and is live immediately. The Railway-side variables (the gateway, the database, MASTER_KEY) are listed below by name — those wait for Railway.
🚪 Door keys (APP_KEY + WEBHOOK_KEY)
One tap makes new ones and re-wires Twilio and the SMS gateway itself. The voice gateway and the inbox service carry the webhook key in their environment — their results stop landing until Railway redeploys them with it. Do this when Railway is back, not before.
🚂 Railway variables to roll (by name)
Aggie reviews her own week — calls, texts, leads, signups, revenue — and writes an evolution brief: wins, friction, script changes, coaching notes, and numbered upgrade requests addressed to Claude. Every brief is logged so she remembers her own growth. Auto-emails Monday 7am after the first run.
Finds every trace a phone number left — call log, transcripts, leads, Aggie-booked jobs — and deletes exactly what you check. Leave the box empty to scan your own cell.
Written the moment you send her, before anything can go wrong — so a mission can never happen and leave no trace. No folders, no filing rules, just what went out and what came back.
Reads every call transcript, every text she sent, and every email she sent, finds where she told someone they were all set, and checks the board for a matching job. Anything promised with no work order behind it lands here.
Audit tool — she no longer reads this; The Canon is her only truth. Nightly, your uploaded SOP documents get compared against The Canon and any contradictions are listed here (and emailed to you). Use it to find stale docs to fix in the Knowledge Base.
⚠ Data didn’t load — tap here to reload
Move this job to…
🏖️ Request time off
Your requests
Everything else
⋮
Tasks
Checklists
Select a checklist on the left, or create one to get started.
✉️ Send confirmations or reminders
Nothing sends automatically — you pick, you press. Emails go out as @ with the one-tap confirm link; phone-only customers are listed back for you to text.
· customer · status · contact · service
Route planner
🗺 Day router — optimize · reflow
⚙️ Options — tech · start · window rewrite
🗓️ Week Builder — pool a range, best day + order for each job
Plan first, confirm customers after.
Route on:
Fuel saver condenses to the fewest days that fit — Home-by is the clock wall, Max-drive the wheel-time wall; whichever hits first closes the day.
Lead
🪢 Loose ends before we close this job
Aggie found these open. Each one needs a quick reason — it goes on the owner's day report.