LMI Automata Labs

Kaha

In development

Cafes & small chains

Point of sale and back office for Philippine coffee shops — a sales invoice built to BIR rules on 58 mm paper, every e-wallet on one line, and payroll finished before the owner goes home.

Ships as
POS · Back office · Platform console
Latest feature
tenancy
Postgres row-level security · isolation suite in CI(shipped)
tests
767 automated, including negative controls(shipped)
invoices
Locked counter · hash-chained · retry-safe(shipped)
money
Exact centavos, VAT split the way the invoice reports it(shipped)
payroll
SSS · PhilHealth · Pag-IBIG · withholding(shipped)
billing
PayMongo links, saved cards, runs unattended(shipped)
printing
58 mm thermal receipts(in progress)
pos
Counter screens being built(in progress)
767Automated tests
Keeps sellingThrough an outage
Per branchPrices and settings
SealedBetween cafes

A POS for a small chain either costs a fortune per branch or stops dead the moment the connection drops. Owners with two or three shops end up running separate systems in each, with no way to compare them and no confidence that the numbers add up the same way.

One system across every branch, priced per shop. Sales carry on during an outage and settle by themselves when the line returns. Every invoice number comes from a locked counter, so a retry can never charge a customer twice. Payroll runs on the statutory tables, the subscription bills itself, and an owner sees all their shops in one place while no shop can see another's numbers.

What it does

The parts that matter to the owner

01

It does not stop when the internet does

Sales are taken during an outage and settle on their own once the connection is back. The queue closes when the POS does, not when the internet drops.

02

Run two shops or ten

Menus, prices and settings are set once for the business and adjusted per branch, or per POS, only where they actually differ.

03

Each cafe's numbers are its own

One cafe can never see another's sales. That is enforced by the database itself rather than trusted to every screen remembering to filter.

04

An invoice that cannot be charged twice

Each sale takes its invoice number from a locked counter, records exactly what was sold, and extends a tamper-evident chain — so a retry never charges twice and an edit never goes unnoticed.

05

Payroll on the tables the law sets

SSS, PhilHealth, Pag-IBIG and withholding worked out from the statutory tables, and a payslip that is a proper document rather than a screenshot.

06

Billing that collects itself

Plans that include what a small cafe needs and no more, invoices with a PayMongo payment link, and saved cards that pay the invoice on the day it falls due.

Latest features

What is new in Kaha

New

A way back in for a locked-out cafe

If a cafe loses access to its own POS, a fresh registration code can be issued from the console, so the owner gets back in without losing anything.

Plans that include only what a cafe needs

Each plan ticks exactly what it includes, so a small cafe gets a small product instead of paying for a chain's.

The pack a BIR examiner asks for

The documents an examiner wants to see, produced by the system itself, and a test receipt to check the printer with.

Kaha takes what was learned running Croma MNL and turns it into something any cafe can buy, rather than a system built for one business. None of the original code carries over; its reasoning does, and every decision that is not obvious is written down with the alternative it beat.

It is still in development. What works today: a cafe can be provisioned, priced and configured, it can sell, and it can pay its people. Billing, payroll and the books run. What is still being built is the counter itself — the screens a barista taps all day and the printing behind them.

The one guarantee everything rests on is that a cafe can never reach another cafe’s rows. That is enforced by Postgres row-level security, so it is a property of the database rather than a promise every screen has to keep — and a suite of isolation tests, including negative controls that must fail, proves it on every change.

Could your business use something like this?