Skip to content

Latest commit

 

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SiftStack

Full-stack real estate investing operations platform built around DataSift.ai.

Two things live in this repo:

  1. The REI skill library. 24 Claude skills that teach Claude to run a specific REI workflow: comp a property, estimate a rehab, find the heirs, score your phone numbers, grade your cold calls. Install them into Claude Code with one command, or upload them to a Claude Co-Work session. You do not need the platform to use these.
  2. The platform. The pipeline that pulls county distress data, enriches it through 10 steps, and pushes it into DataSift ready for sequential marketing. Requires a DataSift.ai account.

Start with the skills. Most people never need anything else.


Install the skill library

Claude Code (one command)

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/DataSift-Ty-Personal/SiftStack/main/install.py | python3 -

# Windows PowerShell
irm https://raw.githubusercontent.com/DataSift-Ty-Personal/SiftStack/main/install.py | python -

That downloads all 22 current skills (24 packages counting the 2 plugins) into ~/.claude/skills/ and the 2 plugins into ~/.claude/plugins/. Restart Claude Code and they are live. No clone, no pip install, no virtualenv. Python 3.9 or newer, standard library only.

Prefer to read the script before running it? That is the right instinct:

curl -fsSL -o install.py https://raw.githubusercontent.com/DataSift-Ty-Personal/SiftStack/main/install.py
less install.py
python3 install.py

Pick and choose

python3 install.py --list                                  # the catalog, with descriptions
python3 install.py --only rehab-estimator comp-package     # just these
python3 install.py --category "Deal Analysis"              # a whole category
python3 install.py --dest .claude/skills                   # into a project, not your home dir
python3 install.py --dry-run                               # report, write nothing

Re-running is safe. Anything already current is skipped, and a package is only swapped in after it downloads and unpacks cleanly, so a failed update cannot leave you with a half-written skill.

Claude Co-Work, Projects, and the claude.ai app

Co-Work takes the packaged file rather than a folder. Download the .skill you want from dist/ and upload it to your session or Project:

https://raw.githubusercontent.com/DataSift-Ty-Personal/SiftStack/main/dist/rehab-estimator.skill

Every package in the catalog below is at that same path with its own name. .plugin files work the same way.

Point Claude at this repo and let it do the work

If you are already in a Claude Code session, this is usually the fastest route:

Read https://raw.githubusercontent.com/DataSift-Ty-Personal/SiftStack/main/skills/manifest.json and install the Deal Analysis skills for me.

The manifest is the machine-readable index of the whole library: every package, its category, its description, its download URL, and a SHA-256 of the exact bytes. It is what install.py reads, and it is regenerated by CI on every push so it cannot drift from what is actually published.


The catalog

24 current packages. python3 install.py --list prints this with full descriptions.

Deal Analysis

Package What it does
comp-package Boundary-filtered comps for one property. Pulls sold and active listings live, buckets each comp by condition, and produces a dual-track ARV that prices the same-bedroom base case separately from a labeled reconfiguration upside. Ships an Excel workbook.
rehab-estimator Room-by-room rehab costs across 4 tiers, with the locked Knox County master material list for exact SKU pricing.
deep-prospecting-v5 Given a deceased owner, find the heirs and exactly who must sign to sell. SmartSkip relatives plus mandatory obituary research, about $0.24 per record.
probate-property-finder Find the real property behind a probate filing when all you have is a case number and a decedent name.
real-estate-comping The valuation method on its own: Two-Bucket ARV, adjustment tables, and disclosure vs non-disclosure state routing.
deal-analyzer (plugin) Comps plus rehab plus MAO plus financing in one pass, with exit strategy comparison.

Market Intelligence

Package What it does
sift-market-research Zip code scoring off DataSift Market Finder, 6 weighted factors, delivered as a 7-sheet Excel report.
first-market-county-data Where to actually pull county distress lists for any US county, across all 7 notice types, including the FOIA templates.
buyer-prospector Build a cash buyer list for any county, categorize the LLCs and trusts, and resolve the humans behind them.

Operations

Package What it does
phone-validator Trestle scoring with 5 dial-priority tiers and a litigator risk check.
text-touch-builder A four-touch pre-call SMS sequence per record, varied like cold email so no two reads as a form letter. Refuses any message that sounds machine-written.
sequential-presets Design and build the sequential marketing filter presets in DataSift.
caller-reputation-monitor Keep your outbound numbers out of carrier "Spam Likely" labels.
playbook-creator Turn a transcript or a recording into a real SOP with process maps.
candidate-intake Aggregate job applicants from Indeed, Gmail, and Facebook into one scored master list.
team-hiring Who to hire next and what they own. The five roles with their daily tasks and one North Star KPI each, hiring geography and pay bands, job post templates, the interview, and the first two weeks.
vendor-directory-builder Build a vetted contractor or vendor directory for any market: mine a local community for names people vouch for, verify every one against public records, sweep for geography and gaps, and ship a filterable Excel with top picks. Also the tool for vetting a found or AI-generated list.
contractor-call-sheet Turn a finished directory into action: a printable one-page call sheet of the top picks by trade, personalized first-contact texts and voicemails, and the vetting-call question script.

