Open for contractone operatorone 2 vCPU VPSno GPU

Five systems on one machine, and one in your pocket.

I run the back office of a nickel-mining services company: five systems on one 2 vCPU VPS, no GPU, no team, plus an Android app built and signed on that same machine. Every figure below is re-run before it goes up, and every clip is a screen recording of the running system on demo data.

Send a brief Rates

Contract work only · 10 to 20 h/week · reply within 1 business day

98
Automated tests green
42 ledger · 56 portal
8
Channels into
one queue
4,402
Lines of code
portal and ledger
24
Desks, 11 zones
drawn from live state

Systems: six, five of them on one machine

Five recordings · 2:27 total · 720p · muted · one still
6 of 6
Eight channels and the scheduled jobs behind one queue
0:13
Sys 01 · Queue (own operations)

Eight channels, one person, no lost message

PythonsystemdJSON stateInstance lock

Requests arrived in eight channels, and the ones nobody saw for an hour were the ones that mattered. Every message now becomes a job an agent picks up, runs, and answers in the channel it came from. One relay process holds the lock, so a second copy exits, and a worker that dies leaves its job still marked as running with the start time beside it. A message that already became a job is never queued twice, and nothing sweeps a stalled job automatically, so the start time is what I look at in the morning.

verified Eight channel ids, one lock file, and a clip of the queue running on this machine.

Live queue
Portal sign-in, username then PIN
0:42
Sys 02 · Portal & ledger (demo data)

Two people could pay the same invoice

Python HTTPPBKDF2Unique indexSQLite ledger98 tests

A mining services company paid field staff in cash against paper receipts, and two people could pay the same invoice without anyone noticing until month end. Staff now file a receipt from a phone, the admin approves it from their own login, and the book keeps the receipts, the compliance items and a unique index that refuses a receipt already in it. Cancel one and the index still remembers it, so the same receipt cannot come back as a second payment.

verified 98 tests: 56 on the portal, 42 on the book. One test cancels an entry and proves the same receipt is still refused.

Demo data
Browser chat reporting the state of the machine it runs on
0:47
Sys 03 · Chat & console (own operations)

When the assistant went quiet

Chat UIWebSocketHMAC gateOperator consoleDesign gate

The bot stopped answering and I could not tell whether it was the bot, the queue, or the box. A patrol reads the machine every 30 minutes (disk, RAM, swap, seven services) and writes what it found to a log, so the morning it caught the assistant's page answering HTTP 000 I could see the hour it started. The console beside it opens four tabs on the same office.

verified a patrol entry every 30 minutes since 5 Nov; 5 findings, newest 05:55, green again 06:27. Page 100/100 on my gate, console 100/100 too.

Own machine
Two-floor office drawn from live agent state
0:19
Sys 04 · Office (own operations)

A floor plan that fills as work moves

Canvas 2DLive state2 floors

A list of agent states is hard to read at a glance. Two floors, 11 zones, 24 desks: each office takes its status from the same queue the panel beside it reads, so one job makes the whole office read busy.

verified 24 desks, 11 zones, status read from the queue the panel polls every 4 seconds.

Live state
A translated purchase order, line by line: item names in English, prices and totals unchanged
0:27
Sys 05 · Translate (doctrans)

The document comes back the same shape

PDFDOCXBox-preserving17 shrunk

Translated documents usually arrive reformatted, with the signature block pushed to page two. This one keeps page size, every text box and the page count, and compares the image count before and after. The PDF path has a gate: a span that falls outside every text box refuses the job, with no file written. DOCX still goes through without that check.

verified 76 boxes, 0 outside, 1 page in and 1 page out; a refused job leaves no file.

Demo order
Three Sigap screens: a findings list led by a critical warning about a banking app installed outside the store, the same list in dark theme, and a simulated attack path in numbered steps
Sys 06 · Sigap (own product)

It answers for what the phone installed

