Tech · case study
Bull Compass
Two maps of the same villages, and the next centre falls out of them.
Deciding where to open a collection centre used to go on memory and last season's habits. The data to do it properly existed, in the government's village-level crop estimates, but with Gujarati village names that matched nothing on a map.
Bull Compass matches that data to real village polygons and puts two maps side by side: where the castor is, and where Bull already buys. Point it at a factory with a radius and it lists every village inside, sorted by castor area, and tells you which ones Bull already works.
Before
- Centre locations argued from experience.
- Government crop data unusable: Gujarati names, no coordinates.
- No way to see Bull's own trade on a map.
Now
- Castor area for every village, shaded on the map.
- Bull's own purchases by village on the second map.
- Factory plus radius gives a ranked target list: Bull's villages, next-season villages, villages to confirm.
- Satellite estimates checked against what village entrepreneurs recorded on the ground.
How it works
Government crop data
Village-wise castor acreage in Gujarati script, one district at a time.
Match names to polygonsCheck
Exact match first, then suffix rules, then fuzzy matching with a high threshold, then a cross-district fallback. Uncertain matches go to a human.
Assign each village to a centre
Straight-line distance to the nearest Bull centre, no heavy GIS, so it runs anywhere.
Draw both maps
Castor area on one, Bull's trade volume on the other, same villages, same colours.
Point at a factory
Pick a factory and a radius. Every village inside is listed, ranked by castor area, tagged by whether Bull already trades there.
What it changed
- Centre expansion decisions are made from the map, not from a meeting.
- The field team sees where the crop is before the season moves, and plans visits by village.
- The same tool answered the question a factory partner asked: how much castor is within reach of its gate.
On screen


Built with Python with pandas and rapidfuzz, Haversine distance, Leaflet maps rendered from a 100 MB Gujarat GeoJSON, a browser-based cluster analyser with CSV export.