Applications
Every piece of work on the platform belongs to one of these applications (declared in st_core/platform/apps.py). Each card rolls up the health of the application's parts below.
Leads
Takes sales leads from the Parts App, matches them to ServiceTitan customers, assigns them to an engineer and emails everyone involved.
healthy- okParts App → Leads API (sales leads in) · live, 3434 lead(s) on file
- okLead housekeeping · no run recorded here
- Tables
- 5 · 25,625 rows
- Routes
- /v1/leads-api, /admin/leads
- Settings
- leads.*
- Commands
- st leads
- Runbook
- 70-leads-api.md
tables (5)
| View | Rows |
|---|---|
| serving_platform_leads | 3,434 |
| serving_platform_lead_events | 15,327 |
| serving_platform_lead_contacts | 6,699 |
| serving_platform_lead_requests | 159 |
| serving_platform_lead_intake | 6 |
Reports
Builds and emails scheduled reports from the data layer; each report is a definition (Daily Invoice & Payment Report, Weekly Callback Meeting Report; more queue up here) on one shared clock, send ledger and watchdog.
healthy- okReports (email) · 3 report(s) registered, nothing overdue
- okReport: Daily Invoice & Payment Report · last run 1 h 53 min ago · 2026-11-11: 46 invoices (+1 late); time on job 31 -> sent to ['service@amhac.com', 'accounting@amhac.com', 'demetrius@amhac.com', 'jordan@amhac.com', 'bill@amhac.com', 'santiago@amhac.com', 'adam@amhac.com']; marked 46; via scheduler
- okReport: Weekly Callback Meeting Report · last run 18 h 23 min ago · github: not due on a Wednesday (Thu 2:00 PM ET)
- Tables
- 2 · 1,073 rows
- Routes
- /admin/report, /admin/reports
- Settings
- reports.*, invoice_report.*
- Commands
- st report
- Runbook
- 65-reports.md, 60-invoice-report.md, 66-bonus-report.md
tables (2)
| View | Rows |
|---|---|
| serving_platform_report_items | 1,048 |
| serving_platform_report_sends | 25 |
Sources
Captures data from outside ServiceTitan: OnCall Air proposal events and sold proposals by webhook, Azuga trucks and trips by API, webhook and import, Google reviews by API, ServiceTitan report rows by the Reporting API.
healthy- okOnCall Air (proposal events) · receiving, last event just now
- okOnCall Air (sold proposals) · receiving, last sale 3 min ago
- okAzuga GPS (trucks and trips) · live, last trip event just now
- okGoogle reviews (the AMHAC listing) · 1,564 reviews, refreshed 15 h 25 min ago
- okAzuga vehicles and trips · last run 15 h 36 min ago · 2591 complete, 4 open of 2595
- Tables
- 7 · 20,132 rows
- Routes
- /webhooks/oncallair, /webhooks/azuga
- Settings
- none
- Commands
- st azuga, st oca, st google, st reporting
- Runbook
- 25-oncallair.md, 30-azuga.md, 66-bonus-report.md
tables (7)
| View | Rows |
|---|---|
| serving_oca_events | 1,895 |
| serving_oca_sold_proposals | 26 |
| serving_azuga_vehicles | 24 |
| serving_azuga_events | 5,270 |
| serving_azuga_trips | 11,298 |
| serving_google_reviews | 1,564 |
| serving_report_membership_sales | 55 |
Wells Fargo claims
Emails accounting within the hour when Wells Fargo funds a Carrier Infinity or Performance sale, so the dealer claim is filed inside its 30-day window.
healthy- okWells Fargo claim alerts · last run 26 min ago · 0 claim alert(s), 0 without a proposal, 0 not qualifying
- Tables
- 1 · 2 rows
- Routes
- /admin/wf-claims
- Settings
- wf_claims.*
- Commands
- st wf-claims
- Runbook
- 67-wells-fargo-claims.md
tables (1)
| View | Rows |
|---|---|
| serving_platform_wf_claim_alerts | 2 |
Truck attribution
Works out which technician drove which truck on each day and matches trips to job stops, with a confidence band, using geocoded addresses.
healthy- okUS Census geocoder (addresses to coordinates) · 2,843 addresses cached, 87% matched
- okGeocoder (US Census) · last run 15 h 26 min ago · pending 0, match 0, tie 0, no_match 0, unparseable 0, error 0
- okTruck attribution (who drove what) · last run 15 h 26 min ago · 3 days; {'default_confirmed': 39, 'swap_detected': 4, 'excluded': 9, 'no_jobs': 4, 'ambiguous': 5, 'default_assumed': 4}
- Tables
- 4 · 16,150 rows
- Routes
- none
- Settings
- none
- Commands
- st attribution, st geocode
- Runbook
- 40-attribution.md
tables (4)
| View | Rows |
|---|---|
| serving_platform_vehicle_assignments | 0 |
| serving_platform_trip_matches | 11,621 |
| serving_platform_vehicle_days | 1,686 |
| serving_platform_geocodes | 2,843 |
Prospects
Builds and keeps the register of Westchester light-commercial parcels from public records, the data set behind HVAC prospecting and real-estate acquisition.
healthy- okProspects refresh · last run 16 days ago · 1,254 of 9,498 parcels matched to 2,051 ServiceTitan locations; active 468, lapsed 545, never 8,485; 0 new links, 0 retired
- Tables
- 8 · 32,889 rows
- Routes
- /v1/prospects-api
- Settings
- prospects.*
- Commands
- st prospects
- Runbook
- 95-prospects.md, 96-prospects-api.md, 97-prospects-roadmap.md
tables (8)
| View | Rows |
|---|---|
| serving_prospects_parcels | 9,498 |
| serving_prospects_st_links | 2,051 |
| serving_prospects_customer_status | 9,498 |
| serving_prospects_entities | 3,952 |
| serving_prospects_owner_entities | 7,890 |
| serving_prospects_notes | 0 |
| serving_prospects_infill | 0 |
| serving_prospects_changes | 0 |
Claude connector
Lets Claude answer questions about the business through fixed tools and read-only SQL over the serving views, with every question logged.
healthy- okClaude connector (MCP) · 133 questions in the last 7 days
- Tables
- 1 · 572 rows
- Routes
- /mcp, /oauth
- Settings
- none
- Commands
- none
- Runbook
- 20-incidents.md
tables (1)
| View | Rows |
|---|---|
| serving_platform_tool_calls | 572 |
Platform services
Shared plumbing the other applications use: email in and out through Resend, owner settings, the job-run log, customer identity matching and the shadow record of ServiceTitan writes.
healthy- okResend (email replies and delivery receipts in) · receiving, last event 9 min ago
- okEmail out (Resend) · 246 email(s) sent in the last 30 days
- okServiceTitan writes (shadow only) · 82 recorded, 0 executed (read-only phase)
- okPlatform-data backup · no run recorded here
- okFreshness check · no run recorded here
- Tables
- 8 · 2,747 rows
- Routes
- /webhooks/resend, /admin/email, /admin/platform
- Settings
- none
- Commands
- st email, st settings
- Runbook
- 50-email.md, 80-status-window.md
tables (8)
| View | Rows |
|---|---|
| serving_platform_identity_links | 18 |
| serving_platform_pending_matches | 5 |
| serving_platform_outbound_actions | 82 |
| serving_platform_outbound_messages | 246 |
| serving_platform_email_events | 1,461 |
| serving_platform_inbound_messages | 87 |
| serving_platform_settings | 6 |
| serving_platform_job_runs | 842 |
Data coming in
ServiceTitan (API mirror)
Read-only pulls from the ServiceTitan API, every 4 hours and nightly
85 resources on schedule, last sync 26 min ago- Resources mirrored
- 85
- Last sync
- 26 min ago (Thu 11/12 08:26 AM ET)
- Last run
- ok · 106 rows · 9 API calls
- Errored resources
- none
- Behind schedule
- none
resources (85)
| resource | last run at | age | status | rows upserted total | error |
|---|---|---|---|---|---|
| adjustments | 2026-11-12T08:31:31Z | 5 h 22 min ago | ok | 9 | |
| ap_bills | 2026-11-12T08:31:25Z | 5 h 22 min ago | ok | 3513 | |
| ap_credits | 2026-11-12T08:31:25Z | 5 h 22 min ago | ok | 0 | |
| ap_payments | 2026-11-12T08:31:25Z | 5 h 22 min ago | ok | 0 | |
| appointment_assignments | 2026-11-12T13:26:59Z | 26 min ago | ok | 338539 | |
| appointment_assignments:also | 2026-11-12T13:26:59Z | 26 min ago | ok | 44896 | |
| appointments | 2026-11-12T13:26:57Z | 27 min ago | ok | 277056 | |
| arrival_windows | 2026-11-12T08:31:26Z | 5 h 22 min ago | ok | 483 | |
| bank_deposits | 2026-11-12T08:31:23Z | 5 h 22 min ago | ok | 149409 | |
| booking_provider_tags | 2026-11-12T08:31:18Z | 5 h 22 min ago | ok | 69 | |
| business_units | 2026-11-12T08:31:17Z | 5 h 22 min ago | ok | 74 | |
| call_reasons | 2026-11-12T08:31:28Z | 5 h 22 min ago | ok | 155 | |
| calls | 2026-11-12T08:31:28Z | 5 h 22 min ago | ok | 114767 | |
| credit_memos | 2026-11-12T08:31:21Z | 5 h 22 min ago | ok | 0 | |
| customer_contacts | 2026-11-12T13:26:57Z | 27 min ago | ok | 64404 | |
| customers | 2026-11-12T13:26:57Z | 27 min ago | ok | 37850 | |
| employees | 2026-11-12T08:31:17Z | 5 h 22 min ago | ok | 123 | |
| equipment_systems | 2026-11-12T08:31:27Z | 5 h 22 min ago | ok | 0 | |
| equipment_types | 2026-11-12T08:31:27Z | 5 h 22 min ago | ok | 550 | |
| estimate_items | 2026-11-12T08:31:26Z | 5 h 22 min ago | ok | 4493 | |
| estimate_templates | 2026-11-12T08:31:26Z | 5 h 22 min ago | ok | 210 | |
| estimates | 2026-11-12T08:31:26Z | 5 h 22 min ago | ok | 8879 | |
| expense_transactions | 2026-11-12T08:31:25Z | 5 h 22 min ago | ok | 0 | |
| form_submissions | 2026-11-12T08:31:28Z | 5 h 22 min ago | ok | 138874 | |
| forms | 2026-11-12T08:31:27Z | 5 h 22 min ago | ok | 70 | |
| gl_account_types | 2026-11-12T08:31:21Z | 5 h 22 min ago | ok | 91 | |
| gl_accounts | 2026-11-12T08:31:21Z | 5 h 22 min ago | ok | 113 | |
| installed_equipment | 2026-11-12T08:31:27Z | 5 h 22 min ago | ok | 40953 | |
| inventory_bills | 2026-11-12T08:31:25Z | 5 h 22 min ago | ok | 184 | |
| invoice_items | 2026-11-12T13:26:59Z | 26 min ago | ok | 860028 | |
| invoice_templates | 2026-11-12T08:31:19Z | 5 h 22 min ago | ok | 11640 | |
| invoices | 2026-11-12T13:26:58Z | 26 min ago | ok | 322096 | |
| job_cancel_reasons | 2026-11-12T08:31:19Z | 5 h 22 min ago | ok | 828 | |
| job_canceled_logs | 2026-11-12T08:31:20Z | 5 h 22 min ago | ok | 1904 | |
| job_hold_reasons | 2026-11-12T08:31:19Z | 5 h 22 min ago | ok | 552 | |
| job_notes | 2026-11-12T08:31:20Z | 5 h 22 min ago | ok | 176962 | |
| job_types | 2026-11-12T08:31:19Z | 5 h 22 min ago | ok | 229 | |
| jobs | 2026-11-12T13:26:57Z | 27 min ago | ok | 268348 | |
| journal_entries | 2026-11-12T08:31:23Z | 5 h 22 min ago | ok | 0 | |
| leads | 2026-11-12T08:31:18Z | 5 h 22 min ago | ok | 51 | |
| location_contacts | 2026-11-12T08:31:18Z | 5 h 22 min ago | ok | 69463 | |
| location_findings | 2026-11-12T08:31:28Z | 5 h 22 min ago | ok | 0 | |
| locations | 2026-11-12T08:31:18Z | 5 h 22 min ago | ok | 41083 | |
| marketing_campaigns | 2026-11-12T08:31:29Z | 5 h 22 min ago | ok | 130 | |
| marketing_categories | 2026-11-12T08:31:28Z | 5 h 22 min ago | ok | 1035 | |
| membership_status_changes | 2026-11-12T08:31:19Z | 5 h 22 min ago | ok | 6836 | |
| membership_types | 2026-11-12T08:31:18Z | 5 h 22 min ago | ok | 92 | |
| memberships | 2026-11-12T08:31:18Z | 5 h 22 min ago | ok | 10614 | |
| non_job_appointments | 2026-11-12T08:31:27Z | 5 h 22 min ago | ok | 18025 | |
| payment_terms | 2026-11-12T08:31:20Z | 5 h 22 min ago | ok | 73 | |
| payment_types | 2026-11-12T08:31:20Z | 5 h 22 min ago | ok | 1242 | |
| payments | 2026-11-12T13:26:59Z | 26 min ago | ok | 296671 | |
| pricebook_categories | 2026-11-12T08:31:29Z | 5 h 22 min ago | ok | 1209 | |
| pricebook_discounts_and_fees | 2026-11-12T08:31:30Z | 5 h 22 min ago | ok | 141 | |
| pricebook_equipment | 2026-11-12T08:31:30Z | 5 h 22 min ago | ok | 842 | |
| pricebook_materials | 2026-11-12T08:31:29Z | 5 h 22 min ago | ok | 6612 | |
| pricebook_services | 2026-11-12T08:31:29Z | 5 h 22 min ago | ok | 14087 | |
| project_notes | 2026-11-12T08:31:20Z | 5 h 22 min ago | ok | 262 | |
| project_statuses | 2026-11-12T08:31:19Z | 5 h 22 min ago | ok | 75 | |
| project_substatuses | 2026-11-12T08:31:19Z | 5 h 22 min ago | ok | 138 | |
| project_types | 2026-11-12T08:31:19Z | 5 h 22 min ago | ok | 276 | |
| projects | 2026-11-12T08:31:20Z | 5 h 22 min ago | ok | 2571 | |
| proposal_templates | 2026-11-12T08:31:26Z | 5 h 22 min ago | ok | 69 | |
| purchase_order_types | 2026-11-12T08:31:30Z | 5 h 22 min ago | ok | 210 | |
| purchase_orders | 2026-11-12T08:31:30Z | 5 h 22 min ago | ok | 2397 | |
| receipts | 2026-11-12T08:31:30Z | 5 h 22 min ago | ok | 2384 | |
| recurring_service_events | 2026-11-12T08:31:19Z | 5 h 22 min ago | ok | 57618 | |
| recurring_service_types | 2026-11-12T08:31:18Z | 5 h 22 min ago | ok | 25 | |
| recurring_services | 2026-11-12T08:31:19Z | 5 h 22 min ago | ok | 8942 | |
| remittance_vendors | 2026-11-12T08:31:21Z | 5 h 22 min ago | ok | 148 | |
| report_categories | 2026-11-12T08:31:29Z | 5 h 22 min ago | ok | 828 | |
| returns | 2026-11-12T08:31:30Z | 5 h 22 min ago | ok | 20 | |
| service_agreements | 2026-11-12T08:31:27Z | 5 h 22 min ago | ok | 0 | |
| tag_types | 2026-11-12T08:31:17Z | 5 h 22 min ago | ok | 164 | |
| tasks | 2026-11-12T08:31:28Z | 5 h 22 min ago | ok | 1879 | |
| tax_zones | 2026-11-12T08:31:21Z | 5 h 22 min ago | ok | 75 | |
| teams | 2026-11-12T08:31:26Z | 5 h 22 min ago | ok | 483 | |
| technician_skills | 2026-11-12T08:31:26Z | 5 h 22 min ago | ok | 264 | |
| technicians | 2026-11-12T08:31:17Z | 5 h 22 min ago | ok | 1133 | |
| transfers | 2026-11-12T08:31:31Z | 5 h 22 min ago | ok | 22 | |
| trucks | 2026-11-12T08:31:30Z | 5 h 22 min ago | ok | 128 | |
| user_roles | 2026-11-12T08:31:17Z | 5 h 22 min ago | ok | 1380 | |
| vendors | 2026-11-12T08:31:30Z | 5 h 22 min ago | ok | 148 | |
| warehouses | 2026-11-12T08:31:30Z | 5 h 22 min ago | ok | 69 | |
| zones | 2026-11-12T08:31:26Z | 5 h 22 min ago | ok | 208 |
OnCall Air (proposal events)
Event-subscription webhook into this service; captured raw, one row per event
receiving, last event just now- Events captured
- 1,895
- Last received
- just now (Thu 11/12 08:53 AM ET)
- Last 30 days
- viewed 1132, emailed 199, followup 145, presented 137, created 98, assigned 69, reverted 66, accepted 31, expired 14, blocked 2, unaccepted 2
last 30 days by type (11)
| event type | n |
|---|---|
| viewed | 1132 |
| emailed | 199 |
| followup | 145 |
| presented | 137 |
| created | 98 |
| assigned | 69 |
| reverted | 66 |
| accepted | 31 |
| expired | 14 |
| blocked | 2 |
| unaccepted | 2 |
OnCall Air (sold proposals)
The Sold Proposals webhook: the accepted option, its money and products, linked to a lead when one matches; the Parts App reads sales from here
receiving, last sale 3 min ago- Sold proposals captured
- 26
- Last received
- 3 min ago (Thu 11/12 08:50 AM ET)
- Linked to a platform lead
- 23
- Lead match waiting on a person
- 0
Azuga GPS (trucks and trips)
Vehicle list from the Azuga API on the sync schedule; trips live from webhooks, history from a one-time report import
live, last trip event just now- Trucks
- 24 (list refreshed 15 h 36 min ago)
- Live events
- 5,270, last just now
- Trips
- 11,298 total · live 2,595 · imported 8,703
- Trip history
- 2026-07-19 to 2026-11-11
- Trips in progress
- 4
- API key on the sync runner
- not visible from this service
trips by source (2)
| source | n | first trip | last trip |
|---|---|---|---|
| import | 8703 | 2026-07-19T13:33:00Z | 2026-10-19T15:11:00Z |
| webhook | 2595 | 2026-10-19T16:11:04Z | 2026-11-11T21:56:14Z |
Google reviews (the AMHAC listing)
Pulled nightly by the sync workflow through the Business Profile API, read only; the bonus report credits 5-star reviews to the crew of the visit before them
1,564 reviews, refreshed 15 h 25 min ago- Reviews on file
- 1,564 (1,502 five-star)
- Last 30 days
- 14 (14 five-star)
- Newest review
- 20 h 52 min ago
- Last pull
- ok 15 h 25 min ago · 1564 reviews
- Credentials
- GitHub Actions secrets only; nothing on this service
by rating (5)
| star rating | n |
|---|---|
| 5 | 1502 |
| 4 | 30 |
| 3 | 8 |
| 2 | 3 |
| 1 | 21 |
US Census geocoder (addresses to coordinates)
Free batch geocoder; results cached forever so each address is looked up once
2,843 addresses cached, 87% matched- Addresses cached
- 2,843
- Matched
- 2,469 (87%)
- No match or tie
- 374
by status (3)
| status | n |
|---|---|
| match | 2469 |
| no_match | 358 |
| tie | 16 |
Parts App → Leads API (sales leads in)
The Parts App submits, assigns and updates leads over /v1/leads-api with a bearer token; Mitsubishi accepted-lead emails forwarded to leads@mail.amhac.com become leads by themselves
live, 3434 lead(s) on file- Leads on file
- 3434
- By status
- IMPORTED 3199, ASSIGNED 112, ST_JOB_CREATED 92, PROPOSAL_SOLD 22, REJECTED 5, SUBMITTED 3, NEEDS_CORRECTION 1
- Last submitted
- 9 min ago (Thu 11/12 08:44 AM ET)
- Open customer matches
- 0
- Mitsubishi emails
- 6 seen: 5 lead(s) created, 1 duplicate(s), 0 needing attention; last lead 2 days ago
- API requests logged
- 159
by status (7)
| status | n |
|---|---|
| IMPORTED | 3199 |
| ASSIGNED | 112 |
| ST_JOB_CREATED | 92 |
| PROPOSAL_SOLD | 22 |
| REJECTED | 5 |
| SUBMITTED | 3 |
| NEEDS_CORRECTION | 1 |
Resend (email replies and delivery receipts in)
Resend posts delivery events and inbound replies to leads@mail.amhac.com into this service
receiving, last event 9 min ago- Delivery events
- 1,461, last 9 min ago
- Replies received
- 87, last 13 min ago
- Replies matched to a sent email
- 81
- Replies still without a body
- 0
Data going out
Claude connector (MCP)
Claude signs in with Supabase OAuth and asks questions through fixed tools and read-only SQL over the serving views
133 questions in the last 7 days- Questions, last 7 days
- 133 (4 errors, 1 caller(s))
- Questions, last 30 days
- 571
- Last question
- 40 min ago
- Most used tools (30 days)
- run_query 388, find_customer 39, schema 37, get_invoice 32, get_job 23
tools 30 days (10)
| tool | n |
|---|---|
| run_query | 388 |
| find_customer | 39 |
| schema | 37 |
| get_invoice | 32 |
| get_job | 23 |
| payments_for_invoice | 12 |
| search_jobs | 12 |
| search_invoices | 10 |
| get_customer | 9 |
| sync_status | 4 |
Reports (email)
The Reports sub-application: each report is a definition on the data layer; one shared clock, send ledger and watchdog
3 report(s) registered, nothing overdue- Daily Invoice & Payment Report
- weekdays 7:00 AM ET · last sent for 2026-11-11 (Thu 11/12 07:00 AM ET, scheduler) · next due Fri 11/13 07:00 AM ET · to service@amhac.com, accounting@amhac.com, demetrius@amhac.com, jordan@amhac.com, bill@amhac.com, santiago@amhac.com, adam@amhac.com
- Weekly Callback Meeting Report
- Thu 2:00 PM ET · last sent for 2026-11-04 (Thu 11/05 02:00 PM ET, scheduler) · next due Thu 11/12 02:00 PM ET · to jordan@amhac.com, service@amhac.com, demetrius@amhac.com
- Weekly Bonus Events Report
- Tue 4:00 PM ET · last sent for 2026-11-09 (Tue 11/10 08:09 AM ET, skipped by hand: sent-by-hand-at-7:55-ET-to-accounting-and-jordan) · next due Tue 11/17 04:00 PM ET · to accounting@amhac.com
Email out (Resend)
Lead assignment and status emails, the invoice report and test sends, all logged before they go
246 email(s) sent in the last 30 days- Sent, last 30 days
- 246 · bonus_report 6, invoice_report 20, lead_assigned 82, lead_assigned_copy 23, lead_assigned_preview 4, lead_rejected 5, lead_reminder 8, lead_reply_help 4, lead_returned 3, lead_submitted 83, one_off 1, test 1, weekly_callback_report 5, wf_claim 1
- Failed / bounced
- 0 / 0
ServiceTitan writes (shadow only)
Intended ServiceTitan changes (e.g. a sales estimate job per assigned lead) are recorded, never sent: the platform is read-only against ServiceTitan
82 recorded, 0 executed (read-only phase)- Recorded
- create_sales_estimate_job shadow/cancelled 6, create_sales_estimate_job shadow/proposed 76
by type (2)
| action type | mode | status | n |
|---|---|---|---|
| create_sales_estimate_job | shadow | cancelled | 6 |
| create_sales_estimate_job | shadow | proposed | 76 |
Scheduled jobs
| Job | Where | When | Last run | Result |
|---|---|---|---|---|
| ServiceTitan sync | GitHub Actions sync.yml | this service: the fast set hourly, everything after 3:30 AM ET; GitHub Actions: everything nightly 2:30 AM ET as the backup clock | 27 min ago Thu 11/12 08:26 AM ET | ok all (8 resources) · 106 rows |
| Azuga vehicles and trips | GitHub Actions sync.yml, after the ServiceTitan sync | nightly | 15 h 36 min ago Wed 11/11 05:17 PM ET | ok 2591 complete, 4 open of 2595 |
| Geocoder (US Census) | GitHub Actions sync.yml, after Azuga | nightly | 15 h 26 min ago Wed 11/11 05:27 PM ET | ok pending 0, match 0, tie 0, no_match 0, unparseable 0, error 0 |
| Truck attribution (who drove what) | GitHub Actions sync.yml, after the geocoder | nightly | 15 h 26 min ago Wed 11/11 05:27 PM ET | ok 3 days; {'default_confirmed': 39, 'swap_detected': 4, 'excluded': 9, 'no_jobs': 4, 'ambiguous': 5, 'default_assumed': 4} |
| Google reviews | GitHub Actions sync.yml, last step (the Google credentials live only there) | nightly: every review of the AMHAC listing re-pulled and upserted | 15 h 25 min ago Wed 11/11 05:27 PM ET | ok 1564 reviews |
| Wells Fargo claim alerts | Render service, after every hourly fast sync | hourly: a Wells Fargo funding posted in ServiceTitan is matched to its sold OnCall Air proposal and, when Carrier Infinity/Performance equipment is on it, emailed as a Carrier financing submission reminder | 26 min ago Thu 11/12 08:26 AM ET | ok 0 claim alert(s), 0 without a proposal, 0 not qualifying |
| Lead housekeeping | the Render service's own clock | every 10 minutes: assigner reminders, OnCall Air lost events, sold-proposal rematch | no run recorded here | |
| Prospects refresh | the Render service's own clock | checked every 15 minutes: parcel layer weekly, entity lookups daily, ServiceTitan links every 6 hours; each run logs what changed | 16 days ago Mon 10/26 04:45 PM ET | ok 1,254 of 9,498 parcels matched to 2,051 ServiceTitan locations; active 468, lapsed 545, never 8,485; 0 new links, 0 retired |
| Platform-data backup | GitHub Actions backup.yml | nightly 2:30 AM ET, kept 90 days as workflow artifacts | no run recorded here | |
| Freshness check | GitHub Actions health.yml | hourly | no run recorded here | |
| Report: Daily Invoice & Payment Report | the Render service's own clock; GitHub Actions invoice-report.yml as backup | weekdays 7:00 AM ET, once per report day, late if a clock was late | 1 h 53 min ago Thu 11/12 07:00 AM ET | ok 2026-11-11: 46 invoices (+1 late); time on job 31 -> sent to ['service@amhac.com', 'accounting@amhac.com', 'demetrius@amhac.com', 'jordan@amhac.com', 'bill@amhac.com', 'santiago@amhac.com', 'adam@amhac.com']; marked 46; via scheduler |
| Report: Weekly Callback Meeting Report | the Render service's own clock; GitHub Actions invoice-report.yml as backup | Thu 2:00 PM ET, once per report day, late if a clock was late | 18 h 23 min ago Wed 11/11 02:30 PM ET | skipped github: not due on a Wednesday (Thu 2:00 PM ET) |
| Report: Weekly Bonus Events Report | the Render service's own clock; GitHub Actions invoice-report.yml as backup | Tue 4:00 PM ET, once per report day, late if a clock was late | 18 h 23 min ago Wed 11/11 02:30 PM ET | skipped github: not due on a Wednesday (Tue 4:00 PM ET) |
What is in the database
Every table below is readable as its serving_ view (the only thing Claude and the apps can read). Expand a group for tables, a table for its columns; row counts are the database's running estimates, refreshed as it analyzes tables.
ServiceTitan · accounting · 17 tables · 1,471,273 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_ap_billstenant_id id modified_on created_on active raw synced_at | 181 | ServiceTitan accounting/ap-bills | 5 h 22 min ago |
serving_ap_creditstenant_id id modified_on created_on active raw synced_at | 0 | ServiceTitan accounting/ap-credits | 5 h 22 min ago |
serving_ap_paymentstenant_id id modified_on created_on active raw synced_at | 0 | ServiceTitan accounting/ap-payments | 5 h 22 min ago |
serving_bank_depositstenant_id id modified_on created_on active raw synced_at | 2,204 | ServiceTitan accounting/bank-deposits | 5 h 22 min ago |
serving_credit_memostenant_id id modified_on created_on active reference_number customer_id customer_name location_id business_unit_id batch_id sync_status memo_date subtotal sales_tax total balance description raw synced_at | 0 | ServiceTitan accounting/credit-memos | 5 h 22 min ago |
serving_expense_transactionstenant_id id modified_on created_on active raw synced_at | 0 | ServiceTitan accounting/expense-transactions | 5 h 22 min ago |
serving_gl_account_typestenant_id id modified_on created_on active raw synced_at | 23 | ServiceTitan accounting/gl-accounts/types | 5 h 22 min ago |
serving_gl_accountstenant_id id modified_on created_on active raw synced_at | 45 | ServiceTitan accounting/gl-accounts | 5 h 22 min ago |
serving_inventory_billstenant_id id modified_on created_on active raw synced_at | 184 | ServiceTitan accounting/export/inventory-bills | 5 h 22 min ago |
serving_invoice_itemstenant_id id modified_on created_on active invoice_id sku_id sku_name item_type description quantity price cost total total_cost business_unit_id gl_account_id gl_account_name technician_id service_date raw synced_at | 856,780 | ServiceTitan accounting/export/invoice-items | 26 min ago |
serving_invoicestenant_id id modified_on created_on active invoice_number invoice_type job_id job_number customer_id customer_name location_id business_unit_id business_unit_name project_id membership_id batch_id adjustment_to_id sync_status sent_status review_status invoiced_on due_date paid_on term_name subtotal sales_tax total balance summary raw synced_at | 316,806 | ServiceTitan accounting/export/invoices | 26 min ago |
serving_journal_entriestenant_id id modified_on created_on active name number status sync_status post_date exported_on source raw synced_at | 0 | ServiceTitan accounting/journal-entries | 5 h 22 min ago |
serving_payment_termstenant_id id modified_on created_on active raw synced_at | 5 | ServiceTitan accounting/payment-terms | 5 h 22 min ago |
serving_payment_typestenant_id id modified_on created_on active raw synced_at | 18 | ServiceTitan accounting/payment-types | 5 h 22 min ago |
serving_paymentstenant_id id modified_on created_on active payment_type type_id customer_id customer_name business_unit_id batch_id deposit_id refunded_payment_id sync_status paid_on reference_number check_number memo total unapplied_amount raw synced_at | 294,940 | ServiceTitan accounting/export/payments | 26 min ago |
serving_remittance_vendorstenant_id id modified_on created_on active raw synced_at | 80 | ServiceTitan accounting/remittance-vendors | 5 h 22 min ago |
serving_tax_zonestenant_id id modified_on created_on active raw synced_at | 7 | ServiceTitan accounting/tax-zones | 5 h 22 min ago |
ServiceTitan · crm · 6 tables · 210,884 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_booking_provider_tagstenant_id id modified_on created_on active raw synced_at | 1 | ServiceTitan crm/booking-provider-tags | 5 h 22 min ago |
serving_customer_contactstenant_id id modified_on created_on active customer_id contact_type value memo raw synced_at | 64,187 | ServiceTitan crm/export/customers/contacts | 27 min ago |
serving_customerstenant_id id modified_on created_on active name customer_type street city state zip balance credit_limit payment_term_id tax_exempt do_not_mail do_not_service merged_to_id raw synced_at | 37,159 | ServiceTitan crm/export/customers | 27 min ago |
serving_leadstenant_id id modified_on created_on active status customer_id location_id booking_id job_type_id business_unit_id campaign_id follow_up_date summary raw synced_at | 51 | ServiceTitan crm/export/leads | 5 h 22 min ago |
serving_location_contactstenant_id id modified_on created_on active location_id contact_type value memo raw synced_at | 69,328 | ServiceTitan crm/export/locations/contacts | 5 h 22 min ago |
serving_locationstenant_id id modified_on created_on active customer_id name street city state zip zone_id tax_zone_id merged_to_id raw synced_at | 40,158 | ServiceTitan crm/export/locations | 5 h 22 min ago |
ServiceTitan · dispatch · 6 tables · 378,789 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_appointment_assignmentstenant_id id modified_on created_on active appointment_id job_id technician_id technician_name status assigned_on is_paused raw synced_at | 362,090 | ServiceTitan dispatch/export/appointment-assignments | 26 min ago |
serving_arrival_windowstenant_id id modified_on created_on active raw synced_at | 7 | ServiceTitan dispatch/arrival-windows | 5 h 22 min ago |
serving_non_job_appointmentstenant_id id modified_on created_on active raw synced_at | 16,621 | ServiceTitan dispatch/non-job-appointments | 5 h 22 min ago |
serving_teamstenant_id id modified_on created_on active raw synced_at | 7 | ServiceTitan dispatch/teams | 5 h 22 min ago |
serving_technician_skillstenant_id id modified_on created_on active raw synced_at | 60 | ServiceTitan dispatch/technician-skills | 5 h 22 min ago |
serving_zonestenant_id id modified_on created_on active raw synced_at | 4 | ServiceTitan dispatch/zones | 5 h 22 min ago |
ServiceTitan · equipmentsystems · 3 tables · 41,427 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_equipment_systemstenant_id id modified_on created_on active raw synced_at | 0 | ServiceTitan equipmentsystems/export/equipment-systems | 5 h 22 min ago |
serving_equipment_typestenant_id id modified_on created_on active raw synced_at | 482 | ServiceTitan equipmentsystems/equipment-types | 5 h 22 min ago |
serving_installed_equipmenttenant_id id modified_on created_on active customer_id location_id equipment_id name equipment_type manufacturer model serial_number installed_on status manufacturer_warranty_end service_provider_warranty_end raw synced_at | 40,945 | ServiceTitan equipmentsystems/export/installed-equipment | 5 h 22 min ago |
ServiceTitan · findings · 1 tables · 0 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_location_findingstenant_id id modified_on created_on active raw synced_at | 0 | ServiceTitan findings/location-findings | 5 h 22 min ago |
ServiceTitan · forms · 2 tables · 19,839 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_form_submissionstenant_id id modified_on created_on active form_id form_name status submitted_on created_by_id raw synced_at | 19,837 | ServiceTitan forms/submissions | 5 h 22 min ago |
serving_formstenant_id id modified_on created_on active raw synced_at | 2 | ServiceTitan forms/forms | 5 h 22 min ago |
ServiceTitan · inventory · 9 tables · 4,937 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_adjustmentstenant_id id modified_on created_on active raw synced_at | 9 | ServiceTitan inventory/export/adjustments | 5 h 22 min ago |
serving_purchase_order_typestenant_id id modified_on created_on active raw synced_at | 6 | ServiceTitan inventory/purchase-order-types | 5 h 22 min ago |
serving_purchase_orderstenant_id id modified_on created_on active raw synced_at | 2,370 | ServiceTitan inventory/export/purchase-orders | 5 h 22 min ago |
serving_receiptstenant_id id modified_on created_on active raw synced_at | 2,381 | ServiceTitan inventory/export/receipts | 5 h 22 min ago |
serving_returnstenant_id id modified_on created_on active raw synced_at | 20 | ServiceTitan inventory/export/returns | 5 h 22 min ago |
serving_transferstenant_id id modified_on created_on active raw synced_at | 22 | ServiceTitan inventory/export/transfers | 5 h 22 min ago |
serving_truckstenant_id id modified_on created_on active raw synced_at | 48 | ServiceTitan inventory/trucks | 5 h 22 min ago |
serving_vendorstenant_id id modified_on created_on active raw synced_at | 80 | ServiceTitan inventory/vendors | 5 h 22 min ago |
serving_warehousestenant_id id modified_on created_on active raw synced_at | 1 | ServiceTitan inventory/warehouses | 5 h 22 min ago |
ServiceTitan · jbce · 1 tables · 19 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_call_reasonstenant_id id modified_on created_on active raw synced_at | 19 | ServiceTitan jbce/call-reasons | 5 h 22 min ago |
ServiceTitan · jpm · 12 tables · 710,313 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_appointmentstenant_id id modified_on created_on active job_id appointment_number start_time end_time arrival_window_start arrival_window_end status customer_id unused is_confirmed raw synced_at | 271,142 | ServiceTitan jpm/export/appointments | 27 min ago |
serving_job_cancel_reasonstenant_id id modified_on created_on active raw synced_at | 12 | ServiceTitan jpm/job-cancel-reasons | 5 h 22 min ago |
serving_job_canceled_logstenant_id id modified_on created_on active raw synced_at | 1,903 | ServiceTitan jpm/export/job-canceled-logs | 5 h 22 min ago |
serving_job_hold_reasonstenant_id id modified_on created_on active raw synced_at | 8 | ServiceTitan jpm/job-hold-reasons | 5 h 22 min ago |
serving_job_notestenant_id id modified_on created_on active job_id text is_pinned created_by_id raw synced_at | 172,505 | ServiceTitan jpm/export/job-notes | 5 h 22 min ago |
serving_job_typestenant_id id modified_on created_on active name job_class priority duration no_charge summary raw synced_at | 113 | ServiceTitan jpm/job-types | 5 h 22 min ago |
serving_jobstenant_id id modified_on created_on active job_number customer_id location_id job_status completed_on business_unit_id job_type_id priority campaign_id appointment_count first_appointment_id invoice_id project_id sold_by_id membership_id no_charge total summary raw synced_at | 261,793 | ServiceTitan jpm/export/jobs | 27 min ago |
serving_project_notestenant_id id modified_on created_on active raw synced_at | 262 | ServiceTitan jpm/export/project-notes | 5 h 22 min ago |
serving_project_statusestenant_id id modified_on created_on active raw synced_at | 7 | ServiceTitan jpm/project-statuses | 5 h 22 min ago |
serving_project_substatusestenant_id id modified_on created_on active raw synced_at | 2 | ServiceTitan jpm/project-substatuses | 5 h 22 min ago |
serving_project_typestenant_id id modified_on created_on active raw synced_at | 4 | ServiceTitan jpm/project-types | 5 h 22 min ago |
serving_projectstenant_id id modified_on created_on active name number customer_id location_id project_type_id status sub_status start_date target_completion_date actual_completion_date summary raw synced_at | 2,562 | ServiceTitan jpm/export/projects | 5 h 22 min ago |
ServiceTitan · marketing · 2 tables · 77 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_marketing_campaignstenant_id id modified_on created_on active raw synced_at | 62 | ServiceTitan marketing/campaigns | 5 h 22 min ago |
serving_marketing_categoriestenant_id id modified_on created_on active raw synced_at | 15 | ServiceTitan marketing/categories | 5 h 22 min ago |
ServiceTitan · memberships · 7 tables · 94,280 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_invoice_templatestenant_id id modified_on created_on active raw synced_at | 11,612 | ServiceTitan memberships/export/invoice-templates | 5 h 22 min ago |
serving_membership_status_changestenant_id id modified_on created_on active raw synced_at | 6,832 | ServiceTitan memberships/export/membership-status-changes | 5 h 22 min ago |
serving_membership_typestenant_id id modified_on created_on active name display_name duration_billing billing_template_id raw synced_at | 92 | ServiceTitan memberships/export/membership-types | 5 h 22 min ago |
serving_membershipstenant_id id modified_on created_on active customer_id location_id membership_type_id business_unit_id status starts_on ends_on billing_frequency next_scheduled_bill_date cancellation_date sold_by_id memo raw synced_at | 10,424 | ServiceTitan memberships/export/memberships | 5 h 22 min ago |
serving_recurring_service_eventstenant_id id modified_on created_on active raw synced_at | 57,390 | ServiceTitan memberships/export/recurring-service-events | 5 h 22 min ago |
serving_recurring_service_typestenant_id id modified_on created_on active raw synced_at | 25 | ServiceTitan memberships/export/recurring-service-types | 5 h 22 min ago |
serving_recurring_servicestenant_id id modified_on created_on active membership_id location_id recurring_service_type_id job_type_id business_unit_id name starts_on ends_on recurrence_type raw synced_at | 7,905 | ServiceTitan memberships/export/recurring-services | 5 h 22 min ago |
ServiceTitan · pricebook · 5 tables · 22,755 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_pricebook_categoriestenant_id id modified_on created_on active raw synced_at | 1,209 | ServiceTitan pricebook/export/categories | 5 h 22 min ago |
serving_pricebook_discounts_and_feestenant_id id modified_on created_on active raw synced_at | 5 | ServiceTitan pricebook/discounts-and-fees | 5 h 22 min ago |
serving_pricebook_equipmenttenant_id id modified_on created_on active raw synced_at | 842 | ServiceTitan pricebook/export/equipment | 5 h 22 min ago |
serving_pricebook_materialstenant_id id modified_on created_on active raw synced_at | 6,612 | ServiceTitan pricebook/export/materials | 5 h 22 min ago |
serving_pricebook_servicestenant_id id modified_on created_on active raw synced_at | 14,087 | ServiceTitan pricebook/export/services | 5 h 22 min ago |
ServiceTitan · reporting · 1 tables · 12 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_report_categoriestenant_id id modified_on created_on active raw synced_at | 12 | ServiceTitan reporting/report-categories | 5 h 22 min ago |
ServiceTitan · sales · 4 tables · 12,332 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_estimate_itemstenant_id id modified_on created_on active raw synced_at | 3,744 | ServiceTitan sales/estimates/items | 5 h 22 min ago |
serving_estimate_templatestenant_id id modified_on created_on active raw synced_at | 6 | ServiceTitan sales/estimate-templates | 5 h 22 min ago |
serving_estimatestenant_id id modified_on created_on active name job_id job_number project_id customer_id location_id business_unit_id business_unit_name status review_status sold_by_id sold_on subtotal tax summary raw synced_at | 8,581 | ServiceTitan sales/export/estimates | 5 h 22 min ago |
serving_proposal_templatestenant_id id modified_on created_on active raw synced_at | 1 | ServiceTitan sales/proposal-templates | 5 h 22 min ago |
ServiceTitan · service-agreements · 1 tables · 0 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_service_agreementstenant_id id modified_on created_on active name customer_id business_unit_id status start_date end_date duration_months auto_renew total_agreement_price sold_by_id raw synced_at | 0 | ServiceTitan service-agreements/export/service-agreements | 5 h 22 min ago |
ServiceTitan · settings · 5 tables · 568 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_business_unitstenant_id id modified_on created_on active name official_name trade division account_code quickbooks_class raw synced_at | 70 | ServiceTitan settings/export/business-units | 5 h 22 min ago |
serving_employeestenant_id id modified_on created_on active name first_name last_name email role business_unit_id manager_id user_id raw synced_at | 56 | ServiceTitan settings/export/employees | 5 h 22 min ago |
serving_tag_typestenant_id id modified_on created_on active raw synced_at | 163 | ServiceTitan settings/export/tag-types | 5 h 22 min ago |
serving_technicianstenant_id id modified_on created_on active name first_name last_name email business_unit_id main_zone_id team status is_managed_tech user_id raw synced_at | 259 | ServiceTitan settings/export/technicians | 5 h 22 min ago |
serving_user_rolestenant_id id modified_on created_on active raw synced_at | 20 | ServiceTitan settings/user-roles | 5 h 22 min ago |
ServiceTitan · taskmanagement · 1 tables · 1,413 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_taskstenant_id id modified_on created_on active raw synced_at | 1,413 | ServiceTitan taskmanagement/tasks | 5 h 22 min ago |
ServiceTitan · telecom · 1 tables · 111,012 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_callstenant_id id modified_on created_on active direction status call_type from_number to_number duration customer_id location_id job_id campaign_id agent_id reason raw synced_at | 111,012 | ServiceTitan telecom/export/calls | 5 h 22 min ago |
ServiceTitan · derived child tables · 1 tables · 294,370 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_payment_applicationstenant_id payment_id seq applied_id invoice_id applied_amount applied_on applied_by applied_to_reference_number raw | 294,370 | derived from payments on write | 26 min ago |
External sources (OnCall Air, Azuga) · 7 tables · 20,132 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_oca_eventsOnCall Air proposal lifecycle events (created/presented/viewed/accepted/lost/...), captured raw; consultation_code is the proposal code; occurred_at promoted from OCA's 'ocurred_at' id tenant_id received_at event_type occurred_at consultation_code consultation_status customer_name raw processed_at outcome lead_id | 1,895 | ||
serving_oca_sold_proposalsOnCall Air SOLD proposals (the sold-proposal webhook, one row per delivery): the accepted option (proposal_label), sale_price / total_investment / sales_tax / deposits / balance_due, customer and address, consultant, sold_at (UTC), equipment (Equipment-typed products) and every product line; lead_id when linked to a platform lead id tenant_id received_at webhook_type consultation_code consultation_status description customer_name address city state postal phone email consultant_name consultant_email proposal_id proposal_label sale_price total_investment sales_tax deposits_total discounts_total balance_due proposal_url sold_at equipment products lead_id relay_status relay_at relay_http_status relay_error raw lead_match lead_candidates lead_resolved_at lead_resolved_by | 26 | ||
serving_azuga_vehiclesAzuga GPS vehicles (trucks); name is usually the technician's name, spares/other vehicles are named for the vehicle; last_contact_at is the device's last report id tenant_id name device_id user_id user_name make model year license_plate vin group_name time_zone last_contact_at deleted raw synced_at | 24 | ||
serving_azuga_eventsraw Azuga webhook deliveries (TRIP_START_MESSAGE / TRIP_END_MESSAGE); occurred_at is when the ignition turned on/off; one row per Azuga message id id tenant_id received_at event_type vehicle_id vehicle_name trip_number occurred_at latitude longitude address raw | 5,270 | ||
serving_azuga_tripsone row per vehicle trip: started_at/ended_at (UTC), start/end address and coordinates, distance_km, duration_s, idle_s; source 'webhook' (live) or 'import' (Azuga report export); ended_at NULL = trip in progress; technician attribution is NOT in this table id tenant_id source vehicle_id vehicle_name trip_number started_at ended_at start_address end_address start_lat start_lon end_lat end_lon distance_km duration_s idle_s max_speed_kmh user_name raw synced_at | 11,298 | ||
serving_google_reviewsGoogle Business Profile reviews of the AMHAC listing (reviewer display name, star_rating 1-5, comment, created_at/updated_at UTC, reply); the bonus report attributes 5-star reviews to technicians from the text or a fuzzy reviewer-name match id tenant_id location_name reviewer_name star_rating comment created_at updated_at reply_comment replied_at raw synced_at | 1,564 | ||
serving_report_membership_salesrows of ServiceTitan's own 'Weekly Membership Sales & Payments' report (Reporting API): per invoice line of a membership sale: membership_id, invoice, customer, location_address, sold_on, sold_price, membership_bonus (ServiceTitan's commission figure), sold_by, invoice_balance, paid_on, add_on; replaced per pull window id tenant_id report_id membership_id customer_name membership_type membership_status activation_method membership_bonus sold_by invoice_number sold_price item_code sold_on membership_from membership_tags period_from period_to raw synced_at | 55 |
Prospects (parcel register from public records) · 8 tables · 32,889 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_prospects_parcelsthe Prospects register's raw material: every Westchester parcel in the target property classes from the NYS parcel layer (owner, address, class, assessed and market value, square feet, polygon as GeoJSON); prefer serving_prospects_register, which adds the customer status tenant_id id county swis sbl print_key object_id parcel_addr muni_name prop_class land_av total_av full_market_val yr_blt sq_ft gfa primary_owner add_owner mail_addr mail_city mail_state mail_zip book page owner_type roll_yr geometry source source_date in_target_class target_left_at first_seen last_seen raw loc_st_nbr loc_street loc_unit loc_zip centroid_lat centroid_lon owner_key unit_lot | 9,498 | ||
serving_prospects_st_linksparcel -> ServiceTitan location links (how the match was made, score) tenant_id parcel_id location_id customer_id match_method linked_by linked_at last_seen_at active note | 2,051 | ||
serving_prospects_customer_statusper parcel: never / past / active customer, job counts, membership, equipment, computed_at tenant_id parcel_id status locations location_ids customer_ids jobs_total jobs_24m last_job_on membership_active equipment_count computed_at | 9,498 | ||
serving_prospects_entitiesNYS Department of State business entities looked up for parcel owners (name, type, filed_on, process address) tenant_id dos_id name entity_type filed_on county jurisdiction process_name process_address_1 process_address_2 process_city process_state process_zip chairman_name chairman_address_1 chairman_city chairman_state chairman_zip agent_name agent_address_1 agent_city agent_state agent_zip location_name location_address_1 location_city location_state location_zip source first_seen last_seen raw | 3,952 | ||
serving_prospects_owner_entitiesowner name -> entity match outcome (matched / ambiguous / not_found) and who matched it tenant_id owner_key owner_name status dos_id candidates matched_by matched_at last_checked_at note | 7,890 | ||
serving_prospects_notesfree-text notes a person added to a parcel, with full edit history id tenant_id parcel_id text actor_email actor_name created_at updated_at history | 0 | ||
serving_prospects_infilldiscrete fields a person filled on a parcel (confirmed contact, corrected floor area, equipment seen ...), who and when, prior values kept tenant_id parcel_id field value actor_email actor_name at history | 0 | ||
serving_prospects_changesthe Prospects change log: one row per parcel and kind of change (new parcel, owner, customer status, class, value ...) with old and new value and the refresh run id tenant_id parcel_id kind old_value new_value job_name run_id at | 0 |
Platform-owned (leads, trucks, emails, reports, settings) · 21 tables · 46,169 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_platform_identity_linkscrosswalk: external (source, source_id) -> ServiceTitan entity; st_id is merge-resolved, original_st_id as matched id tenant_id source source_id st_entity_type st_id original_st_id merge_resolved_at match_method match_score matched_at matched_by evidence created_at updated_at | 18 | ||
serving_platform_pending_matchesambiguous identity matches awaiting a human (status open/confirmed/rejected) id tenant_id source source_id st_entity_type candidates status note resolution_st_id resolved_by resolved_at raw created_at updated_at | 5 | ||
serving_platform_outbound_actionsaudit log of intended ServiceTitan writes (proposed/confirmed/executed/failed/cancelled); idempotency_key unique id tenant_id action_type source source_id idempotency_key mode status payload result error st_entity_type st_id proposed_at proposed_by confirmed_at confirmed_by executed_at created_at updated_at | 82 | ||
serving_platform_outbound_messagesevery programmatic email the platform sent (Resend): status queued/sent/failed, delivery_status from webhooks, reply_to carries the message id id tenant_id to_address cc_addresses subject purpose status provider provider_message_id related_action_id error raw created_at sent_at updated_at from_address reply_to idempotency_key delivery_status delivery_detail delivered_at bounced_at last_event_at | 246 | ||
serving_platform_job_runsone row per scheduled-job execution id tenant_id job_name started_at finished_at status summary error details | 842 | ||
serving_platform_tool_callsquestion log: every MCP tool call with caller and timing id tenant_id called_at tool args ms ok error user_email client_id | 572 | ||
serving_platform_vehicle_assignmentsowner-entered exceptions: truck X was driven by technician Y between two dates; beats every rule id tenant_id vehicle_id technician_id valid_from valid_to note created_by created_at | 0 | ||
serving_platform_trip_matcheseach trip's best appointment match (is_best) and other candidates: score 0-100, band high/likely/ambiguous/none, evidence lists the rules that fired id tenant_id trip_id vehicle_id day appointment_id job_id technician_ids score band is_best evidence rules_version computed_at | 11,621 | ||
serving_platform_vehicle_dayswho drove each truck each local day: technician_id, band (default_confirmed/swap_detected/default_assumed/ambiguous/no_jobs/excluded), confidence 0-100, crew_technician_ids (driver first), evidence id tenant_id vehicle_id day technician_id default_technician_id band confidence trips matched_stops crew_technician_ids evidence rules_version computed_at | 1,686 | ||
serving_platform_geocodesaddress -> coordinates cache (US Census geocoder) for imported Azuga stops and ServiceTitan locations without coordinates; status match/tie/no_match address_key tenant_id input_address status exact latitude longitude matched_address provider geocoded_at raw | 2,843 | ||
serving_platform_email_eventsevery Resend webhook delivery captured raw (email.sent/delivered/bounced/received ...), with signature check and processing outcome id tenant_id received_at event_type email_id signature_ok processed_at process_error raw | 1,461 | ||
serving_platform_inbound_messagesemails received at leads@mail.amhac.com: sender, subject, body, headers, and the outbound message they reply to (matched_outbound_id, match_method) id tenant_id received_at from_address to_addresses cc_addresses subject message_id in_reply_to references_header text_body html_body headers matched_outbound_id match_method fetched_at fetch_error raw command command_result handled_at | 87 | ||
serving_platform_settingsowner-editable configuration (JSON values), e.g. invoice_report.recipients key tenant_id value updated_at updated_by | 6 | ||
serving_platform_report_itemswhich invoice ids appeared in which nightly report (late-synced invoices are picked up by the next run) id tenant_id report_name item_id report_day item_date outbound_message_id reported_at | 1,048 | ||
serving_platform_report_sendsone-per-day send ledger for scheduled reports (claimed before a send, marked sent or failed after), so a report never goes out twice in a day id tenant_id report_name report_day status trigger_source outbound_message_id recipients idempotency_key claimed_at sent_at error | 25 | ||
serving_platform_leadssales leads submitted through the Parts App (status, customer link, engineer, source); balance is never stored here id tenant_id status needs_review st_customer_id st_location_id customer_name street town zip new_owner_flag quote_for source source_channel source_note engineer_email engineer_technician_id engineer_name submitted_by_email submitted_by_name submitted_at assigned_at status_changed_at last_note_at st_job_id st_job_created_at oca_consultation_code oca_sold_at raw created_at updated_at deleted_at deleted_by install_job_id install_job_url install_job_at sold_source sold_at import_key import_row customer_notified_at customer_notified_by | 3,434 | ||
serving_platform_lead_eventslead status history, notes, assignment and email events id tenant_id lead_id kind status actor_email actor_name text at raw | 15,327 | ||
serving_platform_lead_contactscontacts as submitted with each lead id tenant_id lead_id seq kind value label is_new | 6,699 | ||
serving_platform_lead_requestsidempotency ledger for lead writes idempotency_key tenant_id endpoint lead_id status_code response created_at | 159 | ||
serving_platform_lead_intakeone row per inbound email the lead intake looked at: outcome (created / duplicate / parse_failed / unknown_sender / error), the lead it made, the parsed fields inbound_id tenant_id processed_at source outcome lead_id import_key detail parsed owner_notified_at | 6 | ||
serving_platform_wf_claim_alertsone row per Wells Fargo funding payment seen in ServiceTitan (reference 'Wells Fargo'): customer, paid_on, amount, claim_due_on (30 days), the sold OnCall Air proposal matched (proposal_id, lead_id), outcome (qualifies = Carrier Infinity/Performance equipment on the proposal and an alert was emailed; no_proposal = alert sent to check by hand; not_qualifying), the qualifying equipment lines and the outbound email id payment_id tenant_id customer_id customer_name paid_on amount claim_due_on proposal_id match_how lead_id outcome equipment outbound_id created_at | 2 |
Sync bookkeeping · 2 tables · 779 rows
| View | Rows | Where it comes from | Last updated |
|---|---|---|---|
serving_sync_statelast sync per ServiceTitan resource (cursor, high-water, status, error) tenant_id resource continue_from high_water_modified_on last_run_at last_run_status rows_upserted error | 85 | ||
serving_sync_runsone row per sync invocation run_id tenant_id started_at finished_at status resources full_refresh rows_upserted requests error | 694 |
Public view: counts and health only. Names, addresses, email and money never appear here.