fiveagents logofiveagents.io
All case studies
Company Formation & Licensing

They Run The Whole Firm On One App Now

NPC Office — Jakarta and Surabaya, Indonesia

696 read, 15 proposed, 6 met
Every application for one seat, read against the keywords the hiring manager approved. A person confirmed both cuts — removing some the screen ranked highly, adding some it ranked nowhere
2 companies, 3 offices, 47 staff
The same app that fills a seat runs the business the seat sits in — leave, payroll, leases and staff certificates on one 90-day expiry window
Nobody typed onto payroll
The signed employment contract opens the staff record and the payroll enrolment. There is no screen anywhere that adds a person to a payroll sheet by hand
Open the live demoClickable, on invented sample data — not the client’s records. No sign-up.

We used to open CVs one at a time until the evening went, and you tell yourself you read them all. You did not — you read until you stopped, and the person you were looking for might have been in the part you never opened. Now every one of them gets read, and the six I meet are six I picked off a list I can argue with.

Director, NPC Office
01

How it used to work

A firm that files other people’s paperwork for a living was reading CVs until the evening went, and keeping its own staff in four places that never spoke to each other.

BeforeOne seat, several hundred CVs

696 applications, one seat. One mark each.

↑ read until the day ran out

Everything under the line was never opened — not rejected, just further down.

Signed contract⟶ re-typed by hand ⟶
CompaniesOfficesStaffPayroll

Four separate places, none of them talking to each other — and leases and certificates expiring in whichever folder they happened to live in.

The six you wanted might have been in the part nobody opened

and whoever stopped reading first decided who was never seen

NPC Office registers companies, files licences and runs virtual offices for entrepreneurs across Indonesia. It knows exactly what a PT PMA needs, what an NIB costs and when a domicile letter expires, because it does that work every week for other people. Its own back office ran on none of it.

Filling one seat meant opening applications one at a time. Three job boards, close to seven hundred of them for a single legal role, and one person reading down the list in the evenings. The cost was never the hours. It was that the reading stopped somewhere, and whoever stopped first decided who was never seen. Nobody could say how far down the list anyone got, or whether the standard for “worth an interview” at eleven at night was still the standard from that morning.

At the other end the same firm had four places to keep people: a folder of company documents, a folder per office, a staff list, and a payroll sheet. A signed contract became a typing job — the NIK, the PTKP status that picks the tax rate, the BPJS numbers, the bank account, all entered a second time by hand. Office leases, domicile letters and staff brevet certificates expired quietly in whichever folder they happened to live in.

  • The reading stopped somewhere

    Close to seven hundred applications for one seat, opened one at a time. Whoever stopped first decided who was never seen.

  • A different bar every session

    What counted as worth an interview drifted with who was reading and how late it was. Nothing recorded the standard, so nothing could hold it.

  • A new starter was retyped

    Everything already on the signed contract — name, role, office, start date, salary — entered a second time by hand into the thing that pays them.

  • Leases and certificates lapsed quietly

    Office leases, domicile letters and staff brevet certificates sat in separate folders, with no shared window on what was about to expire.

02

How it works now

Every application read against a brief the hiring manager approved — and one app that carries the hire straight into the business it joins.

AfterOne app, two halves

Every application read against a brief the hiring manager approved — and the contract that ends the hire opens the record that begins the job.

Recruitment

696

applications, collected from three boards

a person confirms — in both directions
15

CVs proposed by the screen

a person confirms who is met
6

people the hiring manager met

15 of 696 is two percent, and that drop is the point. Nothing is filtered on the way in, and no candidate is removed by a machine.

the signed contract

Management

  • Companies2
  • Offices3
  • Staff47
  • Leavetwo signatures
  • Payrollderived monthly

One 90-day expiry window — an office lease and a BPJS card are the same problem.

The hire that comes out of the left half walks into the right half without being retyped. Nobody adds a person to payroll: a row is there because a staff record says they started, and gone because it says they left.

  • Reading applications

    Opened one at a time, in the evenings, until the reading stopped

    Every one read against the keywords the hiring manager approved

  • Who was ever seen

    Whoever was still on the list when the evening went

    696 read, 15 proposed, 6 met — and a person confirming both cuts

  • The bar

    Drifted with who was reading and how late it was

    One brief, one keyword list, one rubric, approved before the ad exists

  • The brief

    Whatever was said in a corridor, written up afterwards

    Edited and approved by the practice head, before an ad is written

  • A new starter

    Retyped onto the payroll sheet from the signed contract

    The signed contract opens the staff record and the enrolment

  • Statutory programmes

    Five, chosen from memory, two of them capped differently

    Derived from contract type and age, with both ceilings applied

  • The monthly sheet

    Last month, copied forward

    Derived from the staff records, then signed off. Signing off is not paying

  • Leases and certificates

    Separate folders, noticed once they had already lapsed

    One 90-day window over offices and staff alike

