What is measured
Two ratios, and the same two said as money. Calories per leu is the energy of a portion divided by what it costs. Protein per leu is the same with the protein. The cost of 100 kcal and the cost of 10 g of protein are those two turned upside down, which reorders nothing and reads better for some people.
Two more lenses sort by the calories a portion holds and by its protein. Value for money is one question and whether something is a meal is another: the top of protein per leu is often the cheapest item on a menu carrying eight grams of it.
Two lenses go the other way and put the least first, each on a share of the portion's weight rather than on grams. Least carbohydrates asks what part of the portion is carbohydrate, and least sugar what part of it is sugar, so a plate of food is not beaten by a mouthful of the same thing. The grams of carbohydrate -- what a dose is worked out from -- are on every row whichever lens is chosen; on these two the grams of sugar are beside them.
Least first is the one order that brings a wrong figure to the top instead of burying it, so these two leave out drinks and sauces, anything no category places -- an extra of 50 g of cheese carries less carbohydrate than any meal, by the nature of being an extra -- and any product whose own figures disagree: more sugar than the carbohydrate it is part of, or energy more than 30% away from what its protein, carbohydrate and fat add up to. They are the chains' figures, sorted, and not dietary advice.
Which units the two ratios are written in is a choice kept in your browser rather than in the address, like the theme. It reorders nothing: the cost of 100 kcal is the reciprocal of calories per leu.
The ranking is worked out when you ask for it, never stored. A promotion that ends at midnight stops counting at midnight, with nothing scheduled to make it so.
Nothing is held back from it by price. The ranking had a floor for a while -- seven lei, stated in a box on the page -- and it is gone: a figure that quietly removes a tenth of the catalogue is a figure the reader has to know about before the list means anything, and most never pressed it. What can be held back instead is a whole category, by an editor, and sauces were the first: a 100 ml pot of dip is 691 kcal for 14 lei and beat anything anybody would call lunch. A category taken out is not offered in the filter either, and its products stay on their own pages and in the offers.
What a product is
The platform gives the heading a chain printed above a shelf, and the chains agree neither with each other nor with themselves: SOSURI, "Cartofi, Snacks și Sosuri", and 136 more. Filtering by those would be filtering by one chain's vocabulary.
So each product is filed under one of thirteen categories, from that heading and from its own name: a heading counts for more, because it is what the chain meant, and the name settles the headings that name three things at once. A product neither places is left unfiled and keeps its chain's own heading rather than being guessed at. An editor can also put a product under up to two more of them, and filtering by either finds it there too: McDonald's Hamburger, filed under For children by its Happy Meal shelf, is also under Burgers. It is still counted once, under its own category, and ranked once.
Where the numbers come from
Menus, prices and stock come from the delivery platform the chains publish on, read five times a day in each of 38 cities, at the hours menus change. Each restaurant states its own menu, so a price belongs to a branch rather than to a brand, and a product's price here is the least any branch is asking for it. Choosing a city quotes that city's own price.
Nutrition comes from the product's own screen on that platform, where a restaurant declares it. It is asked for one product at a time, only for products nothing is known about, and at most forty in a run: menus are cheap to read and declarations are not.
Discounts are read from the same menus, per restaurant: a branch running something at half price does not change what another branch charges. The platform states no dates for them, so an offer here starts when it was first seen and ends on the first read that no longer carries it. The ones running now are on a page of their own, gathered back from the branches into offers.
Declarations are entered per restaurant, and branches of one chain disagree. The same products at the same prices carry protein in one city and leave it blank in another, so every city is read and a product with something missing is asked about elsewhere.
How it is read
Only what the platform shows anybody who opens it: the pages of its website, and the requests that website makes for a visitor with no account. Nothing is ordered, nobody signs in, and nothing about any customer is read. Requests go one at a time with a pause of a second or two between them, and the reader waits longer whenever the platform says it is being asked too much.
The chains' own nutrition documents are fetched once a week. Both readers go by the same name, which says what is asking and links to this page: Mozilla/5.0 (compatible; LeuLaFarfurie/1.0; +https://leulafarfurie.com/method).
What is thrown away
These figures are typed in at the restaurant's end, and some of them are impossible. A product declaring more than 100 g of macronutrients per 100 g of food, more than 40 g of protein, more than 10 g of salt or more than 900 kcal is not describing food; the highest legitimate protein across four chains is 22.4 g. Nothing near those limits is a nutritional opinion.
One fault looks like an opinion and is not: a chain reporting 1.4 g of protein beside 14.9 g of salt for fried chicken has that row's two columns the wrong way round. The energy is kept, since it is stated separately and agrees with its own macronutrients, and the protein and the salt are dropped. The product stays in the calorie ranking and leaves the protein one.
Some restaurants declare the whole portion under a heading that says per 100 g. Which one a restaurant means is settled by proof rather than by correlation: one product whose figures cannot describe 100 g of food settles it for the whole restaurant, and a branch with nothing to prove it takes what another branch of its chain established.
What is not here
Subscriber-only prices are read and not quoted: an offer conditional on a subscription would rank a product at a price most people cannot pay.
Portions are quoted, never assembled. Where a menu states one weight it is used; where it lists several, one per component, nothing is recorded, because adding them up would publish a number the chain never did. That is why a large part of some menus carries a price and no figures.
The exception is a recipe somebody wrote down. A menu is a burger, a side and a drink, the platform declares nothing about the menu and frequently declares all three, and no reader of text can match them up because a menu names a choice rather than a product. So an editor names the parts, the figures are added up from them, and every page that shows one says it was added up rather than declared. A total comes out only where every part carries a figure, and a declaration about the menu itself replaces the sum the moment one appears.
A weight is not always needed, though. Where a restaurant has been proved to state whole portions rather than per 100 g, its figures already are the portion, and a product whose weight nobody wrote down is ranked on them. The checks that catch a crossed protein and salt column are arithmetic on a weight, so without one that pair is dropped: the product is ranked on calories and left out of the protein ranking.
Prices are shown as the branch charges them, without delivery fees, which depend on where you are rather than on what you order.
Every figure on the site says when it was last confirmed, and a price nobody has seen for a fortnight says so on the row.
Allergens
What a product contains comes from the chain's own document, the one the law obliges it to publish, and from nowhere else: the platform's menus say nothing about allergens. It is the fourteen the regulation names, as the chain states them beside each product, and what the chain says a product may carry traces of. The names a document prints are matched to the menu's the same way its figures are.
None of it is shown until a person has checked that the names were matched to the right products. That is done once per document, and again whenever a document is read and says something different. So far that is 14 of the 14 chains whose documents are read.
A product no approved document speaks for is marked as not known, and not known is not free from: it means nobody has said. Avoiding an allergen hides what a document says contains it, and what it says may contain it when traces count too. What nobody has declared stays in the lists, marked, because most restaurants declare nothing. Where a document leaves unclear whether it means an allergen or a trace of one, it is read as containing it.
What you avoid is kept in a cookie on your device and nowhere else, and can be changed here. It repeats what the chains publish, it is not medical advice, and a restaurant can tell you more than its document does.