Web app
Old School RuneScape has a player-run market where you can buy items and sell them back for a little more. I wanted a short list of offers I could put in by hand before logging off, and trust to still make sense when I came back.

The game's market is the Grand Exchange. Players post buy and sell offers, and a buy limit caps how many of each item you can buy every four hours.
The free flipping sites I used capped what they showed. The one whose buy plan I used stopped at 150 rows and two slots on its free tier.
I flip like a farm run, checking in once or twice a day. So the item with the biggest margin this minute isn't much use if it won't fill while I'm away.
A page in the browser, with no account or sign-up. Once a minute it fetches the OSRS Wiki's real-time prices for every tradeable item and drops the ones that are stale, lopsided or too good to be true.
It grades what's left and drafts a plan for my free offer slots: what to buy, how many, at what price, and what to sell at. Quantities respect the buy limit and how much each item actually trades, and sell prices allow for the 2% market tax.
Nothing leaves my computer except the price requests to the Wiki, and it never touches the game: I place, relist and collect every offer by hand.
It has four tabs. The Flip finder makes the plan. The other three follow what I do with it. All the pictures use invented trades.
The page opens on Overnight: buy before bed, sell the next day.

Under the plan, every item it turned down, with every reason.

Once I've placed an offer in the game, this tab follows it. Each row is one of my GE slots.

Every fill is copied into the page's own log, so my history survives clearing the browser and is the same in any browser.

Blitz is for when I sit at the Grand Exchange and flip the same few items over and over for about an hour. It picks offers that fill in minutes, not hours, and I place each one in the game as the tab tells me.
It's the newest tab. The timing it plans around is a model I'm still testing against my own sessions.

When the picks felt off, two separate audits of the scoring code agreed on the top three causes, and all three were fixed the same day.
One early rule judged each item by its single latest trade. That threw out any item whose price swings within the hour, so it now prices from the hour's averages and uses the latest trades as a check.
When other sites showed bigger margins than anything it picked, a second audit took 75 items from four of those sites and traced where each one dropped out of my list. Most were prices from a single old trade, spreads of one coin, or items costing more than half the cash.
A few sentences about the problem is enough to start.
contact@JordanAdair.ca