Moosa Memon
← Index of work

Distressed-property leads that qualify before they cost money

AcquisitionIQ: scheduled connectors pull county distressed-property filings, a config-driven engine decides which fit the buy box, only qualifying records get skip-traced, and contact-ready seller leads land in Airtable. Second market, zero code changes.

Type
Automation
Stack
Python / n8n / Supabase / Airtable / Skip-trace API
Status
Complete; runs fully offline against checked-in fixtures, two markets configured

Problem

Real-estate investors buy from public records: pre-foreclosures, tax liens, probate. The records are free; the skip-tracing that turns a parcel into a phone number is not. A naive pipeline traces everything and burns budget on properties the investor would never buy.

System

ingest → qualify → enrich → deliver. Connectors pull county filings on a schedule; a buy-box engine (price band, property type, equity, location rules, all in a per-market config) decides what qualifies; only qualifying records go to the skip-trace provider; results upsert into Airtable as contact-ready leads. Adding Maricopa County after Franklin County was a config file, not code.

Worth knowing

The demo has two halves on purpose: demo shows a lead flowing through, and demo --case rejected shows the same pipeline refusing to spend money on a record that fails the buy box. The second half is the design decision the project is built around. Every integration has a local stand-in, so the whole chain runs with no credentials, which is also what the test suite uses.

Have a workflow that looks like this?

Most of these start as a messy, manual process someone got tired of. Twenty minutes is usually enough to sketch how I'd approach yours.