new-site/data
justin 19bbef3231 ifta: recurring quarterly-return reminder campaign (calendar-triggered)
IFTA returns are due on fixed dates (Apr30/Jul31/Oct31/Jan31) and every
interstate carrier (op code A, ~628k sendable) files 4x/year forever -- pure
recurring revenue, no per-carrier deadline data needed.

- build_ifta_quarterly_campaign.py: self-gates to the reminder window (~21d
  before each deadline), selects interstate carriers, mints the same-day coupon,
  builds+schedules the campaign reusing build_trucking_campaigns plumbing (DRY:
  one source of truth for sending/suppression/coupon). Per-quarter cycle reset
  (ifta_reminder_cycle marker) so each quarter re-reminds the full pool; marks
  ifta_reminded_at to avoid double-sends within a cycle.
- ifta_quarterly_reminder.html: deadline + penalties + 'we do the math' + coupon
  + CAN-SPAM. Listmonk source campaign id 469.
- migration 094: fmcsa_carriers.ifta_reminded_at column + partial index.
Verified: deadline/window logic correct, imports reuse tc helpers, migration
applied on prod.
2026-06-13 23:24:47 -05:00
..
hc_campaigns clia: new CLIA certificate renewal service, order page, email template + harvest 2026-06-13 22:10:51 -05:00
trucking_campaigns ifta: recurring quarterly-return reminder campaign (calendar-triggered) 2026-06-13 23:24:47 -05:00
otc_leads.csv data(otc): add display_name + short_name merge fields for outreach 2026-06-09 07:14:06 -05:00
otc_leads_rejected.csv scripts(otc): dedupe by CIK; commit the 861-company lead list 2026-06-09 07:10:54 -05:00