Reference design
Agent-run septic pumping & grease-trap service: a ZenSched reference design
The restaurant GM calls Tuesday. “Were you at the interceptor last week, and how many gallons?” The city FOG inspector wants the same answer. ServiceCore is $200–400 whether the tanker showed up or not. What if an AI assistant could roll this month’s grease book, GPS-check the driver in at the pad, capture gallons, waste type, tank condition, and hatch photos on a Service Manifest form, and answer “who missed a monthly grease this week” — without putting alley access notes or hauler licence numbers into a vendor cloud, and without pretending to be your official TCEQ trip ticket, UK waste transfer note, or FOGMan filing?
This reference design shows how a 1–6 truck septic pumper and grease-trap hauler can deploy an AI agent using ZenSched as the live schedule of record (with a Service Manifest form on the phone) and a local SQLite database for customers, tanks, pump-log extracts, and invoices.
Honest framing: proof-of-service, not a trip ticket or waste manifest
Read this before you clone the kit.
- The Service Manifest is not a TCEQ five-part trip ticket (30 TAC 312.145), a city FOG manifest, a UK Duty of Care waste transfer note, a 40 CFR 503 land-application record, or a water-authority FOGMan filing. The generator and hauler must show what left the tank, how many gallons, who hauled it, and where it was deposited — on their official forms with the required signatures and retention. The kit collects gallons, waste type, condition, disposal site, and hatch photos useful proof for a restaurant GM or homeowner, not the system of record a TCEQ or Environment Agency auditor expects.
- It is not ServiceCore, PumpBiz, or Tank Track. No route optimizer, no dump-capacity sequencing, no QuickBooks billing engine, no customer portal. Keep those where they are.
- Alley access notes, hatch locations, and hauler licence numbers stay only in local SQLite (
tanks.access_notes,technicians.license_no). ZenSched locations are labeled by street address —4410 Washington Ave, Houston— not by customer name or access detail. - Hatch photos can carry a burned-in stamp (opt-in). Set
"stamp_photos": trueon the photo field inform_create/form_update. The kit enables this on the Service Manifest hatch photo field. - There is no signature field on purpose. On ZenSched a signature replaces Submit — submitting the form must not look like the driver or generator signed a legal waste document.
- Android on Google Play; iOS on the App Store.
The kit’s SKILL.md makes that split a hard rule the AI will refuse to break.
The problem: “were you at the pad?” and “how many gallons?”
Small septic and grease shops already have a stack: ServiceCore or PumpBiz if they bought the office suite; otherwise paper trip tickets on a clipboard, gallons on a door card, lid photos in a group text, and QuickBooks. When a restaurant GM, city FOG inspector, or homeowner asks for proof, the evidence is a reconstructed week.
The weekly loop is the same whether you drive the vacuum truck or dispatch three drivers:
- Was Luis at Rosa’s interceptor and did he pull the grease trap?
- How many gallons, what condition, and can you show a lid photo?
- Which monthly grease stops are due this week across the book?
- Paying drivers without reconstructing paper tickets every Friday.
- Coverage when a truck is down mid-week.
Not on that list: portable-toilet 28-day billing, 40-truck routing, or a restaurant booking widget.
The solution: split responsibility between ZenSched and local data
- ZenSched: Live pin per tank or interceptor, GPS-verified check-in and check-out (geofence enforced via policy, not per location), driver app + push, one Service Manifest form per stop (gallons, waste type, tank condition, hatch photos, disposal site, notes). Grease interceptors reuse the same form.
- Local SQLite database: Customers, tanks (
septic/grease), service cadence (quarterly / semi / on-demand), technicians, completed jobs with manifest summaries, pump-log extract, invoices. Links to ZenSched location, event, and shift IDs. After one metered form read, punches and manifest summaries are cached locally.
The agent orchestrates both: it reads which tanks are due from customers_due, creates shifts on ZenSched labeled by address, and writes verified arrival plus Service Manifest answers back into SQLite for billing and the owner’s extract.
Privacy: access notes never cross
Everything sensitive lives only in local tables: customers.billing_notes, tanks.access_notes (hatch behind the dumpster, alley gate, dogs). Hauler licence numbers stay in technicians.license_no. ZenSched receives the street address for the GPS pin and the Service Manifest answers — never an access note in a location title, never a customer surname in an event name. If you ask the agent to put access notes into ZenSched, it should refuse.
Day-to-day workflow
- You to agent (plain English): “Schedule Luis at Rosa’s every Tuesday 8:00–8:45 through September.”
- Agent reads SQLite:
customers_duefor the next 7 days by driver and route. - Agent creates shifts on ZenSched: One
location_createper new tank ($0.03 geocode), rolling event (≤60 days, renewed automatically),form_createonce for the Service Manifest,form_assign,shift_createper scheduled stop. Luis gets a push. - The driver does the work: Open the ZenSched app, GPS check-in at the pin, fill the Service Manifest (gallons, grease/septic, condition, hatch photos, disposal site), check-out.
- Operations: “Is Luis at Rosa’s?” “Who missed a monthly grease this week?” “How many gallons at Delgado last Tuesday?” Agent answers from SQLite after one metered read.
- Money: Invoices from local job summaries. Plain-text invoices under customer terms. Official TCEQ / city FOG / WTN / FOGMan filing stays in your binder or ServiceCore / PumpBiz.
No dashboards. No asking you to run SQL. Talk to the agent.
Service Manifest on the phone
The driver opens the ZenSched mobile app, checks in at the tank pad, then fills the Service Manifest before leaving:
- Gallons pulled
- Tank condition (Good / Fair / Needs repair / Inaccessible)
- Hatch photos (up to 3, with optional
"stamp_photos": true) - Disposal site
- Waste type (Septic / Grease / Mixed / Other)
Residential septic pump-outs and grease interceptors reuse the same form. A separate residential septic worksheet can exist for one-off house calls — it is still not a TCEQ ticket.
Setup summary
Getting started takes about 15 minutes:
- Install an MCP client: Claude Desktop, Cursor, or Muse Code.
- Connect ZenSched MCP: Add
https://mcp.zensched.com/mcpto your MCP config. - Connect easy-sqlite-mcp: Point
SQLITE_PATHat a localseptic-ops.dbon an encrypted, backed-up folder. - Paste the reference skill: The zensched-septic-grease-kit includes
SKILL.md,schema.sql, and a quickstart. Load the schema once (one statement per execute). - Create your ZenSched account: Call
zensched_guide, thenaccount_createfor azsc_key. Invite drivers at $0.25 each once. - Fund when needed: Metered GPS, geocode, and form reads draw from prepaid balance. The $5 activation deposit is credited to your account.
Downtown restaurant alleys and steel-frame kitchens need a wider policy radius (policy_update), not org-wide remote_checkin — that turns GPS proof off for every tank. Events cap at 60 days; the kit rolls a new event per tank automatically when the window expires.
Worker app: Android on Google Play and iOS on the App Store.
For step-by-step details, see the ZenSched quickstart and the septic-grease kit.
Metering: what you pay for
ZenSched uses transparent per-action pricing (see pricing):
- GPS check-in/check-out: $0.10 each (about $0.20 per stop)
- Address geocoding: $0.03 per new tank (once)
- Worker invite: $0.25 per driver (once)
- Form submission reads: $0.05 basic / $0.15 with photos — read once, cache locally
- Processed timesheet export: $0.10 per worker per pay period
Worked example from the vertical pitch: 2 trucks × 6 stops/day × 21 days = 252 visits/month with a hatch photo on every stop.
| Pattern | Approx. monthly | Per stop |
|---|---|---|
| GPS + Service Manifest with photo (kit default) | ~$88 | ~$0.35 |
| GPS + checklist only (no photo read) | ~$63 | ~$0.25 |
| GPS-only proof per stop | ~$50 | ~$0.20 |
Read the incumbent comparison honestly. At 252 photo-logged visits, ZenSched (~$88) is under every subscription in the table — ServiceCore’s reported $200 floor, Tank Track’s published 2-truck $330, Jobber Connect at $199. ServiceCore, PumpBiz, and Tank Track include routing, invoicing, and a trip-ticket workflow ZenSched does not. Do not tell a TCEQ or Environment Agency officer “it’s in ZenSched” instead of your official manifest.
What you get
- Geofenced check-in at the tank pad
- Service Manifest: gallons, waste type, condition, hatch photo, disposal site
- Local pump-log extract for the owner
- Grease and septic on one form
- AI dispatch from plain English
- About 15 minutes to stand up
What you don’t get
- No official TCEQ / city FOG trip ticket
- No UK waste transfer note or Digital Waste Tracking submission
- No 40 CFR 503 land-application certification
- No AU FOGMan / water-authority e-file
- No route optimizer or dump-capacity sequencing
- Not a replacement for ServiceCore if routing and official manifests are the product
Who this is for
Ideal for: 1–6 truck independents on paper tickets and a clipboard, ServiceCore alumni with a licence and a tanker, operators who want GPS proof and AI dispatch without a $200–400/month per-truck office product.
Not for: 20-truck portable + septic + roll-off shops locked to ServiceCore, or shops whose deliverable is the official five-part ticket the plant already recognizes.
Get started
- Kit: github.com/zenschedmcp/zensched-septic-grease-kit
- Docs: zensched.com/docs/quickstart
- MCP:
https://mcp.zensched.com/mcp - Related: Agent-run portable toilet & dumpster routes · Agent-run pest control routes · Agent-run fire safety inspections
Ready to build your own workflow?
Clone the reference kit and connect ZenSched to your AI agent.