{
  "set": "mail-classify",
  "issue": "erp#39",
  "generated_at": "2026-07-18",
  "task": "T01 mailbox triage & routing",
  "classes": [
    "supplier-invoice",
    "bank-notice",
    "government-admin",
    "client",
    "other"
  ],
  "source": {
    "kind": "zoho-mail",
    "account": "gabrielradureau@arcodange.fr",
    "account_id": "7685847000000002002",
    "pull": "read-only Zoho Mail OAuth API via arcodange-email-ingest; all 14 non-empty folders paged in full",
    "folders_scanned": {
      "/Inbox": 86,
      "/Inbox/abonnements": 4,
      "/Inbox/analytics": 10,
      "/Inbox/bonjour": 463,
      "/Inbox/books": 35,
      "/Inbox/bureaux": 21,
      "/Inbox/contact": 116,
      "/Inbox/helloworld": 102,
      "/Inbox/jobs": 17,
      "/Newsletter": 431,
      "/Notification": 127,
      "/clients/KissMetrics": 412
    }
  },
  "provenance": {
    "method": "per-message source id is the Zoho `message_id` (+ `folder`) recorded on each JSONL line — the anchor back to the mailbox. Mail messages are not downloaded as files, so there is no per-message file hash; instead the label file itself is content-hashed for integrity.",
    "labels_file": "labels.jsonl",
    "labels_sha256": "53ea2fcb276efb5c13d91d0f2ed0e49c7ccaad5e473463d763b9f75eec19c500",
    "count": 1824
  },
  "labeling": {
    "type": "machine-seeded weak supervision (sender-domain + subject heuristics), human-correctable in place",
    "correction": "edit `label`, set `corrected_by`; keep `machine_labeled:true`",
    "bias": "precision-favoring on the actionable classes; human pass raises recall"
  },
  "distribution": {
    "other": 1742,
    "government-admin": 34,
    "client": 30,
    "bank-notice": 10,
    "supplier-invoice": 8
  }
}
