Blog · 31 March 2026 · 2 min read
Mapping hidden tennis courts in Larnaca with YOLO and Mapbox
A Python CLI on Mapbox tiles found 49 courts in 12 minutes — GeoJSON, confidence scores, and a path to rentals for players and independent coaches.
tennis · Cyprus · computer vision · YOLO · Mapbox · GeoJSON · side project
Tennis courts in Cyprus are weirdly hard to find if you want to have a private lesson with an independent coach.
Before Cyprus Independence Day, I built a tool to liberate private tennis lessons and empower my friends and community to grow.
Most courts belong to academies that block external coaches. Permits for new courts are almost impossible, even if you have funding. Private and hotel courts often do not appear on any map at all.
I love tennis, so I wanted a complete map of every court, including abandoned ones, so I can negotiate rentals, restore them, and open access for local amateur players and independent coaches.
To solve this, I trained a YOLO detector on the DOTA aerial imagery dataset to identify tennis courts in satellite images. Then I built a Python CLI that pulls Mapbox satellite tiles for any area, runs inference tile by tile, and returns GPS coordinates with confidence scores.
Everything runs from one command. Geocoding, tile fetching with local cache, oriented bounding box detection, deduplication, and GeoJSON export. I ran it on Larnaca and nearby towns. Result was 49 courts found in 12 minutes. Each result is clickable in Google Maps.

Model training took about 3 hours on an RTX 3060 12GB. Full build took 4 hours in Cursor.
This is a fun side project. My core focus is still building a global affiliate discovery platform at https://breezy.io. But this kind of project gives direct value to a local community of friends, players, and coaches.
Next step is computer vision for infrared drone footage. Goal is early wildfire detection and locating people in open water for search and rescue. I will use my consumer DJI drone as the first prototype.