What the hourly heartbeat pulls from. Open issues are the live version - clgiati/bdo/issues - this page is the shape of the thing.
Done
When to sell (#15). No weekday effect survives correction; mean reversion is real for 21 items; no forecast beat "tomorrow is today", so the page ships a selling rule instead, worth +1.6% weighted, as a chip on every item row.
Node access (#9). Energy, not questlines, is the gate; travel is nearly free; all of it on the page with confidence levels, and gated regions are excludable from display and re-solve alike.
Order-book prices in the solve (#3). Tested and closed with a negative: a re-solve at the book gains 0.18%, because the premium attaches to prices, not node choice.
Beat my plan (#5). Every browser solve at the plan's budget now ends with a verdict: holds, beaten by X, or at most X unproven.
Game icons (#10) and the terrain basemap.
Price history and volatility (#1). 90 days per item from the game's own trade market, per-item sigma, hard price bands, the plan's income band, six price bases in the UI.
Order-book valuation. Both sides of the ladder, so "sellable" is measured rather than assumed.
The walk. 140 stops in solved order, as a checklist that remembers where you are.
The dashboard. Map, tables, mobile, fullscreen, live re-pricing, 44 browser expectations.
Next
Is the plan overfit to one afternoon? (#8) Re-solve at median and conservative prices, diff the node sets. With 52% of income on one item at the top of its range, this is the highest-value open question.
Item knowledge base (#2) - what each drop is for. Consumption graph from craft data, best-route valuation instead of raw-sell only, and plain-language notes, because knowing an item's price is not knowing whether it is desirable.
Order-book prices into the solve (#3), not just the display. Right now the solver optimises against quotes that some items cannot actually achieve.
Solve on local hardware (#4) - HiGHS-WASM in a worker, native helper when available, live gap progress. Keeps re-solving free.
"Beat my plan" (#5) - constrain the objective above the current plan and let the solver prove there is nothing better, or find it.
Constraint toggles (#6) - cap towns, exclude regions you have not unlocked, reserve CP.
Crafting chains (#11) - every figure here is raw selling, which is a floor. Processing, cooking, alchemy and imperial delivery all beat it sometimes, and the fork worth answering is workers versus doing it by hand: silver/day against silver per hour of your attention.
The worker roster (#12) - grade is now a drawer option, but re-solving for weaker workers, levelling and promotion, food auto-recovery from family inventory, and the storage CP this plan needs are all still missing.
Everything else in BDO (#13) - afk lifeskills that overlap with workers, grind zone comparison, event drops that must never leak into the baseline, and an honest audit of what Garmoth does better.
Solving on your own hardware (#14) - browser WASM, plus a no-setup executable for proving optimality. The hosted site must never run a solve.
Node access gates (#9) - some nodes need energy spent to unlock, some sit behind quests. The walk currently assumes every stop is purchasable on arrival, which is only discovered to be false while standing there.
Game icons everywhere (#10) - item icons wherever an item is named, with a hover/tap card carrying its price, range and use. Always visible, never hover-only.
Staying current (#7) - scheduled refresh, other regions, shareable solutions, storage planning.
Deliberately not doing
Worker energy and node stickiness as a model. Asked for and then dropped: the plan assumes good workers in every city. The useful residue is reporting which nodes today's prices merely flatter, which is on the page.
Crafting chains as the valuation basis. Tracked in #2 as additional routes to value, not a replacement. Raw selling stays the floor.
Where it runs
Hosted at bdo-two.vercel.app as pure static files - no functions, no SSR, no API routes. scripts/deploy_gate.py refuses to deploy over 30% of any Vercel Hobby allowance, and fails loudly if server-side code ever appears, because static hosting is what keeps compute at zero rather than merely low.
Everything dynamic runs in your browser: live price pulls, re-pricing at another basis, worker-grade re-valuation. Solving is the one expensive operation and it will run on your hardware, never on the host (#14).
Standing rules
Push to main. No pull requests.
Never plan from a single snapshot where history is obtainable.
Anything needing a decision becomes an option in the Settings drawer, not a question - the GUI is the whole interface.