XavierFok
← all posts

What AI actually costs me in a month

2026-08-08 · by Xavier Fok

# What AI actually costs me in a month

Two things are true at the same time in my accounts. Every voiceover I publish is synthesised through a free tier model and has never been charged to me per call. And I am paying for an annual text-to-speech plan I have used zero times, which runs until March 2027 and then lapses.

I built monitoring for the first one. I forgot the second one existed until I went looking while writing this.

That gap is the subject. AI runs across a real operation here: mobile proxy lines on carrier SIMs, a rack of Android phones rented by the week, a handful of content sites, and the books underneath. The models draft text, read it aloud, transcribe audio back into text, tag and classify, and help me write code. Five workloads, and the money lands in five places that do not line up with them.

Sort costs by behaviour, not by vendor

The mistake I made for a year was keeping the list organised by supplier. That is useless, because two charges from the same company can behave in opposite ways.

Sort by behaviour and there are four kinds:

Each one needs a different response, and only the first responds to the thing everybody spends their time on.

Usage-linked spend is the one that fixes itself

Per-call inference is the number the entire internet argues about, because it is the only one with a public price list.

On my batch workloads it is close to noise. Tagging a video, classifying a row, drafting a first pass I am going to rewrite anyway. Small prompts, small models, high volume.

It is also the only line that gets cheaper without me, because the vendors cut it on their own schedule. I once spent most of an afternoon moving a classification job onto a cheaper model. The monthly saving was worth less than the afternoon, and six weeks later the price of the model I had moved off dropped below where I had landed anyway.

Two habits are worth having and neither is a project. Do not hand a large model work a small one finishes fine. Do not resend context that has not changed between calls. Both took an afternoon to set up once and they keep paying.

Past that, optimising this line is a hobby dressed as finance.

Fixed spend cannot be optimised at all

A per-call bill has one merciful property: use it less and it shrinks. It tracks reality on its own.

A subscription is disconnected from reality by design. It costs the same whether you ran ten thousand jobs last month or none, and there is no shaving it and no cheaper model to move to. You cancel it or you keep paying it, and cancelling depends entirely on remembering it exists.

Annual plans are the worst of these, because they bill once and then go silent for eleven months. Seat-based tools are a close second when you are the only seat and you stopped opening the thing in February.

The audit is twenty minutes and it is a list of dates rather than prices. Next to every recurring AI charge, write down the last date you actually used it. If you cannot name a week inside the last three months, it is done.

I ran that and found two. One I cancelled the same afternoon. One runs to March 2027 because that is how annual plans work, and I am filing it under tuition.

Anything local is billed by the power company

Running a model on your own hardware moves the cost off an invoice. It does not move it out of the business.

Electricity here is roughly thirty cents a kilowatt hour, and in Singapore you pay for every watt twice, because all of it comes back out as heat in a room I am paying an air conditioner to remove it from again. The second payment is invisible because it lands on the same utility bill as the kettle.

Duration is the variable that matters, not speed. A job that finishes in four minutes costs a fraction of a cent and I never think about it. Something pinned at full load for six hours a night is a real line and deserves the same scrutiny as anything with a vendor attached.

What local actually buys is a different list. No rate limits, so a job that wants forty thousand calls makes them overnight. No vendor sitting in the middle of a pipeline I wrote two years ago. Data that never leaves the room.

It does not buy a lower bill, and I stopped claiming it did about a year ago.

One caveat I want on the record: I have never put a meter on the wall. Those figures come off spec sheets and arithmetic. Right order of magnitude, probably the wrong second digit.

Storage is what success costs

Nobody lists this one, and it is the only category that grows while you sleep.

Generating a file takes a moment. Keeping it is permanent. Voiceovers, renders, the intermediate files the encoder wrote on the way to the finished thing, the untrimmed backup the render pipeline keeps in case a trim goes wrong.

It scales with exactly the thing you were trying to increase. Every gigabyte produced is a gigabyte you now pay to hold every month until you decide otherwise.

Then it counts twice, because every night this workstation and four servers push an encrypted copy of what matters to an object store. Anything I keep locally I am also keeping remotely. I would make that decision again, and it means retention costs roughly double whatever I assume it does.

The fix is dull and it works. Intermediates expire on a schedule. The finished artefact and the source script live forever. The dozen files in between, which existed only so one tool could hand something to the next, do not need to outlive the render by more than a week.

Deleting is the cheapest optimisation available in this whole list. It is also the one I put off longest, because deleting feels like losing something and paying feels like nothing at all.

Interactive assistants price like a wage

The largest AI line on my books is coding assistance, and the other four categories added together do not reach it.

The reason is structural. A batch job makes one call per item and stops, because the number of items is finite. An interactive assistant makes calls as fast as a person can read and reply, and a person can read and reply for nine hours.

Interactive work also resends. A batch call sends a short prompt and takes a short answer. An assistant sends the file, the files around it, and the last twenty turns of conversation, then does all of it again on the next turn.

So the bill tracks hours of my attention rather than units of output. That makes it a wage. I spent a year treating it as a unit price and wondering why the arithmetic never predicted the statement.

Here is the position I will argue about: I would cut every other AI line before I touched that one. It is the only spend where I can point at specific things that exist because of it and where the alternative is me doing the same work slower and worse. Most people have it backwards, and I did too. A Saturday goes on shaving a tagging job, and nobody looks at the window that has been open since breakfast.

The line with no invoice

Everything above produces output, and every piece of that output has to be read by a person before it goes anywhere with my name on it. That person is me.

Review time is the largest cost in this accounting and it appears on no statement anywhere.

It is also the only line that does not get cheaper. Model prices fall every year and compute per dollar improves every year. The time it takes a human to read a thousand words and decide whether they are true has not moved since I started.

So the ratio drifts against you. Generation halves in price, you generate twice as much because you can, and now there is twice as much to check inside the same number of hours.

You do not stop reviewing. You start skimming, and skimming feels identical from the inside. What shows up is something shipping with a mistake you would have caught in month one, back when there were four items a week instead of forty.

My rule now is that review capacity is the constraint and generation is sized to fit it. If I cannot check it, I do not make it. It took two years and one piece going out with a figure in it I had never verified.

Some of the checking can be handed to another model, and I do hand some of it over. A second pass catches formatting, broken links, a claim with no source attached. It does not catch the sentence that is fluent and wrong, which is the failure that actually costs you. So the line comes down a bit and the expensive part stays exactly where it was.

The number I would compute

Skip cost per call. Compute cost per finished thing that actually shipped, with your own hours in the numerator at whatever rate you would honestly accept to do the same work for somebody else.

When I did that for a single month, per-call inference came out the smallest of the five lines by a wide margin and my own time came out the largest. Neither of those was where my attention had been.

I will not pretend the arithmetic is settled. I do not have a defensible hourly rate for myself and neither does anyone who says they do. Move that rate twenty percent in either direction and the ordering of the last two lines swaps. The ordering of the first four I am confident about, and the calls sit at the bottom of it.

Get new guides and videos first — join the Telegram channel.