I Resurrected Malaysia's Buku 555 Debt Notebook with Kiro

2026-11-08来源 dev.toEnglish

This post is part of my entry for the Kiroween 2026 hackathon. #KiroweenHackathon26

The problem

Walk through any Malaysian pasar and you'll see it: the red-and-blue Buku 555 notebook. For decades, market traders have used it to track hutang, the credit they give regular customers. "Kak Ros, two kilos of kembung, pay Friday."

But paper has problems. It gets wet at the fish stall. Pages tear and get lost. And the hardest part isn't the bookkeeping, it's the awkward moment of asking a neighbour for money.

So for Kiroween's Resurrection category, I brought the Buku 555 back from the dead as Buku 555 Berhantu, the haunted debt book.

What it does

  • The trader speaks or types an entry in Bahasa Melayu, like "Kak Ros ambil 2 kilo kembung RM18, bayar Jumaat"
  • A Malay parser pulls out the customer, item, amount in RM and the due day, including honorifics, Malay number words and phrases like "hujung bulan"
  • The book shows who owes what and the total outstanding
  • Overdue customers get haunted by a friendly ghost 👻
  • One tap prepares a polite reminder in WhatsApp. The trader always presses send, nothing goes out automatically
  • Marking a debt paid exorcises the ghost

I designed it for a 60-year-old fish seller on a cheap Android phone at 5am: Malay first, big tap targets, no login, no server, and it works offline once installed.

How Kiro built it

I used the Kiro CLI for the whole build, and the biggest change for me was working spec first instead of vibe coding.

  1. Steering first. Before any code, I wrote steering docs in .kiro/steering: Malay-first copy, no server or tracking, big buttons for older traders. Kiro kept referring back to them, so it never drifted into adding a login screen or an English-only UI.
  2. Specs. Kiro turned my idea into three spec files: requirements.md with EARS-style user stories (WHEN, THEN, SHALL), design.md with the data model, the parser grammar and correctness properties, and tasks.md with tasks T-1 to T-27. Kiro then worked through the tasks one by one.
  3. Agent hooks. Two hooks did a lot of quiet work. run-tests-on-save runs npm test whenever a .js file changes and fixes failures without weakening the tests. i18n-check makes sure every string in i18n.js has both Malay and English.
  4. Property-based testing. The correctness properties in design.md became fast-check tests. For example: an amount is never negative, the total outstanding always equals the sum of unpaid entries, marking one entry paid reduces the total by exactly that amount, and export then import keeps every entry. These caught edge cases that a few hand-written unit tests would have missed.

What I learned

Spec-driven development felt slower for the first ten minutes and much faster after that. Because the requirements and properties were written down, Kiro could check its own work, and I spent my time on the parts that matter: how a trader actually talks, and how to make chasing a debt feel less awkward.

Try it

Open the demo, tap the reminder button on Kak Ros, and watch the ghost do the awkward part for you.

Hantu hutang paling menakutkan. The debt ghost is the scariest ghost of all.

原文:https://www.a8q9.cn/en/article/i-resurrected-malaysia-s-buku-555-debt-notebook-with-kiro-00e828.html

相关文章