So I Built It.
How I stopped waiting for Willis Reed and took the rock myself.
Back in March, I wrote a piece about backcountry planning tools and how badly they serve the people who actually need them. AllTrails hands you a July trip report for a February objective. CalTopo hands you everything and explains nothing. The gap in the middle, a tool that can look at two points on a map and reason about whether the route between them actually works, sat there unfilled, and I ended the piece with a line I meant at the time:
“Someone should build this. I’m not the one to build it. But I’m watching.”
Last Tuesday, I built it. A working version of it. In a day.
Let me be precise about what I mean, because the internet is drowning in people overclaiming what they made with AI. I did not build an avalanche-reasoning engine. I did not solve the hard problem from the March piece, the one where software synthesizes snowpack history and loading patterns and tells you whether your specific line on your specific aspect is a good idea today. That problem is still hard. The people at CAIC still deserve better tools, and I didn’t make them one. Dammit, I’ll probably get there too.
What I built is the planning layer I’ve wanted for years and could never find: a route builder that runs in my browser, on real topo maps, that does what I tell it.
Click the map, and it drops a point. Click again, and the route snaps along actual trails real trail data, real elevation, a live profile drawing itself along the bottom of the screen. Drag a point, and the whole route reroutes. Set a target distance with a slider. Hit a button, and it mirrors the route back to the car, and the slider moves the turnaround point in real time while you watch the mileage settle onto the number you asked for. This isn’t new; yes you can do this in Strava and a few other biddies, but I wanted to start somewhere I liked.
Then the part I’m actually proud of. There’s a Discover mode: it finds real trailheads near me, pulled from OpenStreetMap, up to 120 miles out, generates candidate loops from each one, scores them, and hands me a stack of cards. Distance, gain, high point, difficulty, drive time. There’s a filter that throws out every trailhead below 8,000 feet, because I live in Denver and I am not driving to a suburban open space and calling it training. Hover a card and the loop draws itself on the map in blue. Click it, and it loads into the builder, editable. When it’s right, one button exports a GPX file that goes straight onto my COROS watch. I’ve done it. It loads clean. I have some bugs to work out here as sometimes the cards just say “trail head” which isn’t super helpful.
No account. No subscription. No pricing page. It runs against free public services, and it cost me nothing but the day.
Here’s the part that should get your attention.
The first version of Discover was hilariously broken. I asked for 8-mile loops and it offered me 62 miles, because mountain trail networks stretch a route far past what circle geometry predicts. Software, like everything else, meets reality and loses the first round. We measured the overshoot, scaled the search, re-tried. Now an 8-mile request comes back between 8.5 and 9.6.
Second round: I set the search radius to 118 miles and got nothing but city routes. The app was grabbing the five closest trailheads every time, and when you live in a metro area, closest-first means the city wins forever. We had to teach it that “near me” should mean the far bands too, sample one trailhead from each ring of distance, near through far. That’s a sampling-bias problem. The app didn’t understand that people will drive hours to get to a trailhead, and that close and easy is not the goal here. I’ve fixed that exact problem in business dashboards. Turns out terrain has the same bugs as org charts.
The real test happens tomorrow. I built a route up Mt. Flora, the walk-up (fast walk) from Berthoud Pass, terrain I already know, and loaded it onto the watch. I picked a mountain I know on purpose. Rule one of testing anything: control your variables. If the app and the terrain disagree, I want to be standing somewhere I recognize when it happens. I’d rather catch the bug above treeline on familiar ground than follow a confident little arrow into some wild place with a granola bar and my optimism.
The line on the watch was the trail under my feet, the whole way up and back. That’s one mountain, and one I already knew. I’ll keep running this thing against terrain before I trust it anywhere new.
The prediction I’m happiest to dodge
The March piece ended dark. I predicted that if someone built the good version, we’d get twelve months of a genuinely useful free tool, then a Series A, then a pricing page, the avalanche integration at $8.99 a month, the safety features locked in the annual tier. Enshittification isn’t cynicism; it’s pattern recognition.
My version dodges the whole cycle, and I want to be honest about why: nobody can ruin it because nobody owns it but me. There’s no growth team. There’s no board. There is no mechanism by which a subscription prompt appears between me and the mountains, because I would have to build the prompt myself, and I refuse.
I used to think the answer to enshittified software was better companies. I now think at least part of the answer is personal software tools built by the person who uses them, for an audience of one, running on open data. That option did not meaningfully exist for people like me eighteen months ago. It exists now. The barrier didn’t get lower. It fell over.
What it can’t do
Fair is fair. The free routing server gets slow, and a wide search can take a minute or more, I have waited longer for worse. Its ugly as hell, but i can fix that in post. Loop quality depends on trail density, so the sparse high country throws out more candidates than the Front Range does. And none of this reasons about conditions: no snowpack, no weather, no slope-angle shading yet, though the map engine was chosen specifically so slope tint can come later. Winter is still on you. It should be.
The March piece asked for a tool that could tell an intermediate skier whether a February traverse works. I didn’t build that. I built the summer half, the part where planning a long mountain run stops requiring three tabs and a prayer. The hard half still needs the avalanche centers, the researchers, the public data. I hope they’re playing with these same tools, because if a project manager can do this in a day at his kitchen table, imagine what the people with the actual datasets can do.
I ended the last piece watching. For four months, that’s what I did, stood there like a Knicks fan staring at the tunnel, waiting for Willis Reed to limp out and save the game. Nobody came out of the tunnel.
So I took the rock myself.
Build your thing. Nobody’s coming.
The code goes public after a few more versions. I want to do the failing myself before anyone else gets the chance.