The hiring did not change shape. What changed is that the reading stopped being the bottleneck, and that the hire no longer stops at the offer.

It starts with the hiring manager rather than with us. The practice head who needs the person edits and approves three things in one place, on a link with no login: the job description, the screening keywords, and the interview questions. The keywords are the important one — they decide who is ever read — so the person who wants the hire approves them before an ad is written.

Then the applications arrive unfiltered, all 696 of them, from three boards through one connection. A screen reads every single one against those approved keywords and proposes fifteen. A second screen scores recorded answers against one rubric and proposes six. Both propose and neither decides: a person confirms each cut in both directions, removing some the screen ranked highly and adding some it ranked nowhere. Nothing is rejected by a machine, and the count on the screen is the real count because nothing was filtered on the way in.

The join is the part neither half of this normally has. The offer and the employment contract are two documents and two signatures, and the second one opens the staff record and the payroll enrolment on its own. Nobody retypes a new starter. The statutory programmes are derived from the contract type and the person’s age rather than ticked — an intern gets JKK and JKM only, and somebody over the pension age gets no new JP enrolment.

From there the second half of the app is simply where that person lives: two legal entities, three offices, forty-seven active staff, leave that takes two signatures, and one 90-day window watching office leases and staff certificates alike, because a lease that lapses and a BPJS card that lapses are the same problem. Payroll has no “add to payroll” button, deliberately. A row is there because a staff record says the person started and gone because it says they left. The month is derived and then signed off by the owner — and signing off is not paying, because nothing on that page can move money.

A hire, end to end

  1. Gate 0Human

    Agree the headcount

    A practice head raises the role with a business case and a band. The owner sees what it actually commits — the salary plus employer BPJS plus THR, a year of it — and approves or holds. Nothing else about the requisition exists yet.

    Decides
    The role, the band, and what the year costs
    Nothing moves until
    No brief, no keywords, no ad

    Per role

  2. Gate 1Human

    Approve the brief

    The hiring manager edits and approves three things at once, on a link with no login: the description, the screening keywords, and the interview questions. The keywords decide who is ever read, which is why they are approved by the person who wants the hire.

    Decides
    The brief, the keywords and the questions
    Nothing moves until
    No ad is written

    Per role

  3. Gate 2Human

    Approve the spend

    One ad is written from the approved brief and priced per board. The total is shown before it commits. An agent writes the ad; an agent has no tool that spends the money.

    Decides
    The ad, the boards and what they cost
    Nothing moves until
    Nothing is posted, nothing is billed

    Per role

  4. ApplyEvery application arrives
    Automated

    Applications come back from every board as they are made. Nothing is filtered on the way in, so the count on the screen is the real count.

    On arrival, at any hour

  5. Gate 3Automated + human

    Confirm the shortlist

    Every CV is read against the keywords the manager approved, and a shortlist is proposed. A person confirms it — removing some it ranked highly and adding some it ranked nowhere.

    Decides
    Who is asked to record answers
    Nothing moves until
    No invitation goes out

    Per role

  6. Gate 4Automated + human

    Confirm who is met

    The recorded answers are scored on one rubric and six are proposed. A person reads them and overrules the ranking where it is wrong. The score ranks a table; nothing reads it to decide anything.

    Decides
    Who the hiring manager meets
    Nothing moves until
    The manager sees nobody

    Per role

  7. HireTwo interviews
    Human

    Booked and recorded against the requisition. These are the two rows in the record that a person types in, and the record says so rather than hiding it.

    Per candidate

  8. Gate 5Human

    Authorise the offer

    Terms are agreed in the back office and authorised by the hiring manager, who has still never been shown the budget ceiling. The candidate signs it in the browser.

    Decides
    The offer terms
    Nothing moves until
    No offer letter exists

    Per hire

  9. Gate 6Human

    The perjanjian kerja

    A second document and a second signature. The offer and the employment contract are not the same thing, and onboarding waits for this one rather than the first.

    Decides
    The employment contract
    Nothing moves until
    Onboarding cannot start

    Per hire

  10. OnboardThe record writes itself
    Automated + human

    The signed contract creates the staff record and the payroll enrolment. Name, role, office, start date and salary are never retyped; the statutory programmes are derived from the contract type and the person’s age. From the next run they are simply on the sheet.

    On signature

