Product engineer · Jakarta and remote
Quiet software, arranged like a still life.
I’m Mira Santoso. I build calm, reliable software for teams that run on data. Four projects are set out on one table below.
Taking one new project from March
The table · four objects
Each project is an object on one table.
-
No. 01 · 2022 to now · Keycaps on books
Keelson
The design system behind every internal product.
It started as a folder of copied buttons. It is now one package of shared tokens and documented components, with a review step before anything new joins it.
- Medium
- React, Tailwind CSS, Storybook
- Decision
- Keyboard first. Every component works without a mouse before it gets a hover state.
-
No. 02 · 2023 · The phone, leaning
Plotkeep
A survey app that keeps working when the signal doesn’t.
Survey teams spend whole days out of range. Everything is saved on the phone first and synced when a connection comes back, so the form never waits on the network.
- Medium
- React Native, SQLite, Supabase
- Decision
- Conflicts are shown, never overwritten. A person picks.
-
No. 03 · 2021 · The sage vase
Leafward
A thesis on spotting leaf disease in greenhouse photos.
I compared single detection models with a small ensemble. The ensemble was the most accurate and the slowest, so the right choice depends on the greenhouse’s hardware.
- Medium
- Python, PyTorch, OpenCV
- Finding
- Report the speed next to the score.
-
No. 04 · 2024 · The umber pot
Ledgerline
Invoicing and bank reconciliation for small design studios.
Before Ledgerline, the team matched payments to invoices by hand at the end of every month. I led the product and built most of it, from the data model to the review screens. Like the pot, it holds everything and goes unnoticed.
- Medium
- TypeScript, React, Node.js, PostgreSQL
- Decision
- Nothing is matched silently. Every automatic match shows the rule behind it.
Evening · the table, after hours
The studio · try it
Repaint the table.
Pick a chalk paint, then click a piece. The paint takes the object’s own light and shadow, the way a real coat would.
Chalk paint
Pick a paint, then click an object.
Wall text
I like the unglamorous parts of software.
Data models, edge cases and the screens people use every day without thinking about them. Like the bottles on this table, good tools are plain, a little heavy, and always where you left them.
- Now
- Independent. Product and engineering for small teams.
- Before
- Product engineer at a logistics company, then a studio of eight.
- Tools
- TypeScript, React, Node.js, PostgreSQL, React Native, Python.
- Based
- Jakarta. Working with teams in UTC+7 to UTC+1.
- iStart with the data. The model decides what the screens can say, so I draw it first.
- iiShip small, weekly. You see working software on Friday, not slides.
- iiiLeave it readable. Every project ends with docs your team can keep.
Reading list
Writing
Automation should never be silentEssay · 2025
When software matches, merges or moves something on its own, it should say so, and show the rule it used. The second time a person has to guess what the machine did, they stop trusting all of it.
Offline first is a product decision, not a libraryTalk notes · 2024
Picking a sync engine is the easy part. The hard part is deciding, screen by screen, what a person may do while the network is gone and what happens when two of them did it.
One set of tokens, four productsCase note · 2023
How Keelson moved four products onto one set of colour, type and spacing tokens without a freeze week: one component at a time, with a review step at the door.
Put the speed next to the scoreResearch · 2021
A model nobody can run in the greenhouse is not the best model. From the Leafward thesis: report inference time on the target hardware beside every accuracy number.
Visitor’s book
Have a workflow that still runs on a spreadsheet?
Leave a line. I reply within two working days, and each case study runs longer than a label: ask, and I’ll send the full deck.
Signed
Thank you, .
I’ll reply within two working days.