Today was ... interesting. If you followed me for the past months over on the shitbird site, you might have seen a bunch of angry German words, lots of graphs, and the occassional news paper, radio, or TV snippet with yours truely. Let me explain.

In Austria, inflation is way above the EU average. There's no end in sight. This is especially true for basic needs like energy and food.

Our government stated in May that they'd build a food price database together with the big grocery chains. But..

the responsible minister claimed it's an immense task and will take til autumn. It will only include 16 product categories (think flour, milk,etc.). And it will only be updated once a week.

Given how Austria works, some corp close to the minister would have gotten the contract for a million on two to create a POS just enough so the minister can say "look, I did something!"

Well. I heard that and build a prototype for all products of the two biggest chains in 2 hours. The media picked it up...

Here's a selection of media coverage of the entire thing.

https://heisse-preise.io/media.html

It spread like wild fire and made the minister look like an idiot.

I took the thing down in fear of retaliation by the grocery chains. My plan: get a big NGO, news outlet or political party to host the thing and be a legal shield for the endevour.

Almost every NGO, media outlet and political party got in contzct with me (not the other way around). There were lots of promises and big words but zero action.

Heisse Preise

Nicht-kommerzielles Open-Source-Projekt um KonsumentInnen es zu ermöglichen, die günstigste Variante eines Produktes im Handel ausfindig zu machen.

All these orgs only had their self-interest in mind. After two weeks of this bullshit, I figured I might as well gamble and put this thing up in my own name.

Surely the grocery chains won't sue me. The bad PR would easily outweigh whatever little inckme loss they'd suffer from a few hundred people using the site to find the cheapest product.

You see, I'm basically just crawling the stores online stores. Most of them have an API. I then normalize the data across the stores, and expose it.

The whole thing runs client-site. The server fetches the latest data from the stores once a day. All data fits into 5mb of gzipped JSON. Small enough for the client to do anything. The server just serves 8 static files. It can handle serve all of Austria easily and could be scaled trivially. It's just static files.

Being the idiot I am, I also made it open-source:
https://github.com/badlogic/heissepreise

And as usual, people flocked to it and contributed. In no time we had all stores in Austria in there.

GitHub - badlogic/heissepreise: Jo eh.

Jo eh. Contribute to badlogic/heissepreise development by creating an account on GitHub.

GitHub

Then we also got German and Slovenian stores. Then we normalized product categories across stores and added some light data science techniques to match the same or similar products across stores to make prices more easily comparable. You know, iterative improvements.

And then some anomymous guy in Twitter send me the data he crawled for the two biggest chains. Starting in 2017. And that's when thinga really got interesting...

I scrambled to integrate his data into my platform. I added analytics tools. And then I ran my first few analyses. And my jaw dropped.

"Well, that's a bit to much of a price increase even given higher energy prices."

So I started to dig. And boy did I find a lot of things...

My first analysis actually happened before I build the platform. I was manually comparing prices of products the stores themselves offer in the lowest price segment. Things like grocer store brand milk or flour.

I compared 40 product pairs across the two biggest chains. And lo and behold: their prices matched exactly to the cent!

An NGO picked this up on Twitter and did the analysis for 600 product pairs. Same picture.

With my platform in place, I could do more advanced stuff.

E.g. given the historical data, I could see price movements for a product across the two chains. And you won't believe what I found (well, you know what's coming...)

Them fine grocery chains changed the prices of the self-branded low cost products with one to two days, or even on the same day. And they both came up with the exact same price.

This wasn't only happening in the low-price chain-brand segment. It also happened in the mid-range segment of self-branded goods.

And it all started happening when inflation went through the roof.

Clearly, something was up. My guess was: tacit collusion, meaning, oligopolic price coordination without explicit coordination.

Meanwhile, others have build platforms like I did as well. And they too saw these patterns.

There were more.

We could show shrinkflation, meaning products with less content are sold for the same or even higher price.

Examplified by e.g. laundry detergent.

We could also show that the exact same product cost up to 40% less in Germany, a country with higher mean income and higher cost of living.

Even more interestingly, products exclusively produced in Austria cost less outside of Austria.

Billa is the Austrian version of REWEDE.

Even fucking Red Bull, an Austrian brand, costs more in Austria when it is discounted here, than it costs normally without discount in Germany.

WTF.

Then I looked at an aspect pretty unique to Austria: discounts.

You see, in a normal country, with a competitive grocery market, you usually have about 10%-20% of products that get discounted on average.

