An offline money app, explained in plain words

Rekhon · a short read · 7 documents to take away

What an offline money app does, and why it is built the way it is. Five minutes, no jargon, no prior knowledge assumed.

Below are six short pieces about an Android money app called Rekhon, written for somebody who has never written a line of code. No screenshots: the app is dense and small pictures of it explain nothing. Where a picture genuinely helps, there is one.

The documents come after. You will not need them to follow any of this, which is rather the point. Three proposals for redesigning the app used to sit down there too; they are their own thing and now have their own page.

It opens on one number

Most money apps open on your bank balance. Your balance lies to you. It happily counts money that already belongs to the landlord, to the electricity bill, and to the card you have not paid off yet.

This one opens on what is genuinely yours to spend this month, and it shows you the whole subtraction:

Money that came in₹80,000
Already spent−₹12,400
Payments due to leave−₹18,000
Bills not yet paid−₹2,000
Saving you asked for−₹9,000
Kept back for surprises−₹4,000
Safe to spend₹34,600
Under that figure the app prints RULE-STS v1.0 — the name and version of the sum that made it. Feed the same numbers to the same rule in a year and you get the same answer. That is why the version is printed at all.

It shows its working, the way you had to at school

Tell it you want ₹30,000 headphones and it will not just say yes. It checks seven things and shows you all seven. Money left afterwards: ₹70,000, fine. Rent and loan payments: 30 percent, fine. Your savings goals: they would arrive about 60 days later than planned, which it calls worth knowing rather than fine.

Then the part most apps leave out. The time you could survive with no income at all drops from 2.4 months to 1.7. It still says yes. It just will not pretend the purchase was free.

What it checkedVerdictWhat it found
Money availableFine₹1,00,000 now, ₹70,000 left afterwards
EMIs and rentFine30% of your income afterwards
Your goalsWorth knowingThey would arrive about 60 days later
Three of the seven, as the app prints them. Underneath it adds what the purchase moves: money ₹1,00,000 → ₹70,000, and the months you could survive on nothing 2.4 → 1.7.

The robot is not allowed to do sums

There is an assistant you can ask questions. It is the same kind of thing that drafts your emails: good with words, and quietly, confidently terrible at arithmetic.

So it is banned from doing any. The app works every figure out first; the assistant only wraps figures it was handed in a sentence. Then another piece of code reads every digit in that sentence and checks it against what was actually worked out. A number the assistant made up never reaches you. Neither does a rounded one, because ₹34,600 softened into "about ₹35,000" is a different claim about your money.

Ask it something it cannot back up and it says so. One real answer from the app reads: I do not have enough recorded yet to answer that honestly. It would rather say nothing than say something it cannot stand behind.

  1. The calculators

    Thirty of them. They work out every figure.

  2. ₹34,600

    The only number that now exists.

  3. The assistant

    Writes a sentence around the figure it was handed.

  4. The checker

    Reads every digit back and compares.

  • Every digit matches

    The sentence reaches you.

  • Anything else

    Refused — including “about ₹35,000”, which is a different claim.

The assistant never gets to the left-hand end of this. It cannot reach the calculators, so the only figures it can use are ones it was given.

Nothing about your money leaves the phone

There is no account to make and no password to lose, because there is no server on the other end holding one. It all sits on your phone, locked with a key the phone keeps in its own secure chip. Switch off the internet and everything still works, because nothing was asking the internet in the first place.

Anything optional — reading your bank text messages, fetching gold prices — has its own switch. Every switch starts off. Turn one off again and whatever depended on it stops at once, not at the next restart.

This is also why the code is public. "We do not send your money anywhere" is not something a shop listing can prove. Publishing it is what turns the promise into something a stranger can check.

What happensWhere it happensWhat leaves the phone
Working out every figureOn the phoneNothing
Reading a photo of a receiptOn the phoneNothing
Reading your bank textsOn the phone, only if you allow itNothing
Valuing gold you ownAsks the internet for today’s priceThe price question — never an amount, never what you own
The last row is the only one that touches a network at all, and it is off until you turn it on. The app also records the day you granted it and the day you took it back.

Every place you can go, on one page

