---
title: "Manee — Blog & build notes"
description: "Building Manee in the open — how the on-device AI pipeline works, why decisions were made, and the honest struggle of keeping a private, on-device app alive as one person."
url: "https://manee.app/blog"
lang: "en"
---

- **Blog / build notes** — written by thomas

# Building Manee in the open.

How it works under the hood, why decisions were made — and the honest struggle behind keeping a private, on-device app alive as one person.

[

Privacy, plainly 5 min read

## Privacy is control, not secrecy.

What a receipt or bank slip can reveal, why that matters, and three simple questions to ask any app before you trust it with your data.

featured / 01

Read

](https://manee.app/blog/privacy-is-control/)

More blogs

Under the hood 6 min read

## Two small models, both on your phone

How Manee reads receipts and answers spending questions on-device.

Under the hood 6 min read

## Two small models, both on your phone

People ask what's actually under the hood. Here's the honest version: most scanner apps send your receipt to a server and run generic OCR with regex templates on top. Manee runs OCR and a couple of small, fine-tuned models instead — and all of it runs on your phone. Here's the actual pipeline, start to finish.

## Reading a receipt

When you add a receipt, a few things happen in sequence, all on the device. The OCR stage lifts every character off the image — including dense Thai script. An image classifier then checks it's actually a receipt before anything is trusted; if it isn't, the photo is skipped and nothing is stored. A fine-tuned extractor — around 270 million parameters — turns that loose text into structured fields: merchant, amount, date, and line items. The result is filed as an expense in a local database. No copy is sent anywhere.

## Answering a question

The spending chat works the same way. You ask something in English or Thai — “how much did I spend on food this month?” A fine-tuned, Thai-native chat model reads what you actually asked, pulls the matching expenses straight from the local database, and replies with a grounded answer drawn only from your own data. One model runs the whole conversation. It reasons over your receipts; it never phones home for them.

## Small, specialized models — not one big generalist

Each stage uses the smallest model that does its one job well. The _eyes_ are a compact OCR stack chosen because it holds up on the way Thai receipts actually look — dense Thai script, mixed Thai and English, low-contrast slip screenshots. The _reader_ is the ~270M-parameter extractor, fine-tuned on Thai bank and PromptPay slips; because it understands the text instead of pattern-matching it, a new bank layout doesn't break it the way it breaks a regex template. The _voice_ is a language model built in Thailand, for Thai, fine-tuned to handle multi-turn questions and reason over your local data.

## Runs on the phone you already have

On-device AI usually means “on a flagship” — most apps that run models locally quietly require the newest chips and 8 GB of RAM. Manee was built the other way around: small fine-tuned models, quantized and profiled until the whole pipeline fits in 4 GB. It's tested on an iPhone 13 — a 2021 phone — and uses Apple's Vision framework on iOS where that's genuinely the fastest option, with a compact open-source OCR stack on Android. The core flow needs no internet at all.

One thing I keep deliberately vague is the exact model names — not to be cagey, but because they change as better on-device options ship. The promise that _doesn't_ change is the one worth printing: it runs on your device, and the only place your receipts ever go is where you send them — optional Pro sync to your own iCloud or Google Drive. Never to a server of mine.

 · [See what's on the roadmap →](https://manee.app/roadmap/)
