What's New on the Platform — May 4–19, 2026

Hey everyone! This is our second bi-weekly update. The past two weeks were big: we shipped a brand-new Customer Portal and a brand-new Recurring Maintenance Plans product, leveled up the voice assistant, made payments smoother, and polished dozens of pages along the way.


:new_button: NEW

Customer Portal — a personal login for your customers

Your customers now have their own way into the platform — no password, just a magic link to their email. Once inside, they can see:

  • their jobs (active, history, and full details for each)
  • their invoices and payment history
  • their profile, with editable contact info
  • a “submit a request” form plus the history of every request they’ve sent
  • the schedule of upcoming technician visits
  • their active maintenance plans

One login and they can answer “when are you coming?” and “can you resend the invoice?” by themselves. Fewer interruptions for your team.

Recurring Maintenance Plans

A new way to sell service. The customer subscribes to a plan (e.g., “AC service twice a year”) and the platform handles the rest on its own:

  • schedules the next visits
  • generates the invoice when it’s due
  • auto-renews the subscription (with safeguards against double-charging)
  • shows the customer their active plans inside their portal

Voice assistant — a real step forward

  • The voice sounds noticeably more natural — we switched to a new TTS engine (on staging now, rolling out to everyone soon)
  • The assistant greets callers by name when it recognizes their number
  • When the assistant books an appointment during a call, the confirmation now goes out automatically
  • When a caller introduces themselves, they land in your CRM right away
  • Full call transcripts (both sides) are captured automatically
  • Old call recordings are cleaned up on a schedule — no manual housekeeping
  • Voice overage is now a flat $0.25/min on every tier — same price for everyone

GDPR & compliance

  • One-click “anonymize customer” (right to be forgotten) — the data is wiped, history stays intact
  • One-click “export customer data” — your customer gets their full data on request
  • New A2P 10DLC registration tab with a step-by-step wizard — you can’t legally send SMS to US numbers without this anymore
  • When a tenant is offboarded, data is retained for an extra 90 days with a safety net against accidental deletion

Vendor invoices

You can now run a vendor invoice end-to-end through the platform: ApproveMark as Paid.

Estimates, Tasks, Jobs

  • Sales reps can approve an estimate verbally or over the phone — no need to wait for the customer to click
  • “Save as Draft” on an estimate actually saves to the server now
  • Task detail now has Reassign, Comment, and Start Task
  • The platform warns you when a new job overlaps another technician’s time
  • Job notes are editable right from the job card
  • Tab navigation on the job detail page is fully keyboard-accessible

Properties

  • Real Assets and Work Orders tabs on property detail (they were placeholders before)
  • New Tenants tab (more depth coming in future updates)

Payments & notifications

  • When you create an invoice, the customer automatically gets an SMS and email with the payment link
  • After a successful payment, they get an SMS receipt
  • The public technician-tracking page (/track/...) shows live position and ETA without needing to refresh

Taxes

  • Accounts now have a “tax-exempt” flag with a reason field
  • When the flag is set, invoice tax is forced to 0%

Landing & marketing

  • Rewrote the hero — “Handle more inbound requests” instead of the abstract “Never miss”
  • Pricing tiers on the landing page now use trade vernacular — Owner / Shop / Company / Enterprise
  • Added a new founder/operator credibility block

Legal

  • A real legal section: 5 dedicated compliance pages and a canonical sub-processors list
  • /security — a trust-center page
  • /dpa — Data Processing Agreement (your enterprise customers will ask for it)

Reports & Audit Log

  • You can now check rows in the audit log and export just the selected ones
  • Search and export now cover the entire dataset, not just the first 500 rows on screen
  • Invoices got date-range presets — Today / This Week / This Month / Last Month

UI & accessibility

  • Confirm dialogs for destructive actions are unified and prettier — no more browser “Are you sure?” popups
  • Unified breadcrumbs across most settings pages and the customer detail view
  • Loading skeletons, empty states, and pagination are now consistent across the app
  • A lot of accessibility polish — keyboard navigation, ARIA roles, focus rings

:wrench: WHAT’S FIXED

  • AI Insights are fresher and more honest. Cache TTL shrunk from 60 minutes to 5, each insight now shows when it was generated, and empty tenants no longer get mock copy or fake “I-280 traffic” placeholders in the text.
  • Lists stopped crashing on response-shape changes. Jobs, dispatcher, invoices, leads, accounts, and dispatch — all the main lists now tolerate any reasonable response shape.
  • Filters work the way you’d expect. The “All Time” preset on Jobs actually shows all jobs (it was silently capping at ±120 days); asset status/type filters apply to the grid; the customer list respects the property filter from the URL.
  • Search and export across all tables now cover the full dataset, not just the first 500 rows on screen.
  • Customer deduplication. Creating a customer with an existing email/phone returns the existing record instead of forking a new one — no more duplicates in your CRM.
  • Calendar and timezones. Maintenance calendar entries no longer drift into neighboring cells from timezone math.
  • Customer Portal is more reliable — we improved login reliability, auth edge cases, and public payment-page stability.
  • Billing is aligned with Stripe’s current API — upgrade preview works again, tier naming is consistent everywhere, and upgrade/downgrade accept the canonical tier name.
  • Settings cleanup — the AI Settings section no longer says “section not found”, the Google Business Profile connection shows a clear message when OAuth isn’t configured, and API docs are now discoverable from the sidebar.
  • Hundreds of small UX fixes across navigation, forms, status badges, and error messages. If something felt “a little off” in the last update — take another look, we probably fixed it.

:locked: SECURITY & STABILITY

The invisible-but-important work that keeps the platform sound:

  • Significantly expanded automated reliability and security testing across billing, auth, and tenant isolation. Every release now goes through more checks than before.
  • Hardened the public payment and tracking endpoints against scripted abuse and token-enumeration attacks.
  • Strengthened tenant isolation across multiple layers — webhooks, background jobs, and admin commands always run in the correct tenant context now.
  • More transparent software supply chain. Every release now ships with a full dependency manifest, scanned for known vulnerabilities, with the final artifact cryptographically signed.
  • More stable staging environment — a critical fix that gets staging back to first-try startup.

:date: NEXT UPDATE

Next drop is around June 2. On deck: rolling Customer Portal into full self-service payments (customers paying directly from their portal), production rollout of the new voice engine to every tenant, and extending the subscription product — specifically, predicted cash-flow reports from recurring plans.

If something broke, or you want to see a particular feature next — just reply here. We read everything.