There are 25 screens. The dashboard is the middle of everything — twelve of the other twenty-four hang straight off it, and nothing at all is more than three taps from where the app opens.

Nobody drew this map. Every box and arrow is read out of the app’s own navigation code, so it cannot quietly stop matching the app. Add a screen nobody can reach, or describe one the code never opens, and the document refuses to build.

A map of the app. Along the top: open the app, app lock, onboarding, dashboard. Below, the dashboard sits above twelve destinations each one tap away, with the add-transaction button floating over every screen.
Drawn from the navigation code, so the picture cannot disagree with the app. Its footer mentions a table that follows — that is in the PDF, where this picture comes from.

The rules are not notes. They are things that break.

The app is built in 60 separate pieces with the arrows between them pointing one way only. The pieces that do the arithmetic are not allowed to know anything about Android, which sounds like fussiness until you notice what it buys: the money sums can be tested on a laptop in seconds, with no phone involved.

None of that is written down and hoped for. Write a rupee as a decimal and the build stops. Read the clock in the wrong place and the build stops. Put somebody’s money in a log line and the build stops. That is the honest summary of the whole project, and it is why the documents below are worth anything.

Now the papers themselves

That was the short version. Underneath it sit 7 documents and 387 pages, free to download, none of which you need in order to have understood the article above. Each one gets the same four lines so you can tell in ten seconds whether you want it.

Every document gets the same four lines

  1. What it is

    the document in one or two plain sentences

  2. Why I wrote it

    the problem it solves, not the process that made it

  3. Like this

    an everyday thing it resembles

  4. What’s inside

    the real counts, read off the document itself

Start here

Two short ones. Between them they cover the whole project without any code in sight.

The short version

PDF3 pages0.4 MB

The whole project in three pages. If you read only one document on this page, read this one.

Why I wrote it, and what is inside
Why I wrote it
The full plan takes about two hours. Most people have ten minutes, and ten minutes is enough to decide whether the other two hours are worth it.
Like this
The short bedtime version of a very long story.
What’s inside
The seven rules the app is not allowed to break, everything it does, how it is put together in five lines, every count in one table, and a verdict at the end: ready, with risks. It also names the three questions worth answering first, which is the part I keep coming back to.
Download the PDF

In the repo: docs/blueprint-summary.pdf

Why I built it

PDF38 pages5.7 MB

The story of the app: the problem I started with, how I went about it, and what I would say to each kind of person who asks.

Why I wrote it, and what is inside
Why I wrote it
Code does not explain itself. Somebody opening the repository can see what I built and still have no idea what I was trying to fix.
Like this
Show-and-tell. Here is the thing I made, and here is why I made it.
What’s inside
The pitch, the method, the build story, a page written for each kind of reader, and the decisions I still have not made.

The oldest document here, and its counts were true the day it was printed. The current ones are in the short version above.

Download the PDF

In the repo: docs/AI_Personal_CFO_story.pdf

The full plan, and the faults in it

One document describes the app as it is. The other lists everywhere it falls short. They were written together, on purpose.

The big plan

PDF234 pages1.4 MB

Every part of the app written down properly: what it has to do, what it keeps, how the pieces fit, how it gets tested, and what could still go wrong.

Why I wrote it, and what is inside
Why I wrote it
I built the app first and wrote the plan afterwards, out of the code rather than out of my memory. A plan written from memory would have been wrong in a hundred small ways, and each one would have cost somebody an afternoon.
Like this
Drawing the picture on the Lego box after the castle is already built — then checking it brick by brick.
What’s inside
Twelve documents, five diagrams, and a checker that reads every ID in them and complains if one points nowhere. 95 things the app must do, 115 ways to tell whether it did, 55 user journeys written with their failure paths, 40 data tables, and 124 test cases.
Download the PDF

In the repo: docs/project-blueprint/ai-personal-cfo-blueprint.pdf

The honest report

PDF6 pages0.4 MB

A list of everything about the app that is missing, unfinished, or not the way I said it would be.

