Gidi

What is Gidi?

Last updated:

Gidi is a free web app that reads short, informal Vietnamese personal-finance notes such as ăn phở 45k or cho Nam mượn 2 củ and returns the transaction type (one of 8), the counterparty and the amount. The model runs entirely in your browser, so the text of your notes is never sent anywhere.

Open the app

How it works

Gidi is a tiny model plus a rule-based parser, both running in your browser (onnxruntime-web, WebAssembly):

  1. You type a short note, for example Long trả 5 lít.
  2. One INT8 encoder reads the note and predicts the transaction type and the target (the counterparty span).
  3. A rule-based value parser finds the amount span and converts it to VND.
  4. The note is stored in your browser (IndexedDB) and can be exported or imported as JSON.

The model gidi-finance-v3 (release 3.0.0) is a 29.3 MB INT8 ONNX bundle and takes about 1.4 ms (p50) per note on one CPU thread.

The 8 transaction types

Gidi assigns each note to exactly one of eight types. Example notes are illustrative.

TypeLabel in the appMeaningExample note
expenseChi tiêuMoney you spent on goods or fees.ăn phở 45k
incomeThu nhậpSalary, bonus, sales.nhận lương 15tr
borrowĐi vayYou borrow money and must repay it.mượn Hùng 3tr
lendCho vayYou lend money and they repay you.cho Nam mượn 2 củ
repayment_inĐược trả nợSomeone repays you.Long trả 5 lít
repayment_outTrả nợYou repay a debt you owe.trả nợ Lan 500k
transferChuyển tiềnBetween your own accounts or wallets only.chuyển 2tr từ thẻ sang ví
refundHoàn tiềnMoney back after a cancellation or return.shop hoàn tiền 150k

Slang amounts Gidi understands

Gidi reads Vietnamese money shorthand and slang, with or without diacritics:

Written asValueExample
k, nghìn, ngàn1,000 VND45k = 45,000 VND
tr, triệu1,000,000 VND15tr = 15,000,000 VND
củ, chai1,000,000 VND2 củ = 2,000,000 VND
xị, lít, cành100,000 VND5 lít = 500,000 VND
tỏi1,000,000,000 VND1 tỏi = 1,000,000,000 VND
rưỡihalf of the preceding unit2tr rưỡi = 2,500,000 VND
1tr2compact style1tr2 = 1,200,000 VND

Privacy

  • Inference runs fully in the browser (onnxruntime-web, WASM). Note text, names and amounts are never sent anywhere.
  • Notes are stored only in your browser (IndexedDB), with JSON export and import.
  • The app records only anonymous usage analytics (PostHog) under a random ID kept in your browser: event counts and event types, never note content.

Accuracy

Gidi is measured on the test set human-value-02, which has 190 notes. Labels came from two LLM labellers with adjudication where they disagreed, and the author approved them.

Metricv3 (current)v2 (previous)
Transaction type92.1%–
Target (counterparty)85.3%–
Value (amount)100%–
Whole note exactly right (end-to-end)78.9%59.5%
Model size29.3 MB58.1 MB

Known weak spots

  • Multi-word shop names.
  • Who pays in the verb trả (a friend repaying you versus an employer paying you).
  • Gift receivers.

The test set has only 190 notes, so treat the figures as indicative. Gidi is an experimental project.

How it was built

The data is about 1,000 generated raw notes, reviewed by a human and labelled in Quet (the author's annotation tool). Human labels are authoritative whenever they conflict.

The model is one INT8 encoder shared by type and target, plus a rule-based amount parser. The experiments behind it are written up in the repository.

FAQ

Is Gidi free?

Yes. Gidi is free and needs no account. The model is released under the Apache-2.0 license and the code is on GitHub.

Does my data leave my device?

No. The model runs entirely in your browser (onnxruntime-web, WebAssembly), so note text, names and amounts are never sent anywhere. Notes are stored only in your browser (IndexedDB), and you can export or import them as JSON. The app records only anonymous usage analytics (PostHog) under a random ID kept in your browser: event counts and event types, never note content.

Does Gidi work on phones and offline?

Gidi works on phones and tablets with touch input, in light and dark themes. Classification happens on your device, but the page and the 29.3 MB model bundle must be downloaded first, so offline use is not a promised feature.

Which notes does Gidi understand?

Short, informal Vietnamese personal-finance notes such as ăn phở 45k, nhận lương 15tr, cho Nam mượn 2 củ or Long trả 5 lít. It also reads slang amounts such as k, nghìn, ngàn, tr, triệu, củ, chai, xị, lít, cành, tỏi, rưỡi and the 1tr2 style, with or without diacritics. Gidi is Vietnamese-first.

How accurate is Gidi?

On the 190-note test set human-value-02, Gidi gets the transaction type right 92.1% of the time, the target 85.3%, the value 100%, and the whole note exactly right (end-to-end) 78.9%, up from 59.5% for release v2. Known weak spots are multi-word shop names, who pays in the verb trả, and gift receivers. The test set is small and was labelled by two LLM labellers with adjudication, approved by the author.

Can I use the model in my own app?

Yes. The model gidi-finance-v3 (release 3.0.0) is published on Hugging Face at huggingface.co/x8bu/gidi-finance as a 29.3 MB INT8 ONNX bundle, and the code is on GitHub at github.com/8bu/gidi.

What is the license?

The model gidi-finance-v3 is licensed under Apache-2.0, which allows use, modification and redistribution, including commercially, as long as you keep the license notice.

Who made Gidi?

Gidi was made by 8bu (8bu.dev), along with Quet (github.com/8bu/quet), the annotation tool used to label its data. It is an experimental project, not financial advice and not a bank or accounting product.