Scoring EngineReal EstateCLI ToolPricing

RentalScout — Deal-First Rental Discovery

A rental-discovery engine that scores listings on deal strength first, livability second, fit third. A luxury unit at market price can never reach the top tier — the tier system is deal-gated.

RentalScout — Deal-First Rental Discovery preview

The Problem

Rental search engines optimize for everything except the thing that matters to a renter who’s paying attention: am I getting a deal. Filters give you “under $2400” and “2BR.” They don’t tell you that the unit you’re looking at is $400 below fair market value because the landlord misread the comps.

RentalScout was the answer. Find the underpriced listings first. Sort everything else later.

The Scoring

Three pillars, weighted:

  • Deal Strength (50%) — gap between estimated Fair Market Value and asking price. The biggest weight, because it’s the one thing the renter can’t fake themselves into.
  • Livability (30%) — square footage, light, layout, building quality. The lifestyle stuff.
  • Fit (20%) — commute, neighborhood, must-haves. Personal.

The tier system is deal-gated. S-tier requires a minimum FMV gap. A-tier the same. So a beautiful luxury apartment at full price can never reach the top — by design. The tool refuses to surface “great unit, market rate” when the question being asked is “find me a deal.”

The Build

Single-file Node.js CLI (rentalscout.js, ~1900 lines), JSON-file storage, zero npm dependencies, built-in tests via node:test. Cache deduplication on add, change-tracking on update, scam-pattern gate before anything gets scored.

A small set of feedback heuristics — “that one’s actually a scam,” “this neighborhood’s a hard no” — get persisted to feedback.json and used to adjust subsequent searches. The system learns from its operator without needing a model.

Why It Worked

Most search tools are filter-based — “show me listings that match these criteria.” Scoring is harder but more honest. It lets the tool say “I found 47 listings, here are 3 you should look at right now, and here’s exactly why.” That’s the conversation a good agent has with a client. Less menu, more verdict.