Anatomy of One Automated Purchase (Receipts Included)

"The bot buys cases every morning" compresses about two minutes of decisions into five words. This post decompresses them: one real-shaped run from the founder's live $20/day account, walked step by step — balances, venue comparisons, fills, one refusal, and the paperwork. Prices below are representative of real fills, rounded for readability.

Anatomy of One Automated Purchase (Receipts Included)
Anatomy of One Automated Purchase (Receipts Included) · source: code.visualstudio.com

06:07:00 — Wake up, but don't trust anything yet

A scheduled job fires. Before a cent can move, the run establishes facts. It loads the plan — five daily case lines sharing a $20 budget, plus a weekly standing order that isn't due today — and re-validates every item name against live markets. That validation isn't ceremony: it once caught a configured "Gamma 3 Case," an item that has never existed, before the run could fail strangely downstream. The habit is documented in verify before you buy.

It also checks its own history: has a run already executed today? Duplicate mornings — a retried cron, an operator poking things manually — must not mean duplicate spending. That guarantee, idempotency (the property that running twice has the same effect as running once), is covered in why good bots never buy twice.

06:07:15 — Count the money

Next, balances on both venues: say $31.20 on DMarket and €26.50 on SkinBaron. The euro figure is converted at today's rate so the whole run thinks in one currency — the fairness detail explained in converting EUR listings fairly. Combined funds comfortably exceed today's $20 budget, so no balance alert is triggered. If funds were short, the run would spend what it responsibly can and email a warning rather than fail silently — a starving bot should say so, loudly, before it becomes a quietly-missed week. Balance checks come before price checks for a reason: there is no point discovering a great listing you can't pay for.

06:07:30 — The comparison, five times over

Now the core loop. For each line, the run fetches the cheapest live listing on both venues, converts, and compares against the line's price cap. A representative morning:

LineDMarketSkinBaron (conv.)CapDecision
Case A$0.82$0.79$0.95Buy 5 @ SkinBaron
Case B$1.94$2.02$2.25Buy 2 @ DMarket
Case C$0.41$0.44$0.50Buy 9 @ DMarket
Case D$2.87$2.91$2.60Skip — over cap
Case E$1.36$1.31$1.60Buy 3 @ SkinBaron

Two things worth staring at. The venue winner changes line by line — neither marketplace is "the cheap one," which is the entire argument for comparing on every purchase instead of picking a favorite. And Case D simply doesn't happen today: its floor price has run ahead of the cap, so the bot declines, reallocates nothing, and moves on. No chasing, no "it'll probably come back down." The skip will appear in the report with the observed prices attached, so the human can decide — at leisure, not at 6am — whether the cap needs raising or the line has run away from its thesis entirely.

06:08:00 — Execution, smallest blast radius first

Fills go through venue APIs one line at a time, each purchase checked against three ceilings before submission: the line's cap, the day's remaining budget, and the account's $500 hard cap — the layered-brakes design from safety engineering for buying bots. Today's twelve-ish fills across two venues land around $19 total; the budget is a ceiling, not a quota, so nobody force-spends the last dollar on an overpriced copy.

The purchases won't appear in the Steam inventory today, and that's expected: DMarket buys have been observed with roughly 2–7 day trade locks before withdrawal, while SkinBaron delivers via direct Steam trade offers on their own rhythm. The pipeline between "bought" and "in inventory" is tracked, not worried about — see why purchases arrive late.

Dreams & Nightmares Case
Dreams & Nightmares Case · in-game item image, Counter-Strike 2 © Valve

06:08:40 — The paperwork is the product

Every fill becomes a row in an append-only ledger: timestamp, venue, item, quantity, price in the original currency, the conversion rate used, and the dollar figure — committed to git, where history can't be quietly rewritten. This is the record that makes cost basis a fact instead of a guess (the number that decides if you're up) and turns tax season into an export instead of an archaeology dig.

06:09:00 — Tell the human

Finally, the email: what was bought, where, at what price; what was skipped and why; budget used versus configured; balances remaining. Ninety seconds over coffee, and the skim order that makes those seconds count is covered in how to read a buy report. On most mornings the correct human response is nothing at all — which is the success state. The system's whole design goal is that your involvement happens at planning time, calmly, and the 6am part belongs to the machine.

What two minutes buys you

Done by hand, this run is 15–20 minutes of tab-juggling — two logins, five price comparisons with a currency conversion in your head, cap discipline enforced by willpower, and record-keeping that realistically wouldn't happen. Done by the machine, it's two minutes, identical every day, with receipts. The individual morning is trivial; the compounding of three hundred identical, cap-guarded, fully-documented mornings is the strategy — and no part of it depends on you being awake. One buy, dissected, is how you audit the machine. The ledger is how you audit all of them.