
Real Estate Investor Dashboard
Playwright scraper, Supabase, and a Next.js dashboard that replaced 88 tabs and a spreadsheet with one filterable view.
Real estate investor based in Ohio specializing in foreclosures
Lean acquisition operation targeting sheriff sale properties before they hit the open market.
A VA was manually checking 88 county sites and logging results in a spreadsheet. The process was inconsistent, error-prone, and hard to scale.
A scraper that visits all 88 county sites, a database that stores what it finds, and a single dashboard to browse it.
The scraper handles three kinds of county sites with one process, from simple pages to ones that only load in a real browser.
Repeat scrapes update existing listings instead of creating duplicates, and every run is logged per county to flag sites that break.
After each scrape, every property is automatically enriched with its map location, a Street View image, and Zillow data.
The dashboard shows all listings, which counties are healthy, saved lists, and a one-click retry for anything that failed to enrich.
The scraper and enrichment API runs in Modal. Listings land in Supabase and the Next.js dashboard shows listings from the database.
Modal
Cloud service that runs the scraper and the property data lookups
Playwright
Controls a real browser to read county sites that won’t load otherwise
httpx + BeautifulSoup
Reads the simpler county sites quickly without a full browser
Supabase
The database that stores every listing, county, and scrape result
Next.js
The framework the dashboard is built on
Google Maps
Adds each property’s map location and a Street View photo
Apify
Pulls property details from Zillow
Firecrawl
Finds the right Zillow page when the address lookup misses
Daily automated scrape replaces manual VA county checks
One dashboard to filter listings by county, sale date, and bid amount instead of jumping between tabs and spreadsheets
Property enrichment at scale without per-listing Zillow lookups