PhD-grade demolition and salvage bid intelligence for DFW and Texas. Coined by Erwin Maurice McDonald (2026) | Epoch Frameworks LLC | DACR License v2.6
SIE is a closed-loop decision advantage system that helps salvage operators identify, score, and act on pre-demolition opportunities before they hit the open market.
It surfaces signals from public records (TDLR, Accela, TCAD, city zoning), scores opportunity freshness, estimates material yield by structure era, calculates risk-adjusted bid ranges, and — in v1.7 — automatically flags properties where the General Contractor has not yet been identified via TDLR TABS filing.
Built to rival iScrap as a full business intelligence platform for the salvage industry.
| Layer | Name | Purpose |
|---|---|---|
L0 |
Access Probability Engine (APE) | Can you get this job? |
L1 |
Signal Detection | What public data says |
L1A |
TDLR Watch Protocol (v1.7 NEW) | GC identified? Flag if not. |
L2 |
Freshness Scoring | How close to actual demo |
L3 |
Seller Pressure Index (SPI) | How motivated is the owner |
L4 |
Structure Profile | What are we dealing with |
L5 |
Yield Estimation + Prior Access Discount | What materials are in this building |
L6 |
Yield Confidence Score (YCS) | How certain is the estimate |
L7 |
Bid Calculus + Crew Capacity Check | Floor / Optimal / Ceiling |
L8 |
Competition Intelligence (Bifurcated CPS) | Who else is circling |
L9 |
Strategic Play Engine | Smartest move, not just correct bid |
L10 |
Final Recommendation | Go / Monitor / Sub-Contract Pursue / Pass |
L11 |
Outcome Loop Preparation | Post-bid calibration hooks |
| Feature | iScrap | SIE |
|---|---|---|
| Live scrap prices | ✅ | ✅ (reference table) |
| Pre-demo signal detection | ❌ | ✅ |
| TDLR / permit monitoring | ❌ | ✅ (L1A Watch) |
| GC identification & contact | ❌ | ✅ |
| Risk-adjusted bid range | ❌ | ✅ |
| Yield by structure era | ❌ | ✅ |
| Crew capacity modeling | ❌ | ✅ |
| Competition intelligence | ❌ | ✅ |
| Sub-contract play detection | ❌ | ✅ |
-
v1.7— TDLR Watch Protocol (complete) -
v2.0— Automated TDLR / Accela polling (scripts/tdlr-watcher) -
v2.1— Facebook Marketplace + iScrap proxy signal scraper -
v2.5— Plotly BI dashboard (property scoring + bid tracking) -
v3.0— Full SaaS application with user accounts and deal pipeline
salvage-intelligence-engine/
├── engine/
│ ├── layers/ # L0–L11 intelligence layers
│ ├── models/ # PropertyData schema
│ └── sie_runner.py # Orchestrates all layers
├── scripts/
│ ├── tdlr-watcher/ # TDLR TABS automated polling
│ ├── accela-watcher/ # Fort Worth permit monitor
│ └── marketplace-scan/ # FB Marketplace + iScrap proxy
├── data/
│ ├── sample-permits/ # Sample property JSON records
│ └── commodity-prices/ # DFW scrap spot prices
├── dashboard/ # Plotly / Streamlit BI app (v2.5)
├── docs/ # Framework reference docs
├── tests/ # Pytest unit + integration tests
└── .github/workflows/ # CI/CD pipeline
# Clone the repo
git clone https://github.com/emcdo411/salvage-intelligence-engine.git
cd salvage-intelligence-engine
# Set up virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run tests
pytest tests/ -v
# Run TDLR watcher
python scripts/tdlr-watcher/tdlr_watch.pyAPE = (Relationship×0.35) + (PermitVis×0.25) + (OffMarket×0.25) + (Gatekeeper×0.15)
Fresh = (Recency×0.40) + (StackDepth×0.30) + (Ownership×0.20) + (Zoning×0.10)
SPI = (Distress×0.40) + (TimePressure×0.30) + (Condition×0.20) - (Sophistication×0.10)
Adj GMV = Pre-YCS GMV × (YCS / 100)
Net Val = Crew-Adj GMV − Labor − Haul − Tools − Disposal − MarginBuffer
Floor = Net Value × 0.60
Optimal = Net Value × 0.75
Ceiling = Net Value × 0.88
APE-Adj = Bid Ceiling × 0.85 [if APE < 50]
MIT — See LICENSE
Built with 🔩 by Erwin Maurice McDonald | Epoch Frameworks LLC | Fort Worth, TX