← back to La Socrata Ingester
yoloforever c5: permit_lead_score_v2 — parcel-signal teardown/redevelopment ranking
48faabe6c740c1269a60eeb1aa4b39ed6ee57224 · 2026-08-12 07:03:25 -0700 · steve
NEW function (live permit_lead_score untouched). v2 = v1 + up to 15pts parcel signal
(cap 100, no rescale): teardown (new build on valuable old parcel) + assessed tier.
Validated: 0 permits penalized (no-parcel = v1), 20,045 lifted, max +15. Surfaces
high-end redevelopment v1 misses (e.g. $250k permit on $6.9M 1922 parcel: 83->98).
Files touched
Diff
commit 48faabe6c740c1269a60eeb1aa4b39ed6ee57224
Author: steve <steve@designerwallcoverings.com>
Date: Wed Aug 12 07:03:25 2026 -0700
yoloforever c5: permit_lead_score_v2 — parcel-signal teardown/redevelopment ranking
NEW function (live permit_lead_score untouched). v2 = v1 + up to 15pts parcel signal
(cap 100, no rescale): teardown (new build on valuable old parcel) + assessed tier.
Validated: 0 permits penalized (no-parcel = v1), 20,045 lifted, max +15. Surfaces
high-end redevelopment v1 misses (e.g. $250k permit on $6.9M 1922 parcel: 83->98).
---
db/lead_score_v2.sql | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/db/lead_score_v2.sql b/db/lead_score_v2.sql
new file mode 100644
index 0000000..dffc2dc
--- /dev/null
+++ b/db/lead_score_v2.sql
@@ -0,0 +1,31 @@
+-- permit_lead_score_v2(): parcel-signal-enriched lead ranking (0–100).
+-- NEW function — does NOT replace the live permit_lead_score. v2 = v1 + up to 15 pts of
+-- PARCEL signal the base can't see (capped at 100). No rescale of v1 — a permit WITHOUT
+-- parcel enrichment scores exactly v1 (never penalized); parcel signal only LIFTS:
+-- • teardown / high-value redevelopment: new construction on a valuable, older parcel
+-- • parcel assessed-value tier (owner equity / asset size)
+-- Swapping v2 into the live viewer is a GATED action (draft to pending-approval).
+CREATE OR REPLACE FUNCTION permit_lead_score_v2(
+ p_issue_date timestamptz,
+ p_valuation numeric,
+ p_permit_type text,
+ p_sub_type text,
+ p_status text,
+ p_assessed numeric,
+ p_year_built text
+) RETURNS integer LANGUAGE sql STABLE AS $$
+ SELECT LEAST(100, (
+ permit_lead_score(p_issue_date, p_valuation, p_permit_type, p_sub_type, p_status)
+ + LEAST(15,
+ -- teardown / redevelopment: ground-up build on a valuable, OLD parcel
+ (CASE WHEN p_permit_type = 'Bldg-New' AND p_assessed >= 1000000
+ AND p_year_built ~ '^[0-9]{4}$' AND (p_year_built)::int BETWEEN 1 AND 1970
+ THEN 8 ELSE 0 END)
+ -- parcel assessed-value tier
+ + (CASE WHEN p_assessed >= 3000000 THEN 7
+ WHEN p_assessed >= 1000000 THEN 5
+ WHEN p_assessed >= 500000 THEN 3
+ ELSE 0 END)
+ )
+ ))::int;
+$$;
← 60f8851 yoloforever c4 FIX (Cody): deals feed ranks by lead_score, d
·
back to La Socrata Ingester
·
yoloforever c5 FIX (Cody): gate teardown bonus on valuation> 00f8def →