[object Object]

← back to AbramsOS

auto-data-snapshot: 2026-08-07T19:03:19 (2 data files) — data/mode-claims-backfill.json db/migrations/0016_settlement_claims.sql

e62bbd3a1f590d23961d6e7a5176c986205f95d0 · 2026-08-07 19:03:35 -0700 · auto-commit-fleet

Files touched

Diff

commit e62bbd3a1f590d23961d6e7a5176c986205f95d0
Author: auto-commit-fleet <steve@designerwallcoverings.com>
Date:   Fri Aug 7 19:03:35 2026 -0700

    auto-data-snapshot: 2026-08-07T19:03:19 (2 data files) — data/mode-claims-backfill.json db/migrations/0016_settlement_claims.sql
---
 data/mode-claims-backfill.json           | 202 +++++++++++++++++++++++++++++++
 db/migrations/0016_settlement_claims.sql |  55 +++++++++
 2 files changed, 257 insertions(+)

diff --git a/data/mode-claims-backfill.json b/data/mode-claims-backfill.json
new file mode 100644
index 0000000..2e4a1f7
--- /dev/null
+++ b/data/mode-claims-backfill.json
@@ -0,0 +1,202 @@
+{
+  "generated_at": "2026-08-08T02:01:08.870Z",
+  "today": "2026-08-08",
+  "corpus_emails": 11,
+  "distinct_settlements": 19,
+  "open": 12,
+  "expired": 7,
+  "settlements": [
+    {
+      "name": "Aetna L-ADR Surgery Settlement",
+      "slug": "aetna-life-insurance-2-56m-l-adr-surgery-denial-settlement",
+      "mode_url": "https://modeclassactionsdaily.com/aetna-life-insurance-2-56m-l-adr-surgery-denial-settlement/",
+      "payout_text": "Up to $55,000",
+      "payout_max_cents": 5500000,
+      "deadline": "2026-08-11",
+      "proof_required": null,
+      "no_claim_required": false,
+      "eligibility_question": "If you were denied coverage for a qualifying lumbar artificial disc replacement surgery.",
+      "category": "product",
+      "source_email_id": "19fdde2f8fb5dd99",
+      "source_email_date": "2026-08-07",
+      "raw_block": "Aetna L-ADR Surgery Settlement – Up to $55,000\nIf you were denied coverage for a qualifying lumbar artificial disc replacement surgery.\nDeadline: August 11, 2026\nhttps://modeclassactionsdaily.com/hard-rock-stadium-14m-copa-america-final-settlement-2024-up-to-2000-per-ticket/?utm_source=email",
+      "seen_count": 1
+    },
+    {
+      "name": "Mission Community Hospital / Deanco Healthcare Data Breach Settlement",
+      "slug": "up-to-5100-mission-community-hospital-deanco-healthcare-data-breach-settlement",
+      "mode_url": "https://modeclassactionsdaily.com/up-to-5100-mission-community-hospital-deanco-healthcare-data-breach-settlement/",
+      "payout_text": "Up to $5,100",
+      "payout_max_cents": 510000,
+      "deadline": "2026-08-12",
+      "proof_required": true,
+      "no_claim_required": false,
+      "eligibility_question": "Received a data breach notice from Mission Community Hospital, Deanco Healthcare, or one of its affiliates?",
+      "category": "data_breach",
+      "source_email_id": "19fa53d16539f0cc",
+      "source_email_date": "2026-07-27",
+      "raw_block": "Mission Community Hospital / Deanco Healthcare Data Breach Settlement – Up to $5,100\nReceived a data breach notice from Mission Community Hospital, Deanco Healthcare, or one of its affiliates?\n• Up to $5,000 for documented losses\n• $100 California statutory payment for eligible California residents\n• Two years of medical monitoring\nDeadline: August 12, 2026\nhttps://modeclassactionsdaily.com/up-to-5100-mission-community-hospital-deanco-healthcare-data-breach-settlement/?utm_source=email",
+      "seen_count": 1
+    },
+    {
+      "name": "Onsite Mammography Settlement",
+      "slug": "up-to-5000-onsite-mammography-data-breach-settlement",
+      "mode_url": "https://modeclassactionsdaily.com/up-to-5000-onsite-mammography-data-breach-settlement/",
+      "payout_text": "Up to $5,000",
+      "payout_max_cents": 500000,
+      "deadline": "2026-08-11",
+      "proof_required": true,
+      "no_claim_required": false,
+      "eligibility_question": "Received a notice about the data breach?",
+      "category": "data_breach",
+      "source_email_id": "19fdde2f8fb5dd99",
+      "source_email_date": "2026-08-07",
+      "raw_block": "Onsite Mammography Settlement – Up to $5,000\nReceived a notice about the data breach?\n• Up to $5,000 for documented losses\n• A pro rata cash payment\n• 3 years of credit and medical data monitoring\nDeadline: August 11, 2026\nhttps://modeclassactionsdaily.com/up-to-5000-onsite-mammography-data-breach-settlement/?utm_source=email",
+      "seen_count": 1
+    },
+    {
+      "name": "Wright Brothers Construction Data Breach Settlement",
+      "slug": "wright-brothers-construction-data-breach-settlement",
+      "mode_url": "https://modeclassactionsdaily.com/wright-brothers-construction-data-breach-settlement/",
+      "payout_text": "Up to $4,767",
+      "payout_max_cents": 476700,
+      "deadline": "2026-08-18",
+      "proof_required": null,
+      "no_claim_required": false,
+      "eligibility_question": null,
+      "category": "data_breach",
+      "source_email_id": "19fce6fe4a0ecf91",
+      "source_email_date": "2026-08-04",
+      "raw_block": "Wright Brothers Construction Data Breach Settlement – Up to $4,767\n• Up to $4,767 for documented expenses, fraud losses, and lost time\n• $50 alternative cash payment\n• Three years of credit monitoring\nDeadline: August 18, 2026\nhttps://modeclassactionsdaily.com/wright-brothers-construction-data-breach-settlement/?utm_source=email",
+      "seen_count": 1
+    },
+    {
+      "name": "Triage Staffing Data Breach Settlement",
+      "slug": "triage-staffing-data-breach-settlement",
+      "mode_url": "https://modeclassactionsdaily.com/triage-staffing-data-breach-settlement/",
+      "payout_text": "Up to $3,000",
+      "payout_max_cents": 300000,
+      "deadline": "2026-08-10",
+      "proof_required": true,
+      "no_claim_required": false,
+      "eligibility_question": null,
+      "category": "data_breach",
+      "source_email_id": "19fd39643b8765d2",
+      "source_email_date": "2026-08-05",
+      "raw_block": "Triage Staffing Data Breach Settlement – Up to $3,000\n• Up to $3,000 for documented losses\n• $50 alternative cash payment\nDeadline: August 10, 2026\nhttps://modeclassactionsdaily.com/triage-staffing-data-breach-settlement/?utm_source=email",
+      "seen_count": 1
+    },
+    {
+      "name": "LCPtracker Data Breach Settlement",
+      "slug": "lcptracker-data-breach-settlement",
+      "mode_url": "https://modeclassactionsdaily.com/lcptracker-data-breach-settlement/",
+      "payout_text": "Up to $2,500",
+      "payout_max_cents": 250000,
+      "deadline": "2026-08-08",
+      "proof_required": true,
+      "no_claim_required": false,
+      "eligibility_question": null,
+      "category": "data_breach",
+      "source_email_id": "19fd39643b8765d2",
+      "source_email_date": "2026-08-05",
+      "raw_block": "LCPtracker Data Breach Settlement – Up to $2,500\n• Up to $2,500 for documented losses\n• Estimated $50 alternative cash payment\n• Two years of free credit monitoring\nDeadline: August 8, 2026\nhttps://modeclassactionsdaily.com/lcptracker-data-breach-settlement/?utm_source=email",
+      "seen_count": 1
+    },
+    {
+      "name": "Hard Rock Stadium Settlement",
+      "slug": "hard-rock-stadium-14m-copa-america-final-settlement-2024-up-to-2000-per-ticket",
+      "mode_url": "https://modeclassactionsdaily.com/hard-rock-stadium-14m-copa-america-final-settlement-2024-up-to-2000-per-ticket/",
+      "payout_text": "Up to $2,000 Per Ticket",
+      "payout_max_cents": 200000,
+      "deadline": "2026-08-11",
+      "proof_required": null,
+      "no_claim_required": false,
+      "eligibility_question": "Bought a valid ticket to the 2024 Copa América Final but couldn't get into the stadium?",
+      "category": "financial",
+      "source_email_id": "19fdde2f8fb5dd99",
+      "source_email_date": "2026-08-07",
+      "raw_block": "Hard Rock Stadium Settlement — Up to $2,000 Per Ticket\nBought a valid ticket to the 2024 Copa América Final but couldn't get into the stadium?\nDeadline: August 11, 2026\nhttps://modeclassactionsdaily.com/aetna-life-insurance-2-56m-l-adr-surgery-denial-settlement/?utm_source=email",
+      "seen_count": 1
+    },
+    {
+      "name": "Alta Resources Data Breach Settlement",
+      "slug": "alta-resources-675000-data-breach-class-action-settlement",
+      "mode_url": "https://modeclassactionsdaily.com/alta-resources-675000-data-breach-class-action-settlement/",
+      "payout_text": "Up to $2,000",
+      "payout_max_cents": 200000,
+      "deadline": "2026-08-17",
+      "proof_required": null,
+      "no_claim_required": false,
+      "eligibility_question": null,
+      "category": "data_breach",
+      "source_email_id": "19fc4232e70d233a",
+      "source_email_date": "2026-08-02",
+      "raw_block": "Alta Resources Data Breach Settlement – Up to $2,000\n• Estimated $50 alternative cash payment\n• Up to $2,000 for documented expenses\nDeadline: August 17, 2026\nhttps://modeclassactionsdaily.com/alta-resources-675000-data-breach-class-action-settlement/?utm_source=email",
+      "seen_count": 1
+    },
+    {
+      "name": "Insurance Kickbacks Settlement",
+      "slug": "phh-mortgage-insurance-kickbacks-settlement-claim-875-per-loan",
+      "mode_url": "https://modeclassactionsdaily.com/phh-mortgage-insurance-kickbacks-settlement-claim-875-per-loan/",
+      "payout_text": "$875 Per Eligible Loan",
+      "payout_max_cents": 87500,
+      "deadline": "2026-08-11",
+      "proof_required": false,
+      "no_claim_required": false,
+      "eligibility_question": "If you had a residential mortgage loan with PHH, this settlement provides a fixed payment. No receipts are required to file a claim.",
+      "category": "financial",
+      "source_email_id": "19fdde2f8fb5dd99",
+      "source_email_date": "2026-08-07",
+      "raw_block": "Insurance Kickbacks Settlement – $875 Per Eligible Loan\nIf you had a residential mortgage loan with PHH, this settlement provides a fixed payment. No receipts are required to file a claim.\nDeadline: August 11, 2026\nhttps://modeclassactionsdaily.com/phh-mortgage-insurance-kickbacks-settlement-claim-875-per-loan/?utm_source=email",
+      "seen_count": 1
+    },
+    {
+      "name": "The Polyclinic Disability Accommodation Settlement",
+      "slug": "the-polyclinic-350k-disability-accommodation-settlement",
+      "mode_url": "https://modeclassactionsdaily.com/the-polyclinic-350k-disability-accommodation-settlement/",
+      "payout_text": "$350K",
+      "payout_max_cents": 35000,
+      "deadline": "2026-08-08",
+      "proof_required": null,
+      "no_claim_required": false,
+      "eligibility_question": "If you requested a hearing, vision, or speech accommodation while receiving care from The Polyclinic and it wasn't properly provided.",
+      "category": "other",
+      "source_email_id": "19fd39643b8765d2",
+      "source_email_date": "2026-08-05",
+      "raw_block": "The Polyclinic Disability Accommodation Settlement – $350K\nIf you requested a hearing, vision, or speech accommodation while receiving care from The Polyclinic and it wasn't properly provided.\nDeadline: August 8, 2026\nhttps://modeclassactionsdaily.com/the-polyclinic-350k-disability-accommodation-settlement/?utm_source=email",
+      "seen_count": 1
+    },
+    {
+      "name": "SolarEdge Securities Settlement",
+      "slug": "solaredge-securities-settlement-investors-may-claim-part-of-55-million-fund",
+      "mode_url": "https://modeclassactionsdaily.com/solaredge-securities-settlement-investors-may-claim-part-of-55-million-fund/",
+      "payout_text": "$55 Million Fund",
+      "payout_max_cents": 5500,
+      "deadline": "2026-08-17",
+      "proof_required": null,
+      "no_claim_required": false,
+      "eligibility_question": "Purchased SolarEdge Technologies stock in 2023? You might be eligible to file for a share of the fund.",
+      "category": "financial",
+      "source_email_id": "19faa6370db11c0d",
+      "source_email_date": "2026-07-28",
+      "raw_block": "SolarEdge Securities Settlement – $55 Million Fund\nPurchased SolarEdge Technologies stock in 2023? You might be eligible to file for a share of the fund.\nDeadline: August 17, 2026\nhttps://modeclassactionsdaily.com/solaredge-securities-settlement-investors-may-claim-part-of-55-million-fund/?utm_source=email",
+      "seen_count": 1
+    },
+    {
+      "name": "EMM Loans Data Breach Settlement",
+      "slug": "emm-loans-data-breach-class-action-settlement",
+      "mode_url": "https://modeclassactionsdaily.com/emm-loans-data-breach-class-action-settlement/",
+      "payout_text": "$50 Payment",
+      "payout_max_cents": 5000,
+      "deadline": "2026-08-17",
+      "proof_required": false,
+      "no_claim_required": false,
+      "eligibility_question": "Received a notice about the EMM Loans data breach? You can choose a $50 cash payment with no proof required, or claim up to $4,000 for documented losses.",
+      "category": "data_breach",
+      "source_email_id": "19faa6370db11c0d",
+      "source_email_date": "2026-07-28",
+      "raw_block": "EMM Loans Data Breach Settlement – $50 Payment\nReceived a notice about the EMM Loans data breach? You can choose a $50 cash payment with no proof required, or claim up to $4,000 for documented losses.\nDeadline: August 17, 2026\nhttps://modeclassactionsdaily.com/emm-loans-data-breach-class-action-settlement/?utm_source=email",
+      "seen_count": 1
+    }
+  ]
+}
\ No newline at end of file
diff --git a/db/migrations/0016_settlement_claims.sql b/db/migrations/0016_settlement_claims.sql
new file mode 100644
index 0000000..72cc9a3
--- /dev/null
+++ b/db/migrations/0016_settlement_claims.sql
@@ -0,0 +1,55 @@
+-- 0016_settlement_claims.sql — class-action settlement claim tracker + openclaw fill queue.
+--
+-- Source: the "Mode Class Actions" daily newsletter (Dan N. <daniel@mail.modemobile.com>),
+-- which surfaces class-action settlements with payouts + deadlines + claim URLs. This module
+-- ingests those emails, dedupes to distinct settlements, tracks Steve's eligibility decision,
+-- and stages an openclaw "fill (not submit)" job for the ones he confirms he qualifies for.
+--
+-- HARD RULE (encoded in fill_state + the app): the pipeline never fabricates eligibility and
+-- never clicks the final penalty-of-perjury SUBMIT. fill_state stops at 'prefilled_awaiting_submit'.
+
+BEGIN;
+
+CREATE TABLE IF NOT EXISTS settlement_claim (
+  id                text PRIMARY KEY,
+  user_id           text NOT NULL REFERENCES user_account(id) ON DELETE CASCADE,
+  slug              text NOT NULL,                 -- dedupe key from the mode URL path
+  name              text NOT NULL,                 -- settlement name, e.g. "PHH Mortgage Insurance Kickbacks"
+  mode_url          text,                          -- modeclassactionsdaily.com/<slug> landing page
+  admin_url         text,                          -- resolved official claim-administrator site (filled later)
+  payout_text       text,                          -- verbatim payout blurb, e.g. "$875 per eligible loan"
+  payout_max_cents  bigint,                        -- best-effort parsed ceiling for ranking (nullable)
+  deadline          date,                          -- claim filing deadline
+  proof_required    boolean,                       -- true if receipts/docs needed; false if "no proof required"
+  no_claim_required boolean DEFAULT false,         -- true = automatic payment, nothing to file
+  eligibility_question text,                        -- the "are you a class member?" test, in plain English
+  eligibility_state text NOT NULL DEFAULT 'unreviewed',
+                     -- unreviewed | eligible | not_eligible | maybe (Steve's decision — gates any fill)
+  fill_state        text NOT NULL DEFAULT 'none',
+                     -- none | queued | prefilled_awaiting_submit | submitted | skipped | expired
+  category          text,                          -- data_breach | financial | product | employment | other
+  source_email_id   text,                          -- Gmail message id it was extracted from
+  source_email_date timestamptz,
+  first_seen_at     timestamptz NOT NULL DEFAULT now(),
+  updated_at        timestamptz NOT NULL DEFAULT now(),
+  notes             text,
+  raw_block         text,                          -- the raw newsletter text block, for audit
+  UNIQUE (user_id, slug)
+);
+CREATE INDEX IF NOT EXISTS settlement_claim_user_idx  ON settlement_claim (user_id, deadline);
+CREATE INDEX IF NOT EXISTS settlement_claim_state_idx ON settlement_claim (user_id, eligibility_state, fill_state);
+
+-- One row per openclaw fill attempt (append-only audit of what the browser agent did).
+CREATE TABLE IF NOT EXISTS settlement_fill_job (
+  id            text PRIMARY KEY,
+  claim_id      text NOT NULL REFERENCES settlement_claim(id) ON DELETE CASCADE,
+  user_id       text NOT NULL,
+  state         text NOT NULL DEFAULT 'staged',     -- staged | filling | prefilled_awaiting_submit | submitted | failed
+  brief_jsonb   jsonb NOT NULL DEFAULT '{}'::jsonb,  -- the openclaw job brief (URL, fields, guardrails)
+  result_jsonb  jsonb,                               -- screenshots/paths/notes from the run
+  created_at    timestamptz NOT NULL DEFAULT now(),
+  updated_at    timestamptz NOT NULL DEFAULT now()
+);
+CREATE INDEX IF NOT EXISTS settlement_fill_job_claim_idx ON settlement_fill_job (claim_id, created_at);
+
+COMMIT;

← 4f346d9 chore: v0.4.0 (session close — claims tracker + auth hardeni  ·  back to AbramsOS  ·  AbramsOS: class-action settlement claim-filler (Mode feed → 7ff4ec3 →