Ten steps from “we need someone” to a first payslip. Seven are checkpoints where nothing downstream happens until a person says so — Gate 0 in the back office, and the six the automation cannot pass — and two of those belong to the practice head rather than to HR.

03

See it working

Not screenshots — the back office, the candidate’s side, the hiring manager’s link and the automation, on invented data. Click anything.

The back office

Hiring and management in one nav, on invented data. Every screen clickable, and three seats to look at it from.

  • 696 applications narrowed to fifteen and then to six, with both human overrules left on the page
  • Switch between the owner and an office manager and watch the salary column, the payroll page and the ad spend disappear
  • The management half: two companies, three offices, forty-seven staff, and one window on everything about to expire
  • A payroll sheet with no way to add anybody to it, and a month that has to be signed off
Open the demo

The candidate portal

The candidate’s side: the salary form, the timed questions, and the two documents they sign.

  • Current and expected salary first, in a form — the questions do not unlock until both are answered
  • A countdown that actually runs and stops the recording at the limit
  • The offer signed in the browser, then the perjanjian kerja as a separate document
  • What the candidate is told, and what they are not
Open the demo

The hiring manager’s link

What a practice head gets: three screens, no login, and no sight of the budget.

  • Edit the screening keywords in place — approving them is approving who will ever be read
  • Approve the brief, and watch the ad become writable behind it
  • The shortlist, with each candidate’s expected salary against the advertised band
  • The offer they authorise — and the ceiling they are never shown
Open the demo

The automation

What the automation actually is: six agents, the gates they cannot pass, and a week of runs.

  • The contract: what each agent may do, and what it has no tool to do
  • The tools that exist, and the ones drawn dashed because they do not — including any way to reject a candidate
  • Every gate, grouped by which half of the business it belongs to
  • A week of runs, reported in numbers — 696 CVs read against the approved keywords, 15 proposed
Open the demo

Six things in there are worth finding. Go and look.

  1. 1The screen proposed fifteen out of 696, and a person changed that list in both directions — names taken off that it ranked highly, names put on that it ranked nowhere. Both edits are still on the page, with who made them.
  2. 2A brief that has been with a practice head for four days with three edits on it, and no ad written. Those four days would otherwise have been spent advertising a role nobody had agreed the shape of.
  3. 3A requisition for a front-office role in Surabaya, six days with the owner and going nowhere. The manager asked for Rp 6.000.000 a month. The screen says Rp 85.372.800 a year, because that is what employer BPJS and THR make it.
  4. 4A third office in Bandung, proposed by an office manager and approved by nobody. He can open its page and chase it. He cannot sign it off, because opening a site is a lease, a domicile letter and eventually a payroll.
  5. 5A leave request that skips the first signature entirely and says why: nobody holds that office, so it goes straight to the owner rather than waiting on a seat that does not exist. Thirty of the forty-seven staff sit in that office.
  6. 6An office manager who approves leave for a team and runs a hiring round for his own office, and is never shown what a single one of them is paid.

Everything else runs cleanly. Each of these is the system being awkward on purpose — waiting on a person, refusing a permission, or showing a number that makes a decision harder rather than easier.

What NPC still decides

  • The screens propose and never reject. Every application is read, nothing is filtered on the way in, and no candidate is removed by a machine — both cuts wait for a person, and the demo shows that person overruling in both directions.
  • The keywords belong to the hiring manager, not to us. They decide who is ever read, so the person who wants the hire approves them before an ad exists.
  • A role does not exist until the owner agrees to what it costs for a year, and until then there is no brief, no keyword list and no ad to approve.
  • Nothing is posted and nothing is billed without a person. An agent writes the ad and prices it; it has no tool that posts one nobody approved.
  • An office manager runs a team, approves their leave and hires into their own office without being shown a single salary, including on the record they helped create.
  • Signing off a month is not paying it. The bank instruction that moves the money is not held here, and nothing on that page can move it.

Want this running for your business?