DOT intake: review-only (no telecom entity step), email verifier,
updated flagger excluding 4+ year stale carriers - Intake manifest: DOT services use ["review"] only, skipping the telecom entity step with FRN/USAC fields - Flagger: excludes 4+ year overdue carriers from campaign (spam trap risk). 18,277 safe targets from 100K records. - Email verifier: self-hosted MX + SMTP verification tool Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
5bf364aced
commit
e67df3c4c3
3 changed files with 265 additions and 16 deletions
|
|
@ -106,21 +106,21 @@ def flag_carriers(dry_run: bool = False) -> dict:
|
|||
# MCS-150 check
|
||||
if mcs150_parsed:
|
||||
if mcs150_parsed < FOUR_YEARS_AGO.date():
|
||||
# Skip severely overdue (4+ years) — likely abandoned, spam trap risk
|
||||
flags.append("mcs150_severely_overdue")
|
||||
issues.append(f"MCS-150 severely overdue (last filed {mcs150_parsed})")
|
||||
severity = "critical"
|
||||
stats["mcs150_severe"] += 1
|
||||
stats["mcs150_overdue"] += 1
|
||||
# Mark as NOT campaign eligible — too old
|
||||
severity = "stale"
|
||||
elif mcs150_parsed < TWO_YEARS_AGO.date():
|
||||
flags.append("mcs150_overdue")
|
||||
issues.append(f"MCS-150 overdue (last filed {mcs150_parsed})")
|
||||
issues.append(f"MCS-150 biennial update is overdue — last filed {mcs150_parsed}. Required every 2 years. Fines up to $1,000/day.")
|
||||
severity = "major" if severity == "none" else severity
|
||||
stats["mcs150_overdue"] += 1
|
||||
else:
|
||||
# No date — can't determine, flag as unknown
|
||||
# No date — skip for campaign (can't verify recency)
|
||||
flags.append("mcs150_unknown")
|
||||
issues.append("MCS-150 filing date unknown — verify at FMCSA Portal")
|
||||
severity = "minor" if severity == "none" else severity
|
||||
severity = "stale"
|
||||
|
||||
# For-hire carrier — needs BOC-3, UCR, insurance
|
||||
if for_hire:
|
||||
|
|
@ -153,9 +153,10 @@ def flag_carriers(dry_run: bool = False) -> dict:
|
|||
if for_hire and "mcs150_overdue" in flags:
|
||||
severity = "critical"
|
||||
|
||||
actionable_flags = [f for f in flags if f != "zero_fleet"]
|
||||
# Exclude stale/severely overdue from campaign (spam trap risk)
|
||||
actionable_flags = [f for f in flags if f not in ("zero_fleet", "mcs150_severely_overdue", "mcs150_unknown")]
|
||||
deficiency_count = len(actionable_flags)
|
||||
campaign_eligible = deficiency_count > 0 and bool(email)
|
||||
campaign_eligible = deficiency_count > 0 and bool(email) and severity != "stale"
|
||||
|
||||
if campaign_eligible:
|
||||
stats["campaign_eligible"] += 1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue