Knockstack
Pick an area on a map, upload a resume, get a stack of tailored cover letters ordered into the shortest walking route.
Why
Handing a letter to a manager still works in hospitality and trades. It is how I have been job hunting. Forty businesses means forty letters, and the moment you reuse one it reads like a mail merge.
The decision I am most sure about
When business research comes back low confidence, the letter gets no fact rather than a guessed one. A model will happily invent a plausible sentence about any business you name, and you are handing that page to someone who knows the place better than you do.
Working inside somebody else's rules
Google Places lets you keep a place ID forever and caps everything else at thirty days. So coordinates are dropped at the boundary, and route ordering persists an ordering of place IDs rather than the coordinates it was computed from. A test fails if anyone reverses that.
The walking route
Places returns results in relevance order, which is geographically arbitrary. The ordering is nearest neighbour plus a 2 opt pass. Measured over 2880 simulated stacks it cuts walking distance 61.6 percent at the median, worst case 12.8 percent. Straight line, not street network, so it ignores canals and rail cuttings. The script that reproduces the measurement is in the repo, so the number can be checked rather than taken on trust.
Where it stands
Full flow works. Sign in, search, resume parsing, research, composition, editing, export, quotas, billing. Route ordering is built and measured but not yet wired into the interface, so the printed stack still comes out in selection order.
Next.js 15, React 19, TypeScript, Claude structured output, Google Places, Neon Postgres, Drizzle, Auth.js, Stripe, Vercel. 281 tests. npm audit reports zero vulnerabilities.