Scout

Finds the actual cheapest —
and shows you the arithmetic.

Ask any chat model for the cheapest detergent and it will answer confidently, invent a product link, and compare a three-pack against a single bottle. Scout opens the pages, reads the real prices, and does the maths in Rust.

priceshippingper washshop

€18.49+ €0.00€0.31bol.com 60 washes

€12.95+ €4.95€0.45123schoon.nl 40 washes

€15.17+ €16.98€0.53marktplaats.nl 60 washes

The cheapest sticker price is the worst deal of the three. Scout compares landed cost — item plus shipping — and then the price per wash, because a bigger bottle is only cheaper if it is actually cheaper per wash.

Invites open

There is room in the current round.

Start in your browser Start on Telegram

Already have an account? Sign in

Trips in the browser

See the whole route. Make the choice.

The route across the top, then a row for every day of the trip: what happens on it, what you are still to book, and which days have nothing on them yet. Flights, hotels, museums and trains stand in one list in date order, each marked held or still to book, and a leg that lands the next morning appears on both days rather than looking instantaneous. Press anything in the day rows to jump to it. Download the whole plan as a print-ready PDF when you want it away from the screen.

Scout trip planner: a Hong Kong trip with the route across the top, a row for each day showing flights, a hotel and activities, two of them still to book, and a booking address in the sidebar

A saved price is labelled by its source and age. Before booking, ask Scout to refresh live fares; the plan stays durable while short-lived offers do not.

On Telegram, the same page opens as a Mini App: a Trips button beside the input, and an Open trip button under any reply in which Scout changed one. It is the website's own page inside the app, signed in by Telegram, with the chat left out because the bot is the chat.

A row for every day

Including the ones with nothing on them, which is the thing a plan usually hides.

Held, or still to book

Said on every item in a word, not a colour, and the same on the printed plan.

Connections recalculate

Choose another flight and tight, impossible or airport-change joins are flagged.

A booking address of your own

sasha@goodscout.fyi

Give it to the hotel at checkout, or forward the confirmation yourself. Every message is forwarded to your real inbox first — nothing is ever only in Scout — unless it arrives from your own address, which you already hold a copy of. Then it is read into a pending row on the trip whose dates it overlaps. The row waits there until you press Add.

Nothing moves on its own

A confirmation becomes a row you can see and refuse. Mail never edits an itinerary, and a misread one costs you a click rather than a booking.

The email meets no tools

It reaches exactly one model call, built without a single tool, that answers with fields. An instruction hidden in a booking has nothing to act on.

The ticket comes with it

Attachments are kept and PDFs read for their text, so the booking arrives with its confirmation code and the ticket already on it.

Trips you plan together

lisbon-4f9qa@goodscout.fyi

Share a trip by link — from the People line under its title, or from inside Telegram — and whoever opens it is on the trip, with or without an account yet: the join page signs them in by email or Telegram and brings them back to it. Everyone on a trip edits it as you do, the trip has an email address of its own, and every item says who added it.

One link, ten people, two weeks

The link is the invitation. It admits at most ten new people and lasts fourteen days; replace it or turn it off whenever you like, and take someone off the trip.

The trip's own address

Drawn from the trip's name, or one you choose. Give it to the hotel and the confirmation is filed on the trip for everyone, forwarded to each person once, and announced on each phone with Add and Ignore.

Who added what

“Added by Masha, via Scout” on the page and on the printed plan. The owner alone deletes the trip or changes its address — and can hand it to someone else and stay on as an editor.

How it finds the cheapest

Landed cost, not sticker

€15.17 with €16.98 shipping loses to €35.25 delivered. Offers that don't state shipping still compete, but their prices are labelled item-only.

Price per unit

Per wash, per litre, per 100g. A three-pack and a single bottle are only comparable once they're in the same units, and that division happens in Rust.

Numbers off the page

Prices come from the page's structured data for the exact URL opened — never from page text, where a “related items” strip becomes your quote.

Your shops, not just the ones that rank

“always check 123schoon.nl for cleaning products”

Small shops never rank organically, even under their product's exact name. Tell Scout once which shops you trust and for what, and it queries them directly with a site: search on every relevant question — scoped by category, so a cleaning-products shop isn't consulted about a laptop.

The same goes for the rest of your profile: delivery country, sizes, languages. Scout searches in your languages as well as English in one call, because “laundry detergent” finds nothing on a Dutch shop and “wasmiddel” does.

Where the listings come from

eBayOfficial API

The eBay Browse API, with developer credentials and OAuth. Current prices and stock straight from eBay, no page reading involved. Needs your own key — without one, eBay results still arrive through ordinary search.

MarktplaatsUnofficial feed

The same JSON endpoint marktplaats.nl's own front end calls to fill its results page. Not scraping rendered HTML, but not a public API either: it can change shape without warning, and when it does Scout falls back to normal search rather than reporting nothing. Sold and deleted listings are filtered out.

bol.comOfficial API

The Catalog API, if you have an approved affiliate account — and they do reject applications. Optional, like the rest.

Everywhere elseRead and verified

Found by search, then opened and read. Pages that block a plain HTTP client get re-opened in headless Chrome, which clears the challenge shops put in front of them. When a page can't be verified, Scout says so rather than guessing.

Every row here was a real bug

Four Amazon links, all fabricated. An invented product URL looks perfectly real and always 404s. Every link is probed before sending. Dead ones trigger a correction turn, then get struck from the text.
€640 for a €6.48 bottle of cola. The shop published the price twice — once in euros, once in cents — and we picked the wrong one. A price with decimals beats a bare integer, and anything exactly 100× the page's other price is corrected.
Recommended something marked “out of stock”. The page returns HTTP 200, so nothing looked wrong. Stock comes from the page's markup, not its prose — that page said “unavailable” once and “add to basket” seven times.

A plan stays a plan

Live offers expire in minutes; an itinerary should not. Scout stores the route and the flight you chose, then searches again when you finalise. It never quietly turns Tuesday's fare into today's promise or substitutes a different flight because yours disappeared.