Company Formation & Virtual Offices · Business OperationsAn Enterprise-Grade System, Built For A Small To Medium Enterprise
NPC Office — Jakarta and Surabaya, Indonesia · npcoffice.com ↗
- 5 modules, one login
- Each person’s own record, what the firm sells, its money, its people and its offices, behind one switcher. Five roles decide who sees which, and a person can hold more than one
- 2 companies, 2 sets of books
- Virtual offices are sold by one company and legal services by the other, their books are never mixed, and every letter, invoice, cost and payslip belongs to exactly one of them
- A person signs every gate
- The headcount, the shortlist, the offer letter, the invoice, a payment that is not an exact match, the month’s payroll and the month’s close. The system proposes. Nobody is rejected, billed or paid by a machine
“We set up companies for other people, so we know what a properly run one looks like. Ours was run on templates, spreadsheets and whoever remembered. Now hiring, payroll, our clients and our invoices are in one place. A contract gets signed and the person is on payroll. A client pays and the job opens. I still approve everything that matters, and I can see all of it from one screen.”
How it used to work
A firm that files other people’s paperwork for a living ran its own business in pieces: CVs read until the evening went, staff kept in four places, and letters, invoices and bank statements that never met.
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.
Separate records, none of them talking to each other, across two companies whose books cannot be mixed.
The same facts, carried between places by hand
and the person you wanted to hire might have been in the part nobody opened
NPC Office handles the paperwork new businesses in Indonesia cannot handle themselves, and runs virtual offices for them. It knows exactly what each filing needs, what it costs and when it 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, hundreds of applications for a single 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. At the other end, a signed contract became a typing job: the personal details, the tax band, the contribution numbers and the bank account were all entered a second time, into a staff list and a payroll sheet that did not know about each other.
The client side had the same shape. What a client was offered lived in a letter. What they owed lived in an invoice. Whether they had paid lived in the bank’s statement, and nothing joined the three. It mattered more than usual here, because NPC is two companies. One sells virtual offices and the other sells legal services, and their books cannot be combined at year end, so every letter and every invoice has to come from the right one.
Software that handles all of this exists. It is sold to companies with a finance department and an HR department, priced and shaped for them. A small to medium enterprise gets a payroll app, an invoicing app, a folder of templates and the job of carrying the same facts between them by hand.
The reading stopped somewhere
Hundreds of applications for one seat, opened one at a time. Whoever stopped first decided who was never seen.
A new starter was retyped
Everything already on the signed contract (name, role, office, start date, salary) was entered a second time by hand into the thing that pays them.
A letter, an invoice and a bank line that never met
What a client was offered, what they were billed and what arrived in the account were three separate records, joined only when somebody compared them.
Leases and certificates lapsed quietly
Office leases, site paperwork and staff qualification records sat in separate folders, with no shared window on what was about to expire.
How it works now
The kind of system a large company buys, with roles, approvals and two sets of books, built to the shape of a small to medium enterprise and carrying one record from the first application to the last invoice.
From hiring to payroll, clients to invoices. A signed contract opens the staff record, and a first payment opens the job.
Hiring
application read against the approved keywords
proposed by the screen
people the hiring manager meets
Nothing is filtered on the way in, and no candidate is removed by a machine.
contract
People
- Staffone record each
- Attendancesigned in on a phone
- Leavesigned by a manager
- Payrollderived monthly
Clients
- Clientsone book
- Catalogue2 companies
- Offer letterssigned by the client
- Invoicesnumbered on sending
payment
Money
- Receivablesby age
- Bankmatched from statements
- Costsconfirmed by a person
- Reportsper company
Underneath both rows: two companies, every office, and one 90-day window on every lease and certificate about to expire.
Nothing crosses a row by being retyped. Nobody adds a person to payroll, and nobody opens a job by remembering to: the contract and the payment do it.
Reading applications
Opened one at a time, in the evenings, until the reading stopped
Every one read against the keywords the hiring manager approved, with a person confirming each cut
A new starter
Retyped onto the payroll sheet from the signed contract
The signed contract opens the staff record and the payroll line
The monthly payroll
Last month, copied forward
Derived from the staff records, then signed by Finance and the owner. Signing off is not paying
An offer letter
A template filled in by hand, in more than one version
Built from the catalogue, one section per company, approved before it is sent and signed by the client in the browser
Who has paid
The bank statement, read against the invoices
The statement is uploaded. An exact match applies itself and anything else waits for a person
Two companies
Kept apart document by document
Every service names the company that bills it, so a letter section, an invoice and a ledger line can only belong to one
Leases and certificates
Separate folders, noticed once they had already lapsed
One 90-day window over offices and staff alike
We built NPC the kind of system a large company buys, and built it to the shape of a small to medium enterprise. It has five modules behind one sign-in: each person’s own record, Services, Finance, HR and Organisation. Five roles decide who sees which. An employee sees their own attendance, leave and payslips and nothing else. An office manager sees their own offices. A page somebody may not open looks exactly like a page that does not exist.
Hiring starts with the person who wants the hire. The owner agrees what a role costs for a year before it exists, then the hiring manager approves the brief, the screening keywords and the questions. Every application is read against those keywords and a shortlist is proposed. A person confirms each cut, in both directions. Nothing is rejected by a machine.
The first join is the signed employment contract. It opens the staff record and the payroll line on its own, so nobody retypes a new starter. From there the person simply lives in the system: they sign in and out on their phone, measured against where the office is, they ask for leave, and they read their own payslip. 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, then signed by Finance and by the owner.
The client side runs the same way. Staff build an offer letter from a catalogue in which every service names the company that bills it, so a letter covering a virtual office and a licence gets one section per company, each with its own tax lines and its own bank account. The office manager reads it, the owner approves and sends it, and the client signs it on their own page. Staff can record a client’s no from a phone call. Nobody can sign for them.
The second join is the money. The invoice is raised from the signed letter and takes its number only when it is sent, so the sequence has no gaps. When the bank statement is uploaded, a credit that matches one invoice exactly applies itself. Anything else is a proposal that waits for a person. The first payment opens the job, with its milestones and the documents the client still owes. A service with an end date gets its renewal invoice drafted 21 days out and reminders at 14, 7 and 1.
Finance closes the loop. Supplier invoices are read from an inbox and each one is confirmed by a person before it counts as a cost. Every company has its own profit and loss and its own balance sheet. A month cannot be closed while a cost is unconfirmed, a bank line is unexplained or the payroll is unsigned, and closing it takes two signatures. Signing off is not paying. The system reads the bank and has no way to move money.
Same problem in your business?
Book 30 minutes. We'll look at how it runs for you now, and what a build would cover.
A client, end to end
- LetterDraft the offer letterHuman
Staff pick services from the catalogue. Each one names the company that bills it, so a letter covering a virtual office and a licence gets one section per company, each with its own tax lines and bank account.
Per client
- ◆ Gate AHuman
The office manager reads it
Where the client’s office has a manager, the letter goes to them first. They can pass it up or send it back with a reason. They cannot pass a letter they drafted themselves.
- Decides
- Whether the letter is ready for the owner
- Nothing moves until
- The owner is not asked
Per letter
- ◆ Gate BHuman
The owner approves and sends
The owner agrees the terms and the price. Approving is what sends the letter, and sending is what gives it a number.
- Decides
- The terms and the price
- Nothing moves until
- Nothing reaches the client
Per letter
- ◆ Gate C · your clientClient
This one is not yours.
The client signs
The client opens their own page and signs with a drawn signature. Staff can record a no, or a request for changes, from a phone call or a message. Nobody at NPC can sign for them.
- Decides
- Yes, no, or changes
- Nothing moves until
- No invoice can be drafted
Per letter
- ◆ Gate DHuman
Approve the invoice
The invoice is drafted from the signed letter and signed in the same two steps. It takes its number only when it is sent, so the sequence has no gaps.
- Decides
- What is billed, and when
- Nothing moves until
- Nothing is sent and no number is used
Per invoice
- ◆ Gate EAutomated + human
Match the payment
The bank statement is uploaded. A credit that matches one invoice exactly applies itself. A near match is a proposal, and a row whose balance does not follow from the one before it is held. Both wait for a person.
- Decides
- Any match that is not exact
- Nothing moves until
- The invoice stays open
Per statement
- WorkThe job opensAutomated
The first payment opens the work, with its milestones, the documents the client still owes and the person handling it. Nobody starts a job by remembering to.
On the first payment
- RenewThe renewal comes roundAutomated + human
A service with an end date has its renewal invoice drafted 21 days out, and reminders go at 14, 7 and 1. A paid renewal moves the end date on. Not renewing takes a reason.
Daily
- ◆ Gate FHuman
Close the month
Finance signs the month once every cost is confirmed, every bank line is explained and the payroll is signed. Then the owner signs. Until both have, the month is open.
- Decides
- That the month is complete
- Nothing moves until
- The month stays open
Monthly
Nine steps from a draft letter to a closed month. Six are checkpoints where nothing downstream happens until somebody says so, and one of those belongs to the client, not to NPC. Hiring has its own run of gates, from the headcount to the signed contract, and the demo walks those too.
See it working
The back office, the candidate’s side, the hiring manager’s link and the automation, running on invented data. None of it is a screenshot. Click anything.
The back office
Five modules in one nav, on invented data. Every screen clickable, and five seats to look at it from.
- Switch between the owner, an office manager, an employee, Services and Finance, and watch the nav change with the seat
- An offer letter waiting for the owner, a page where you sign it as the client, and the invoice that follows
- Upload a bank statement and watch one credit apply itself and open a job while the rest wait for a person
- Fourteen requisitions, one at every stage from the headcount to a signed contract
The candidate portal
The candidate’s side: the salary form, the timed questions, and the two documents they sign.
- Current and expected salary go in a form first, and the questions stay locked 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
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
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, with the person who holds it
- A week of runs in numbers: 696 CVs read against the approved keywords, 15 proposed
Six things in there are worth finding. Go and look.
- 1A requisition for a front-office role in Surabaya, stuck at Gate 0. The band tops out at Rp 6.000.000 a month. The screen says Rp 85.075.300 a year, because that is what the employer contributions, the tax allowance and the holiday bonus make it. The office manager raised it, so he cannot approve it.
- 2An offer letter for PT Orchid Bay Indonesia, priced in US dollars and waiting for the owner. It has no number yet. It gets one when it is sent.
- 3A bank row that is held because its running balance does not follow from the row before it. The system does not guess which one is wrong.
- 4A supplier invoice read from the inbox and flagged as a likely duplicate of a cost already recorded, next to a seminar invitation the reader decided was not an invoice at all. Both wait for a person.
- 5July, which cannot be closed for either company. Each shows three blockers, and one of them is that nobody has signed the month’s payroll.
- 6A leave request with no first signature and a line saying why: no office manager holds that office, so it goes straight to the owner instead of waiting on a seat that does not exist.
Everything else runs cleanly. Each of these is the system being awkward on purpose. It waits on a person, refuses a permission, or shows a number that makes a decision harder.
What NPC still decides
- The screens propose and never reject. Every application is read, and no candidate is removed by a machine. Both cuts wait for a person.
- 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 reaches a client without the owner. A letter and an invoice are each approved before they are sent, and neither has a number until then.
- Nobody signs for the client. Staff can record what a client said on the phone. The signature is the one thing they cannot do on the client’s behalf.
- Only an exact payment match applies itself. Every other match is a proposal, and a person confirms it or says it is not a client payment.
- Signing off a month is not paying it. The system reads the bank statement and holds no way to send money.
Want this running for your business?
We'll build the same kind of system around how your business runs. You see a clickable demo before you commit.
See if we're a fit →