In Austria, that rate is 40%. It's a fantastic way to obfuscate the actual price of a product. As a customer, you'll never know what you'll pay on that day until you see the current discounts directly in the store.

The chains are very generous and will send you discount leaflets via mail.

If I were trying to describe it in more flowerly terms: It's asymmetric information war fare.

The stores tell you they are good and benevolent and only have your interest at heart, so here are discounts. Discounts for everyone. They even gamified the whole thing with stickers. I shit you not. People collect stickers they put on the products in the convery belt at the register. There's also apps, which will give them all info on you

In reality it makes it impossible to know how much things cost

Given the historical data I had, I was able to also check for patterns in the discounts they give. How often, how high.

The grocery chains got a little iffy about all that somewhat negative media coverage, some of which was spurred by my continued analyses.

They started to put out these things in the store. It basically says "We've already lowered the prices of 450 products for you this year". With a sortiment of 22000.

They were also dumb enough to put out a machine readable PDF with all the products they lowered the price for.

With a little data science magic, I was able to match those with my database...

The spot check showed that their claims were true on the surface.

But I'm a stickler for data, so I looked a bit closer.

And lo and behold. There was fun to be had.

There are products that are cyclic in their price changes. E.g. this axe shower gel, which they listed as having a lower price now.

Yeah, you lowered the price from 3.99 to 2.99. But that follows the exact pattern this product's price had over the last couple of years.

Technically correct. But not a permanent price decrease.

Second picture is another example of that.

But there's a more "nefarious" kind of price decrease.

As I said, Austria is a country of insane amounts of cyclic discounts. Many products will be sold for their "regular" price for one week and a discount price the other.

The real price for the consumer is the average of the regular and discounted price.

Given this knowledge, do you notice something with the prices for this product the grocery chain claims to have decreased the regular price on?

Of course you do, cause you are a smart cookie.

While their claim that they decreased the regular price is correct, they also increased the discounted price that comes into play every other X weeks/days.

So they are again technically correct: the regular price was decreased.

But on average, a consumer pays more if they buy the product every week, as the discounted price has been increased. The average is higher than before.

Sneaky.

@badlogic
Is it really the average? As a customer I always buy in discounted weeks.
@badlogic Could you please share the complete dataset?
@badlogic this is observably what happens here in Switzerland too.

@badlogic
In Poland we recently got a regulation saying that when advertising a discount, the shop has to provide the lowest price from last 30 days as comparison.

So if 2 weeks ago it was 2.99, yesterday it was 3.99, and today they're lowering the price again to 2.99, they d have to say they lowered from 2.99 to 2.99

@wolf480pl @badlogic I’m sure you’ll be shocked to learn it’s an eu regulation (and even steam now obliges by it but example)
@badlogic Cyclic discounts - same in Poland. I know for a fact that my favorite yoghurt in Kaufland is discounted every 4-5 weeks, pork chops every 3 week, chicken quarters, and so on... The cycles are obvious.
@badlogic trick with shifting baseline

@badlogic In Australia, Coles does this.

It's yet another advantage rich people have over the poor: I pay less for my groceries because I can buy them when they're discounted before I need them, and ignore them when they are not discounted.

@badlogic This sounds exactly like my local grocery store (in America). We don't have stickers, but we have rewards card exclusive discounts and shit.
@badlogic The sticker thing happens here in Germany too.
@badlogic Confusopoly. Why compete on price where costs scale per unit sold when they can obfuscate the price and compete on marketing, where costs don't?
@badlogic Same in Poland. I plan my groceries around Kaufland and Auchan discount schedule each week for well over a year now.
@badlogic in The Netherlands where there's arguably quite some competition, many retail chains promote their shops by proclaiming they never have discounts
@badlogic that is what happens in the Netherlands too. Therefore, many things are cheaper in Germany than in Holland!
@badlogic We in NZ do the same WTAF when NZ dairy products (cheese, butter) and NZ meat products (lamb) are cheaper in Great Britain than here.
@christopherd this reminds me to check what the situation with Welsh lamb is these days. We had similar moments when NZ lamb is cheaper than the local product, and has to travel half way across the planet. Not what I would call an upside of a global economy. @badlogic awesome work, so great to see data driven understanding of the problem rather than just rhetoric driven politics. Plus, look at the amazing global discussions you’ve started 🎉

@badlogic Insight and frustrating data for me - as here in Lithuania, Red Bull is normally €1.49 (and of course discounts drop it a bit), so pricing probably resembles the Austria, rather than Germany, graph. I have a strong suspicion there is also supermarket collusion here (there are only three bigger supermarkets + Lidl), but I’ve not actually done much data analysis to confirm my theory.