Coaching and Performance

Package What it does
cold-call-coach Pull your real call recordings, transcribe them with tonality notes, and grade every conversation against the cold-calling rubric.
lead-manager-coach Same engine, graded on qualification: the 4 pillars, roadblocks, next-action discipline.
closer-coach Same engine, graded on the money conversation, the offer stack, and commitment locking.
kpi-engine Dials, connect rates, correct numbers, leads, and funnel pacing straight from your own DataSift account.

CRM

Package What it does
sift-sequences 26 sequence templates and how to build them.
sift-operations (plugin) The CRM operations encyclopedia: SiftLine boards, drip campaigns, tasks, filters, tags, skip trace workflows.

Two superseded packages (deep-prospecting, deep-prospecting-v4) stay in the repo so old runs still resolve. The installer skips them unless you ask for one by name. Use deep-prospecting-v5, which is about 5x cheaper and returns relatives on records where v4 returned nothing.

What a skill needs from you

Eleven of the 24 work the moment they are installed. No key, no login, no card. Ask the library where you stand:

python3 install.py --doctor

It reads your environment and a .env if you have one, then prints what works now, what needs you signed in somewhere, and what needs a credential. Every blocked skill prints its no-API alternative on the same line, so you are never told no without being told what to do instead. It sends no requests, spends nothing, and never prints a credential value.

Tier Count What it means
No credentials 11 Works on install
A login you already have 8 DataSift, SmrtPhone, Google. Browser-driven, no API access needed
A metered API key 5 Faster and deeper, and every one has a free route

Every paid step has a no-API route. Comping runs by browser, heir research runs off obituaries and free people-search, KPIs run off a CSV export, coaching runs off any dialer's recordings. The no-API playbook has the method for each, and is honest about the three things that have no substitute.

Skills degrade rather than fail: a missing key means that step is skipped and the run says so.

Guide
Getting started Install, check readiness, add credentials, first runs
No-API playbook The free route for every paid step
API contracts What each API actually does, and the traps that cost real time
.env.skills.example Every variable, what it unlocks, what it costs

The agent system

The platform is 76 agents across 9 divisions.

  • The interactive map, searchable and filterable by division, status, and whether a human still signs off.
  • docs/AGENT-MAP.md, the same thing as a document you can read in the repo or hand to Claude.

Both render from docs/agents.json, so they cannot disagree about what the system does.

Each agent carries a trigger, the steps it runs, where a person signs off, what comes out, and the trap it exists to avoid. That last field is the one worth reading: every one is a real production failure, and most of them failed silently for days or weeks before anyone noticed.

  Web scrape (gated site)   ──┐
  Scanned PDF (OCR)         ──┤
  Courthouse photos         ──┼──►  Enrichment  ──►  DataSift  ──►  Sequential
  Dropbox auto-poll         ──┤     (10 steps)       (API)          marketing
  CSV re-import             ──┘
                                          │
                                          ▼
                          Deal analysis ──► Dispo ──► Lender package

Divisions: Data Acquisition, Enrichment and Identity, Deal Analysis, Dispo and Buyers, Outreach and Marketing, CRM Operations, Market Intelligence, Coaching and Performance.

Every gated action routes to a human. Outreach identity is anchored to the assigned person rather than a company name, and no agent sends a dollar figure to a seller or a buyer without a person approving it.


The platform

Requires a DataSift.ai account. Works with any market, any county, any state.

Quick start

git clone https://github.com/DataSift-Ty-Personal/SiftStack.git
cd SiftStack
pip install -r requirements.txt
playwright install chromium
cp .env.example .env          # then fill in your keys

python src/main.py daily                          # new notices since last run
python src/main.py daily --upload-datasift        # scrape, enrich, upload
python src/main.py daily --counties Knox --types foreclosure,probate

Data intake

Method How it works Use case
Web scrape Playwright plus a Cloudflare Turnstile solver Public notice sites, county clerk portals
PDF import pypdfium2 rendering plus Tesseract OCR Scanned tax sale lists, legal documents
Photo import OpenCV preprocessing, OCR, LLM parse Phone photos of courthouse terminal screens
Dropbox watch Polls a folder every 15 minutes A runner uploads from the field, the system processes
CSV re-import Re-enrich existing records Refresh stale data, merge datasets

