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 / Mercado Libre

Marketplaces — running since 2023

Mercado Libre — eight markets, eight currencies.

Eight countries, eight currencies, and in two of them a rate that moves enough within a month to make a monthly average meaningless. A pricing team comparing markets needs both the local number and an honest way to compare it — and the honest way is not a single conversion at month end.

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 filemercadolibreIn production
SourceMercado Libre, 8 markets
ClientConsumer-goods manufacturer
Running since2022
DeliveryBigQuery, daily
Listings tracked84M
Markets8
Reach → Read → Reconcile → DeliverRecounted daily
105B

offer records since 2022

35B

a year

97.9%

measured coverage

84M

listings tracked

SourceMercado Libre
VerticalMarketplaces
Running since2023 — 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 manufactures consumer goods and sells through resellers across Latin America, which means their retail price is set by other people in eight economies. They wanted to see it, and their previous attempt had converted everything to dollars at a month-end rate — which in the high-inflation markets made the numbers actively misleading.

Fixed on day one

What we committed to

All eight markets in one schema, local currency retained8 markets
Observed exchange rate stored with every price observationEvery record
Reseller identity retained so a price can be traced to a sellerEvery offer
Official and marketplace pricing distinguished, not mergedSeparated

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 — MoneyMoney

A rate that moves within the month

In high-inflation markets, converting at a month-end rate turns a stable local price into a dramatic dollar movement that never happened.

What we doEvery observation stores the local price and the exchange rate observed at that moment. The client can compute in local terms, in constant terms, or at any rate they choose, after the fact.

02 — SellersSellers

The price belongs to a reseller

A manufacturer's problem is not the average price, it is the specific reseller undercutting the channel. An aggregate figure hides exactly the thing they need to act on.

What we doReseller identity is retained per offer, so a price movement is attributable to an account rather than to a market.

03 — ShapeShape

Eight markets are eight sites

Layout, category structure and even what counts as an offer differ by market, and eight collectors is a maintenance problem waiting to happen.

What we doOne collector with per-market adapters: traversal, scheduling and schema shared, only the reading is local. Adding the ninth market is an adapter.

04 — ChannelChannel

Official and grey stock together

Authorised distributors and unauthorised resellers list side by side, and merging them makes the channel-conflict question unanswerable.

What we doChannel status is classified per seller against the client's own authorised list and maintained as that list changes, with unclassified sellers surfaced for review.

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

Store the rate with the price

Local price and observed rate travel together on every record. Converting once at collection time is convenient and destroys the client's ability to ask a different question later.

02

Attribute to the seller

Every offer carries a reseller identity, which is what turns a price report into an action a channel manager can take on Monday morning.

03

One collector, eight adapters

Shared traversal, scheduling and schema; local reading only. This is the same pattern that keeps multi-market collection from costing a multiple of single-market collection.

04

Classify the channel

Sellers are matched against the client's authorised list, and anything unclassified is raised rather than defaulted. Channel conflict is the question this dataset exists to answer.

05

Monitor each market alone

Coverage, fill rate and cost are tracked per market. In an eight-market aggregate, one broken market is invisible for weeks.

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 day96M
Requests a day9.2M
Listings tracked84M
Sellers classified2.4M
Unauthorised offers flagged a day1 900

Ninety-six million offer records a day is 2.9 billion a month, 35 billion a year and 105 billion since 2022, from 9.2 million requests — 106 a second across eight markets. Nineteen hundred flagged offers a day, 690 000 a year, sounds small until you realise it is a number the client's channel team had been unable to see at all. Most of it is legitimate resale; the point is that now it can be checked.

Headline

The four that are contractual

Records since 2022
105B
Coverage
97.9 %
Listings
84M
Rate stored
Per observation

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

Currency handling

Month-end conversion

Rate stored per observation

Price attribution

Market average

Per reseller

Channel conflict

Anecdotal

Measured daily

Adding a market

A project

An adapter

In the two high-inflation markets the client's previous dollar series showed swings that had never happened in local terms. Correcting that changed which markets the commercial team thought were in trouble.

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.