[object Object]

← 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 →