From 2,565 to 17,442 businesses on the map, without anyone typing one

A city business map held 2,565 records, every one typed by hand. After two public data loads it holds 17,442, and 15,360 of those sit on the map at a real point.

Nobody typed anything. Both files are public and free.

The first file says who exists

The Brazilian federal revenue service publishes the company registry. From the August 2026 release came 16,679 active establishments in the city, 14,876 of them new and 1,803 already known and updated, with tax regime, size and partners.

That answers who exists. It does not answer where, because the address arrives as text and text does not draw a point on a map.

The second file says where

The national statistics institute publishes CNEFE, the address registry of the 2022 census, with a coordinate per address. Crossing the two moved 11,749 businesses to the real point of their address. Before the cross, 11,177 showed on the map. After it, 15,360.

The part nobody writes about

The interesting bit is not what matched. It is what fell outside, and the rule you apply to it.

How the coordinate was found Businesses
Postcode and number, street name verified 9,667
Street and number 2,634
Manual points left where they were 526
Only a neighbouring number on the same street 1,456
No point in the census registry 3,685

The 1,456 on the fourth row are the decision that matters. The registry holds number 340 on the street and the business sits at 342. We could have placed the point on the neighbour. Nobody would notice, and the map would look fuller.

We did not. The rule here is real coordinates only. An approximate point looks exactly like a correct one, becomes indistinguishable afterwards, and somebody is going to drive to it. I would rather have a business off the map and inside the list than a business in the wrong place.

The 526 manual points also stayed put, and they served as calibration. The median distance between a point a human marked and the census point came to 17 metres, which says the automatic cross is no worse than the human hand.

If you are going to do this

The data is public, large and bad-tempered. The work is in processing, not downloading.

Decide the “nearly matched” rule before running the load, and write it down. Afterwards, with a full map in front of you, the temptation to round grows.

Record why each point was written. Without that you audit nothing and improve no future load.

Need this solved at your company?

A twenty minute call is usually enough to tell whether it makes sense, and you talk straight to the engineer who builds it.

Talk to the studio ↗︎