Why I wrote it, and what is inside
Why I wrote it
Writing down what is broken is the only way it gets fixed. Hiding it does not make it go away; it means somebody else finds it, later, at a worse moment.
Like this
Telling your mum you broke the cup before she finds it.
What’s inside
59 of 60 screens built. 35 data tables that were planned and never made, 33 of them deliberately. 19 files that grew past the length limit I set myself, the worst at 4,723 lines. Three speed targets with numbers that nothing actually measures. And one whole half of the system — the server — specified and never built.

Deliberately the least flattering document in the set. Of the 26 features that ship with a limitation, 22 are recorded decisions rather than unfinished work, and the report separates the two so a reader is not misled in either direction.

Download the PDF

In the repo: docs/architecture-and-gap-report.pdf

The app as it actually is

What the thing looks like and how you move around it. The first two cannot go out of date, which is most of their point.

The picture book

PDF31 pages8.2 MB

A picture of every single screen in the app, with what each screen is for underneath it.

Why I wrote it, and what is inside
Why I wrote it
There was no way to see this app without building it first. Now there is. And these pictures cannot quietly go stale: the pictures are the test suite’s own output, so if a screen changes and its picture does not, the build goes red.
Like this
A photo album that refuses to keep an old photo. Change your hair and it makes you take a new one.
What’s inside
25 screens and the component gallery, 115 pictures in all. Every screen in light, in dark, and at double-size text, with the dashboard also in Hindi, Kannada and Tamil. Every figure in every picture was computed by the real engine, not typed in to look plausible.
Download the PDF

In the repo: docs/screens/SCREENS.pdf

The map

PDF24 pages3.6 MB

The map of the app. Which screen leads to which, exactly what you tap to get there, and what happens when you press Back.

Why I wrote it, and what is inside
Why I wrote it
A list of screens never tells you how anybody reaches one. This answers the question the picture book does not: how do I get there from here? It assumes you have never opened the app.
Like this
The map at the zoo. You are here, the lions are that way, two turns and you are back at the gate.
What’s inside
25 screens and twelve journeys followed end to end. The dashboard is the middle of everything: twelve of the other twenty-four hang straight off it, and nothing is more than three taps from where the app opens.

Every arrow is read off the app’s own navigation code and every tap label is quoted from the text the user really sees, so the map cannot drift from the app. It also lists the six things that reading the whole graph turned up — including that tapping a notification opens the app rather than the screen it was about.

Download the PDF

In the repo: docs/screens/USER_FLOW.pdf

The guided walk

PDF51 pages6.3 MB

A walk through the app a page at a time, naming the piece of maths that produced every number on every screen.

Why I wrote it, and what is inside
Why I wrote it
Showing a screen is not explaining it. For each figure on the page I wanted to point at the exact rule that made it, by name and version, so the answer can be reproduced rather than taken on trust.
Like this
A museum guide who stops at every painting and tells you who painted it.
What’s inside
51 pages: each screen, what it is for, and the engine and rule behind each figure. Captured on a real phone in airplane mode on the app’s own demo data, so nothing in it belongs to a real person.

Taken by hand from a device, which is exactly why the picture book replaced it. Still the best document for understanding where a number came from.

Download the PDF

In the repo: docs/AI_Personal_CFO_screens.pdf

And three ideas for what it could look like instead

Everything above describes the app that exists. Three separate proposals redraw all 25 screens three different ways, each arguing with the one before it. None has been adopted and none changed a line of code, so they live on their own page.

Where these come from

All 7 are copies of files in the app’s own repository, taken at version 0.13.10 on 23 October 2026 — the path under each download button is where the original lives. They are written and rebuilt alongside the code, not assembled for this page, which is the only reason the figures in them are worth anything.

One difference worth explaining before you notice it yourself. The case study counts 3,822 tests and 77 decision records, because it counts the public branch, which is still at v0.13.9. These documents describe v0.13.10, where the same two figures are 3,986 and 82. Same project, a fortnight apart, and both numbers were counted rather than remembered.

Every one of them is printed by a script from a source that lives beside the code, so none is a second copy somebody has to remember to update. Two go further: the picture book is assembled from the screenshots the test suite itself records, and the map is read off the app’s navigation code, so neither can disagree with the app without failing the build. The honest report is the one I would read first if I were deciding whether to trust the other ten.