AndroidNo root12 checksNo INTERNET

Nobody can tell a bank app from a copy wearing its name. Sigap reads what is installed on the phone itself, with no root and no internet permission: which apps came from outside a store, which ones can read the screen or the notifications, which ones use a bank's name without being installed from a store. Six categories, four attack paths in plain language, and eight things it does not check, printed on the same screen as the findings. The number on the screen is risk points, not a grade: 93 means worse than 21. It asks one permission, QUERY_ALL_PACKAGES, to see the app list. Nothing leaves the phone unless you press share, and it targets API 34, under Play's current floor, so it is handed over as a file rather than through Play. Built and signed on this machine without Gradle. No phone has run it yet, so the screens are a rendering of its layout with sample data, not a capture from a device.

verified id.dewaruci.sigap 2.6, versionCode 8, 78,434 bytes, sha256 929a6b02, zipalign 4 OK, CN=sigap by dewaruci; 12 checks and 8 stated limits counted from the code; built twice, in place and from a copy under another timezone, both 929a6b02; put through MiroFish adversarial review five times.

Signed APK 2.6 · not on a phone yet

How a job runs

Four steps, written down before any code
Step one

Brief

You send the mess in your own words, with one screenshot if you have it. I ask only what changes the price.

Step two

Scope

One page: what gets built, what does not, what it costs, when it lands. You approve it or we stop there.

Step three

Build

50% to start, 50% at handover. You see it running on your data in slices, not in one big reveal.

Step four

Handover

Tests, a README, a recorded walkthrough, and the machine it runs on stays yours.

Rates 2026

USD · scope written on one page before work starts
ServiceWhat it coversUSD
Audit sprint
I read what you run today, write down where it breaks and what it costs you, and hand you a one-page plan. No code changes unless we agree to them separately.
450
Build project
Fixed price after the scope page. 50% to start, 50% at handover, with tests, a README and a recorded walkthrough.
1,800
Monthly retainer
A set number of hours each month for running and extending what is already live. Unused hours do not roll over.
900/ mo
Extra hours
Work outside a retainer or a fixed build, billed in 30-minute blocks and reported with what changed and why.
45/ h

A shop with 40 orders a day and one spreadsheet? Start with the 450 audit, about Rp 8 juta at today's rate.
Rates valid 90 days · hosting, domains and paid API costs are passed through at cost · ask for the full card in chat

Where every number comes from

Eight claims, each one re-runnable
Automated tests
98 green: 42 on the cash and contract ledger, 56 on the portal, re-run on this machine before publishing.
Lines of code
4,402 lines of Python across the portal and the ledger, tests excluded, counted with find and wc -l: 2,288 in the public repo, the portal's 2,114 not published.
Channels
8 command channels routed into one queue, each answer returning to the channel the request came from.
Office
2 floors, 11 zones, 24 desks, drawn from the same state the queue reads.
Doctrans
One-page purchase order: 76 text boxes, 37 translated, 39 left alone (22 hold no words, 17 came back unchanged), 0 outside every box, 0 overflow but 17 boxes shrunk to fit, 1 page, 101 KB.
Design gate
The chat and the console beside it both score 100/100 on one gate: type scale, radius, keyboard focus, contrast. The gate is one script run on the page source; the console tabs are not in the clip.
Machine
Five of the six systems on one VPS: 2 vCPU, 1.9 GB RAM, no GPU. Sigap is built and signed there, not served from it.
Recordings
Screen recordings of the running systems; what is on screen is demo data. The portal on a demo copy of the books, the queue read from the scheduler's own state, the ledger on demo entries, the office drawn from live agent state, the translator on a demo purchase order. Counterparty names in the demo books are invented, and so is the purchase order in the last clip: a document written for the recording, with an invented company, tax number, address and contact details. The channel column in the queue clip is blurred; the job names beside it keep the same channel prefixes because those channels are my own systems.