Lidl definitely does the non-standard product sizes - I compared Lithuanian water bottles from there vs. normal shops where they were a tiny bit more expensive, and realised that the bottle I thought was 2L (from the normal store) was 1.8L at Lidl and the same or more expensive by volume!

@badlogic What is the effect of local tax?
@gudrun hardly any, it's a 1-3% difference in tax iirc.
@badlogic Thank you. Between Germany and Austria it seems there is a difference of 3% in VAT on basic food items.

@badlogic Regarding comparisons across countries you need to be a bit careful because the listed prices include VAT and that is different in different countries. AFAIK Germany has a significantly different VAT for beverages, for example.

In any case, thanks for your great work. I hope that exposing this cartel will have some serious consequences.

@murks the VAT rates of Germany and Austria are indeed different, but not by 40%.

@badlogic You are right, certainly not by that amount. It seem that Germany has 19% VAT for beverages compared to 20% in Austria, so not significant.
They have only 7% for some articles like food and we have 10%. Apparently we also have 13% for some articles it seems.
So yeah, you were right about roughly 1-3% difference.

I wonder whether the German "Dosenpfand" plays a role in the Redbull comparison, but I have no idea how that works.

What is for certain is that the Oligopoli is a problem.

@badlogic I've seen shrinkflation here in NZ - Chocolate Thins are a popular chocolate biscuit, and the package size has reduced noticeably for the same price. Grrr.
@badlogic yeah we got it here, we noticed it!

@badlogic I just saw news about Carrefour warning its customers about products showing shrinkflation: https://boingboing.net/2023/09/15/french-supermarket-chain-carrefour-puts-shrinkflation-warnings-on-price-gouging-brands.html

That's a pretty unusual move from a supermarket chain

French supermarket chain Carrefour puts "shrinkflation" warnings on price-gouging brands | Boing Boing

Carrefour, one of the world’s largest grocery chains, is slapping warnings on products when the size shrinks but the price does not. The labels come amid reports of falling costs and rising p…

Boing Boing
@phl it's a way to bring producers of goods in line.
@badlogic Certainly, I just didn't expect such an entity act on it

@phl @badlogic as well as shrinkflation back in the late 90s a friend of mine pointed the phenomenon I'll call crapflation. That is products being manufactured to lower and lower standards so they break and have to be replaced sooner.

While there are some product segments where quality has increased over the decades like autos or computers that is often offset by huge increases in repair costs, if it is even possible.

#shrinkflation #crapflation #inflation #righttorepair

@phl @badlogic there is yet another facet of this - products that are increasingly sold like printers, razors, air and water filters - cheap upfront cost but combined with a consumable component that forces you to take out a subscription or have regular expense to replace the consumable.

Manufacturers try to stop 3rd parties selling compatible consumables so they have complete control of cost of ownership and end of life - forcing you to upgrade.

A similar thing happens with software updates.

@enmodo @badlogic There's also regional differences in quality (eg. a washing powder sold east or west of the former iron curtain, decades after that collapsed), and a couple years ago I think a bunch of people in Slovakia tried to look into this kind of tiered treatment, but I'm not sure anymore what came of it.
@phl @badlogic i once saw in a supermarket, a large sign with a breakdown of the cost of fruit and vegetables from farm gate to store. It may have been Carrefour, but certainly in France.
@badlogic @yawnbox the price hikes the achieve with this method is sometimes crazy… some products are 40%+ more expensive

@badlogic @LordCaramac

The amount of plastic used looks the same. Haven't manufacturers heard that plastic has contaminated every environment on Earth?

Of course, they have. But...

@badlogic OK, anyone interested / involved in #economics, #data #inflation really, really has to read through this thread (ooh, any #EU based reporters watching).

Fantastic and very interesting results here on prices over time in supermarkets (Austria mainly here).

I wonder how this might apply in Ireland?

#mastodaoine #costofliving . I know, too many hashtags, but this thread has it all.

👏👏👏 to @badlogic

@badlogic The supermarkets used to send people with clipboards round to each other's shops to write down the prices. These days they can just scrape each other's web sites. If they so choose they can then programme their systems to put up their own prices to match without any human intervention, other than that someone has to change the prices on the shelves.
@TimWardCam we have digital price tags now. No need to manually change them in stores either anymore.
@badlogic Ah, I wouldn't know. I haven't been inside a shop since the plague started.