Estimates your customers actually open, read, and approve
Snap photos, price the job, and text or email a clean branded estimate with a one-tap Approve button. Built for body shops and trades — multi-tenant, compliant, and ready to loop unapproved jobs back into follow-up.
The “Create an estimate” button asks you to sign in first — accounts are provisioned in the Developer Console.
How it works
Capture & price
Staff add photos, parts and labor line items. HST and totals are computed in exact cents — no rounding drift.
Send the link
One tap emails (Resend) and texts (Twilio) a short link to a branded estimate page. Quiet-hours guard keeps it TCPA-compliant.
Customer approves
The customer opens a clean page and taps Approve. Unapproved estimates become follow-up triggers.
Everything in the box
Every surface below is live in this build. Jump straight in.
Shop Login
→Company sign-in (email + password). No public self-signup.
Developer Console
→Super-admin: create, activate, and deactivate companies. Two-tier auth.
Create Estimate
→Photos, parts/labor, HST, default note — then send by email + SMS.
Estimates Dashboard
→Per-company list of estimates with status, scoped by row-level security.
Live Estimate Page
→A real branded estimate exactly as a customer receives it.
Source on GitHub
→raheemyounes/ailoop · Next 15 · Supabase · 35 passing tests.
Multi-tenant by design
Each shop is an isolated tenant via Postgres row-level security — one codebase, unlimited companies.
Compliant sending
Quiet-hours enforcement and STOP opt-out baked into the SMS path; consent-gated voice on the roadmap.
Exact-cent money
All totals and HST computed in integer cents and unit-tested — what the customer sees always reconciles.