Send us the source
Brief 01 What was hard 02 How it works 03 Numbers 04 Outcome 05 All cases → Send us the source

Atoms / Data extraction / Cases / Allegro

Marketplaces — running since 2022

Allegro — competition at the offer level.

On a marketplace where the same product is sold by forty accounts, the product price is meaningless. What decides whether a sale happens is the specific offer — its delivery terms, its badge status, its position — and that is what the client's pricing team had never been able to see.

The source is named because it is public; the client is not. Every figure on this page is a measured production number the client agreed to publish. Have a source of your own? Send it over, whatever its size — you get an answer within 24 hours.

Case fileallegroIn production
SourceAllegro
ClientElectronics retailer
Running since2022
DeliveryPostgres, 4× daily
Offers tracked64M
RefreshEvery 6 hours
Reach → Read → Reconcile → DeliverRecounted daily
96B

offer records since 2022

31B

a year

98.8%

measured coverage

84M

records a day

SourceAllegro
VerticalMarketplaces
Running since2022 — without a rebuild
The brief01 / 05

What the client actually needed.

Not more rows. Every one of these projects started with somebody who already had data and could not use it for the decision in front of them.

The problem

Where it started

The client sells electronics on a marketplace where they compete with dozens of accounts on identical SKUs. Their pricing tool worked from product-level prices, which meant it could see that they were being undercut but never by whom, on what terms, or whether the cheaper offer was actually winning any traffic.

Fixed on day one

What we committed to

Every competing offer on tracked products, not the cheapestAll offers
Delivery terms and badge status captured per offerEvery offer
Refresh frequent enough for a same-day repricing loop4× daily
Seller identity retained across offer changesPersistent

Every one of these is measured continuously and reported on the same dashboard the client watches. A commitment nobody measures is a sentence in a proposal.

What was hard02 / 05

Four things that beat the previous attempt.

None of these is solved by better headers or a bigger proxy pool. Each needs a different piece of engineering, and working out which one you are actually facing is most of the job.

01 — DepthDepth

Forty offers behind one price

The visible price is one offer out of many, and the competitive picture the client needs is the whole list — which costs an order of magnitude more to collect than the headline.

What we doOffer-level collection restricted to the products the client actually competes on, with the set maintained automatically as their assortment and their competitors' change.

02 — TermsTerms

Delivery changes the comparison

Free delivery, delivery time and badge status shift which offer wins regardless of price. A price-only comparison explains nothing about why the client is losing.

What we doDelivery terms, badge status and handling time are captured per offer and delivered alongside price, so the pricing model compares landed propositions rather than numbers.

03 — IdentityIdentity

Sellers rename and relist

Competing accounts change display names, split into multiple accounts and relist their offers, which breaks any tracking keyed on what is shown.

What we doSeller identity is maintained on stable identifiers with a history, so a rename is a recorded event on one entity rather than the appearance of a new competitor.

04 — CadenceCadence

Four times a day, whole catalogue

A same-day repricing loop needs the competitive picture to be hours old, not a day, across millions of offers.

What we doRefresh priority follows competitive intensity: contested products are swept every six hours, uncontested ones daily, with promotion driven by observed movement.

How it works03 / 05

Five decisions the pipeline is built on.

The architecture is not interesting; every extraction system has a queue, a fetcher and a parser. These are the decisions that made this one work where the last one did not.

01

Collect offers, not products

The unit is the offer. Product-level collection is cheap and cannot answer the only question the client has, which is who is beating them and how.

02

Capture the whole proposition

Price, delivery, badge and handling time are collected together, because the customer's decision uses all four and a pricing model that sees one of them will keep being surprised.

03

Track sellers as entities

Stable identifiers with history mean a competitor renaming or splitting accounts is visible as an event rather than as a new arrival.

04

Prioritise by contest

Products where offers move get six-hourly refresh; quiet ones get daily. The set is maintained automatically as competition shifts.

05

Close the loop same day

Data lands four times a day into the client's repricing engine, which is what makes a competitive picture actionable rather than historical.

The numbers04 / 05

What it does on an ordinary day.

Production figures, not a benchmark run. Coverage is recounted daily against an independent sample of the live source rather than asserted, which is why the numbers are not round.

Daily profile

Where the volume goes

Offer records a day84M
Requests a day6.8M
Offers tracked64M
Products in the contested tier840k
Requests refused by the source0.6%

One product page carries every competing offer — about twelve — so 6.8 million requests a day, 79 a second, yield 84 million offer records: 2.5 billion a month, 31 billion a year, 96 billion since 2022. Only 840 000 contested products get the six-hourly cadence; the rest of the twelve-million-product catalogue is swept once a day, which is the difference between a bill the client can pay and one they cannot.

Headline

The four that are contractual

Records since 2022
96B
Coverage
98.8 %
Offers
64M
Attributes / offer
7

These four sit in the support agreement. When one of them drifts outside its band, we are alerted within fifteen minutes and fixing it is routine work under the monthly arrangement, not a change request.

What changed05 / 05

Before, and after.

The columns are the client's own numbers from before the rebuild and the measured ones from production today. The left column is the part most vendors would rather not put on a page.

MetricBeforeToday

Competitive view

Cheapest price per product

Every offer, with terms

Repricing loop

Next day

Same day, four cycles

Competitor tracking

Broke on rename

Persistent identities

Losing without knowing why

Routine

Explained by terms or badge

Roughly a third of the cases where the client was losing turned out not to be about price at all. They were about delivery time, which nobody had been measuring.

Start here

Have a source of your own? Two lines are enough.

Send the source, the fields you need and roughly how often. You get a straight answer within 24 hours: whether it can be done, what makes it hard, what coverage is achievable and roughly what it costs to build and to run. Whatever the size.

Direct

NDA before technical detail, as always. If it isn't our kind of work, we say so in the first reply.