{
  "application": {
    "id": "2e5127c3-d595-4b87-b1ec-37a5b3618d70",
    "reference": "AFF-2026-20004",
    "applicant_name": "John Affy",
    "applicant_id_number": "9200000000000",
    "applicant_mobile": "0820000000",
    "applicant_email": "sample@example.co.za",
    "status": "complete",
    "created_at": "2026-06-02 15:51:37.347980"
  },
  "verdict": {
    "overall": "clear",
    "drivers": [
      {
        "key": "cash",
        "status": "clear",
        "metric": {
          "available": true,
          "disposable": 2570.47,
          "verified": true
        }
      },
      {
        "key": "debt_review",
        "status": "clear",
        "metric": {
          "tier": "none",
          "reason": "No debt-review pattern detected"
        }
      },
      {
        "key": "gambling",
        "status": "clear",
        "metric": {
          "tier": "green",
          "share_of_wallet": 0.0
        }
      },
      {
        "key": "lender_stacking",
        "status": "clear",
        "metric": {
          "tier": "green",
          "distinct_lenders": 0
        }
      },
      {
        "key": "returned_debits",
        "status": "clear",
        "metric": {
          "count": 0
        }
      },
      {
        "key": "debit_timing",
        "status": "clear",
        "metric": {
          "recommended_day": 15,
          "recommended_window": [
            14,
            15,
            16,
            17
          ],
          "collectability": 1.0,
          "predictability": 0.93
        }
      }
    ]
  },
  "triage": {
    "state": "CLEAR",
    "blocked": false,
    "review": false,
    "headline": "All eligibility gates passed",
    "summary": "No gates fired; proceed with the credit decision normally.",
    "blocking_reasons": []
  },
  "score": {
    "value": 750,
    "withheld": false,
    "band_label": "Strong",
    "arc_from": "oklch(62.0% 0.100 38.0)",
    "arc_to": "oklch(57.0% 0.122 152.1)",
    "families": [
      {
        "key": "income",
        "label": "Income",
        "value": 92,
        "summary": "Strong (92/100). Regularity, stability and level of money coming in, whatever its source.",
        "drivers_summary": "Recurrence at full marks; biggest drag is stability (7% month-to-month swing).",
        "dimensions": [
          {
            "label": "Recurrence",
            "detail": "every month",
            "pct": 100,
            "lost": 0,
            "weight": 40,
            "full": true,
            "insufficient": false
          },
          {
            "label": "Stability",
            "detail": "7% month-to-month swing",
            "pct": 75,
            "lost": 8,
            "weight": 30,
            "full": false,
            "insufficient": false
          },
          {
            "label": "Income level",
            "detail": "R19,713 / month",
            "pct": 100,
            "lost": 0,
            "weight": 30,
            "full": true,
            "insufficient": false
          }
        ],
        "what_moves_it": "Rises when recognised income lands every month at a steady, healthy amount; falls with intermittent, swinging or thin monthly income."
      },
      {
        "key": "buffer",
        "label": "Cash buffer",
        "value": 86,
        "summary": "Strong (86/100). The cushion held in the account between pay cycles.",
        "drivers_summary": "Average balance at full marks; biggest drag is near-empty days (8% of days).",
        "dimensions": [
          {
            "label": "Average balance",
            "detail": "R10,960",
            "pct": 100,
            "lost": 0,
            "weight": 55,
            "full": true,
            "insufficient": false
          },
          {
            "label": "Near-empty days",
            "detail": "8% of days",
            "pct": 70,
            "lost": 14,
            "weight": 45,
            "full": false,
            "insufficient": false
          }
        ],
        "what_moves_it": "Rises with a healthier average balance and fewer near-empty days; falls when the account routinely runs close to zero."
      },
      {
        "key": "discipline",
        "label": "Financial discipline",
        "value": 68,
        "summary": "Moderate (68/100). Returned debits, short-term-lender stacking and debt-service load.",
        "drivers_summary": "Every dimension at full marks.",
        "dimensions": [
          {
            "label": "Returned debits",
            "detail": "limited history",
            "pct": 50,
            "lost": 18,
            "weight": 35,
            "full": false,
            "insufficient": true
          },
          {
            "label": "Lender stacking",
            "detail": "limited history",
            "pct": 60,
            "lost": 14,
            "weight": 35,
            "full": false,
            "insufficient": true
          },
          {
            "label": "Debt-service ratio",
            "detail": "0% of net salary",
            "pct": 100,
            "lost": 0,
            "weight": 30,
            "full": true,
            "insufficient": false
          }
        ],
        "what_moves_it": "Rises with no bounced debits, few lenders and a low share of salary going to debt; falls with returns, stacking or a heavy debt load."
      },
      {
        "key": "red_flags",
        "label": "Red flags",
        "value": 77,
        "summary": "Strong (77/100). Gambling outflow and cash-withdrawal dominance.",
        "drivers_summary": "Gambling at full marks; biggest drag is cash withdrawals (56% of outflow).",
        "dimensions": [
          {
            "label": "Gambling",
            "detail": "none detected",
            "pct": 100,
            "lost": 0,
            "weight": 65,
            "full": true,
            "insufficient": false
          },
          {
            "label": "Cash withdrawals",
            "detail": "56% of outflow",
            "pct": 35,
            "lost": 23,
            "weight": 35,
            "full": false,
            "insufficient": false
          }
        ],
        "what_moves_it": "Stays high with little gambling and traceable card/EFT spend; falls with material gambling or cash-dominant behaviour."
      }
    ],
    "context": {
      "what_it_means": "A single 300\u2013850 figure blending four behavioural families \u2014 income (30%), cash buffer (25%), discipline (25%) and red flags (20%) \u2014 read purely from the bank statement. It is a pre-screen signal for quick comparison, not a lending decision: weigh it alongside the eligibility gates, the indicative affordability and the reason codes below.",
      "caveats": [
        "Behavioural and indicative: it reflects bank-statement signals only \u2014 not a credit-bureau record and not a Reg 23A affordability decision.",
        "The v0 scorecard is uncalibrated (expert-elicited bin values, not yet fitted to AffyScore's decisioned book), so the absolute number reads low. A known artefact: the income family can hold the composite near ~465 even for an applicant with a regular monthly salary \u2014 read the family breakdown and reason codes rather than the headline number alone."
      ]
    }
  },
  "go_no_go": {
    "findings": [
      {
        "key": "cash",
        "label": "Available cash",
        "status": "clear",
        "verdict": "Headroom",
        "evidence": "R2,570/mo after expenses"
      },
      {
        "key": "debt_review",
        "label": "Debt review",
        "status": "clear",
        "verdict": "Clear",
        "evidence": "No debt-review signals"
      },
      {
        "key": "gambling",
        "label": "Problematic gambling",
        "status": "clear",
        "verdict": "Clear",
        "evidence": "None detected"
      },
      {
        "key": "lender_stacking",
        "label": "Lender stacking",
        "status": "clear",
        "verdict": "Clear",
        "evidence": "No short-term-lender stacking"
      },
      {
        "key": "returned_debits",
        "label": "Returned debits",
        "status": "clear",
        "verdict": "Clear",
        "evidence": "No returned debit orders"
      },
      {
        "key": "debit_timing",
        "label": "Debit timing",
        "status": "clear",
        "verdict": "Clear",
        "evidence": "Collect on the 15th"
      }
    ]
  },
  "verdict_view": {
    "overall": "clear",
    "state": "Clear",
    "chip": "Clear",
    "word": "Clear to proceed",
    "driven": "No eligibility, gambling, or affordability flags \u2014 proceed with the credit decision.",
    "tiles": [
      {
        "key": "cash",
        "label": "Available cash",
        "status": "clear",
        "verdict": "Headroom",
        "evidence": "R2,570/mo after expenses",
        "glyph": "\u2713",
        "sub": "Positive disposable income.",
        "is_headline": false
      },
      {
        "key": "debt_review",
        "label": "Debt review",
        "status": "clear",
        "verdict": "Clear",
        "evidence": "No debt-review signals",
        "glyph": "\u2713",
        "sub": "No NPDA / distribution-agency payments.",
        "is_headline": false
      },
      {
        "key": "gambling",
        "label": "Problematic gambling",
        "status": "clear",
        "verdict": "Clear",
        "evidence": "None detected",
        "glyph": "\u2713",
        "sub": "Below the 5% review band.",
        "is_headline": false
      },
      {
        "key": "lender_stacking",
        "label": "Lender stacking",
        "status": "clear",
        "verdict": "Clear",
        "evidence": "No short-term-lender stacking",
        "glyph": "\u2713",
        "sub": "Below the 4-lender threshold.",
        "is_headline": false
      },
      {
        "key": "returned_debits",
        "label": "Returned debits",
        "status": "clear",
        "verdict": "Clear",
        "evidence": "No returned debit orders",
        "glyph": "\u2713",
        "sub": "No returned debit orders in period.",
        "is_headline": false
      },
      {
        "key": "debit_timing",
        "label": "Debit timing",
        "status": "clear",
        "verdict": "Clear",
        "evidence": "Collect on the 15th",
        "glyph": "\u2713",
        "sub": "Optimal collection window identified.",
        "is_headline": false
      }
    ],
    "strip": {
      "status": "clear",
      "day": 15,
      "day_label": "15th",
      "window": [
        14,
        15,
        16,
        17
      ],
      "already_clearing": [],
      "collectability": 1.0,
      "predictability": 0.93,
      "confidence": "ok"
    }
  },
  "debit_timing": {
    "days": [
      {
        "date": "2021-09-15",
        "closing": 3404.78,
        "day_min": 3404.78,
        "has_real_data": true
      },
      {
        "date": "2021-09-16",
        "closing": 3404.78,
        "day_min": 3404.78,
        "has_real_data": false
      },
      {
        "date": "2021-09-17",
        "closing": 3404.78,
        "day_min": 3404.78,
        "has_real_data": false
      },
      {
        "date": "2021-09-18",
        "closing": 3404.78,
        "day_min": 3404.78,
        "has_real_data": false
      },
      {
        "date": "2021-09-19",
        "closing": 49.98,
        "day_min": 49.98,
        "has_real_data": true
      },
      {
        "date": "2021-09-20",
        "closing": 49.98,
        "day_min": 49.98,
        "has_real_data": false
      },
      {
        "date": "2021-09-21",
        "closing": 49.98,
        "day_min": 49.98,
        "has_real_data": false
      },
      {
        "date": "2021-09-22",
        "closing": 49.98,
        "day_min": 49.98,
        "has_real_data": false
      },
      {
        "date": "2021-09-23",
        "closing": 49.98,
        "day_min": 49.98,
        "has_real_data": false
      },
      {
        "date": "2021-09-24",
        "closing": 18054.16,
        "day_min": 49.98,
        "has_real_data": true
      },
      {
        "date": "2021-09-25",
        "closing": 18054.16,
        "day_min": 18054.16,
        "has_real_data": false
      },
      {
        "date": "2021-09-26",
        "closing": 18054.16,
        "day_min": 18054.16,
        "has_real_data": false
      },
      {
        "date": "2021-09-27",
        "closing": 18002.46,
        "day_min": 18002.46,
        "has_real_data": true
      },
      {
        "date": "2021-09-28",
        "closing": 18002.46,
        "day_min": 18002.46,
        "has_real_data": false
      },
      {
        "date": "2021-09-29",
        "closing": 13002.46,
        "day_min": 13002.46,
        "has_real_data": true
      },
      {
        "date": "2021-09-30",
        "closing": 13002.46,
        "day_min": 13002.46,
        "has_real_data": false
      },
      {
        "date": "2021-10-01",
        "closing": 13002.46,
        "day_min": 13002.46,
        "has_real_data": false
      },
      {
        "date": "2021-10-02",
        "closing": 13002.46,
        "day_min": 13002.46,
        "has_real_data": false
      },
      {
        "date": "2021-10-03",
        "closing": 13002.46,
        "day_min": 13002.46,
        "has_real_data": false
      },
      {
        "date": "2021-10-04",
        "closing": 8992.27,
        "day_min": 8992.27,
        "has_real_data": true
      },
      {
        "date": "2021-10-05",
        "closing": 8992.27,
        "day_min": 8992.27,
        "has_real_data": false
      },
      {
        "date": "2021-10-06",
        "closing": 8992.27,
        "day_min": 8992.27,
        "has_real_data": false
      },
      {
        "date": "2021-10-07",
        "closing": 8942.27,
        "day_min": 8942.27,
        "has_real_data": true
      },
      {
        "date": "2021-10-08",
        "closing": 8942.27,
        "day_min": 8942.27,
        "has_real_data": false
      },
      {
        "date": "2021-10-09",
        "closing": 8942.27,
        "day_min": 8942.27,
        "has_real_data": false
      },
      {
        "date": "2021-10-10",
        "closing": 8942.27,
        "day_min": 8942.27,
        "has_real_data": false
      },
      {
        "date": "2021-10-11",
        "closing": 8942.27,
        "day_min": 8942.27,
        "has_real_data": false
      },
      {
        "date": "2021-10-12",
        "closing": 8942.27,
        "day_min": 8942.27,
        "has_real_data": false
      },
      {
        "date": "2021-10-13",
        "closing": 8942.27,
        "day_min": 8942.27,
        "has_real_data": false
      },
      {
        "date": "2021-10-14",
        "closing": 6551.77,
        "day_min": 6551.77,
        "has_real_data": true
      },
      {
        "date": "2021-10-15",
        "closing": 6551.77,
        "day_min": 6551.77,
        "has_real_data": false
      },
      {
        "date": "2021-10-16",
        "closing": 6551.77,
        "day_min": 6551.77,
        "has_real_data": false
      },
      {
        "date": "2021-10-17",
        "closing": 6551.77,
        "day_min": 6551.77,
        "has_real_data": false
      },
      {
        "date": "2021-10-18",
        "closing": 6551.77,
        "day_min": 6551.77,
        "has_real_data": false
      },
      {
        "date": "2021-10-19",
        "closing": 6501.27,
        "day_min": 6501.27,
        "has_real_data": true
      },
      {
        "date": "2021-10-20",
        "closing": 6501.27,
        "day_min": 6501.27,
        "has_real_data": false
      },
      {
        "date": "2021-10-21",
        "closing": 6501.27,
        "day_min": 6501.27,
        "has_real_data": false
      },
      {
        "date": "2021-10-22",
        "closing": 6501.27,
        "day_min": 6501.27,
        "has_real_data": false
      },
      {
        "date": "2021-10-23",
        "closing": 3179.97,
        "day_min": 3179.97,
        "has_real_data": true
      },
      {
        "date": "2021-10-24",
        "closing": 75.17,
        "day_min": 75.17,
        "has_real_data": true
      },
      {
        "date": "2021-10-25",
        "closing": 18152.91,
        "day_min": 75.17,
        "has_real_data": true
      },
      {
        "date": "2021-10-26",
        "closing": 18152.91,
        "day_min": 18152.91,
        "has_real_data": false
      },
      {
        "date": "2021-10-27",
        "closing": 18152.91,
        "day_min": 18152.91,
        "has_real_data": false
      },
      {
        "date": "2021-10-28",
        "closing": 19153.37,
        "day_min": 18152.91,
        "has_real_data": true
      },
      {
        "date": "2021-10-29",
        "closing": 19153.37,
        "day_min": 19153.37,
        "has_real_data": false
      },
      {
        "date": "2021-10-30",
        "closing": 19153.37,
        "day_min": 19153.37,
        "has_real_data": false
      },
      {
        "date": "2021-10-31",
        "closing": 19153.37,
        "day_min": 19153.37,
        "has_real_data": false
      },
      {
        "date": "2021-11-01",
        "closing": 19153.37,
        "day_min": 19153.37,
        "has_real_data": false
      },
      {
        "date": "2021-11-02",
        "closing": 19148.37,
        "day_min": 19148.37,
        "has_real_data": true
      },
      {
        "date": "2021-11-03",
        "closing": 19148.37,
        "day_min": 19148.37,
        "has_real_data": false
      },
      {
        "date": "2021-11-04",
        "closing": 19148.37,
        "day_min": 19148.37,
        "has_real_data": false
      },
      {
        "date": "2021-11-05",
        "closing": 19148.37,
        "day_min": 19148.37,
        "has_real_data": false
      },
      {
        "date": "2021-11-06",
        "closing": 19135.87,
        "day_min": 19135.87,
        "has_real_data": true
      },
      {
        "date": "2021-11-07",
        "closing": 19135.87,
        "day_min": 19135.87,
        "has_real_data": false
      },
      {
        "date": "2021-11-08",
        "closing": 14611.47,
        "day_min": 14611.47,
        "has_real_data": true
      },
      {
        "date": "2021-11-09",
        "closing": 14611.47,
        "day_min": 14611.47,
        "has_real_data": false
      },
      {
        "date": "2021-11-10",
        "closing": 14611.47,
        "day_min": 14611.47,
        "has_real_data": false
      },
      {
        "date": "2021-11-11",
        "closing": 14611.47,
        "day_min": 14611.47,
        "has_real_data": false
      },
      {
        "date": "2021-11-12",
        "closing": 10580.97,
        "day_min": 10580.97,
        "has_real_data": true
      },
      {
        "date": "2021-11-13",
        "closing": 10580.97,
        "day_min": 10580.97,
        "has_real_data": false
      },
      {
        "date": "2021-11-14",
        "closing": 10580.97,
        "day_min": 10580.97,
        "has_real_data": false
      },
      {
        "date": "2021-11-15",
        "closing": 10559.97,
        "day_min": 10559.97,
        "has_real_data": true
      },
      {
        "date": "2021-11-16",
        "closing": 6102.97,
        "day_min": 6102.97,
        "has_real_data": true
      },
      {
        "date": "2021-11-17",
        "closing": 6102.97,
        "day_min": 6102.97,
        "has_real_data": false
      },
      {
        "date": "2021-11-18",
        "closing": 6102.97,
        "day_min": 6102.97,
        "has_real_data": false
      },
      {
        "date": "2021-11-19",
        "closing": 6081.07,
        "day_min": 6081.07,
        "has_real_data": true
      },
      {
        "date": "2021-11-20",
        "closing": 6279.87,
        "day_min": 6081.07,
        "has_real_data": true
      },
      {
        "date": "2021-11-21",
        "closing": 6279.87,
        "day_min": 6279.87,
        "has_real_data": false
      },
      {
        "date": "2021-11-22",
        "closing": 1029.87,
        "day_min": 1029.87,
        "has_real_data": true
      },
      {
        "date": "2021-11-23",
        "closing": 1029.87,
        "day_min": 1029.87,
        "has_real_data": false
      },
      {
        "date": "2021-11-24",
        "closing": 1029.87,
        "day_min": 1029.87,
        "has_real_data": false
      },
      {
        "date": "2021-11-25",
        "closing": 19878.06,
        "day_min": 1029.87,
        "has_real_data": true
      },
      {
        "date": "2021-11-26",
        "closing": 19878.06,
        "day_min": 19878.06,
        "has_real_data": false
      },
      {
        "date": "2021-11-27",
        "closing": 19878.06,
        "day_min": 19878.06,
        "has_real_data": false
      },
      {
        "date": "2021-11-28",
        "closing": 15730.33,
        "day_min": 15730.33,
        "has_real_data": true
      },
      {
        "date": "2021-11-29",
        "closing": 15620.93,
        "day_min": 15620.93,
        "has_real_data": true
      },
      {
        "date": "2021-11-30",
        "closing": 15617.43,
        "day_min": 15617.43,
        "has_real_data": true
      }
    ],
    "debit_amount": 250.0,
    "recommended_day": 15,
    "recommended_window": [
      14,
      15,
      16,
      17
    ],
    "peak_days": [
      24,
      28,
      25
    ],
    "month_summaries": [
      {
        "low": 49.98,
        "high": 18054.16,
        "average": 8127.58,
        "peak_day": 24,
        "year_month": "2021-09"
      },
      {
        "low": 75.17,
        "high": 19153.37,
        "average": 10376.5,
        "peak_day": 28,
        "year_month": "2021-10"
      },
      {
        "low": 1029.87,
        "high": 19878.06,
        "average": 12713.65,
        "peak_day": 25,
        "year_month": "2021-11"
      }
    ],
    "status": "clear",
    "reason": "R250 clears reliably around day 15",
    "recommended_day_label": "15th",
    "collectability": 1.0,
    "predictability": 0.93,
    "already_clearing": [],
    "confidence": "ok",
    "chart": {
      "w": 960,
      "h": 320,
      "plot": {
        "x": 58,
        "y": 22,
        "w": 884,
        "h": 264
      },
      "points": "58.0,241.1 69.6,241.1 81.3,241.1 92.9,241.1 104.5,285.3 116.2,285.3 127.8,285.3 139.4,285.3 151.1,285.3 162.7,47.7 174.3,47.7 185.9,47.7 197.6,48.4 209.2,48.4 220.8,114.4 232.5,114.4 244.1,114.4 255.7,114.4 267.4,114.4 279.0,167.3 290.6,167.3 302.3,167.3 313.9,168.0 325.5,168.0 337.2,168.0 348.8,168.0 360.4,168.0 372.1,168.0 383.7,168.0 395.3,199.5 406.9,199.5 418.6,199.5 430.2,199.5 441.8,199.5 453.5,200.2 465.1,200.2 476.7,200.2 488.4,200.2 500.0,244.0 511.6,285.0 523.3,46.4 534.9,46.4 546.5,46.4 558.2,33.2 569.8,33.2 581.4,33.2 593.1,33.2 604.7,33.2 616.3,33.2 627.9,33.2 639.6,33.2 651.2,33.2 662.8,33.4 674.5,33.4 686.1,93.1 697.7,93.1 709.4,93.1 721.0,93.1 732.6,146.3 744.3,146.3 755.9,146.3 767.5,146.6 779.2,205.4 790.8,205.4 802.4,205.4 814.1,205.7 825.7,203.1 837.3,203.1 848.9,272.4 860.6,272.4 872.2,272.4 883.8,23.6 895.5,23.6 907.1,23.6 918.7,78.4 930.4,79.8 942.0,79.8",
      "area_points": "58.0,286.0 58.0,241.1 69.6,241.1 81.3,241.1 92.9,241.1 104.5,285.3 116.2,285.3 127.8,285.3 139.4,285.3 151.1,285.3 162.7,47.7 174.3,47.7 185.9,47.7 197.6,48.4 209.2,48.4 220.8,114.4 232.5,114.4 244.1,114.4 255.7,114.4 267.4,114.4 279.0,167.3 290.6,167.3 302.3,167.3 313.9,168.0 325.5,168.0 337.2,168.0 348.8,168.0 360.4,168.0 372.1,168.0 383.7,168.0 395.3,199.5 406.9,199.5 418.6,199.5 430.2,199.5 441.8,199.5 453.5,200.2 465.1,200.2 476.7,200.2 488.4,200.2 500.0,244.0 511.6,285.0 523.3,46.4 534.9,46.4 546.5,46.4 558.2,33.2 569.8,33.2 581.4,33.2 593.1,33.2 604.7,33.2 616.3,33.2 627.9,33.2 639.6,33.2 651.2,33.2 662.8,33.4 674.5,33.4 686.1,93.1 697.7,93.1 709.4,93.1 721.0,93.1 732.6,146.3 744.3,146.3 755.9,146.3 767.5,146.6 779.2,205.4 790.8,205.4 802.4,205.4 814.1,205.7 825.7,203.1 837.3,203.1 848.9,272.4 860.6,272.4 872.2,272.4 883.8,23.6 895.5,23.6 907.1,23.6 918.7,78.4 930.4,79.8 942.0,79.8 942.0,286.0",
      "base_y": 286.0,
      "floor_y": 282.7,
      "yticks": [
        {
          "y": 286.0,
          "label": "R0"
        },
        {
          "y": 220.0,
          "label": "R5k"
        },
        {
          "y": 154.0,
          "label": "R10k"
        },
        {
          "y": 88.0,
          "label": "R15k"
        },
        {
          "y": 22.0,
          "label": "R20k"
        }
      ],
      "months": [
        {
          "x": 58.0,
          "label": "Sep 2021"
        },
        {
          "x": 244.1,
          "label": "Oct 2021"
        },
        {
          "x": 604.7,
          "label": "Nov 2021"
        }
      ],
      "bands": [
        {
          "x": 58.0,
          "width": 23.3
        },
        {
          "x": 395.3,
          "width": 34.9
        },
        {
          "x": 755.9,
          "width": 34.9
        }
      ],
      "band_label_x": 58.0,
      "landmarks": [
        {
          "x": 883.8,
          "y": 23.6,
          "type": "salary",
          "date_label": "25 Nov",
          "amount_label": "R18,849"
        },
        {
          "x": 523.3,
          "y": 46.4,
          "type": "salary",
          "date_label": "25 Oct",
          "amount_label": "R18,078"
        },
        {
          "x": 162.7,
          "y": 47.7,
          "type": "salary",
          "date_label": "24 Sep",
          "amount_label": "R18,013"
        }
      ],
      "series": [
        {
          "x": 58.0,
          "y": 241.1,
          "bal": 3405,
          "date": "15 Sep"
        },
        {
          "x": 69.6,
          "y": 241.1,
          "bal": 3405,
          "date": "16 Sep"
        },
        {
          "x": 81.3,
          "y": 241.1,
          "bal": 3405,
          "date": "17 Sep"
        },
        {
          "x": 92.9,
          "y": 241.1,
          "bal": 3405,
          "date": "18 Sep"
        },
        {
          "x": 104.5,
          "y": 285.3,
          "bal": 50,
          "date": "19 Sep"
        },
        {
          "x": 116.2,
          "y": 285.3,
          "bal": 50,
          "date": "20 Sep"
        },
        {
          "x": 127.8,
          "y": 285.3,
          "bal": 50,
          "date": "21 Sep"
        },
        {
          "x": 139.4,
          "y": 285.3,
          "bal": 50,
          "date": "22 Sep"
        },
        {
          "x": 151.1,
          "y": 285.3,
          "bal": 50,
          "date": "23 Sep"
        },
        {
          "x": 162.7,
          "y": 47.7,
          "bal": 18054,
          "date": "24 Sep"
        },
        {
          "x": 174.3,
          "y": 47.7,
          "bal": 18054,
          "date": "25 Sep"
        },
        {
          "x": 185.9,
          "y": 47.7,
          "bal": 18054,
          "date": "26 Sep"
        },
        {
          "x": 197.6,
          "y": 48.4,
          "bal": 18002,
          "date": "27 Sep"
        },
        {
          "x": 209.2,
          "y": 48.4,
          "bal": 18002,
          "date": "28 Sep"
        },
        {
          "x": 220.8,
          "y": 114.4,
          "bal": 13002,
          "date": "29 Sep"
        },
        {
          "x": 232.5,
          "y": 114.4,
          "bal": 13002,
          "date": "30 Sep"
        },
        {
          "x": 244.1,
          "y": 114.4,
          "bal": 13002,
          "date": "1 Oct"
        },
        {
          "x": 255.7,
          "y": 114.4,
          "bal": 13002,
          "date": "2 Oct"
        },
        {
          "x": 267.4,
          "y": 114.4,
          "bal": 13002,
          "date": "3 Oct"
        },
        {
          "x": 279.0,
          "y": 167.3,
          "bal": 8992,
          "date": "4 Oct"
        },
        {
          "x": 290.6,
          "y": 167.3,
          "bal": 8992,
          "date": "5 Oct"
        },
        {
          "x": 302.3,
          "y": 167.3,
          "bal": 8992,
          "date": "6 Oct"
        },
        {
          "x": 313.9,
          "y": 168.0,
          "bal": 8942,
          "date": "7 Oct"
        },
        {
          "x": 325.5,
          "y": 168.0,
          "bal": 8942,
          "date": "8 Oct"
        },
        {
          "x": 337.2,
          "y": 168.0,
          "bal": 8942,
          "date": "9 Oct"
        },
        {
          "x": 348.8,
          "y": 168.0,
          "bal": 8942,
          "date": "10 Oct"
        },
        {
          "x": 360.4,
          "y": 168.0,
          "bal": 8942,
          "date": "11 Oct"
        },
        {
          "x": 372.1,
          "y": 168.0,
          "bal": 8942,
          "date": "12 Oct"
        },
        {
          "x": 383.7,
          "y": 168.0,
          "bal": 8942,
          "date": "13 Oct"
        },
        {
          "x": 395.3,
          "y": 199.5,
          "bal": 6552,
          "date": "14 Oct"
        },
        {
          "x": 406.9,
          "y": 199.5,
          "bal": 6552,
          "date": "15 Oct"
        },
        {
          "x": 418.6,
          "y": 199.5,
          "bal": 6552,
          "date": "16 Oct"
        },
        {
          "x": 430.2,
          "y": 199.5,
          "bal": 6552,
          "date": "17 Oct"
        },
        {
          "x": 441.8,
          "y": 199.5,
          "bal": 6552,
          "date": "18 Oct"
        },
        {
          "x": 453.5,
          "y": 200.2,
          "bal": 6501,
          "date": "19 Oct"
        },
        {
          "x": 465.1,
          "y": 200.2,
          "bal": 6501,
          "date": "20 Oct"
        },
        {
          "x": 476.7,
          "y": 200.2,
          "bal": 6501,
          "date": "21 Oct"
        },
        {
          "x": 488.4,
          "y": 200.2,
          "bal": 6501,
          "date": "22 Oct"
        },
        {
          "x": 500.0,
          "y": 244.0,
          "bal": 3180,
          "date": "23 Oct"
        },
        {
          "x": 511.6,
          "y": 285.0,
          "bal": 75,
          "date": "24 Oct"
        },
        {
          "x": 523.3,
          "y": 46.4,
          "bal": 18153,
          "date": "25 Oct"
        },
        {
          "x": 534.9,
          "y": 46.4,
          "bal": 18153,
          "date": "26 Oct"
        },
        {
          "x": 546.5,
          "y": 46.4,
          "bal": 18153,
          "date": "27 Oct"
        },
        {
          "x": 558.2,
          "y": 33.2,
          "bal": 19153,
          "date": "28 Oct"
        },
        {
          "x": 569.8,
          "y": 33.2,
          "bal": 19153,
          "date": "29 Oct"
        },
        {
          "x": 581.4,
          "y": 33.2,
          "bal": 19153,
          "date": "30 Oct"
        },
        {
          "x": 593.1,
          "y": 33.2,
          "bal": 19153,
          "date": "31 Oct"
        },
        {
          "x": 604.7,
          "y": 33.2,
          "bal": 19153,
          "date": "1 Nov"
        },
        {
          "x": 616.3,
          "y": 33.2,
          "bal": 19148,
          "date": "2 Nov"
        },
        {
          "x": 627.9,
          "y": 33.2,
          "bal": 19148,
          "date": "3 Nov"
        },
        {
          "x": 639.6,
          "y": 33.2,
          "bal": 19148,
          "date": "4 Nov"
        },
        {
          "x": 651.2,
          "y": 33.2,
          "bal": 19148,
          "date": "5 Nov"
        },
        {
          "x": 662.8,
          "y": 33.4,
          "bal": 19136,
          "date": "6 Nov"
        },
        {
          "x": 674.5,
          "y": 33.4,
          "bal": 19136,
          "date": "7 Nov"
        },
        {
          "x": 686.1,
          "y": 93.1,
          "bal": 14611,
          "date": "8 Nov"
        },
        {
          "x": 697.7,
          "y": 93.1,
          "bal": 14611,
          "date": "9 Nov"
        },
        {
          "x": 709.4,
          "y": 93.1,
          "bal": 14611,
          "date": "10 Nov"
        },
        {
          "x": 721.0,
          "y": 93.1,
          "bal": 14611,
          "date": "11 Nov"
        },
        {
          "x": 732.6,
          "y": 146.3,
          "bal": 10581,
          "date": "12 Nov"
        },
        {
          "x": 744.3,
          "y": 146.3,
          "bal": 10581,
          "date": "13 Nov"
        },
        {
          "x": 755.9,
          "y": 146.3,
          "bal": 10581,
          "date": "14 Nov"
        },
        {
          "x": 767.5,
          "y": 146.6,
          "bal": 10560,
          "date": "15 Nov"
        },
        {
          "x": 779.2,
          "y": 205.4,
          "bal": 6103,
          "date": "16 Nov"
        },
        {
          "x": 790.8,
          "y": 205.4,
          "bal": 6103,
          "date": "17 Nov"
        },
        {
          "x": 802.4,
          "y": 205.4,
          "bal": 6103,
          "date": "18 Nov"
        },
        {
          "x": 814.1,
          "y": 205.7,
          "bal": 6081,
          "date": "19 Nov"
        },
        {
          "x": 825.7,
          "y": 203.1,
          "bal": 6280,
          "date": "20 Nov"
        },
        {
          "x": 837.3,
          "y": 203.1,
          "bal": 6280,
          "date": "21 Nov"
        },
        {
          "x": 848.9,
          "y": 272.4,
          "bal": 1030,
          "date": "22 Nov"
        },
        {
          "x": 860.6,
          "y": 272.4,
          "bal": 1030,
          "date": "23 Nov"
        },
        {
          "x": 872.2,
          "y": 272.4,
          "bal": 1030,
          "date": "24 Nov"
        },
        {
          "x": 883.8,
          "y": 23.6,
          "bal": 19878,
          "date": "25 Nov"
        },
        {
          "x": 895.5,
          "y": 23.6,
          "bal": 19878,
          "date": "26 Nov"
        },
        {
          "x": 907.1,
          "y": 23.6,
          "bal": 19878,
          "date": "27 Nov"
        },
        {
          "x": 918.7,
          "y": 78.4,
          "bal": 15730,
          "date": "28 Nov"
        },
        {
          "x": 930.4,
          "y": 79.8,
          "bal": 15621,
          "date": "29 Nov"
        },
        {
          "x": 942.0,
          "y": 79.8,
          "bal": 15617,
          "date": "30 Nov"
        }
      ]
    }
  },
  "income": {
    "available": true,
    "accessible": "59140.11",
    "monthly_accessible": "19713.37",
    "observed": "60090.97",
    "monthly_observed": "20030.32",
    "unverified": "950.86",
    "verification_status": "verified",
    "by_source": [
      {
        "source": "salary",
        "label": "Salary",
        "amount": "54940.11",
        "count": 3,
        "confidence": 0.9
      },
      {
        "source": "other_income",
        "label": "Other income",
        "amount": "5150.86",
        "count": 4,
        "confidence": 0.3
      }
    ],
    "excluded": {
      "loans": {
        "amount": 0.0,
        "count": 0
      },
      "gambling": {
        "amount": 0.0,
        "count": 0
      },
      "transfers": {
        "amount": 0.0,
        "count": 0
      },
      "reversals": {
        "amount": 0.0,
        "count": 0
      }
    }
  },
  "corroboration": {
    "available": true,
    "state": "compared",
    "band": "corroborated",
    "status_label": "Corroborated",
    "status_class": "clear",
    "claimed": "18000",
    "demonstrated": "19713.37",
    "gap_rand": "1713.37",
    "gap_pct": "0.09518722222222222222222222222",
    "ratio": "1.095187222222222222222222222",
    "verification_status": "verified",
    "insight": "Verified income meets or exceeds the claimed take-home for this window \u2014 the stated income is corroborated by the bank statement.",
    "caveats": []
  },
  "reason_codes": [
    {
      "statement": "Cash withdrawal dominance: Cash withdrawals 40-70%",
      "explanation": "How much spend leaves as cash withdrawals. Cash-dominant behaviour hides where money goes and weakens the rest of the statement signal.",
      "direction": "negative",
      "family": "red_flags"
    },
    {
      "statement": "Insufficient history for Returned debit orders (6mo window); contributed neutral points",
      "explanation": "Bounced debit orders \u2014 payments that failed for lack of funds. A track record of returns is a direct affordability and discipline warning.",
      "direction": "negative",
      "family": "discipline"
    },
    {
      "statement": "Insufficient history for Short-term lender stacking density; contributed neutral points",
      "explanation": "How many short-term lenders are already debiting the account. Stacking points to existing credit stress and a thinner margin for a new loan.",
      "direction": "negative",
      "family": "discipline"
    }
  ],
  "affordability": {
    "available": true,
    "monthly_income": "19713.37",
    "monthly_expenses": "17142.90",
    "disposable": "2570.47",
    "indicative_max_instalment": "899.66",
    "basis_note": "Statement-derived \u00b7 indicative \u00b7 not a Reg 23A decision \u00b7 does not match the bureau-look-back flow",
    "verification_status": "verified"
  },
  "transaction_buckets": {
    "income": [
      {
        "category": "salary",
        "label": "Salary",
        "monthly_total": "18313.37"
      },
      {
        "category": "other_income",
        "label": "Other income",
        "monthly_total": "1716.95"
      }
    ],
    "expenses": [
      {
        "category": "cash_withdrawal",
        "label": "Cash withdrawals",
        "monthly_total": "9550.00",
        "is_discretionary": false,
        "is_opaque": true
      },
      {
        "category": "other",
        "label": "Other / uncategorised",
        "monthly_total": "6396.77",
        "is_discretionary": false,
        "is_opaque": false
      },
      {
        "category": "transfer",
        "label": "Transfers",
        "monthly_total": "1000.00",
        "is_discretionary": false,
        "is_opaque": true
      },
      {
        "category": "communication",
        "label": "Communication & media",
        "monthly_total": "105.33",
        "is_discretionary": false,
        "is_opaque": false
      },
      {
        "category": "bank_charges",
        "label": "Bank charges & fees",
        "monthly_total": "52.57",
        "is_discretionary": false,
        "is_opaque": false
      },
      {
        "category": "transport",
        "label": "Transport & fuel",
        "monthly_total": "21.30",
        "is_discretionary": false,
        "is_opaque": false
      },
      {
        "category": "entertainment_dining",
        "label": "Entertainment & dining",
        "monthly_total": "16.93",
        "is_discretionary": true,
        "is_opaque": false
      }
    ],
    "totals": {
      "income": "20030.32",
      "expenses": "17142.90",
      "discretionary": "16.93",
      "net": "2887.42"
    },
    "window_months": 3
  },
  "cross_sell": {
    "available": true,
    "items": [],
    "detected_count": 0,
    "wellness_referral": false
  },
  "fraud": {
    "verdict": "review",
    "documents": [
      {
        "filename": "547503776-capitec.pdf",
        "doc_type": "bank_stmt",
        "status": "ready",
        "fraud_score": 15
      }
    ],
    "checks": [
      {
        "name": "character_spacing_inconsistency",
        "category": "font_layout",
        "status": "not_implemented",
        "passed": null,
        "killer": false,
        "score_contribution": 0
      },
      {
        "name": "mixed_font_families",
        "category": "font_layout",
        "status": "not_implemented",
        "passed": null,
        "killer": false,
        "score_contribution": 0
      },
      {
        "name": "pixel_alignment_irregularity",
        "category": "font_layout",
        "status": "not_implemented",
        "passed": null,
        "killer": false,
        "score_contribution": 0
      },
      {
        "name": "resolution_inconsistency",
        "category": "font_layout",
        "status": "not_implemented",
        "passed": null,
        "killer": false,
        "score_contribution": 0
      },
      {
        "name": "whitespace_patching",
        "category": "font_layout",
        "status": "not_implemented",
        "passed": null,
        "killer": true,
        "score_contribution": 0
      },
      {
        "name": "balance_forward_mismatch",
        "category": "mathematical",
        "status": "implemented",
        "passed": true,
        "killer": true,
        "score_contribution": 0
      },
      {
        "name": "gross_minus_deductions_mismatch",
        "category": "mathematical",
        "status": "not_implemented",
        "passed": null,
        "killer": true,
        "score_contribution": 0
      },
      {
        "name": "running_balance_arithmetic_error",
        "category": "mathematical",
        "status": "implemented",
        "passed": false,
        "killer": false,
        "score_contribution": 15
      },
      {
        "name": "ytd_accumulation_error",
        "category": "mathematical",
        "status": "not_implemented",
        "passed": null,
        "killer": false,
        "score_contribution": 0
      },
      {
        "name": "author_field_blank_or_generic",
        "category": "metadata",
        "status": "not_implemented",
        "passed": null,
        "killer": false,
        "score_contribution": 0
      },
      {
        "name": "creation_date_postdates_period",
        "category": "metadata",
        "status": "implemented",
        "passed": true,
        "killer": false,
        "score_contribution": 0
      },
      {
        "name": "modified_vs_creation_conflict",
        "category": "metadata",
        "status": "implemented",
        "passed": true,
        "killer": true,
        "score_contribution": 0
      },
      {
        "name": "software_version_anomaly",
        "category": "metadata",
        "status": "not_implemented",
        "passed": null,
        "killer": false,
        "score_contribution": 0
      },
      {
        "name": "timezone_locale_mismatch",
        "category": "metadata",
        "status": "not_implemented",
        "passed": null,
        "killer": false,
        "score_contribution": 0
      },
      {
        "name": "page_numbering_anomaly",
        "category": "sequence",
        "status": "implemented",
        "passed": true,
        "killer": false,
        "score_contribution": 0
      },
      {
        "name": "reference_number_format_invalid",
        "category": "sequence",
        "status": "not_implemented",
        "passed": null,
        "killer": false,
        "score_contribution": 0
      },
      {
        "name": "statement_period_gap_overlap",
        "category": "sequence",
        "status": "implemented",
        "passed": true,
        "killer": false,
        "score_contribution": 0
      },
      {
        "name": "transaction_dates_outside_period",
        "category": "sequence",
        "status": "not_implemented",
        "passed": null,
        "killer": false,
        "score_contribution": 0
      }
    ]
  },
  "tamper": {
    "available": true,
    "advisory": true,
    "tier": "clean",
    "label": "Clean",
    "css_class": "tamper-clean",
    "score": 0,
    "reasons": [],
    "checks": [
      {
        "key": "stacked_text_overlay",
        "label": "Text overlay (name/value pasted over the original)",
        "state": "ok",
        "reasons": []
      },
      {
        "key": "cross_page_name_consistency",
        "label": "Account-holder name consistent across pages",
        "state": "not_assessed",
        "reasons": []
      },
      {
        "key": "rasterisation",
        "label": "Text layer present (not a flattened scan)",
        "state": "ok",
        "reasons": []
      },
      {
        "key": "metadata_corroborators",
        "label": "Document metadata (dates, producer)",
        "state": "ok",
        "reasons": []
      },
      {
        "key": "arithmetic_reconciliation",
        "label": "Running-balance arithmetic",
        "state": "not_assessed",
        "reasons": []
      }
    ],
    "per_document": [
      {
        "tier": "clean",
        "label": "547503776-capitec.pdf",
        "score": 0,
        "reasons": [],
        "document_id": "d20128eb-671f-4b77-89e2-ea940cb52ae4"
      }
    ]
  },
  "psychometric": {
    "available": true,
    "status": "completed",
    "trust": {
      "confidence": "good",
      "completed": true,
      "answered": 17,
      "duration_ms": 100000,
      "attention_check_passed": true,
      "social_desirability_flag": false,
      "contradiction_count": 0,
      "probe_count": 0
    },
    "affordability": {
      "statement_disposable": "1170.47",
      "points": [
        {
          "dir": "down",
          "text": "Self-reports informal debt; any cash repayments wouldn't show on the account \u2014 unquantifiable, confirm before lending."
        },
        {
          "dir": "context",
          "text": "Dependents / regular family support \u2014 competing claims on income, not separable on the statement."
        }
      ]
    },
    "reason_codes": [
      {
        "tag": "risk_down",
        "label": "Dependability / self-control signal",
        "signal": "provisional \u2014 direction unvalidated"
      }
    ],
    "reconciliation": [],
    "traits": [
      {
        "item_id": "B1",
        "label": "I\u2019d rather keep my options open and decide as I go",
        "verdict": null
      },
      {
        "item_id": "B2",
        "label": "Pay the R600 now",
        "verdict": null
      },
      {
        "item_id": "B3",
        "label": "A serious promise I have to keep",
        "verdict": null
      },
      {
        "item_id": "B4",
        "label": "I\u2019m comfortable using credit to get what I need now",
        "verdict": null
      }
    ]
  },
  "transactions": [
    {
      "date": "2021-11-30",
      "description": "Self-service Statement PrintFee",
      "category": "other",
      "amount": "-3.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-30",
      "description": "ATM CashWithdrawal Maboneng Gtza",
      "category": "cash_withdrawal",
      "amount": "-5000.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-30",
      "description": "SMS Notification Fee",
      "category": "bank_charges",
      "amount": "-0.40",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-29",
      "description": "Prepaid Mobile PurchaseFee",
      "category": "bank_charges",
      "amount": "-0.50",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-29",
      "description": "USSD Prepaid Purchase VODACOM",
      "category": "communication",
      "amount": "-100.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-28",
      "description": "SMS Notification Fee",
      "category": "bank_charges",
      "amount": "-0.40",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-28",
      "description": "CardPurchase Bumper to Bumper 318 JulesStreet Johannesburg Gtza",
      "category": "other",
      "amount": "-4147.33",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-28",
      "description": "ServiceFee",
      "category": "bank_charges",
      "amount": "-9.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-25",
      "description": "Payment Received:Salary 2048550187",
      "category": "salary_wages",
      "amount": "18849.19",
      "is_salary": true,
      "income_source": "salary",
      "is_reversal": false
    },
    {
      "date": "2021-11-25",
      "description": "SMS Notification Fee",
      "category": "bank_charges",
      "amount": "-0.40",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-22",
      "description": "USSD Beneficiary Payment to1260782830",
      "category": "other",
      "amount": "-5250.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-22",
      "description": "Payment Fee (Capitec toCapitec)",
      "category": "bank_charges",
      "amount": "-1.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-20",
      "description": "SMS Notification Fee",
      "category": "bank_charges",
      "amount": "-0.40",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-20",
      "description": "Banking App Payment Received MSebiloane",
      "category": "other",
      "amount": "250.00",
      "is_salary": false,
      "income_source": "other_income",
      "is_reversal": false
    },
    {
      "date": "2021-11-19",
      "description": "Prepaid Mobile PurchaseFee",
      "category": "bank_charges",
      "amount": "-0.50",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-19",
      "description": "SMS Notification Fee",
      "category": "bank_charges",
      "amount": "-0.40",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-19",
      "description": "KFC Doorfontein (Card5262)",
      "category": "entertainment_dining",
      "amount": "-50.80",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-19",
      "description": "USSD Prepaid Purchase VODACOM",
      "category": "communication",
      "amount": "-12.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-16",
      "description": "ATM Cash Withdrawal Noord Street 3 Johannesburg Gtza",
      "category": "cash_withdrawal",
      "amount": "-4450.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-16",
      "description": "ATM Cash WithdrawalFee",
      "category": "bank_charges",
      "amount": "-9.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-15",
      "description": "Online Purchase Declined WithdrawalFee",
      "category": "bank_charges",
      "amount": "-7.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-15",
      "description": "Online Purchase Declined WithdrawalFee",
      "category": "bank_charges",
      "amount": "-7.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-15",
      "description": "Online Purchase Declined WithdrawalFee",
      "category": "bank_charges",
      "amount": "-7.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-15",
      "description": "Online Purchase Declined WithdrawalFee",
      "category": "bank_charges",
      "amount": "-7.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-12",
      "description": "ATM WithdrawalFee",
      "category": "bank_charges",
      "amount": "-30.50",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-12",
      "description": "ATM Cash Withdrawal Eastgate Mall",
      "category": "cash_withdrawal",
      "amount": "-4000.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-08",
      "description": "ATM Cash Withdrawal Atm Johannesburg End 2djohannesburg Gtza",
      "category": "cash_withdrawal",
      "amount": "-4500.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-08",
      "description": "SMS Notification Fee",
      "category": "bank_charges",
      "amount": "-0.40",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-08",
      "description": "ATM Cash WithdrawalFee",
      "category": "bank_charges",
      "amount": "-24.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-06",
      "description": "USSD Prepaid Purchase VODACOM 24hrClient Care Centre 0860 10 20 43 E ClientCare@capitecbank.co.za capitecbank.co.za CapitecBankisanauthorisedfinancialservices(FSP46669)andregisteredcreditprovider(NCRCP13).CapitecBankLimitedReg.No.:1980/003695/06 Page 1of2",
      "category": "communication",
      "amount": "-12.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-06",
      "description": "Prepaid Mobile PurchaseFee",
      "category": "bank_charges",
      "amount": "-0.50",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-11-02",
      "description": "Monthly Account AdminFee",
      "category": "bank_charges",
      "amount": "-5.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-28",
      "description": "PaymentReceived: LunoAcc56h537j391n",
      "category": "other",
      "amount": "1000.86",
      "is_salary": false,
      "income_source": "other_income",
      "is_reversal": false
    },
    {
      "date": "2021-10-28",
      "description": "SMS Notification Fee",
      "category": "bank_charges",
      "amount": "-0.40",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-25",
      "description": "Payment Received:Salary 2048550187",
      "category": "salary_wages",
      "amount": "18077.74",
      "is_salary": true,
      "income_source": "salary",
      "is_reversal": false
    },
    {
      "date": "2021-10-24",
      "description": "Shell Harrismith (Card5262)",
      "category": "transport",
      "amount": "-63.90",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-24",
      "description": "SMS Notification Fee",
      "category": "bank_charges",
      "amount": "-0.40",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-24",
      "description": "ATM Cash WithdrawalFee",
      "category": "bank_charges",
      "amount": "-9.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-24",
      "description": "Prepaid Mobile PurchaseFee",
      "category": "bank_charges",
      "amount": "-0.50",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-24",
      "description": "App Immediate Transfer to Savings 62554456871",
      "category": "transfer",
      "amount": "-3000.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-24",
      "description": "USSD Prepaid Purchase VODACOM",
      "category": "communication",
      "amount": "-30.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-23",
      "description": "Cash WithdrawalFee",
      "category": "bank_charges",
      "amount": "-8.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-23",
      "description": "Payment Received: Lungile Transfer2126376760",
      "category": "other",
      "amount": "2500.00",
      "is_salary": false,
      "income_source": "other_income",
      "is_reversal": false
    },
    {
      "date": "2021-10-23",
      "description": "Cash Withdrawal Ncr Jhb Carlton C 3 Johannesburg Gtza",
      "category": "cash_withdrawal",
      "amount": "-2400.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-23",
      "description": "USSD Beneficiary Payment to1562249116",
      "category": "other",
      "amount": "-3400.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-23",
      "description": "Payment Fee (Capitec toCapitec)",
      "category": "bank_charges",
      "amount": "-1.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-23",
      "description": "Prepaid Mobile PurchaseFee",
      "category": "bank_charges",
      "amount": "-0.50",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-23",
      "description": "USSD Prepaid Purchase VODACOM",
      "category": "communication",
      "amount": "-12.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-23",
      "description": "SMS Notification Fee",
      "category": "bank_charges",
      "amount": "-0.40",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-23",
      "description": "SMS Notification Fee",
      "category": "bank_charges",
      "amount": "-0.40",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-19",
      "description": "USSD Prepaid Purchase VODACOM",
      "category": "communication",
      "amount": "-50.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-19",
      "description": "Prepaid Mobile PurchaseFee",
      "category": "bank_charges",
      "amount": "-0.50",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-14",
      "description": "Londonia Fashion Two Johannesburg (Card5262)",
      "category": "other",
      "amount": "-2390.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-07",
      "description": "Prepaid Mobile PurchaseFee",
      "category": "bank_charges",
      "amount": "-0.50",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-07",
      "description": "USSD Prepaid Purchase VODACOM",
      "category": "communication",
      "amount": "-50.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-10-04",
      "description": "Card Purchase SportsSceneJohannesburg (Card5262)",
      "category": "other",
      "amount": "-3999.99",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-09-29",
      "description": "SMS Notification Fee",
      "category": "bank_charges",
      "amount": "-1.20",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-09-29",
      "description": "ATM Cash Withdrawal Noord Street Johannesburg Gtza",
      "category": "cash_withdrawal",
      "amount": "-5000.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-09-29",
      "description": "ATM Cash WithdrawalFee",
      "category": "bank_charges",
      "amount": "-9.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-09-27",
      "description": "SMS Notification Fee",
      "category": "bank_charges",
      "amount": "-1.20",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-09-27",
      "description": "Prepaid Mobile PurchaseFee",
      "category": "bank_charges",
      "amount": "-0.50",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-09-27",
      "description": "USSD Prepaid Purchase VODACOM",
      "category": "communication",
      "amount": "-50.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-09-24",
      "description": "Payment Received:Salary 2048550187",
      "category": "salary_wages",
      "amount": "18013.18",
      "is_salary": true,
      "income_source": "salary",
      "is_reversal": false
    },
    {
      "date": "2021-09-19",
      "description": "ATM Cash Withdrawal Noord Street03 Jhb Cbd Johannesburg Gtza",
      "category": "cash_withdrawal",
      "amount": "-3300.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-09-19",
      "description": "ATM Cash WithdrawalFee",
      "category": "bank_charges",
      "amount": "-9.00",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-09-15",
      "description": "Cash Deposit Fee(Notes)",
      "category": "bank_charges",
      "amount": "-4.80",
      "is_salary": false,
      "income_source": null,
      "is_reversal": false
    },
    {
      "date": "2021-09-15",
      "description": "Cash Deposit Cash Dep Dnr Mandeni DnrMandeni Centre",
      "category": "other",
      "amount": "1400.00",
      "is_salary": false,
      "income_source": "other_income",
      "is_reversal": false
    }
  ],
  "meta": {
    "policy_version": "affyscore-v0.1-2026-05-30",
    "calc_version": "GNR202-GG38557-2015",
    "data_window_months": 3
  }
}