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.