Projects

Fixuj & Mixuj

Booze deals and cocktails

Alcohol deals across ten supermarket chains, plus cocktails and party games. Web, iOS and Android out of a single monorepo.

fixujamixuj.cz
Product detail: eight chains side by side and 90 days of price history
The catalogue in the app
9:41
Why it exists

A brand that already worked once

Fixuj & Mixuj started in 2021 as an Instagram account reviewing booze and posting cocktail recipes. It moved to TikTok, gathered twenty thousand followers and then went quiet.

The restart came when a parallel account with fifty thousand followers shut down and left the market empty. This time not as content, though, but as a product: an app that actually watches the prices.

  1. 2021

    Instagram

    Booze reviews and cocktail recipes.

  2. 2022

    TikTok

    Twenty thousand followers.

  3. 2023

    Silence

    The account stopped posting.

  4. 2026

    Restart

    This time as a product, not as content.

~990

products in the catalogue

15 subcategories, ~313 brands

10

chains under watch

Kaufland, Lidl, Billa, Tesco, Penny…

price runs a day

05:00 · 12:00 · 19:00 CET

14

days of forecast

p10–p90 quantile band

What it does

One bottle, eight prices

fixujamixuj.cz
Deal listing, sortable by price, discount or price per litre

Sorting that makes sense

Cheapest is not the same as best value. Beyond price, the catalogue sorts by discount, by price per litre and by "B4B", meaning how many millilitres of pure alcohol you get per crown. Search tolerates typos and reaches across brands and types.

The catalogue in the app
9:41
107 games with rules
9:41

The same thing in your pocket

Web, iOS and Android share one monorepo, so components, queries and types are written once. The native app adds a push when a price drops below a watched threshold. The Games section runs on web and Android; it is hidden in the iOS build, because drinking-game content would not clear App Store review.

Price comparison

Same bottle, 305 CZK apart

Jägermeister 0.7 l, one day, eight chains. Three hundred at Billa, six hundred and five at Košík. This is the whole product in one picture. And exactly why it pays to know when to wait.

Billa300 −47 %
Albert329 −42 %
Penny330 −42 %
Kaufland567
Lidl567
Globus567
Tesco569
Košík605

Real data from 13 August 2026. Regular price 567 CZK; discounts are calculated against it.

Decisions

What we did differently

Not because the other road was closed. Because this one worked better and we can say why.

We don't scrape the chains, we scrape an aggregator

A separate scraper for every retailer.

A single source: kupi.cz.

Six scrapers means six DOM structures that keep changing, six anti-bot defences and six local quirks. The aggregator does that job better than we could maintain it.

Risk: dependency on one source. Knowingly accepted.

No headless browser

Playwright, the way it is usually done.

Plain HTTP and cheerio.

The source returns complete server-rendered HTML, so a browser adds nothing. Without it the run is an order of magnitude faster and the parser can be tested against saved fixtures with no network at all.

A full pass over every product takes 2 to 4 minutes.

The index holds offers, not products

One document per product variant, the way indexes are usually built.

One document per variant × store pair.

Filtering to "Billa only" and sorting by price per millilitre of alcohol filtered the right products but ranked them by the best offer across every chain. The card then showed a Penny price and a Penny logo inside a result that was supposed to be from Billa. Collapsing at display time fixes the contradiction in the data instead of patching it in the frontend.

The index grew from about a thousand documents to tens of thousands. Search speed did not notice.

Built on

A monorepo: two apps and three shared packages. Forecasting runs on a hosted service; the repo holds the data pipeline and the accuracy scoring.

Turborepo
Next.js 16
Payload CMS 3
MongoDB
Meilisearch
TanStack Query
React 19
Capacitor 8
Chronos-Bolt

Scrapers, pipelines, search and native apps are things we build for clients too: web application development