Handyman system · November 4, 2026 · 8 min read

Job sheet app in Malaysia: how our repair team runs a full day on WhatsApp, from clock-in to invoice

A job sheet app only earns its fee if technicians actually use it. Here is how our repair team across 100+ Johor Bahru units works: morning list, clock-in, photos, to be continued, receipts, invoice, and what still goes wrong.

Bahasa Melayu → · 中文 →

A job sheet app in Malaysia should record who did which job, when, where and with what proof, without asking technicians to learn much. Our repair team across 100+ Johor Bahru homestay units does nearly all of it inside WhatsApp, and the office closes each job in a back office that produces the invoice.

This is the working day of that team, including what still goes wrong. For how a job reaches the team in the first place, read how we dispatch repairs across 100+ units. This article starts where that one ends.

Why do paper job sheets and WhatsApp groups stop working?

Neither one is stupid. Paper is cheap and a group chat is already on every phone. The trouble is what they leave behind a month later, when somebody asks a question.

Question a month laterPaper job sheetWhatsApp groupA job system
Was this job actually finished?If the sheet came backScroll and hopeStatus plus the time it changed
What did the repair look like?Usually no photoSomewhere in the media tabPhotos attached to the job number
Who was on site, and when?Handwritten timeA message, maybeStart and close time, with location if allowed
Which receipt belongs to which job?Stapled, sometimesA photo with no job attachedClaim linked to a job or unit
Has it been billed?Someone's memorySomeone's memoryInvoice linked to the job

Search for this topic and most of Google's first page is foreign vendors such as Joblogic or setup notes for large systems such as Zoho FSM's job sheets. They describe features well. What they rarely describe is a technician in a lift lobby with wet hands, which is the real test.

Why did we put the job sheet in WhatsApp instead of an app?

Because every technician already has it open. A separate web page does exist for technicians, but the WhatsApp menu does the same day's work:

What they sendWhat it does
/startwork and /endworkClock in and out, with location
/mytaskToday's jobs; pick one, start it
/completetaskDone (After photos, remark) or to be continued
/claim, /expensesSend a receipt photo or PDF
/feedbackReport a problem seen at a unit
/unit A-12-03Door password, parking, mailbox or QR for that unit

Two rules keep this safe. Every write is shown first and only happens after the person replies "yes", so a stray message cannot close a job. And anything the bot does not clearly understand gets no bot reply: it is tagged for a colleague to answer. Replies follow the language the person writes in, Chinese, English or Malay.

Door passwords are the sensitive part of that table, so every look-up is logged.

What does a technician's day actually look like?

08:00, the list arrives. At a time the company sets (08:00 by default) each technician gets one message: job number, unit and description for each job today. It includes jobs scheduled today, unfinished jobs whose return date has arrived, and jobs with no date yet. A job waiting on quote approval is left out, because nobody should be working on it.

Clock in. On WhatsApp the technician sends a photo of the car's fuel gauge, confirms the plate and shares a location. That one step also opens the car shift used for fuel claims. On WhatsApp, a job cannot be started before clocking in.

Start the job. This records the time, plus GPS if the technician allows it. Several jobs can be open at once, because real days overlap. A job with a quote still pending refuses to start.

Close the job, one of two ways:

ChoiceWhat is requiredWhat happens next
DoneAt least one After photoStatus becomes done; every supervisor gets a WhatsApp saying who finished what
To be continuedA remark; photos and return date are optionalJob goes on hold; the person who reported it is told; it returns to the morning list when due

The second option matters more than it looks. Without it, a technician waiting for a part leaves the job "in progress" for a week, and nobody can tell a stuck job from a busy one. A required remark means the reason is written down the moment it happens.

Receipts. A photo or PDF goes in, AI reads it, the technician confirms the unit, chooses claim or expense, and confirms the summary. It lands in Expenses for the office to verify. The same receipt number from the same shop is refused the second time, unless the first claim was rejected.

Clock out. Gauge photo again, plus the fuel receipt and amount if they refuelled.

What does the supervisor see without chasing anyone?

Three scheduled summaries, each with its own on/off switch, sent at most once a day and skipped when there is nothing to report:

