House Scout: Real Estate Research Automation

Updated: by Shohei

House Scout interface overview

I built House Scout, a Python project, to automate real estate searches. It collects listings and checks each property against target conditions to write a comparison report.

The tool scrapes candidate properties and normalizes the data. It then scores each listing using LangChain and LLM APIs, generating a Markdown report and a CSV summary. The final report lists rankings, evaluation notes, strengths, and concerns.

This workflow connects web scraping and LLM evaluations into a single system, backed by unit tests.

View GitHub Repository

The Problem: Slow, Inconsistent Property Comparisons

To find a home, you compare features like price and transit access. Once you collect dozens of listings, copying details into spreadsheets and applying manual criteria becomes slow and inconsistent.

Property descriptions contain qualitative details like "quiet residential area" or "convenient shopping." Standard numeric filters cannot capture these, making manual evaluation subjective and slow.

House Scout structures scraped property details and sends them to an LLM. The final report combines quantitative specs and qualitative descriptions to support decision-making.

Evaluating and Scoring Listings with LLMs

The tool evaluates each listing across four dimensions. The LLM processes numeric inputs like price and qualitative texts like descriptions.

The tool scores each property and writes brief comments based on these criteria:

Evaluation Axis Input Signals What the LLM Evaluates
Commute Access Station distance and transit options. Commute time and transit transfers.
Property Specs Price, size, and layout. Fit with layout and size requirements.
Location and Living Environment Neighborhood details and shopping convenience. Proximity to transit and noise levels.
Overall Recommendation Overall fit and key pros/cons. Priority level and key factors.

Tech Stack & Implementation

House Scout Data Flow Diagram
Automated pipeline: scraping, cleaning, LLM evaluation, and report generation

A Python workflow orchestrates the entire process: collection and LLM evaluation.

  • Python: Orchestrates the scraping and LLM scoring.
  • Playwright: Runs a headless browser to extract property details.
  • pandas: Deduplicates listings and aggregates scores.
  • LangChain & LLM APIs: Extracts ratings and pros/cons from unstructured text.
  • Markdown: Formats the final ranked property list.
  • pytest & uv: Manage dependencies and run tests to maintain quality.

Step-by-Step Process

  1. Scrape candidates: Visits listing pages to extract price and description text.
  2. Clean data: Deduplicates records and converts listing details into structured input for the LLM.
  3. Evaluate listings: Queries the LLM to extract pros, cons, and suitability ratings.
  4. Rank candidates: Combines LLM feedback and numeric criteria to sort properties.
  5. Export reports: Writes a CSV file and creates a Markdown report summarizing top candidates.

Output Examples

You can view the actual output generated by this tool on GitHub:

Project Achievements

  • Workflow automation: Replaces manual copying and spreadsheet tracking with an automated scraper and CSV export.
  • Qualitative analysis: Uses LLMs to turn unstructured descriptions into structured comments.
  • Ranked output: Groups properties by priority and lists specific concerns, letting you select candidates to visit faster.
  • Clean codebase: Separates scraping and processing logic from private credentials, keeping the repository public.

Usage Notes

This repository demonstrates web scraping and automated reporting. If you adapt this code, respect the target website's terms of service and rate limits. Avoid overloading host servers.

LLM scoring does not replace professional advice. Verify price, legal status, and neighborhood safety with a licensed real estate professional before making financial decisions.

Portfolio My Past Projects



See All