A desktop stock monitor for Pokémon TCG products at Danish retail stores. Aurora watches product pages, alerts the moment something can be ordered, and shows whether it is worth buying by weighing the retail price against its resale value. Checkout always stays with the user, in their own browser.
The Products view. Each product carries its retail price, a resale reference, the expected margin and a verdict.
Features
Deal Radar
Reads each store's public sitemap to find every sealed product page, checks live price and stock, matches it to Cardmarket, and alerts when an item in stock resells above the user's minimum return. New product pages are flagged too, often days before release.
Restock and launch monitors
Restock monitors alert the moment a product goes from sold out to in stock. Launch monitors stay idle until shortly before a release, check quickly through the release window, then fall back to restock timing.
Vault
An inventory and profit ledger. Purchases are valued daily against the same resale figure Deal Radar uses, with portfolio value, realised and unrealised profit, ROI, per-item price history, sell targets and CSV export.
Alerts everywhere
Discord messages, native desktop notifications and phone push through ntfy. A menu bar item, quiet hours, a command palette and a restock heatmap keep the app out of the way until it matters.
Monitors
One link, one decision.
Paste a product page from BR, Bilka, føtex or Spelexperten, choose restock or launch, and Aurora does the watching. Stock is read from the structured product data the stores already publish, so no scraping of page layouts is required.
Engineering
Polite by design
One request at a time per store, at least one second apart, with exponential backoff and Retry-After support. Monitors stop themselves if a store refuses requests.
Sandboxed interface
The interface runs with context isolation and a strict Content Security Policy, and talks to the app only through a typed bridge. Every call across it is validated.
Honest matching
Products are matched to Cardmarket with kind-aware fuzzy matching. Ambiguous matches are left for the user to confirm and are never guessed.