Inspiration
I moved from Tampa to Cary earlier this year, and apartment hunting turned into a browser-tab nightmare almost immediately — one listing on apartments.com, another only on Zillow, a third found through a plain Google search, none of them agreeing on how to present rent, deposit, pet fees, or what utilities were included. I found myself manually retyping every listing into a note just to compare them side by side: with $n$ apartments and $m$ fields each, that's roughly $n \times m$ copy-paste operations before you can actually decide anything. My first instinct was "this needs a recommender system," but the more I sat with it, the clearer it became that recommendation was solving a step after the one actually costing me time — comparison had to come first.
NestCompare is the result: a spreadsheet-style comparison sheet where each apartment is a column and each row is a field — rent, lease terms, fees, amenities, your own notes — with the best value in each row highlighted automatically. If the built-in fields miss something, you add your own row on the spot, and the whole sheet exports to CSV or PDF. It also exposes itself as WebMCP tools (add_apartment, update_apartment_field, add_row, export_csv, and more) through the draft navigator.modelContext browser API, so an agent like Claude or OpenAI Codex can fill in or export the sheet directly.
It's built as a deliberately boring stack — static HTML/CSS/JS, no framework, no build step, deployed as-is — with data persisted to localStorage and PDF export via jsPDF. The shape of the product changed a lot along the way: it started as two separate paths ("pre-built" vs. "create your own"), which I eventually collapsed into one button and one sheet once it was clear the real missing feature was letting people add their own comparison criteria, not choosing a starting template. I also built a folder of fictional Cary, NC listing pages so the tool can be demoed without pointing at a real property's site.
The hardest part was resisting the urge to over-model apartment data — real listings don't agree on what matters, so the sheet needed a stable core plus an escape hatch, without becoming a spreadsheet clone. WebMCP itself is a moving target with no shipped implementation, so I had to feature-detect it and mirror every tool on a plain window global so it stays testable regardless. Without a live browser to check work in for parts of this build, I leaned on an automated jsdom test harness — which caught a real bug mid-refactor (a new apartment's name silently resetting to blank), a good reminder that "it looks right in the code" and "it works" are different claims.
Next steps
Save the data into database and make it sharable link, so can come back to the results after filling it up and select the best nest to stay.
Built With
- css3
- github
- html5
- javascript
- json
- jspdf
- localstorage
- vercel
- webmcp
Log in or sign up for Devpost to join the conversation.