Schwerin" ... keine leichte Kost... https://www.stasi-unterlagen-archiv.de/assets/bstu/de/Publikationen/SIDR_05_M-V_barrierefrei.pdf
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..
like this
felix b. ohmann and Steffen Voigt like this.
reshared this
Paralax^SD, Gergely N..., Jurie Horneman, halcyโ:icosahedron:, Kill cars for climate!, totetmatt, Herr Irrtum!, Graham Sutherland / Polynomial, Mark Hughes, Jeroen Massar, Andre Weissflog, Steffen Voigt, demofox, Robin-Yann Storm, Ekkehard Brüggemann, tecteun, Cory Doctorow and winden^capsule^batman.group reshared this.
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...
reshared this
Kill cars for climate! and demofox reshared this.
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.heisse-preise.io
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
Graham Sutherland / Polynomial reshared this.
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...
Cory Doctorow reshared this.
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...
reshared this
Daniel Gibson, Kill cars for climate!, mnl mnl mnl mnl mnl and demofox reshared this.
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.
Cory Doctorow reshared this.
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.
Cory Doctorow reshared this.
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.
Cory Doctorow reshared this.
We could show shrinkflation, meaning products with less content are sold for the same or even higher price.
Examplified by e.g. laundry detergent.
Cory Doctorow reshared this.
Cory Doctorow reshared this.
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.
Cory Doctorow reshared this.
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.
Cory Doctorow reshared this.
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
reshared this
totetmatt and Cory Doctorow reshared this.
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.
Cory Doctorow reshared this.
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?
Cory Doctorow reshared this.
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.
Cory Doctorow reshared this.
All that media coverage of my platform and the platforms of other people, with whom I've started to converse and who've became friends of sorts, triggered the competition authority of Austria.
You know, the guys and gals who's job it is to sniff out anti-competitive behaviour, cartels, price gauging and coordination and so on.
They contacted all of us to ask what we'd need to continue doing our work. They actually saw value in that.
We provided them with a shit ton of feedback.
Cory Doctorow reshared this.
The basic gist of that feedback:
- Legal: it must be legal for us to crawl and publish the price data the stores put out on the web in their online stores
- Technical: ideally, stores would be forced to put that data out in a normalized form, so matching and comparisons become easier. We already did that ourselves though, with some data science and heuristics, so no biggie if that doesn't happen.
Besides that feedback, I also send them a shitton of data and patterns I found.
Cory Doctorow reshared this.
I'm but a lowly computer nerd and lay person, and not someone with an economics degree. I simply handed the data over in the hopes their experts would figure this shit out.
Well. Today they presented their first preliminary report.
In it, they basically copied my long ass email with answers to their questions from earlier more or less verbatim. They agreed with my conclusions regarding what needs to be done on the legal and technical site.
Cory Doctorow reshared this.
And they also officially said it's very likely the grocery chains use automated systems to follow each other in prices.
No word on the other data. We'll find out what they think end of October when the full report is scheduled to be released.
Now, here's how the chain of command works in this sector.
The competition authority is apolitical but under the reign of the politically appointed minister of economics. They can only report and suggest to him.
He then decides what gets done.
Cory Doctorow reshared this.
The suggestion by the competition authority to the minister was great:
1. Using the data should be made legal by the legislature for certain parties, including price comparison platforms and academic institutions.
2. Grocery chains of a certain size must publish all their data in real-time according to a predefined scheme with all necessary meta data to make things comparable and allow matching of products across stores.
Fantastic! Or so I thought.
Cory Doctorow reshared this.
Remember the chain of command. The minister decides what actually gets done.
And that minister is a member of the conservative party. You can already guess what gets done, right?
His plan:
1. The grocery chains must publish data. But only for a hand-picked list of basic products. Not the entire sortiment, like we do now.
2. Platform owners can be sanctioned/sued if they display the data the wrong way.
There's are only two up-sides in all of this.
First of all, the minister initially planned to create a price comparison platform "himself". This would have meant that some company he's buddy buddy with would have gotten a million Euro contract and delivered an abmysal failure of a system.
He's now given up on that.
The second upside: as soon as media coverage of our efforts picked up, the price hikes stopped for the most part. I'm obviously not entirely attributing this to our work. But I like to think we played a part in it.
I don't have a sound cloud, but I have another little project.
We have a charity where we ask for donations which we convert into โฌ50 grocery vouchers for Ukrainian families that fled to Austria. Our state fails them as well.
We are zero overhead, every cent goes towards the vouchers. We pay the rest (envelops, stamps, printer cartridges, etc.)
We are 100% transparent, all contracts/orders/bills/payments here:
https://drive.google.com/drive/folders/1PxOL8A44bIRU1Hdoq87_2iXSLNmnMXQr?usp=drive_link
Bunch of friends doing stuff.
Cards for Ukraine
Tanja Maier sends โฌ50 grocery vouchers to Ukrainian refugees in Austria.cards-for-ukraine.at
reshared this
Richard Kogelnig reshared this.
Yeah, the irony of sending grocery vouchers for the same grocery stores that I go up against with my platform is not lost on me.
Anyways, we've been able to send out ~4500 vouchers in a bit over a year to as many families. That's about โฌ220,000 worth of donations.
~6000 families have signed up with us, about 1500 are still waiting for a voucher.
If you can spare some money, here you go:
https://cards-for-ukraine.at/donate
The latest batch went out today. CW link to shitbird site
https://twitter.com/badlogicgames/status/1702670312981049561
Cards for Ukraine
Tanja Maier sends โฌ50 grocery vouchers to Ukrainian refugees in Austria.cards-for-ukraine.at
Oh, and if you want to do this for your own country, you can re-use what we build so far!
https://github.com/badlogic/heissepreise
Happy to help if you need guidance! Adding a store is usually less than 200 LOC if they have a search API in their web store.
https://github.com/badlogic/heissepreise/blob/main/stores/billa.js
GitHub - badlogic/heissepreise: Jo eh.
Jo eh. Contribute to badlogic/heissepreise development by creating an account on GitHub.GitHub
We have an app called Instashop, it's a grocery ordering app, but they don't have their own stock, instead they let you search for nearby stores and see their catalog and passes the order to them.
Not just that, they've also normalized products across stores so you can search by product and see where it's available and its price.
The app also works for local pharmacies (most things are over-the-counter here) and bakeries and more.
https://instashop.com
Wow .. what a read. Do you know about Project Galileo to help you out protecting the site/servers/... ?
https://www.cloudflare.com/galileo/
Project Galileo
Through Project Galileo, Cloudflare provides free cyber security services to organizations supporting the arts, human rights, journalism, and democracy.Cloudflare
you have absolutely no reason to apologize. You did the work. You potentially changed the lives of thousands or even millions of people for the better.
You did good and you deserve nothing but praise, regardless of code quality.
BRB, forking it to rewrite in typescript. ;)
Your whole story is amazing. Everyone should read this!
If I can do just a fraction of what you have done for your fellow humans, I'll feel that I've lived a useful life. That's the aim. :)
@DavBot I'm all for that. That's why this is OSS and easy to self-host. Adding a new store is usually less than 200 LOC (code quality is terrible tho :D)
https://github.com/badlogic/heissepreise
GitHub - badlogic/heissepreise: Jo eh.
Jo eh. Contribute to badlogic/heissepreise development by creating an account on GitHub.GitHub
You can find an unrolled version of this thread here:
https://mastoreader.io/?url=https%3A%2F%2Fmastodon.gamedev.place%2F%40badlogic%2F111071396799790275
This is amazing. Thank you for doing this!
I believe a lot of supermarkets here (in BE) have API's... hmmmz.
Thanks for your incredible job.
I wish more people where educated to act like you! You are doing such an important job!
Keep it up, you have all my support!
https://mastodon.gamedev.place/@badlogic/111071710471971197
This is a long and interesting thread worth reading.
Great work that @badlogic@mastodon.gamedev.place did. And not enough by itself he's using it to advertise a good cause he's working for, helping people who had to flee from there homes.
What a shame for our democracies that a guy like this needs to waste a single **thought about being sued **for analyzing public available data.
And that was my story. Thank you for coming to my TED talk. And don't spend your holiday money in Austria, we suck.
Thank you for sharing this great story!
I would love to host one talk about it at @fosdem conference in the room I co-organize about Open Research @FosdemResearch in Brussels Feb the 3rd 2024 or online Feb the 10th 2024.
We organize this session to discuss how research (of any kind: acamedic, activism...) is shaped by #FLOSS or #opendata development or use.
Please consider joining us and feel free to contact me if needed.
All details here: https://research-fosdem.github.io/
Open Research Devroom
A place to discuss the creation and use of Free Libre Open Source Software in research context: science, investigative journalism, activism, OSINTโฆOpen Research Devroom
also in the US there is a rather nefarious pricing scheme that happens at some big stores - where prices for the same products vary from physical store to physical store of the same chain. (And prices for many products will differ when priced for delivery whether same day or by mail from the in store prices. Which makes looking at their websites or apps for prices even less reliable.
(And some companies do things like send you a discount if you merely open their website once)
the dual-role mayor/Landeshauptmann thing which the other parties hate but only because they want it to be *their* personal fiefdom instead.
did you see the report by the IMF (yes, the Internationale Wรคhrungsfond) that half the inflation was caused by company profits? https://www.draketo.de/politik/kommentare#inflation-unternehmensgewinne-iwf
https://www.imf.org/en/Blogs/Articles/2023/06/26/europes-inflation-outlook-depends-on-how-corporate-profits-absorb-wage-gains
Itโs crazy that that story didnโt already get people riled up, but it seems they have to see *how* it happens and get a news anchor (2 hours vs. 2 months) to find it, and you showed that beautifully!
Europeโs Inflation Outlook Depends on How Corporate Profits Absorb Wage Gains
Higher prices so far mostly reflect increases in profits and import costs, but labor costs are picking upIMF
@interfluidity That's just a bizarre use of government regulation when we have more information than we've ever had and you could easily create a website to track this stuff.
also a grocery chain that had superior price transparency could already have a competitive advantage so I still don't see a market failure.
@cshentrup That's... not neoliberal. Perfect information is an assumption of the models. There are not well supported models under which superior transparency is a reliable competitive advantage.
The author of the original thread literally did create a platform to track this stuff. What he wants to "force" is publication of that information online so that chains can't obfuscate/opt their way out of it.
@cshentrup convenient information from a store is not price transparency. price transparency means that consumers know all the prices across the market so they can choose among competing suppliers.
i'm glad your store offers you convenient options and tells you the prices they will charge for them! but having the price at the point of sale is very far from price transparency. (it's astonishing we have markets โ e.g. health care โ where we don't even have that!)
@interfluidity so being able to conveniently compare prices across countless stores from my computer is not transparency?
and creating a website where I show the average price for a basket of identical goods at 5 to 10 local grocers also doesn't count?
hmmm.
@cshentrup All that the author is asking to "force" is maintaining the technical capacity to create the latter at large grocery chains.
Not much of a coercion by the leviathan, perfectly justifiable on orthodox neoliberal grounds. Prices should be posted. Here's the public space, the inexpensive modality, by which you are to post them.
Not much of a bite by the overweening leviathan.
@cshentrup that is very expensive. and prices can change frequency.
creating those kinds of market frictions is how firms undermine the perfect competition neoliberal models rely upon, discrediting them as a practical matter.
i no longer call myself a neoliberal (i might once have), but if you want to support the cause, this is exactly the sort of intervention you should support, the kind that makes some approximation of perfect competition real.
@interfluidity I don't see how changing them week by week is going to appreciably change their RELATIVE cost. I live within cycling distance of two different whole foods, a new seasons market, a market of choice, a Fred Meyer...
Fred is always going to be the cheapest of those any week of the year. followed by market of choice followed by new seasons followed by whole foods.
@cshentrup Walmart famously cultivated a (deserved) reputation for everyday low prices, made its profits by strategically raising prices on subsets of goods, relying on the everyday low profits reputation to draw customers in who would presume these goods would be around best-price when they were not.
Fred Meyer has an opportunity with u to do the same!
Under competitive markets, relative prices certainly wld vary btw stores offering similar quality+services. (WF is a different amenities tier)
@cshentrup well, we'll disagree but let's be nice about it.
i am not a neoliberal, who thinks markets should be left alone but for narrowly circumscribed failures.
i am more Polanyian these days, i think markets are polymorphic beasts that states must shape and manage to yield prosocial outcomes, and encouraging price transparency (as much with carrots as sticks) in one useful way they can do that.
@cshentrup even more deeply than about markets, we disagree about social welfare functions and there inherent dependence on inherently neither objective nor scientific values, and about the use and authority of what purports to be objective science in social affairs.
we've debated that _ad nauseum_ before (a bit here, more on the QSite). i have little interest in picking it up again.
@interfluidity You can't disagree about objective facts.
and you can't merely criticize my utility function, you have to propose an alternative and show how it better fits the data. You couldn't do that to save your life.
@cshentrup people debated policy long before Bentham coined the notion of "utility". the distinction between utility and welfare i describedโutility is positive, a construct deployed to predict and describeโwhile welfare normativeโabout prescribing, which inherently depends upon valuesโis what you would learn in any welfare economics class. my salad is very popular, and its dressing is very orthodox.
(tbf, Bentham used utility normatively, and most of us slip up on the distinction often.)
@interfluidity policy isn't about prescribing anything. it's about determining the optimal policy, regardless of whether you prescribe it.
we could discover a new optimal treatment for cancer and not necessarily prescribe it to people. You're confusing two different activities.
Steffen Voigt
in reply to Steffen Voigt • •Nico Erfurth
in reply to Steffen Voigt • • •Steffen Voigt
in reply to Nico Erfurth • •felix b. ohmann
in reply to Steffen Voigt • • •Steffen Voigt likes this.
felix b. ohmann
in reply to felix b. ohmann • • •Steffen Voigt likes this.
Steffen Voigt
in reply to felix b. ohmann • •