{
  "summary": {
    "input_rows": 8,
    "accepted": 4,
    "duplicate": 1,
    "rejected": 2,
    "conflict": 1
  },
  "source_sha256": {
    "contacts_a.csv": "bf7b0045e11ff8e4b3fcaa3e6a5cea6b59375141c1fad7616f44cd81e7feec7b",
    "contacts_b.csv": "5a5d885e1e8ffd6d666aada580a45cb750a0bfad182f66a30aa37804ba4c6968"
  },
  "row_decisions": [
    {
      "source": "contacts_a.csv:2",
      "decision": "accepted",
      "output_row": 2
    },
    {
      "source": "contacts_a.csv:3",
      "decision": "accepted",
      "output_row": 3
    },
    {
      "source": "contacts_a.csv:4",
      "decision": "duplicate",
      "reason": "exact_normalized_contact",
      "matches_output_row": 2
    },
    {
      "source": "contacts_a.csv:5",
      "decision": "rejected",
      "reason": "invalid_email"
    },
    {
      "source": "contacts_b.csv:2",
      "decision": "accepted",
      "output_row": 4
    },
    {
      "source": "contacts_b.csv:3",
      "decision": "conflict",
      "reason": "shared_email_or_phone_but_different_contact",
      "matches_output_row": 3
    },
    {
      "source": "contacts_b.csv:4",
      "decision": "rejected",
      "reason": "missing_or_invalid_phone"
    },
    {
      "source": "contacts_b.csv:5",
      "decision": "accepted",
      "output_row": 5
    }
  ],
  "caution": "Synthetic example; unresolved conflicts and invalid rows need human review. No contact verification or real client data."
}