All five produce the same records and flow through the same enrichment pipeline.

Enrichment pipeline

Deduplicate, filter vacant land, flag entity owners, resolve probate property, tax delinquency, address standardization (Smarty), property data (Zillow), obituary and heir research, skip trace (Tracerfy), phone scoring (Trestle).

Every API is optional. A missing key skips that step and the run reports it.

Scheduled cloud pull

The county pull runs unattended on Fly.io rather than on a workstation. deploy/FTM_RUNBOOK.md is the runbook.

python src/ftm_runner.py --doctor        # credentials, egress, state, saved searches
python src/ftm_runner.py --max-notices 2 # bounded dry run, writes nothing
python src/ftm_runner.py --commit        # the real thing
python src/ftm_schedule.py --next        # next 5 fire times

The scrape is gated on egress IP, not on code. From an office IP the notice page carries no CAPTCHA at all, just a refusal to serve. From a datacenter IP it serves the normal challenge. A blocked run exits 3 rather than 1, because no retry fixes it and treating it as a normal failure sends you debugging the parser. Run --doctor before anything else.

Zero notices is a failure, not a quiet day. There is deliberately no inference that a missing challenge means a cleared gate. That exact reasoning reported 13 consecutive dead runs as successful over 19 days.

Deal analysis

# Comps, ARV, rehab, buyers, into one workbook
python src/comp_package.py --address "158 Old State Rd" --zip 37914 \
    --beds 2 --baths 1 --sqft 1946 --bbox "35.996,36.016,-83.895,-83.840"

# The hour after you walk a house: 9 sheets, anchored to the live CRM record
python src/post_walkthrough.py --walkthrough-template
python src/post_walkthrough.py --address "..." --walkthrough walk.json

# The 8-piece private lender package
python src/lender_package.py --spec deals/EXAMPLE_lender_spec.json
python src/lender_docs.py    --spec deals/EXAMPLE_lender_spec.json

deals/EXAMPLE_lender_spec.json is a scrubbed, working spec. Copy it and fill it in.

Configuration

Every variable is documented in .env.example. The ones that matter most:

Variable Service Cost
DATASIFT_EMAIL / DATASIFT_PASSWORD DataSift.ai Account required
CAPTCHA_API_KEY 2Captcha about $3 per 1,000 solves
SMARTY_AUTH_ID / SMARTY_AUTH_TOKEN Smarty 250 free/month
OPENWEBNINJA_API_KEY OpenWeb Ninja 100 free/month
ANTHROPIC_API_KEY Anthropic about $0.001 per record
TRACERFY_API_KEY Tracerfy $0.02 per record
TRESTLE_API_KEY Trestle $0.015 per phone
SLACK_WEBHOOK_URL Slack or Discord Free

Running one county daily costs roughly $40 per month in API spend.

Adapting to your market

The architecture is market-agnostic. Knox and Blount County, TN are what it is proven on.

  1. Edit SAVED_SEARCHES in src/config.py for your county's notice site.
  2. Add your county's tax API alongside Knox in src/tax_enricher.py.
  3. The parser handles 7 notice types already: foreclosure, tax sale, tax delinquent, probate, eviction, code violation, divorce.
  4. Photo import and the enrichment pipeline are county-independent and work nationwide.

Contributing to the skill library

The source of truth is the folder, not the ZIP. skills/<name>/ is what you edit and what gets reviewed; dist/<name>.skill is a build product.

# edit skills/rehab-estimator/SKILL.md, then
python tools/build_skills.py --build --manifest
python tools/build_skills.py --verify        # CI runs this

CI blocks a merge if a distributed archive drifts from its source, if the manifest is stale, if any SKILL.md is missing its name or description frontmatter, or if anything that looks like a credential appears in a package.

That frontmatter check exists because a skill with no frontmatter is silently undiscoverable. Claude has nothing to match a request against, so it simply never fires and no error is ever raised. One skill shipped that way for months.

  1. Fork, branch, commit.
  2. Run python tools/build_skills.py --build --manifest before you push.
  3. Open a pull request.

License

MIT. See LICENSE.

Built by DataSift.ai for the REI community.

About

Real estate investing operations platform for DataSift.ai. 21 installable Claude skills plus the 74-agent pipeline behind them: county data intake, enrichment, deal analysis, dispo, and CRM automation.

Resources

Stars

20 stars

Watchers

7 watching

Forks

Releases

Packages

Contributors

Languages