Give a geocoder an address and it gives you a latitude and longitude. Give it a bad address and it usually still gives you a latitude and longitude. The two look identical, and everything downstream treats them identically, which is how a territory system ends up confidently wrong.
The levels, and what they actually mean
Rooftop. The geocoder matched this specific address to a known building or parcel. The point is on the property. This is what you want and it is not always available.
Interpolated on the street. The geocoder knows the street and the range of numbers on the block, and it estimated where number 412 falls between them. The point is on the right street, usually within a few tens of metres, and it assumes the numbers are evenly spaced. On a rural road or a block with a long driveway, it is not close.
Street or locality centre. The geocoder recognised the street or the town and nothing more specific. The point is an average, and the address you asked about could be anywhere along it.
Postal area centroid. The geocoder fell back to the middle of the postal code. For a code covering half a county, the point can be miles from the address, and it will still sit convincingly inside a territory.
The difference between the first and the last is the difference between a decision and a coin flip, and both are returned as two numbers with the same number of decimal places.
Why decimal places tell you nothing
A centroid comes back as 37.540725, -77.436048. Six decimal places is about a tenth of a metre. It is an average of an area miles across, expressed to the nearest ten centimetres.
Precision of representation is not precision of knowledge. Any system that infers confidence from the format of the number is inferring it from nothing.
The rule
Carry the precision alongside the point, and let the consumer set the threshold. There is no single right answer, because the cost of being wrong differs:
- A marketing page asking “do you serve me” can accept a locality match. If it is wrong, somebody fills in a form that gets corrected.
- Assigning an account in a CRM should want street level at least. If it is wrong, a salesperson calls the wrong prospect and it is noticed.
- Dispatching a van should want rooftop, or an explicit confirmation. If it is wrong, somebody drives.
Same address, same geocoder, three defensible thresholds. That only works if the precision travels with the answer.
What to do at each level
Rooftop or street: decide. This is the answer.
Locality or postal centroid: decide only if the answer is the same across the plausible area. If every territory nearby belongs to the same branch, the imprecision does not matter. If the point is near a boundary, it does, and the right output is that the answer is uncertain rather than a guess with a clean face. This is more useful than a threshold, because it distinguishes an imprecise address in the middle of a large territory from one on an edge.
No match: say so. Do not fall back to something. A system that always returns a point has converted a loud failure into a silent one, and the silent one costs more. See lead routing accuracy for why.
Things that quietly reduce precision
Unit and apartment numbers in the street line. Many geocoders will not match “Unit 4, 200 Main St” and will fall back to the street or the postal area. The address was fine; the parsing was not.
Postal code in the wrong field. Sends some geocoders straight to the centroid.
A country that was assumed. A blank country field defaulted to the wrong place puts the address on another continent, or fails to match and falls back.
New addresses. A development finished last year is not in a dataset built the year before. Rural addresses and new builds are where rooftop coverage drops, and they are disproportionately where service businesses work.
The one thing worth building first
Not a better geocoder. Store what you got: the precision, and what the geocoder matched, next to every decision you made from it.
The day somebody asks why an address was routed the way it was, that field is the answer about half the time, and without it every investigation starts by re-geocoding an address against a dataset that has since changed.