Every budget app asks for the same three things before you can log a coffee: a subscription, your bank login, and your attention for the ads if you refused the subscription. For a lot of people that is the opposite of what they wanted, which was a small screen where they type what they spent and see the month add up.
You can build that yourself now, without learning to code. An AI writes the screen in one turn. The part most guides skip is where the entries go, because the page the AI writes by default keeps them in the browser and loses them the first time you clear it or pick up a different device. This guide fixes that part: the tracker becomes a private page on your own link, the entries are stored on the page, and it opens the same way on the phone and the laptop.
Where this guide comes from
The founder of Hostus built one of these for a family member who wanted to track personal spending and did not want an app with a bank login. Claude wrote the screen in a single turn: a form with amount, category and note, a list of this month's entries, and a total per category. Hostus hosts it as a private page, so only the owner can open it. The entries are stored on the document rather than in the browser, so they do not vanish when the browser is cleared, and the same link opens on the phone and on the laptop.
Choosing the categories took longer than making the app. The tracker is no longer the hard part; the only decision that matters is where the data lives.
What it looks like
Here is one, live: a pocket ledger. It is a demo page and the numbers on it are whatever readers typed, but the page is real and you can use it. Add a few expenses, switch months, watch the totals per category change. Then open the same link on your phone and your entries are there.
The demo runs in per reader mode, which means every visitor gets their own private notebook on the same page. What you type is visible to you and to the owner of the demo, and to nobody else who opens the link. That is the setup for two people who each keep their own list; for a tracker that is only yours, set the page to private and the data to owner only, as the sections below cover.
Why the page an AI writes loses your entries, and the fix
Ask ChatGPT or Claude for an expense tracker and you get a good one, and it will almost certainly store the entries with localStorage. That is the sensible default for a page with no server: it needs nothing, it works instantly, and it is wrong for this job.
localStorage lives inside one browser on one device. Clear site data and the entries are gone. Open the page on your phone and it is empty, because the phone's browser has its own storage. The page is not broken; it was never told where else to keep the records. Pages that export a file to download fix the loss but not the phone, and you end up emailing yourself a JSON file.
The fix is to give the page somewhere to write that is not the browser. On Hostus, that is hostus.data: when the HTML references it, the server injects a small SDK before your script runs, and the page can read and write records that belong to that document. They are stored on Hostus, against the page, and come back to whichever device opens the link.
const { data } = window.hostus;
data.watch("entries", render); // now, and on every change
await data.add("entries", { date, amount, category, note });
await data.remove("entries", key); // delete a mistakeThere is no API key in the page and nothing to configure, because the server already knows which document this is and who is reading it. On a private page that is you, signed in to Hostus. On a page you share, a reader is identified by a signed cookie, or by a magic link sign-in if you want their entries to follow them across devices. Records are up to 32 KB each, far more than an expense needs, and a document holds up to 20 collections, so a second one for income or bills costs nothing.
The prompt
With the Hostus connector on in Claude, this writes the page, publishes it and sets it up in one turn.
Make me a personal expense tracker: one HTML file, mobile first.
A form at the top with amount, category (Groceries, Eating out, Transport, Home, Fun, Other), a date that defaults to today, and an optional note. Below it, the entries for the selected month, newest first, with a delete button on each row, a total for the month and a total per category. A month selector to look back.
Use the hostus.data SDK so the entries live on the document: data.watch("entries", render), data.add("entries", { date, amount, category, note }) and data.remove("entries", key). No backend, no localStorage, no key in the page.
Publish it to Hostus, set the data mode to owner only, and give me the link.The page is born private, which is what a tracker wants; Claude cannot change that, and you would not want it to. If two of you share it, change the last line to per reader mode, so each of you keeps your own entries and you, as the owner, can see both, then switch the page to email gated in the Hostus dashboard so your partner opens it with their email and no account. If you want one joint list instead, ask for shared mode. Change the categories to yours. Ask for a budget per category with a bar that fills, a dark theme, or a running yearly total: it is your app.
Keeping it private
Three settings, all on the document and none of them in the HTML. Visibility decides who can open the link: private means only you, signed in to Hostus; email gated means a reader types their email, with no account, and you see who opened it; public means anyone with the link, and public pages carry a noindex tag so they never show up in Google. Data mode decides who can write: owner only for a tracker that is yours, per reader when each person keeps a separate list you can see, shared when two people keep one list together.
For most people the answer is private plus owner only. Nobody else can open the page, and nobody else can write to it. You need the email gate only the day you invite a second person. Visibility is changed in the dashboard; the data mode can be changed there or by asking Claude.
Hostus first, then the apps: which one to pick
Hostus. Best if you want the app the AI wrote for you, on your link, with the entries kept. No ads, no subscription, no bank connection, and nothing from an app store: the page opens from the link on the phone and the laptop alike. The free plan has no clock and asks for no card, and you change the app whenever you like by asking for the next version.
YNAB, Monarch, Copilot. Pick one if you want bank sync and reports out of the box and are happy to pay for them. On their pricing pages today: YNAB is $14.99 a month or $109 a year, with a 34 day trial and no card; Monarch is $14.99 a month or $99.99 a year, ad free, with a 7 day trial; Copilot is $95 a year, which it shows as $7.92 a month, with a one month trial, on iPhone, iPad, Mac and web. All three are built around connecting your accounts.
Pocket Clear, Monefy, Spendee. Pick one if you want a simple manual tracker and prefer an app to a page. Pocket Clear's site says it is free with zero ads and no bank linking, with entries stored only on the device on the free plan; Pro, at $4.99 a month or $34.99 a year, adds cloud backup and sync. Monefy says its core app is free and needs no bank login, with a paid upgrade whose price is not on the page. Spendee has a free Basic plan limited to one cash wallet and one budget, Plus at $1.99 a month and Premium at $5.99 a month, with bank sync listed in every plan. None of the three lets you change what the app does.
A spreadsheet. Pick it if you only ever log expenses at a desk. It is free, it is yours, and the formulas are as flexible as you are. On a phone it is a grid you pinch at.
A localStorage page from ChatGPT. Pick it if the tracker lives on one device and you will never clear the browser. It is the default an AI produces, and for a single laptop it works well. The moment you want it on the phone too, or you clear site data, the entries are gone.
Side by side
| Option | Ads | Subscription | Bank connection | Phone and laptop from one link | Entries survive clearing the browser | You can change the app |
|---|---|---|---|---|---|---|
| Hostus, your own page | None | None, free plan with no clock | None | Yes, the same link | Yes, stored on the document | Yes, ask for the next version |
| YNAB | Not stated on its site | $14.99 a month or $109 a year | Direct import for select US, Canadian, UK and EU banks; file import otherwise | iOS, Android and web apps | Yes, in your account | No |
| Monarch | None, per its site | $14.99 a month or $99.99 a year | Built around connecting accounts | Web, iOS and Android | Yes, in your account | No |
| Copilot | None, per its site | $95 a year | Built around connecting accounts | iPhone, iPad, Mac and web | Yes, in your account | No |
| Pocket Clear | None, per its site | Free; Pro $4.99 a month or $34.99 a year | None | iPhone, iPad, Mac, Android, Chromebook, plus a web app | Free plan stores on the device only; Pro adds cloud sync | No |
| Monefy | Not stated on its site | Free core app; paid upgrade, price not shown | None | iOS and Android | Check their site | No |
| Spendee | Not stated on its site | Free Basic; Plus $1.99 a month; Premium $5.99 a month | Optional, listed in every plan | iOS and Android apps, web login | Check their site | No |
| Spreadsheet | None | None | None | Yes, cramped on a phone | Yes | Yes, in cells |
| localStorage page | None | None | None | No, one device | No | Yes |
Prices and platforms were read on each vendor's own site on 18 October 2026 and change without notice. Where a cell says "check their site", the vendor did not publish the fact on the pages we read.
Changing the app when you want something else
A month in, you want a budget per category. Ask Claude for it and the new file goes up on the same link; the entries stay, because they live on the document and not in the file. The previous versions stay in a history, so a change you regret is a step back, not a loss. No app gives you that.
Claude can also read the page back to you: with the connector on, ask what you spent on eating out in September and it reads the records on the document and answers. The Data tab on the document lists the records in a table, with search and a CSV or JSON export, so the entries are never locked inside the page.
Good to know before you switch
The entries are stored on Hostus servers, on your document. They are not end to end encrypted: you can read them, and so can Hostus. Treat the page like a notebook, not a vault. Amounts, categories and notes are fine; account numbers and card details are not. There is no bank sync and never a bank login, which is the point, and it also means every entry is typed by hand.
The free plan holds 1,000 records per collection, which is about three years of one entry a day, and 20,000 on paid. The storage works because the page is hosted on Hostus; a copy opened from your desktop shows nothing. And it opens from a link, like any web page: there is nothing to install, on either device.