SummaryDefault timeGoes toContains
Morning08:00SupervisorsEach technician's jobs today
Evening18:00SupervisorsDone and not done per technician, plus who did not clock in
Evening18:00Each technicianTheir own done and not done

Supervisors can also ask at any time with /alltask and /summary, and create or hand out work from the same chat with /newjob and /assign. The evening summary is the useful one: a technician who forgot to clock in shows up as a line the same day, rather than being discovered at month end.

How does a finished job become an invoice and a payslip?

"Done" is the technician's word. It is not the bill. The office reviews the job and sets a Final amount, and that step automatically opens an invoice, pushes it to Bukku and sends it by WhatsApp to whoever receives the bill. A job marked FOC produces no invoice. The approval side is covered in fix first or quote first, and owners can see how to read the result in how to check a management statement.

Expenses move through three tabs: Verify, Pending payment, Paid. Nothing reaches the accounts until someone marks it paid, so a wrong claim can be fixed without voiding anything.

Salary runs on the same record. A technician can be paid monthly or per job, and per-job pay is the job count times the rate. EPF, SOCSO and EIS come from the official contribution tables. Once a person has been paid for the month, their row is locked, while colleagues not yet paid can still be edited. We built it that way after a whole-month lock pushed the boss back to Excel when three of ten people were paid early.

What still goes wrong?

  • Only the After photo is enforced. Our Handyman page promises before and after photos on every job, but the system only blocks closing without an After photo. Before photos depend on discipline, and on the reporter having sent one.
  • A photo is not proof of quality. Nothing checks that the picture shows the right unit or a good repair. A person still has to look.
  • GPS records, it does not police. We store the location. We do not have a geofence that refuses a clock-in from the wrong place, and job GPS is only there if the technician allows it.
  • Forgotten clock-outs. After 05:00 the next morning, an open day closes itself at zero hours and waits for the boss to enter the real time. That is fair, but it is manual work and it happens.
  • Lateness does not deduct itself. Late minutes and unpaid leave are typed into the salary run by hand. The clock-in times do not flow into pay automatically, so someone has to read them.
  • Messages can fail quietly. Notifications run in the background so a technician's button press never fails because of them. The price is that a message that did not send will not stop the job, and a digest more than a few hours late is dropped rather than delivered at midnight.
  • No customer signature. This flow has no sign-on-glass step. If your clients demand a signed job sheet, as some facilities contracts do, this is not it yet.

What should you ask before paying for any job sheet app?

Ours included. These are the questions we would ask:

  1. Can a technician finish a job with one hand and bad signal, in the language they actually write?
  2. Which proof is enforced by the system, and which is only encouraged?
  3. Is there a real "cannot finish today" state, with a required reason?
  4. Does the same receipt get refused the second time?
  5. Does a finished job open an invoice in your accounting software, or do you retype it?
  6. Who gets told when a job finishes, and what happens if that message fails?
  7. Is the price per technician, per job, or flat? Directories such as Capterra list per-user pricing for some tools and reviews describe per-job pricing for others, and the figures disagree, so read the vendor's own page and work it out at your real job count.
  8. What happens to your job history if you leave?

When do you not need this?

Be honest about size. One technician who is also the owner, with a handful of regular clients, can run well on a notebook and a shared calendar. A system adds a step for every job, and that step only pays off when more than one person needs to know what happened.

The same goes for software you will not enforce. If your technicians will not send photos, an app will not change that; a supervisor who refuses to close jobs without them will. The same "when does the spreadsheet break" logic is in PMS vs Excel at 10, 30 and 50 units.

How can you use this setup?

The system behind this article is called Handyman, and it serves Johor Bahru. The Handyman page is written mainly for owners and operators who want the repair work done, and the pricing page shows the current plans. If you run your own repair team and only want the system, say so in your enquiry and ask for the terms in writing, including what is and is not covered.

This article describes how our own team works and is not a service guarantee. Features and defaults can change; plan terms are as stated on the pricing page at the time you sign up.

Repairs tracked from report to invoice

The handyman system we use across our own units is available for yours: jobs, photos, costs and owner billing in one place.

See the handyman system