Everything

Hoffenmer command center
Live view →

Campaign HeatmapGateway

Segment × service matrix, special databases, sender-number usage. Red badge = hits in last 7 days; color = days since last send.

Video StatsGateway

Views, unique DOTs, call taps, pay clicks, "I already filed" claims — per service.

Unsub Agent DeskGateway

Hard stops, global stops, individual number status, resubscribe.

Client video page — HUT

What the carrier sees. Enter a DOT to open its personalized page.

Agent HUT Check

Verdict (must file / not required / not reported), tractors, MCS-150 date, BU-overdue badge. Search box on the page itself too.

Video filesGateway

Folder
~/environment/video_server/media/
Naming
<service>.mp4 — subdomain ↔ filename (hut.mp4, ucr.mp4 …)
Restart
sudo systemctl restart vidserver
Cache wipe
rm -f ~/environment/video_server/vid.db (only after data-shape changes)
New service page = DNS A-record <svc>.dotvideo.us + add host to Caddy block + drop <svc>.mp4.

Hard stops — all channelsGateway

Phones + DOTs + emails. Always-on in every sender. Pull fresh at the start of every run.

curl -s https://stopsms.hoffenmer.io/hard/all -H "X-Admin-Key: $STOP_ADMIN_KEY"

# emails only, one per line
curl -s https://stopsms.hoffenmer.io/hard/all -H "X-Admin-Key: $STOP_ADMIN_KEY" \
 | python3 -c "import sys,json; [print(e) for e in json.load(sys.stdin)['emails']]"
Key lives on Gateway: source ~/.bashrc && echo $STOP_ADMIN_KEY (or /etc/stopserver.env).

"I Already Filed" claimsGateway

Per-service list of DOTs who tapped the button on their video page. giga8 pulls it when you type the slug at suppression.

Already-sent dedup (campaign log)Gateway

DOTs already reached per service. giga8 asks "Skip DOTs already sent?" — default yes.

curl -s "https://campaigns.hoffenmer.io/sent/dots?service=2027%20HUT" -H "X-Admin-Key: KEY"

# clear one segment × service
curl -X DELETE "https://campaigns.hoffenmer.io/sent?service=CLH%20Queries&file=sms_01" -H "X-Admin-Key: KEY"
# clear all sms_xx + pastdue history
curl -X DELETE "https://campaigns.hoffenmer.io/sent/segments" -H "X-Admin-Key: KEY"

Deactivated DOTs

Always-on shield slot in giga8 — not yet wired. Needs the Deactivation Airtable base/table; giga8 prints a red warning every run until set.

giga8 — the SMS senderSender

Code
~/environment/sms/giga_repo/giga8.py (alias giga)
Global config
~/environment/sms/giga_repo/config.toml — concurrency, costs, creds
Local config
../config.toml above the campaign folder — [messages] only
Run
cd ~/environment/sms/<service>/<range>/single && giga
Resume
automatic from log.txt — answer prompts identically
Speed
MAX_CONCURRENT 40 ≈ 55 msg/s on Telnyx shortcodes

Run flow

1  SELECT SENDER      [1-5] Telnyx SC · [6] Twilio SC · [7-9] Telnyx TF · [10-12] Twilio TF
2  TARGETING          op scope · CDL · tractors · MC · zone (E / C / Mtn+West)
3  SUPPRESSION        hard stops (auto) · live STOPs · Airtable service + months
                      · filed-claims slug (hut / Enter) · clear send log? · skip already-sent?
4  PREVIEW LOOP       text to your phone → Y / [e] edit config & re-preview / [c] cancel
5  CAMPAIGN SUMMARY   sender · targeting · suppression · FILTERED OUT · queue+cost → CONFIRM

Sender numbers (menu order — stable, append-only)

[1] 62985   [2] 87368   [3] 368767   [4] 827368   [5] 488368        Telnyx shortcodes
[6] 52698                                                          Twilio shortcode
[7] (844) 264-8039  [8] (866) 894-0662  [9] (866) 381-3803          Telnyx toll-free
[10] (844) 955-3705 [11] (844) 373-9426 [12] (844) 296-6983         Twilio toll-free

Probe a number's opt-out handling

Text STOP → count replies (2 = Telnyx keyword engine still armed) → Desk STATUS → resubscribe → API test send → text START.

Suppression bases (connected)

Read via one master token. App date = min(DATE field, createdTime); newest record per DOT.

Not yet connected (logging only): PSP · IFTA Stickers · IFTA Quarterly · DataQ · DOT Audit · NEW DOT# · MC Authority · Corporation Renewal · ILL ICC · GA# · FL# · NY HUT · Deactivation.

Hoffenmer-Gateway3.238.224.192

The glue: answers the internet 24/7. Never Stop — only Reboot (auto-assigned IP). Elastic-IP migration pending before any resize.

Services
stopserver · vidserver (8200) · campaignlog (8300) · caddy-hoffenmer
Domains
stopsms.hoffenmer.io · dotvideo.us / www / hut · campaigns.hoffenmer.io · everything.hoffenmer.io
Folders
~/environment/stopserver · video_server · campaign_log · everything
Caddy
~/Caddyfile — edit → sudo caddy validate --config ~/Caddyfilesudo systemctl reload caddy-hoffenmer. Never restart.
Health
systemctl is-active stopserver vidserver campaignlog caddy-hoffenmer
Keys
~/.bashrc · /etc/stopserver.env

Hoffenmer-Sendert2.2xlarge

Outbound fire: SMS now, email next. Cloud9 may hibernate — nothing public lives here.

SMS
~/environment/sms/ — giga_repo + campaign folders
Email
~/environment/email/ — in progress
Which box am I on?
systemctl is-active stopserver 2>/dev/null && echo GATEWAY || echo SENDER

Restart cheat sheetGateway

sudo systemctl restart vidserver        # video pages (2s blip)
sudo systemctl restart campaignlog      # heatmap
sudo systemctl restart stopserver       # unsub server — avoid mid-campaign
sudo systemctl reload  caddy-hoffenmer  # Caddy config — reload, NEVER restart

Message placeholders

{officer} {company} {dot} {state} {mc}
{filing}  {start}            → "Aug 2017" from any FMCSA date format
{drivers*} {vehicles*}       → "3 drivers" / "1 driver"   (also {driver*} {vehicle*})
{tractors} {hazmat}          → line auto-removed when blank
{event_date} {event_info}    → Motus event files only
{hut-reg} / {reg-hut}        → === IRS 26 U.S.C. 4481 ===   (both orders; any service slug)
   bu ucr hut clh random dq mvr txdmv ca policy rst
Anything else in { } → hard abort before sending.

CSV segments

SMS (19 cols)  sms_00…19_<mmm##> · tx · ca · interstate · new60 · pastdue_jan…aug
                askdeact_5yr · askdeact_never · no_mcs_mileage · cdl · semi
Motus (21)    + EVENT_DATE, EVENT_INFO: motus_auth_events · motus_revoked · motus_insurance
                motus_carrier_changes · authority_dead
Email (17)    email_00…19 · semi_email  (EMAIL_ADDRESS, no PHONE)

Segment id = filename minus date suffix (sms_16_aug27 → sms_16).
TRUCK_TRACTORS = owned+term+trip summed. Blank = unreported, never 0.

Regulation citations

BU 390.19 · UCR 367 · HUT IRS 26 U.S.C. 4481 · CLH 382.701 · Random 382.305
DQ 391.51 · MVR 391.25 · TX 43 TAC 218 · CA CVC 34620 · Policy 382.601/385.5/390.3(e)/396.3 · RST 382.603