choai日本語

Reading receipts and statements in

There is no chat inside choai, and no model that writes. What there is, is reading things in: a photographed receipt, or a CSV statement from a bank, a card or another bookkeeping app, turned into entries for you to check. Jev, TypeSafe's model, does the sorting, reached through OpenRouter with a key of your own — so none of it does anything until you bring one. Nothing is written without being shown to you first, and anything you want to ask about your books, you ask an agent of your own.

A receipt, read on the device

Choose one photograph or a dozen, or take one with the camera. The text is read off each one in the browser itself, by OCR models that are fetched the first time — about 45 MB — and kept after that. A phone held on its side, a receipt a fifth of the frame: it turns the picture and looks again, closer, where the text is.

The photograph never leaves the device. What goes anywhere is the text read off it, and it goes to one place.

Jev sorts; it does not write

Each row of text is sorted by Jev, a model from TypeSafe that answers a question by choosing among options and saying how likely each is. It cannot write a sentence, so nothing it says can end up quoted in your books. It says which row is the total, which is the change handed back, which of your accounts a purchase belongs to — and how sure it is.

Then the paper has to agree with itself. The total believed is the one the card was charged, the cash less the change, the amounts at each rate adding up to — not merely the row Jev thought likeliest. Where they disagree, the card says which check failed.

A statement, read as CSV

Download a statement from your bank or card as CSV — or export entries from another bookkeeping app — and drop it in. Jev says what each column is: the date, the payee, money out, money in, the debit and credit accounts another app wrote. It says which of your accounts the statement is of, and for each line, which account the other side goes to — after your own books are asked first, so a payee you have written before goes where you put it last time.

What comes of that is an hledger CSV rules file, and hledger reads the statement under it, so the figures are hledger's own. A line your books seem to have already — the same day, the same amount — is offered unticked and said to be a possible duplicate. Shift_JIS, which Japanese banks still write, is recognised rather than read as nonsense.

The key is yours, and it stays here

Jev is reached through OpenRouter, with a key of your own kept in this browser beside the journal. It is sent to openrouter.ai and nowhere else; there is no server of ours for it to pass through, which is also why there is nothing here that could read it.

What goes over is what each question needs and no more. For a receipt, the rows of text read off it. For a statement, its name, its column headings with a few values from each, and the payees on lines your books have not seen before. For either, the names of your accounts, so an account can be chosen from them. Not the photograph, not the statement whole, not the rest of the journal.

It proposes; you keep

A receipt or a statement becomes entries shown as the text they would be, offered to hledger to be sure it reads, and kept only when you say so. Where the reading was sure it says so, and where something was guessed it says what, so the settled ones go in with one press and the rest can wait — or go in tagged, to be found again later with a query.

In the Japan edition the same reading also says what was charged at each consumption tax rate, tags each line with its band, and checks the paper against what a simplified qualified invoice must carry — naming whatever is missing rather than assuming it is there.

Talking about your books

Bring an agent that can use a browser. The app publishes window.choai — every report, every query, every way of offering an entry — and describe() tells the agent what it may call and how it is to be used with somebody's books: answer from the journal, offer before keeping, never keep in the same breath as offering.

So the conversation is with the agent you already trust, under its terms, and the books are only ever touched the way the screens touch them.

What it costs

OpenRouter's charge for what Jev was sent, billed to you by them — for a receipt, a small fraction of a cent, and for a statement, a little more for each payee it has not seen. Nothing is added here and nothing is taken.