Golf tech, in the open.
The maps, distances and course data that golf software runs on sit behind licences and logins. We build the open versions instead — and the apps that prove what they are good for. Everything is public, forkable and free to mirror.
two projects·public repos·no account, no key·data stays under ODbL
OSM Course Mapper
Turn a course you know into accurate OpenStreetMap geometry, one hole at a time — without learning what a way is or what golf=bunker means.
Golf courses are among the worst-mapped common features in OpenStreetMap: thousands have a boundary and nothing inside it. The people who could fix that are golfers who know one course intimately, and they are exactly the people existing editors turn away.
So this tool asks golf questions instead. Pick a course, see what OpenStreetMap already holds, draw the line each hole plays — and get back proposed polygons for the green, tees, bunkers, water and fairway, segmented from public-domain aerial imagery and checked against the course's own scorecard.
npm ci npm run dev # http://localhost:5173 # feature detection is optional — the app runs # browser-direct against public APIs with no key
The upload path is deliberately not built. Contributor decisions — confirmed and rejected, with geometry and imagery provenance — persist server-side, so the record accumulates while the write path stays deferred.
Reviewing hole 1 · the drawn line measures 553 yd along OpenStreetMap's geometry against 484 yd on the card — the tool says so instead of picking one.
Principles the code holds to
These are not aspirations. They are enforced in the code and pinned by tests.
A machine proposal is never drawn as settled
Proposals render amber and dashed, deliberately outside the palette used for what a human confirmed. There is no batch confirm anywhere in the app — that is what keeps this a mapping assistant rather than a bot import.
Detection is an offer, never a gate
Proposals, "nothing here", a timeout and an outright failure are four different states the interface states plainly. All four leave the hole mappable by hand.
Nothing is invented
A course with no boundary comes back absent rather than with a shape drawn for it. A hole that cannot be confidently identified draws no geometry at all — the wrong hole is worse than no hole.
Identification refuses rather than guesses
A single bounding box can return seven golf courses, so a course is adopted only on a confident name match. The same rule runs per hole: par sequence first, course name second, nothing third.
A caddie you never look down at.
The mapper exists so this can. Next we are building a golf app for the Even Realities G2 smart glasses, reading the same open course geometry anyone else can pull.
Front, middle and back on the lens while you stand over the ball. No wrist, no phone, no subscription to a course database somebody else owns. Design is underway — the repo opens with the first commit.
Follow the build- Green front, centre and back
- green polygon
- Carry to clear the bunker
- hazard polygons
- Where the hole turns
- playing line
- Par and yardage per tee
- scorecard
Every one of those comes out of the mapper. Map a course you play and the glasses know it — for everyone, not just us.
Built by people who count their own putts
You do not need to write code to help. Map the course you know best — the tool asks you golf questions and files the geometry for you. If you do write code, the detection service, the geometry module and the review flow all have room.
Browse the repositoryMap a course
Pick a US course you play, draw eighteen lines, confirm what the imagery found. An evening's work leaves a course mapped for good.
Take a rough edge
Two are written down: the Overpass query strains on dense clubs against an eight-second budget, and detection quality varies with what the imagery happened to see.
Mirror or fork it
Nothing here depends on us staying interested. The data lands in OpenStreetMap; the code is yours to run.