AC Service Management — Open Job Pool, Commissions & Finance for an AC Service Business
AC Service Management is an operations app for an AC service business built on an Open Job Pool concept — technician teams claim orders themselves, like Gojek/Grab's grab-a-job system. The admin (owner) inputs orders that arrive via WhatsApp, the system assigns queue numbers automatically with daily quotas and rollover past holidays, then paired technicians (Leader + Helper) claim and complete orders. The moment an order is done, commissions land in each technician's wallet, the team's insurance fund deduction is recorded automatically, and every number flows into the owner's financial reports (revenue, cash/transfer payment methods, commissions, and net share). The system's core — order claiming, queue numbering, commissions, and insurance — runs on Firestore Transactions to stay atomic and double-claim-proof. Built with Flutter + Firebase and custom username + PIN authentication per role.
- Platform
- Android
- Year
- 2026
- Industry
- Field Service / AC Servicing
- Role
- Full-cycle: architecture, Flutter app (admin & technicians), Firestore Transaction business logic, Firebase backend
App screenshots
Click an image to zoom — swipe left/right to browse.
Key features
Open Job Pool (claim system)
Technicians see today's queue and claim orders themselves. Once one team taps 'Claim', the order locks for everyone else — guaranteed by Firestore Transactions to prevent double-claims.
Automatic daily queues & quotas
Queue numbers are assigned automatically with a daily cap on regular orders. When the quota fills, new orders roll over to the next working day — skipping dates marked as holidays.
Service tiers & warranty priority
Orders can be Standard, Priority (Express), or Warranty. Warranty claims enter queue 00 (red) and must be completed before regular orders can be claimed.
Real-time commissions & wallet
Technicians work in Leader + Helper pairs. When an order completes, each role's commission is written and added to their wallet balance at the rate for that service type.
Automatic insurance fund
Each team is deducted Rp12,000 once per day for the savings/insurance fund — enforced by a deterministic {leader}_{helper}_{date} document so it never deducts twice even when a team completes many orders.
Multi-service order input + Google Maps
Admins log orders from WhatsApp: name, contact, multiple service types with unit counts, village, and a pasted Google Maps link technicians can open directly.
Material prices & commission rates
CRUD for the material list with prices (totals auto-computed at order completion) and Leader/Helper commission rate settings per service type.
Owner financial reports
Monthly recaps: total invoices, services, pass-through materials, payment method breakdown (cash/transfer), technician commissions, insurance fund, and the owner's gross & net share.
History & team evaluation
A list of completed orders with the Leader & Helper who worked them — for warranty claim tracing and team quality evaluation.
Role auth & user management
Username + PIN login per user with Admin & Technician role separation. Admins create technician accounts complete with photos uploaded to Cloudinary.
Technical highlights
The advanced parts behind the scenes that make this system run smoothly.
- The order-claiming core is built on Firestore Transactions: status locks the instant it's claimed, safe from double-claims when multiple teams tap 'Claim' at once.
- Atomic queue numbering via per-date counter documents (counters/{yyyy-MM-dd}) — also enforcing daily quotas and automatic rollover to the next working day past holidays.
- Order completion is one atomic transaction: order → done, two commission documents, Leader & Helper wallet balance increments, and the once-per-team-per-day insurance deduction.
- Order-sequence lock: technicians can only claim the lowest open queue number (no skipping) for fair area distribution, with warranty priority 00 blocking regular orders.
- Custom authentication without Firebase Auth: username + PIN hashed with SHA-256, sessions in shared_preferences, and role-based routing (admin/technician).
- Technician photos uploaded straight to Cloudinary via unsigned upload presets (no intermediary server) — only the resulting URL is stored in Firestore to keep costs down.
Tech stack
Want an app like this for your business?
We've built systems like AC Service Management from scratch all the way to production. Tell us what you need — the initial consultation is free, no strings attached.

