How Pulse Local works

A small model.
A careful harness.

Pulse Local is a budgeting app that answers questions about your money with a 0.6B model running on your machine.

The model is small on purpose. What makes it reliable is everything built around it.

A young sprout in a clay pot, growing straight up a hand-built wooden trellis tied with twine.

0.6B

parameters in the model, running on your machine

4 in 5

questions answered by code, before the model sees them

76 vs 75

real questions answered well, Pulse Local against GPT-4.1-mini, out of 77

2

kinds of network request, ever: the setup download and an optional update check

Why privacy is the product

Your transactions are your life, itemised.

Where you live, who you pay, what keeps you up at night. Most budgeting apps keep that on their servers. The ones that keep it on your disk still send your question, and the rows that answer it, to a hosted model.

A promise not to train on it is a policy, not an architecture. So we made the architecture the promise: the model is a file next to your ledger, and there is nowhere to send it.

Two cupped hands holding a single green leaf.

The gap

“Local” usually means your data. Not your question.

  

Yourledger

Yourquestion

Hostedbudgeting apps

On theirservers

To theirservers

“Local-first”apps

On yourdisk

To a hostedmodel

PulseLocal

On yourmachine

On yourmachine

Two small houses. One sends its note as a paper plane toward a large cloud; the other keeps its note on the windowsill.

The harness

Code first. The model last.

A 0.6B model is fast, private and unreliable at arithmetic. So a question walks past exact tools first, and the model only sees what nothing else could answer: about one question in five.

A workbench with a ruler, an abacus, a magnifying glass, a card box and tweezers laid out in order, and a small bonsai at the far end.
  1. 01ArithmeticExact maths, only when every number in the question is unambiguous. Shows its working.code
  2. 02Ledger factsCounts, date ranges and accounts, read straight from your file.code
  3. 03The no-internet ruleAnything live, like today’s rates, is declined out loud, never guessed.code
  4. 04RouterA 37 MB embedding model picks the 1 to 3 tools worth offering, in about 6 ms.embedding
  5. 05Merchant tableReads card-statement prefixes and searches your own ledger for the rest.code
  6. 06Query plannerReads six parts of a question: what, where, when, grouping, comparison, aggregate. 29,160 query shapes enumerated, none broken.code
  7. 07Written knowledge373 reviewed answers for concepts, and 37 notes for “should I” questions that lay out the trade-off and leave the call to you.code
  8. 08The modelQwen3-0.6B, fine-tuned with LoRA, 397 MB. Gets 1 to 3 tools and only the questions nothing above could answer.model

Every answer then passes a format check and a posture guard: Pulse describes your money, it never tells you what to do with it.

What we learned

The model was never the bottleneck.

The same 0.6B model scores 55 on its own and 98 inside the harness. A model seven times larger, without it, scores 81. We tried the obvious levers on the weights. They barely moved.

Three times the training dataLoRA v5, 5,617 rows vs 1,860No gain89.0 before, 88.3 after
Higher-precision weightsQ6_K vs Q4_K_M, 100 MB largerNo gain88.3 before, 88.0 after
Best of three answersat three times the latencyNo gain87.7 before, 88.0 after
Work on the harnesssame model, same weights+5 to +18 pointson every held-out set

Held-out averages, higher is better. The lesson we build on: spend the effort on code coverage and written knowledge, not on the weights.

The numbers

Level with a hosted model, on the questions people ask.

77 real budgeting questions, on a real ledger

answered well

76Pulse Local, on your machine
75GPT-4.1-mini, hosted

48-question benchmark

score out of 100

98Pulse Local, on your machine
96GPT-4.1-mini, hosted

Held-out sets we had never seen

average of four, out of 100

92.8Pulse Local, on your machine
94.5GPT-4.1-mini, hosted

We publish the set we lose: on questions we had never seen, the hosted model is 1.7 points ahead. Zero directive answers on every set. Zero confidently wrong reads across 48 intent checks, typos included. Code answers in about 40 ms; the model starts in 95 ms and writes about 120 tokens a second.

A brass balance scale, level, with a small potted sprout on one pan and a large cloud on the other.

The product

A complete budgeting app, not a demo.

  • Everything a budget needs. Plans, rules, splits, cash flow, a forecast, and a chat that answers from your own figures.
  • Exact to the cent. Every total is calculated by code, never guessed by the model.
  • Open weights. The model is on Hugging Face under Apache 2.0, so anyone can read what runs before they run it.
  • Free, or pay what you want. Optional bank sync (US) comes with a yearly Sync Pass: our server holds the connection token and nothing else; transactions pass through and are never stored.
An open ledger on a desk under a lamp, a green leaf resting on its pages as a bookmark.

Why now

Small open models became good enough to steer. A harness makes them reliable. That turns privacy from a sacrifice into the default.

We believe AI for money should be local by default: the model runs where your data lives, on open weights anyone can read.

Why our mark is a leaf

What is next

  • Windows, after the Mac.
  • Bank sync beyond the US.
  • The questions the model still gets wrong, one written answer at a time.

The private layer for personal finance.