Skip to content

pgil256/home_finder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

149 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pinellas Market Lens

CI Python Django pandas numpy

Live: homefinder.patbuilds.dev

Pinellas Market Lens is a data-science dashboard for exploring Pinellas County, Florida parcel records. It pivots the original property-search app into an analytics-first portfolio project: official public records are ingested, cleaned, indexed, filtered, and analyzed with pandas/numpy to expose market KPIs, distributions, segment comparisons, tax burden, assessed-value gaps, and auditable outliers.

What It Shows

Route Purpose
/ and /insights/ Main market insights dashboard with filters, KPIs, charts, segment tables, methodology, and outlier drilldowns
/scraper/ Compatibility filter-builder form that redirects into /insights/
/scraper/dashboard/ Legacy URL alias that renders the same insights dashboard
/scraper/property/<parcel_id>/ Parcel drilldown used to audit sample parcels and outlier rows
/scraper/download/excel/ Analysis workbook: Overview, City Segments, Property Type Segments, Outliers, Sample Parcels, Methodology
/scraper/download/pdf/ PDF insight brief with filters, exact KPIs, takeaways, segments, outliers, and methodology

Data + Analysis Flow

flowchart LR
    PCPAO[(PCPAO bulk parcel CSV)]
    IMPORT[Bulk import + normalization]
    DB[(Indexed Postgres / SQLite)]
    DJANGO[Django filters + exact aggregates]
    PANDAS[pandas/numpy EDA frame]
    UI[Chart.js dashboard + exports]

    PCPAO --> IMPORT --> DB --> DJANGO --> PANDAS --> UI
    DJANGO --> UI
Loading

The production architecture keeps the app cheap and understandable: Vercel serves Django, Neon stores the indexed parcel table, and GitHub Actions refreshes the public-record data. The interesting data-science layer is now visible in the product instead of hidden inside a download.

Interesting Bits

  • Exact database KPIs: parcel count, median/mean market value, median price per square foot, total market value, median tax rate, and assessed-vs-market gap.
  • pandas/numpy exploratory analysis: percentiles, histograms, city/type segment summaries, build-era trend lines, market-vs-assessed scatter samples, and outlier rankings.
  • Auditable outliers: high-value IQR outliers, largest assessed gaps, and highest tax-burden parcels link back to parcel drilldowns.
  • Honest methodology: v1 does not claim predictive valuation because the public dataset lacks MLS sale prices and reliable bedrooms/bathrooms coverage.
  • Production constraints: interactive EDA is capped for responsiveness, while headline KPIs remain exact database aggregates.

Tech Stack

Layer Choice
Web Django 5.2 on Vercel
Database Neon Postgres in production, SQLite locally
Analysis pandas, numpy, Django ORM aggregates
Frontend Django templates, Tailwind CSS, Chart.js, vanilla JS
Exports openpyxl and ReportLab
Data refresh GitHub Actions + bulk CSV import
Tests pytest, pytest-django, Jest, Playwright/httpx smoke tests

Quick Start

git clone https://github.com/pgil256/home_finder.git
cd home_finder

python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt

copy .env.example .env
python manage.py migrate
python manage.py load_pinellas_data

npm install
npm run build

python manage.py runserver

Then open http://127.0.0.1:8000/insights/.

Development

make lint
make test
npm test
npm run build
pytest tests/e2e/test_smoke.py
pytest tests/e2e/browser/

Limitations

  • PCPAO records are public assessment records, not MLS transactions.
  • Bedrooms and bathrooms are not reliable in the bulk public dataset, so they are not used as core market signals.
  • The dashboard is exploratory analysis, not investment advice or a predictive appraisal model.
  • Interactive pandas/numpy charts are capped to keep serverless responses responsive; exact headline KPIs are computed against the full filtered queryset.
  • Street View support remains available for parcel drilldowns when a Google API key is configured, but imagery is not central to the analytics workflow.

License

MIT. See LICENSE.

About

Django + Celery pipeline that aggregates and visualizes Pinellas County, FL property records. Excel/PDF exports, async scraping.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors