Black Friday at Știri din Turism
One page for Romania's travel-agency Black Friday: 2,381 offers collected and checked by code, searched in plain words and compared side by side, with no invented discounts.
Visit stiridinturism.ro- Client
- Știri din Turism
- Industry
- Travel news publisher
- Scope
- Design and build of a Black Friday offer hub
- Platform
- Astro on Cloudflare Workers
- Duration
- 1 week
- Location
- Romania
- Design
- PixelMakers
- Build
- PixelMakers
- Services
- Websites, AI automation & systems
- Year
- 2026

Știri din Turism is a Romanian travel news site. Every November the country's big travel agencies run Black Friday at the same moment, each on its own site, each with its own idea of what a discount is. We designed and built one page where readers can see all of it: describe the holiday you want, compare the packages, and book directly with the agency.
A departure hall, not a banner
The page opens at night. A large serif headline sits over a globe of dots, with a gold line for the routes on sale. Scrolling turns the globe and walks through the campaign in three beats: where you can leave from, where you can go, and why the prices can be trusted.

Below it, a split-flap departure board lists the lowest price country by country, next to a countdown to the end of the campaign. Tap a row and you land on that package.

Describe the holiday in your own words
The search box takes a sentence instead of a form. Someone types all inclusive in Egypt under €600, with kids, and the page answers with 110 offers. What it understood appears as chips that can each be removed, and the globe redraws to show only those routes.

The AI can only choose from values that exist in the catalog, and code checks its answer again, so it can't send a reader to a destination the catalog doesn't have. Preferences like somewhere warm rank the results but never hide any. Every call is paid for in advance from a fixed budget, and if that budget runs out, readers simply get keyword search instead.
Compare, without picking a winner
Readers can put up to four offers side by side: agency, price, departure, nights, board, transport and conditions, with a switch to show only the differences and a link to share the comparison.
Two hotels in different resorts are not the same product, and the page says so: these are different holidays, so it doesn't choose a winner. Package totals are never ranked against per-person prices.

2,381 offers, no editor
Every two hours, a worker on Cloudflare visits each agency's campaign and reads its offers using saved maps of that agency's pages. AI writes a map only when a new page layout appears, and a second model reviews it once. Ordinary runs use no AI at all: after the maps were written on launch morning, collection made no further model calls.
Each offer passes checks in code before it goes live: an explicit currency and price basis, exact amounts, dates, a link to an approved domain, and proof that the text really appears on the agency's page. Anything that fails is set aside while the rest publish, and a failed or partial run can't wipe the catalog.

A discount has to mean something
Black Friday pages are full of up to 65%. Here that claim stays on the agency's row, as the ceiling of its campaign. An offer shows a saving only when the agency displays an older price for that same offer, and the code works out the difference itself.
Everything else is labeled for what it is: a declared discount, a bonus, a payment option. From prices keep the word from. What an agency doesn't say stays blank, so a missing departure city shows a marker at the destination instead of an invented flight from Bucharest.
Each agency row shows when it was last checked and says so when an update is late. An offer that can't be confirmed for 12 hours leaves the page.

The challenge
The real offers didn't exist until the campaign opened. The day before launch, most agency pages were still teasers, and each agency built its campaign differently, with hotel grids, tour pages and ski pages. The page had to read all of them, stay correct while prices moved for three days, and run without anyone checking offers by hand.
Our approach
We started with what the page is allowed to say, then built the collection around those rules. The first plan had AI agents reading and checking every offer. We replaced it with scripts before launch: cheaper, repeatable and far easier to audit, with AI kept for the one job scripts can't do, which is learning a new page.
Then we audited the live data. The first import held 403 offers, and the audit caught that Karpaten's 37 entries were destination banners, not hotels. The collector now opens every collapsed section before reading, which brought in 1,152 real hotels. The same audit caught DERTOUR departure dates showing one day early and corrected them against the booking links.
Results
The page ran for the full campaign, 6 to 8 November 2026, as part of Știri din Turism. On its final day it carried 2,381 offers from Christian Tour, DERTOUR, Eturia and Karpaten across 258 destinations, on a two-hour schedule, with no editor approving offers. eMAG's one-day edition added agency offers on 6 November and closed on time.
- 2,381
- Offers live on the campaign's final day, from four agencies
- 258
- Destinations, with departures from 19 cities
- 2 h
- Between scheduled checks of each agency
- 12 h
- The longest an offer stays up without a fresh confirmation
Stack
- Site
- Astro on Cloudflare Workers
- Collection
- Cloudflare Workers, Workflows and Durable Objects, with Browserbase for pages that need a real browser
- Data
- Cloudflare D1, with photos and source evidence in R2
- AI
- OpenAI models for search and page maps, Workers AI embeddings, all under a fixed budget
- Motion
- Three.js globe, GSAP and Lenis
More work

Crisis Desk
An AI crisis-communication advisor for Rogalski Damaschin: describe a crisis in plain words and get a structured first response, built on the agency's 20 years of practice.

SORIdent
An app that replaced a dental clinic's paper records, reading years of handwritten sheets with AI and running the calendar, treatment plans and sterilization tracing.