Jostar.id
Portfolio
Mobile App · 2026

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.

Sign in — username + PIN login per user (Admin & Technician)
Admin Dashboard — operations, finance & reports in one menu
Order Input — service tier (Standard/Priority/Warranty) & multi-service + Maps link
Queue List — warranty queue 00 (red) on top, real-time order status
Material Prices — CRUD materials & prices for invoice calculation
History — completed orders, payment method (cash/transfer) & warranty flag
Finance — owner's net share, revenue, commissions & insurance fund
Settings — daily queue limit & holiday schedule (skipped)

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

FlutterDartProviderCloud FirestoreFirestore TransactionCustom Auth (username + PIN)SHA-256 (crypto)shared_preferencesCloudinary (unsigned upload)pdf / printingimage_pickerurl_launcherintl

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.