import { useState, useMemo, useRef } from "react";
import { BarChart, Bar, LineChart, Line, ComposedChart, PieChart, Pie,
XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer, Cell, ReferenceLine } from "recharts";
const RAW_MONTHLY = [{"Brand":"HF","Year":2025,"Month":"Jan","mi":0,"Net_CB":361422,"Rev":32182898},{"Brand":"LM","Year":2025,"Month":"Jan","mi":0,"Net_CB":-29432,"Rev":25435876},{"Brand":"HF","Year":2025,"Month":"Feb","mi":1,"Net_CB":515016,"Rev":30959469},{"Brand":"LM","Year":2025,"Month":"Feb","mi":1,"Net_CB":-37877,"Rev":23336875},{"Brand":"HF","Year":2025,"Month":"Mar","mi":2,"Net_CB":223264,"Rev":42156962},{"Brand":"LM","Year":2025,"Month":"Mar","mi":2,"Net_CB":378268,"Rev":26628054},{"Brand":"HF","Year":2025,"Month":"Apr","mi":3,"Net_CB":264047,"Rev":32095866},{"Brand":"LM","Year":2025,"Month":"Apr","mi":3,"Net_CB":290952,"Rev":22744981},{"Brand":"HF","Year":2025,"Month":"May","mi":4,"Net_CB":617384,"Rev":38281745},{"Brand":"LM","Year":2025,"Month":"May","mi":4,"Net_CB":472400,"Rev":25894262},{"Brand":"HF","Year":2025,"Month":"Jun","mi":5,"Net_CB":545267,"Rev":42991498},{"Brand":"LM","Year":2025,"Month":"Jun","mi":5,"Net_CB":-8449,"Rev":24139679},{"Brand":"HF","Year":2025,"Month":"Jul","mi":6,"Net_CB":226040,"Rev":35255656},{"Brand":"LM","Year":2025,"Month":"Jul","mi":6,"Net_CB":335647,"Rev":24415030},{"Brand":"HF","Year":2025,"Month":"Aug","mi":7,"Net_CB":591152,"Rev":32712478},{"Brand":"LM","Year":2025,"Month":"Aug","mi":7,"Net_CB":430421,"Rev":20515660},{"Brand":"HF","Year":2025,"Month":"Sep","mi":8,"Net_CB":-322622,"Rev":50474915},{"Brand":"LM","Year":2025,"Month":"Sep","mi":8,"Net_CB":131407,"Rev":18588037},{"Brand":"HF","Year":2025,"Month":"Oct","mi":9,"Net_CB":264719,"Rev":38350209},{"Brand":"LM","Year":2025,"Month":"Oct","mi":9,"Net_CB":-81256,"Rev":23959301},{"Brand":"HF","Year":2025,"Month":"Nov","mi":10,"Net_CB":1177936,"Rev":35871197},{"Brand":"LM","Year":2025,"Month":"Nov","mi":10,"Net_CB":118732,"Rev":18853294},{"Brand":"HF","Year":2025,"Month":"Dec","mi":11,"Net_CB":294233,"Rev":39451449},{"Brand":"LM","Year":2025,"Month":"Dec","mi":11,"Net_CB":133379,"Rev":18072200},{"Brand":"HF","Year":2026,"Month":"Jan","mi":0,"Net_CB":700471,"Rev":41917759},{"Brand":"LM","Year":2026,"Month":"Jan","mi":0,"Net_CB":180210,"Rev":18340378},{"Brand":"HF","Year":2026,"Month":"Feb","mi":1,"Net_CB":470039,"Rev":32575288},{"Brand":"LM","Year":2026,"Month":"Feb","mi":1,"Net_CB":468182,"Rev":18033480},{"Brand":"HF","Year":2026,"Month":"Mar","mi":2,"Net_CB":856824,"Rev":42581829},{"Brand":"LM","Year":2026,"Month":"Mar","mi":2,"Net_CB":282563,"Rev":20320147},{"Brand":"HF","Year":2026,"Month":"Apr","mi":3,"Net_CB":481484,"Rev":41049081},{"Brand":"LM","Year":2026,"Month":"Apr","mi":3,"Net_CB":71906,"Rev":20311623},{"Brand":"HF","Year":2026,"Month":"May","mi":4,"Net_CB":782789,"Rev":36388768},{"Brand":"LM","Year":2026,"Month":"May","mi":4,"Net_CB":188649,"Rev":24687532}];
const RAW_CUSTOMER = [{"Brand":"HF","Year":2025,"Customer":"Walmart","Channel":"Walmart","Net_CB":1174277,"Rev":89848850,"Pct":1.31},{"Brand":"HF","Year":2025,"Customer":"Amazon","Channel":"Digital","Net_CB":671051,"Rev":63393065,"Pct":1.06},{"Brand":"HF","Year":2025,"Customer":"Costco","Channel":"Club","Net_CB":646426,"Rev":77712105,"Pct":0.83},{"Brand":"HF","Year":2025,"Customer":"Kroger","Channel":"Grocery","Net_CB":359818,"Rev":19772804,"Pct":1.82},{"Brand":"HF","Year":2025,"Customer":"Publix","Channel":"Grocery","Net_CB":198802,"Rev":5879998,"Pct":3.38},{"Brand":"HF","Year":2025,"Customer":"Meijer","Channel":"Grocery","Net_CB":195421,"Rev":7698599,"Pct":2.54},{"Brand":"HF","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Net_CB":183520,"Rev":25096086,"Pct":0.73},{"Brand":"HF","Year":2025,"Customer":"C&S","Channel":"Grocery","Net_CB":176590,"Rev":0,"Pct":0},{"Brand":"HF","Year":2025,"Customer":"Walmart Canada","Channel":"Walmart","Net_CB":173973,"Rev":2886786,"Pct":6.03},{"Brand":"HF","Year":2025,"Customer":"Walgreens","Channel":"Drug & Dollar","Net_CB":159616,"Rev":17945700,"Pct":0.89},{"Brand":"HF","Year":2025,"Customer":"Shoppers Drug Mart","Channel":"Grocery","Net_CB":119437,"Rev":2410475,"Pct":4.95},{"Brand":"HF","Year":2025,"Customer":"Albertsons","Channel":"Grocery","Net_CB":111936,"Rev":0,"Pct":0},{"Brand":"HF","Year":2025,"Customer":"TJX","Channel":"Specialty","Net_CB":81919,"Rev":1677864,"Pct":4.88},{"Brand":"HF","Year":2025,"Customer":"Target","Channel":"Target","Net_CB":73796,"Rev":85294433,"Pct":0.09},{"Brand":"HF","Year":2025,"Customer":"Crossmark","Channel":"Grocery","Net_CB":56655,"Rev":2147082,"Pct":2.64},{"Brand":"HF","Year":2025,"Customer":"Harris Teeter","Channel":"Grocery","Net_CB":41098,"Rev":1602529,"Pct":2.56},{"Brand":"HF","Year":2025,"Customer":"Dollar General","Channel":"Drug & Dollar","Net_CB":37611,"Rev":8640227,"Pct":0.44},{"Brand":"HF","Year":2025,"Customer":"KOHLS","Channel":"Specialty","Net_CB":35161,"Rev":989935,"Pct":3.55},{"Brand":"HF","Year":2025,"Customer":"H-E-B","Channel":"Grocery","Net_CB":20212,"Rev":5766201,"Pct":0.35},{"Brand":"HF","Year":2026,"Customer":"Target","Channel":"Target","Net_CB":527996,"Rev":33951026,"Pct":1.56},{"Brand":"HF","Year":2026,"Customer":"Amazon","Channel":"Digital","Net_CB":496225,"Rev":32183462,"Pct":1.54},{"Brand":"HF","Year":2026,"Customer":"Costco","Channel":"Club","Net_CB":388804,"Rev":31238995,"Pct":1.24},{"Brand":"HF","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Net_CB":309113,"Rev":10140212,"Pct":3.05},{"Brand":"HF","Year":2026,"Customer":"Kroger","Channel":"Grocery","Net_CB":231738,"Rev":7887174,"Pct":2.94},{"Brand":"HF","Year":2026,"Customer":"Walmart","Channel":"Walmart","Net_CB":188744,"Rev":41014673,"Pct":0.46},{"Brand":"HF","Year":2026,"Customer":"Shoppers Drug Mart","Channel":"Grocery","Net_CB":145187,"Rev":1363735,"Pct":10.65},{"Brand":"HF","Year":2026,"Customer":"Walmart Canada","Channel":"Walmart","Net_CB":145084,"Rev":1222143,"Pct":11.87},{"Brand":"HF","Year":2026,"Customer":"Dollar General","Channel":"Drug & Dollar","Net_CB":141134,"Rev":4245285,"Pct":3.32},{"Brand":"HF","Year":2026,"Customer":"Albertsons","Channel":"Grocery","Net_CB":125262,"Rev":0,"Pct":0},{"Brand":"HF","Year":2026,"Customer":"Walgreens","Channel":"Drug & Dollar","Net_CB":114149,"Rev":6219768,"Pct":1.84},{"Brand":"HF","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Net_CB":101639,"Rev":1178450,"Pct":8.62},{"Brand":"HF","Year":2026,"Customer":"KOHLS","Channel":"Specialty","Net_CB":58842,"Rev":505512,"Pct":11.64},{"Brand":"HF","Year":2026,"Customer":"TJX","Channel":"Specialty","Net_CB":51239,"Rev":286222,"Pct":17.90},{"Brand":"LM","Year":2025,"Customer":"Walmart","Channel":"Walmart","Net_CB":1055014,"Rev":65975271,"Pct":1.60},{"Brand":"LM","Year":2025,"Customer":"Sam's Club","Channel":"Club","Net_CB":424252,"Rev":709762,"Pct":59.77},{"Brand":"LM","Year":2025,"Customer":"Ulta","Channel":"Drug & Dollar","Net_CB":218141,"Rev":842411,"Pct":25.89},{"Brand":"LM","Year":2025,"Customer":"Kroger","Channel":"Grocery","Net_CB":196563,"Rev":6331557,"Pct":3.10},{"Brand":"LM","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Net_CB":146087,"Rev":11111998,"Pct":1.31},{"Brand":"LM","Year":2025,"Customer":"Costco","Channel":"Club","Net_CB":104741,"Rev":15460589,"Pct":0.68},{"Brand":"LM","Year":2025,"Customer":"Walgreens","Channel":"Drug & Dollar","Net_CB":68596,"Rev":3008106,"Pct":2.28},{"Brand":"LM","Year":2025,"Customer":"KeHe","Channel":"Grocery","Net_CB":53861,"Rev":0,"Pct":0},{"Brand":"LM","Year":2025,"Customer":"Target","Channel":"Target","Net_CB":-282753,"Rev":35047343,"Pct":-0.81},{"Brand":"LM","Year":2025,"Customer":"Meijer","Channel":"Grocery","Net_CB":36427,"Rev":3072747,"Pct":1.19},{"Brand":"LM","Year":2025,"Customer":"C&S","Channel":"Grocery","Net_CB":25959,"Rev":0,"Pct":0},{"Brand":"LM","Year":2025,"Customer":"Walmart Canada","Channel":"Walmart","Net_CB":18582,"Rev":1046440,"Pct":1.78},{"Brand":"LM","Year":2026,"Customer":"Target","Channel":"Target","Net_CB":588386,"Rev":11841642,"Pct":4.97},{"Brand":"LM","Year":2026,"Customer":"Walmart","Channel":"Walmart","Net_CB":148038,"Rev":20516243,"Pct":0.72},{"Brand":"LM","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Net_CB":80465,"Rev":4032819,"Pct":1.99},{"Brand":"LM","Year":2026,"Customer":"Ulta","Channel":"Drug & Dollar","Net_CB":75300,"Rev":340449,"Pct":22.12},{"Brand":"LM","Year":2026,"Customer":"Costco","Channel":"Club","Net_CB":72440,"Rev":0,"Pct":0},{"Brand":"LM","Year":2026,"Customer":"Kroger","Channel":"Grocery","Net_CB":100063,"Rev":3097177,"Pct":3.23},{"Brand":"LM","Year":2026,"Customer":"Walgreens","Channel":"Drug & Dollar","Net_CB":48640,"Rev":2270046,"Pct":2.14},{"Brand":"LM","Year":2026,"Customer":"Walmart Canada","Channel":"Walmart","Net_CB":51962,"Rev":540959,"Pct":9.61},{"Brand":"LM","Year":2026,"Customer":"Sam's Club","Channel":"Club","Net_CB":-109194,"Rev":629474,"Pct":-17.35},{"Brand":"LM","Year":2026,"Customer":"Meijer","Channel":"Grocery","Net_CB":18920,"Rev":1330057,"Pct":1.42},{"Brand":"LM","Year":2026,"Customer":"Albertsons","Channel":"Grocery","Net_CB":24296,"Rev":0,"Pct":0},{"Brand":"LM","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Net_CB":24400,"Rev":446478,"Pct":5.47},{"Brand":"LM","Year":2026,"Customer":"Harris Teeter","Channel":"Grocery","Net_CB":28840,"Rev":134860,"Pct":21.39}];
const RAW_CHANNEL = [{"Brand":"HF","Year":2025,"Channel":"Grocery","Net_CB":1454117},{"Brand":"HF","Year":2025,"Channel":"Walmart","Net_CB":1348250},{"Brand":"HF","Year":2025,"Channel":"Digital","Net_CB":686402},{"Brand":"HF","Year":2025,"Channel":"Club","Net_CB":659706},{"Brand":"HF","Year":2025,"Channel":"Drug & Dollar","Net_CB":402798},{"Brand":"HF","Year":2025,"Channel":"Specialty","Net_CB":130608},{"Brand":"HF","Year":2025,"Channel":"Target","Net_CB":73796},{"Brand":"HF","Year":2026,"Channel":"Grocery","Net_CB":842373},{"Brand":"HF","Year":2026,"Channel":"Drug & Dollar","Net_CB":569069},{"Brand":"HF","Year":2026,"Channel":"Target","Net_CB":527996},{"Brand":"HF","Year":2026,"Channel":"Digital","Net_CB":497175},{"Brand":"HF","Year":2026,"Channel":"Club","Net_CB":398884},{"Brand":"HF","Year":2026,"Channel":"Walmart","Net_CB":333828},{"Brand":"HF","Year":2026,"Channel":"Specialty","Net_CB":117685},{"Brand":"LM","Year":2025,"Channel":"Walmart","Net_CB":1073597},{"Brand":"LM","Year":2025,"Channel":"Club","Net_CB":545399},{"Brand":"LM","Year":2025,"Channel":"Drug & Dollar","Net_CB":432945},{"Brand":"LM","Year":2025,"Channel":"Grocery","Net_CB":363912},{"Brand":"LM","Year":2025,"Channel":"Target","Net_CB":-282753},{"Brand":"LM","Year":2026,"Channel":"Target","Net_CB":588386},{"Brand":"LM","Year":2026,"Channel":"Drug & Dollar","Net_CB":204404},{"Brand":"LM","Year":2026,"Channel":"Grocery","Net_CB":232899},{"Brand":"LM","Year":2026,"Channel":"Walmart","Net_CB":199999},{"Brand":"LM","Year":2026,"Channel":"Club","Net_CB":-36554},{"Brand":"LM","Year":2026,"Channel":"Specialty","Net_CB":2376}];
const RAW_CUST_MONTHLY = [{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Albertsons","Net_CB":11518},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Amazon","Net_CB":22116},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"C&S","Net_CB":8991},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"CVS","Net_CB":58507},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Costco","Net_CB":66111},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Crossmark","Net_CB":1302},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Dollar General","Net_CB":6129},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Harris Teeter","Net_CB":3780},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"KOHLS","Net_CB":7052},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Kroger","Net_CB":107960},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Meijer","Net_CB":7706},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Publix","Net_CB":5138},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Target","Net_CB":-130629},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Walgreens","Net_CB":-56603},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Walmart","Net_CB":126789},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Walmart Canada","Net_CB":1216},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Albertsons","Net_CB":7000},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Amazon","Net_CB":208283},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"C&S","Net_CB":1530},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"CVS","Net_CB":-470},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Costco","Net_CB":65992},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Crossmark","Net_CB":20515},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Dollar General","Net_CB":7459},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Harris Teeter","Net_CB":1992},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"KOHLS","Net_CB":59670},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Kroger","Net_CB":18330},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Meijer","Net_CB":32693},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Publix","Net_CB":22713},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Shoppers Drug Mart Inc.","Net_CB":8524},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"TJX","Net_CB":585},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Target","Net_CB":47894},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Walgreens","Net_CB":19846},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Walmart","Net_CB":54077},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Walmart Canada","Net_CB":325},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Albertsons","Net_CB":9025},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Amazon","Net_CB":-171075},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"C&S","Net_CB":8466},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"CVS","Net_CB":43368},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Costco","Net_CB":33211},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Crossmark","Net_CB":1374},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Dollar General","Net_CB":6829},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Harris Teeter","Net_CB":929},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"KOHLS","Net_CB":41645},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Kroger","Net_CB":25782},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Meijer","Net_CB":21724},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Publix","Net_CB":5316},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Shoppers Drug Mart Inc.","Net_CB":84148},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"TJX","Net_CB":13334},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Target","Net_CB":-36190},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Walgreens","Net_CB":36459},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Walmart","Net_CB":65591},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Walmart Canada","Net_CB":77977},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Albertsons","Net_CB":7289},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Amazon","Net_CB":185641},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"C&S","Net_CB":12483},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"CVS","Net_CB":57380},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Costco","Net_CB":-229},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Crossmark","Net_CB":12342},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Dollar General","Net_CB":2500},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Harris Teeter","Net_CB":3974},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"KOHLS","Net_CB":-2127},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Kroger","Net_CB":19037},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Meijer","Net_CB":7343},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Publix","Net_CB":93957},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Shoppers Drug Mart Inc.","Net_CB":1472},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Target","Net_CB":18435},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Walgreens","Net_CB":3271},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Walmart","Net_CB":59267},{"Brand":"HF","Year":2025,"Month":"Feb","Customer":"Walmart Canada","Net_CB":10057},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Albertsons","Net_CB":16529},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Amazon","Net_CB":159249},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"C&S","Net_CB":10910},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"CVS","Net_CB":26656},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Costco","Net_CB":45959},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Crossmark","Net_CB":624},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Dollar General","Net_CB":2602},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Harris Teeter","Net_CB":806},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"KOHLS","Net_CB":-87830},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Kroger","Net_CB":15917},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Meijer","Net_CB":4580},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Publix","Net_CB":48114},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Shoppers Drug Mart Inc.","Net_CB":1730},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"TJX","Net_CB":26608},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Target","Net_CB":20871},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Walgreens","Net_CB":9027},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Walmart","Net_CB":23091},{"Brand":"HF","Year":2025,"Month":"Jan","Customer":"Walmart Canada","Net_CB":4418},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Albertsons","Net_CB":13942},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Amazon","Net_CB":-111680},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"C&S","Net_CB":30514},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"CVS","Net_CB":17813},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Costco","Net_CB":92879},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Crossmark","Net_CB":1243},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Dollar General","Net_CB":1102},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Harris Teeter","Net_CB":1545},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Kroger","Net_CB":4472},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Meijer","Net_CB":37609},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Target","Net_CB":6030},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Walgreens","Net_CB":67973},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Walmart","Net_CB":43139},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Walmart Canada","Net_CB":2658},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Albertsons","Net_CB":6272},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Amazon","Net_CB":303688},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"C&S","Net_CB":16418},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"CVS","Net_CB":36598},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Costco","Net_CB":61538},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Crossmark","Net_CB":4366},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Dollar General","Net_CB":-418},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Harris Teeter","Net_CB":1118},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Kroger","Net_CB":19969},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Meijer","Net_CB":18505},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Publix","Net_CB":2574},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Shoppers Drug Mart Inc.","Net_CB":4889},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Target","Net_CB":45039},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Walgreens","Net_CB":-9517},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Walmart","Net_CB":16662},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Walmart Canada","Net_CB":10489},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Albertsons","Net_CB":9357},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Amazon","Net_CB":5512},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"C&S","Net_CB":9487},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"CVS","Net_CB":21667},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Costco","Net_CB":108918},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Crossmark","Net_CB":515},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Dollar General","Net_CB":8425},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Harris Teeter","Net_CB":22794},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"KOHLS","Net_CB":3773},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Kroger","Net_CB":8414},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Publix","Net_CB":3787},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Shoppers Drug Mart Inc.","Net_CB":1038},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Target","Net_CB":-86695},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Walgreens","Net_CB":37657},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Walmart","Net_CB":42797},{"Brand":"HF","Year":2025,"Month":"Mar","Customer":"Walmart Canada","Net_CB":18174},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Albertsons","Net_CB":6865},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Amazon","Net_CB":364136},{"Brand":"HF","Year":2025,"Month":"May","Customer":"C&S","Net_CB":72184},{"Brand":"HF","Year":2025,"Month":"May","Customer":"CVS","Net_CB":29285},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Costco","Net_CB":42529},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Crossmark","Net_CB":112},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Dollar General","Net_CB":-6168},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Harris Teeter","Net_CB":1025},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Kroger","Net_CB":8609},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Meijer","Net_CB":5921},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Publix","Net_CB":6144},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Shoppers Drug Mart Inc.","Net_CB":12},{"Brand":"HF","Year":2025,"Month":"May","Customer":"TJX","Net_CB":40520},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Target","Net_CB":-29262},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Walgreens","Net_CB":-8862},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Walmart","Net_CB":65513},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Walmart Canada","Net_CB":355},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Albertsons","Net_CB":18330},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Amazon","Net_CB":368506},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"C&S","Net_CB":10450},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"CVS","Net_CB":-82356},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Costco","Net_CB":33717},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Crossmark","Net_CB":10076},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Dollar General","Net_CB":1277},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Harris Teeter","Net_CB":1590},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Kroger","Net_CB":103505},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Meijer","Net_CB":51471},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Publix","Net_CB":2414},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Shoppers Drug Mart Inc.","Net_CB":8110},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Target","Net_CB":123602},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Walgreens","Net_CB":62364},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Walmart","Net_CB":450197},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Walmart Canada","Net_CB":439},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Albertsons","Net_CB":5506},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Amazon","Net_CB":-71196},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"C&S","Net_CB":11014},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"CVS","Net_CB":-13341},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Costco","Net_CB":49050},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Crossmark","Net_CB":1368},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Dollar General","Net_CB":1633},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Harris Teeter","Net_CB":763},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"KOHLS","Net_CB":4156},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Kroger","Net_CB":20073},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Meijer","Net_CB":-32931},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Publix","Net_CB":3330},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Shoppers Drug Mart Inc.","Net_CB":8949},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Target","Net_CB":73568},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Walgreens","Net_CB":-6790},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Walmart","Net_CB":124717},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Walmart Canada","Net_CB":7975},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Albertsons","Net_CB":303},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Amazon","Net_CB":-592129},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"C&S","Net_CB":-15857},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"CVS","Net_CB":-11587},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Costco","Net_CB":46751},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Crossmark","Net_CB":2818},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Dollar General","Net_CB":6241},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Harris Teeter","Net_CB":782},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"KOHLS","Net_CB":8822},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Kroger","Net_CB":7750},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Meijer","Net_CB":40800},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Publix","Net_CB":5315},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Shoppers Drug Mart Inc.","Net_CB":565},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"TJX","Net_CB":872},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Target","Net_CB":21133},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Walgreens","Net_CB":4791},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Walmart","Net_CB":102437},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Walmart Canada","Net_CB":39890},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Albertsons","Net_CB":19522},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Amazon","Net_CB":-1893},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"C&S","Net_CB":9465},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"CVS","Net_CB":66774},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Costco","Net_CB":41501},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Crossmark","Net_CB":62349},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Dollar General","Net_CB":11646},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Harris Teeter","Net_CB":2832},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"KOHLS","Net_CB":4731},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Kroger","Net_CB":125474},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Meijer","Net_CB":11927},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Publix","Net_CB":4392},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Shoppers Drug Mart Inc.","Net_CB":39116},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Target","Net_CB":105822},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Walgreens","Net_CB":18591},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Walmart","Net_CB":-70034},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Walmart Canada","Net_CB":3402},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Albertsons","Net_CB":24176},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Amazon","Net_CB":60863},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"C&S","Net_CB":22559},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"CVS","Net_CB":43681},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Costco","Net_CB":111916},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Crossmark","Net_CB":4591},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Dollar General","Net_CB":2968},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Harris Teeter","Net_CB":1078},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"KOHLS","Net_CB":24402},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Kroger","Net_CB":13462},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Meijer","Net_CB":21821},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Publix","Net_CB":8368},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Shoppers Drug Mart Inc.","Net_CB":242},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"TJX","Net_CB":4585},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Target","Net_CB":92929},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Walgreens","Net_CB":18517},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Walmart","Net_CB":-40589},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Walmart Canada","Net_CB":33730},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Albertsons","Net_CB":8561},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Amazon","Net_CB":139465},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"C&S","Net_CB":6676},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"CVS","Net_CB":76036},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Costco","Net_CB":13038},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Crossmark","Net_CB":2430},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Dollar General","Net_CB":6428},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Harris Teeter","Net_CB":2135},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"KOHLS","Net_CB":12695},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Kroger","Net_CB":12276},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Meijer","Net_CB":19149},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Publix","Net_CB":15315},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Shoppers Drug Mart Inc.","Net_CB":76483},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"TJX","Net_CB":1500},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Target","Net_CB":195405},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Walgreens","Net_CB":40422},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Walmart","Net_CB":24779},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Walmart Canada","Net_CB":24963},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Albertsons","Net_CB":71486},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Amazon","Net_CB":57466},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"C&S","Net_CB":-372},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"CVS","Net_CB":79307},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Costco","Net_CB":118385},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Crossmark","Net_CB":13164},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Dollar General","Net_CB":116272},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Harris Teeter","Net_CB":4102},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"KOHLS","Net_CB":12809},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Kroger","Net_CB":35372},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Meijer","Net_CB":-26292},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Publix","Net_CB":2412},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Shoppers Drug Mart Inc.","Net_CB":29330},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"TJX","Net_CB":35970},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Target","Net_CB":24294},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Walgreens","Net_CB":13595},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Walmart","Net_CB":202478},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Walmart Canada","Net_CB":5291},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Albertsons","Net_CB":1517},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Amazon","Net_CB":240324},{"Brand":"HF","Year":2026,"Month":"May","Customer":"C&S","Net_CB":10334},{"Brand":"HF","Year":2026,"Month":"May","Customer":"CVS","Net_CB":43315},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Costco","Net_CB":103965},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Crossmark","Net_CB":19106},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Dollar General","Net_CB":3820},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Harris Teeter","Net_CB":1116},{"Brand":"HF","Year":2026,"Month":"May","Customer":"KOHLS","Net_CB":4204},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Kroger","Net_CB":45155},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Meijer","Net_CB":-21497},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Publix","Net_CB":4586},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Shoppers Drug Mart Inc.","Net_CB":16},{"Brand":"HF","Year":2026,"Month":"May","Customer":"TJX","Net_CB":9183},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Target","Net_CB":109546},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Walgreens","Net_CB":23024},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Walmart","Net_CB":72109},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Walmart Canada","Net_CB":77698},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"C&S","Net_CB":11456},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"CVS","Net_CB":28348},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"Kroger","Net_CB":11859},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"Meijer","Net_CB":3469},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"Target","Net_CB":-3206},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"Ulta","Net_CB":159552},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"Walgreens","Net_CB":17564},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"Walmart","Net_CB":-4028},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Albertsons","Net_CB":6111},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"CVS","Net_CB":-127},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Costco","Net_CB":20273},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Harris Teeter","Net_CB":481},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Kroger","Net_CB":1479},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Meijer","Net_CB":11902},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Sam's Club","Net_CB":154157},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Target","Net_CB":11890},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Walgreens","Net_CB":13225},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Walmart","Net_CB":216731},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Walmart Canada","Net_CB":186},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Albertsons","Net_CB":2887},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"C&S","Net_CB":754},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"CVS","Net_CB":15407},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Costco","Net_CB":22130},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Harris Teeter","Net_CB":292},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Kroger","Net_CB":20569},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Meijer","Net_CB":-3721},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Sam's Club","Net_CB":3212},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Target","Net_CB":29242},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Ulta","Net_CB":10511},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Walgreens","Net_CB":4295},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Walmart","Net_CB":22257},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Walmart Canada","Net_CB":2123},{"Brand":"LM","Year":2025,"Month":"Feb","Customer":"CVS","Net_CB":-1094},{"Brand":"LM","Year":2025,"Month":"Feb","Customer":"Harris Teeter","Net_CB":436},{"Brand":"LM","Year":2025,"Month":"Feb","Customer":"Kroger","Net_CB":-2675},{"Brand":"LM","Year":2025,"Month":"Feb","Customer":"Meijer","Net_CB":777},{"Brand":"LM","Year":2025,"Month":"Feb","Customer":"Target","Net_CB":25961},{"Brand":"LM","Year":2025,"Month":"Feb","Customer":"Walmart","Net_CB":-62082},{"Brand":"LM","Year":2025,"Month":"Feb","Customer":"Walmart Canada","Net_CB":1101},{"Brand":"LM","Year":2025,"Month":"Jan","Customer":"CVS","Net_CB":843},{"Brand":"LM","Year":2025,"Month":"Jan","Customer":"Kroger","Net_CB":11313},{"Brand":"LM","Year":2025,"Month":"Jan","Customer":"Meijer","Net_CB":1278},{"Brand":"LM","Year":2025,"Month":"Jan","Customer":"Target","Net_CB":-81696},{"Brand":"LM","Year":2025,"Month":"Jan","Customer":"Walmart","Net_CB":38706},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Albertsons","Net_CB":9017},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"C&S","Net_CB":4798},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"CVS","Net_CB":11827},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Harris Teeter","Net_CB":220},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Kroger","Net_CB":3277},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Meijer","Net_CB":2073},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Sam's Club","Net_CB":67444},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Target","Net_CB":-30637},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Ulta","Net_CB":3288},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Walgreens","Net_CB":9630},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Walmart","Net_CB":271749},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Walmart Canada","Net_CB":6975},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Albertsons","Net_CB":6731},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"C&S","Net_CB":1879},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"CVS","Net_CB":12702},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Costco","Net_CB":6855},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Kroger","Net_CB":7622},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Meijer","Net_CB":699},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Sam's Club","Net_CB":205735},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Target","Net_CB":-287898},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Ulta","Net_CB":2470},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Walgreens","Net_CB":0},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Walmart","Net_CB":34075},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Walmart Canada","Net_CB":1084},{"Brand":"LM","Year":2025,"Month":"Mar","Customer":"CVS","Net_CB":36199},{"Brand":"LM","Year":2025,"Month":"Mar","Customer":"Kroger","Net_CB":110387},{"Brand":"LM","Year":2025,"Month":"Mar","Customer":"Meijer","Net_CB":2624},{"Brand":"LM","Year":2025,"Month":"Mar","Customer":"Target","Net_CB":23639},{"Brand":"LM","Year":2025,"Month":"Mar","Customer":"Walmart","Net_CB":204512},{"Brand":"LM","Year":2025,"Month":"Mar","Customer":"Walmart Canada","Net_CB":365},{"Brand":"LM","Year":2025,"Month":"May","Customer":"C&S","Net_CB":1091},{"Brand":"LM","Year":2025,"Month":"May","Customer":"CVS","Net_CB":15618},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Harris Teeter","Net_CB":565},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Kroger","Net_CB":4334},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Meijer","Net_CB":1636},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Target","Net_CB":-1081},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Ulta","Net_CB":754},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Walgreens","Net_CB":3706},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Walmart","Net_CB":414053},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Walmart Canada","Net_CB":1816},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Albertsons","Net_CB":2485},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"C&S","Net_CB":890},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"CVS","Net_CB":-10110},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Costco","Net_CB":18137},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Harris Teeter","Net_CB":210},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Kroger","Net_CB":14196},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Meijer","Net_CB":3509},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Sam's Club","Net_CB":128},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Target","Net_CB":16959},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Ulta","Net_CB":41565},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Walgreens","Net_CB":6454},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Walmart","Net_CB":20335},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Walmart Canada","Net_CB":881},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Albertsons","Net_CB":6601},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"C&S","Net_CB":4782},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"CVS","Net_CB":17288},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Costco","Net_CB":33393},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Harris Teeter","Net_CB":345},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Kroger","Net_CB":4037},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Meijer","Net_CB":1202},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Sam's Club","Net_CB":-6423},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Target","Net_CB":7153},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Walgreens","Net_CB":6569},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Walmart","Net_CB":-162388},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Walmart Canada","Net_CB":1562},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Albertsons","Net_CB":4845},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"C&S","Net_CB":308},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"CVS","Net_CB":19185},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Costco","Net_CB":3953},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Harris Teeter","Net_CB":501},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Kroger","Net_CB":10166},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Meijer","Net_CB":10980},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Target","Net_CB":6922},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Walgreens","Net_CB":7154},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Walmart","Net_CB":61094},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Walmart Canada","Net_CB":2490},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Albertsons","Net_CB":10982},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"C&S","Net_CB":1043},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"CVS","Net_CB":5771},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Crossmark","Net_CB":730},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Harris Teeter","Net_CB":219},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Kroger","Net_CB":5007},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Meijer","Net_CB":2237},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Sam's Club","Net_CB":0},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Target","Net_CB":-2262},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Walgreens","Net_CB":8357},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Walmart","Net_CB":34156},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Walmart Canada","Net_CB":1350},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Albertsons","Net_CB":6832},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"C&S","Net_CB":930},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Costco","Net_CB":27141},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Crossmark","Net_CB":143},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Harris Teeter","Net_CB":220},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Kroger","Net_CB":7197},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Meijer","Net_CB":5226},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Sam's Club","Net_CB":-109194},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Target","Net_CB":504516},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Ulta","Net_CB":17426},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Walgreens","Net_CB":9185},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Walmart","Net_CB":-9898},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Walmart Canada","Net_CB":2237},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Albertsons","Net_CB":-823},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"C&S","Net_CB":50},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"CVS","Net_CB":913},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Costco","Net_CB":45299},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Crossmark","Net_CB":19757},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Harris Teeter","Net_CB":395},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Kroger","Net_CB":55018},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Meijer","Net_CB":2792},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Target","Net_CB":6122},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Ulta","Net_CB":17072},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Walgreens","Net_CB":5928},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Walmart","Net_CB":24122},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Walmart Canada","Net_CB":2311},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Albertsons","Net_CB":7305},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"C&S","Net_CB":398},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"CVS","Net_CB":18724},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Crossmark","Net_CB":3492},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Harris Teeter","Net_CB":26974},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Kroger","Net_CB":15686},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Meijer","Net_CB":5162},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"TJX","Net_CB":2376},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Target","Net_CB":56716},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Ulta","Net_CB":40801},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Walgreens","Net_CB":8252},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Walmart","Net_CB":86014},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Walmart Canada","Net_CB":8310},{"Brand":"LM","Year":2026,"Month":"May","Customer":"C&S","Net_CB":17097},{"Brand":"LM","Year":2026,"Month":"May","Customer":"CVS","Net_CB":55057},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Crossmark","Net_CB":279},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Harris Teeter","Net_CB":1033},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Kroger","Net_CB":17154},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Meijer","Net_CB":3503},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Target","Net_CB":23295},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Walgreens","Net_CB":16918},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Walmart","Net_CB":13644},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Walmart Canada","Net_CB":37754}];
const RAW_CH_MONTHLY = [{"Brand":"HF","Year":2025,"Month":"Apr","Channel":"Club","Net_CB":66311},{"Brand":"HF","Year":2025,"Month":"Apr","Channel":"Digital","Net_CB":22116},{"Brand":"HF","Year":2025,"Month":"Apr","Channel":"Drug & Dollar","Net_CB":9040},{"Brand":"HF","Year":2025,"Month":"Apr","Channel":"Grocery","Net_CB":162134},{"Brand":"HF","Year":2025,"Month":"Apr","Channel":"Specialty","Net_CB":7070},{"Brand":"HF","Year":2025,"Month":"Apr","Channel":"Target","Net_CB":-130629},{"Brand":"HF","Year":2025,"Month":"Apr","Channel":"Walmart","Net_CB":128005},{"Brand":"HF","Year":2025,"Month":"Aug","Channel":"Club","Net_CB":65992},{"Brand":"HF","Year":2025,"Month":"Aug","Channel":"Digital","Net_CB":208283},{"Brand":"HF","Year":2025,"Month":"Aug","Channel":"Drug & Dollar","Net_CB":29842},{"Brand":"HF","Year":2025,"Month":"Aug","Channel":"Grocery","Net_CB":124140},{"Brand":"HF","Year":2025,"Month":"Aug","Channel":"Other","Net_CB":155},{"Brand":"HF","Year":2025,"Month":"Aug","Channel":"Specialty","Net_CB":60444},{"Brand":"HF","Year":2025,"Month":"Aug","Channel":"Target","Net_CB":47894},{"Brand":"HF","Year":2025,"Month":"Aug","Channel":"Walmart","Net_CB":54402},{"Brand":"HF","Year":2025,"Month":"Dec","Channel":"Club","Net_CB":43292},{"Brand":"HF","Year":2025,"Month":"Dec","Channel":"Digital","Net_CB":-168937},{"Brand":"HF","Year":2025,"Month":"Dec","Channel":"Drug & Dollar","Net_CB":86925},{"Brand":"HF","Year":2025,"Month":"Dec","Channel":"Grocery","Net_CB":168235},{"Brand":"HF","Year":2025,"Month":"Dec","Channel":"Other","Net_CB":159},{"Brand":"HF","Year":2025,"Month":"Dec","Channel":"Specialty","Net_CB":57181},{"Brand":"HF","Year":2025,"Month":"Dec","Channel":"Target","Net_CB":-36190},{"Brand":"HF","Year":2025,"Month":"Dec","Channel":"Walmart","Net_CB":143568},{"Brand":"HF","Year":2025,"Month":"Feb","Channel":"Club","Net_CB":-79},{"Brand":"HF","Year":2025,"Month":"Feb","Channel":"Digital","Net_CB":185641},{"Brand":"HF","Year":2025,"Month":"Feb","Channel":"Drug & Dollar","Net_CB":63689},{"Brand":"HF","Year":2025,"Month":"Feb","Channel":"Grocery","Net_CB":170308},{"Brand":"HF","Year":2025,"Month":"Feb","Channel":"Specialty","Net_CB":7698},{"Brand":"HF","Year":2025,"Month":"Feb","Channel":"Target","Net_CB":18435},{"Brand":"HF","Year":2025,"Month":"Feb","Channel":"Walmart","Net_CB":69324},{"Brand":"HF","Year":2025,"Month":"Jan","Channel":"Club","Net_CB":46809},{"Brand":"HF","Year":2025,"Month":"Jan","Channel":"Digital","Net_CB":171290},{"Brand":"HF","Year":2025,"Month":"Jan","Channel":"Drug & Dollar","Net_CB":47913},{"Brand":"HF","Year":2025,"Month":"Jan","Channel":"Grocery","Net_CB":107451},{"Brand":"HF","Year":2025,"Month":"Jan","Channel":"Specialty","Net_CB":-60421},{"Brand":"HF","Year":2025,"Month":"Jan","Channel":"Target","Net_CB":20871},{"Brand":"HF","Year":2025,"Month":"Jan","Channel":"Walmart","Net_CB":27509},{"Brand":"HF","Year":2025,"Month":"Jul","Channel":"Club","Net_CB":93079},{"Brand":"HF","Year":2025,"Month":"Jul","Channel":"Digital","Net_CB":-110508},{"Brand":"HF","Year":2025,"Month":"Jul","Channel":"Drug & Dollar","Net_CB":87228},{"Brand":"HF","Year":2025,"Month":"Jul","Channel":"Grocery","Net_CB":102547},{"Brand":"HF","Year":2025,"Month":"Jul","Channel":"Other","Net_CB":1867},{"Brand":"HF","Year":2025,"Month":"Jul","Channel":"Target","Net_CB":6030},{"Brand":"HF","Year":2025,"Month":"Jul","Channel":"Walmart","Net_CB":45797},{"Brand":"HF","Year":2025,"Month":"Jun","Channel":"Club","Net_CB":61538},{"Brand":"HF","Year":2025,"Month":"Jun","Channel":"Digital","Net_CB":303688},{"Brand":"HF","Year":2025,"Month":"Jun","Channel":"Drug & Dollar","Net_CB":26663},{"Brand":"HF","Year":2025,"Month":"Jun","Channel":"Grocery","Net_CB":81080},{"Brand":"HF","Year":2025,"Month":"Jun","Channel":"Specialty","Net_CB":108},{"Brand":"HF","Year":2025,"Month":"Jun","Channel":"Target","Net_CB":45039},{"Brand":"HF","Year":2025,"Month":"Jun","Channel":"Walmart","Net_CB":27151},{"Brand":"HF","Year":2025,"Month":"Mar","Channel":"Club","Net_CB":110717},{"Brand":"HF","Year":2025,"Month":"Mar","Channel":"Digital","Net_CB":5512},{"Brand":"HF","Year":2025,"Month":"Mar","Channel":"Drug & Dollar","Net_CB":65927},{"Brand":"HF","Year":2025,"Month":"Mar","Channel":"Grocery","Net_CB":63024},{"Brand":"HF","Year":2025,"Month":"Mar","Channel":"Specialty","Net_CB":3808},{"Brand":"HF","Year":2025,"Month":"Mar","Channel":"Target","Net_CB":-86695},{"Brand":"HF","Year":2025,"Month":"Mar","Channel":"Walmart","Net_CB":60971},{"Brand":"HF","Year":2025,"Month":"May","Channel":"Club","Net_CB":42529},{"Brand":"HF","Year":2025,"Month":"May","Channel":"Digital","Net_CB":364136},{"Brand":"HF","Year":2025,"Month":"May","Channel":"Drug & Dollar","Net_CB":15106},{"Brand":"HF","Year":2025,"Month":"May","Channel":"Grocery","Net_CB":118487},{"Brand":"HF","Year":2025,"Month":"May","Channel":"Specialty","Net_CB":40520},{"Brand":"HF","Year":2025,"Month":"May","Channel":"Target","Net_CB":-29262},{"Brand":"HF","Year":2025,"Month":"May","Channel":"Walmart","Net_CB":65868},{"Brand":"HF","Year":2025,"Month":"Nov","Channel":"Club","Net_CB":33717},{"Brand":"HF","Year":2025,"Month":"Nov","Channel":"Digital","Net_CB":368506},{"Brand":"HF","Year":2025,"Month":"Nov","Channel":"Drug & Dollar","Net_CB":-18077},{"Brand":"HF","Year":2025,"Month":"Nov","Channel":"Grocery","Net_CB":219552},{"Brand":"HF","Year":2025,"Month":"Nov","Channel":"Target","Net_CB":123602},{"Brand":"HF","Year":2025,"Month":"Nov","Channel":"Walmart","Net_CB":450636},{"Brand":"HF","Year":2025,"Month":"Oct","Channel":"Club","Net_CB":49050},{"Brand":"HF","Year":2025,"Month":"Oct","Channel":"Digital","Net_CB":-71196},{"Brand":"HF","Year":2025,"Month":"Oct","Channel":"Drug & Dollar","Net_CB":-10903},{"Brand":"HF","Year":2025,"Month":"Oct","Channel":"Grocery","Net_CB":87352},{"Brand":"HF","Year":2025,"Month":"Oct","Channel":"Specialty","Net_CB":4156},{"Brand":"HF","Year":2025,"Month":"Oct","Channel":"Target","Net_CB":73568},{"Brand":"HF","Year":2025,"Month":"Oct","Channel":"Walmart","Net_CB":132692},{"Brand":"HF","Year":2025,"Month":"Sep","Channel":"Club","Net_CB":46751},{"Brand":"HF","Year":2025,"Month":"Sep","Channel":"Digital","Net_CB":-592129},{"Brand":"HF","Year":2025,"Month":"Sep","Channel":"Drug & Dollar","Net_CB":-555},{"Brand":"HF","Year":2025,"Month":"Sep","Channel":"Grocery","Net_CB":49807},{"Brand":"HF","Year":2025,"Month":"Sep","Channel":"Specialty","Net_CB":10044},{"Brand":"HF","Year":2025,"Month":"Sep","Channel":"Target","Net_CB":21133},{"Brand":"HF","Year":2025,"Month":"Sep","Channel":"Walmart","Net_CB":142327},{"Brand":"HF","Year":2026,"Month":"Apr","Channel":"Club","Net_CB":41501},{"Brand":"HF","Year":2026,"Month":"Apr","Channel":"Digital","Net_CB":-1893},{"Brand":"HF","Year":2026,"Month":"Apr","Channel":"Drug & Dollar","Net_CB":97767},{"Brand":"HF","Year":2026,"Month":"Apr","Channel":"Grocery","Net_CB":300189},{"Brand":"HF","Year":2026,"Month":"Apr","Channel":"Specialty","Net_CB":4731},{"Brand":"HF","Year":2026,"Month":"Apr","Channel":"Target","Net_CB":105822},{"Brand":"HF","Year":2026,"Month":"Apr","Channel":"Walmart","Net_CB":-66632},{"Brand":"HF","Year":2026,"Month":"Feb","Channel":"Club","Net_CB":111916},{"Brand":"HF","Year":2026,"Month":"Feb","Channel":"Digital","Net_CB":61014},{"Brand":"HF","Year":2026,"Month":"Feb","Channel":"Drug & Dollar","Net_CB":66103},{"Brand":"HF","Year":2026,"Month":"Feb","Channel":"Grocery","Net_CB":115932},{"Brand":"HF","Year":2026,"Month":"Feb","Channel":"Specialty","Net_CB":29005},{"Brand":"HF","Year":2026,"Month":"Feb","Channel":"Target","Net_CB":92929},{"Brand":"HF","Year":2026,"Month":"Feb","Channel":"Walmart","Net_CB":-6860},{"Brand":"HF","Year":2026,"Month":"Jan","Channel":"Club","Net_CB":13038},{"Brand":"HF","Year":2026,"Month":"Jan","Channel":"Digital","Net_CB":140264},{"Brand":"HF","Year":2026,"Month":"Jan","Channel":"Drug & Dollar","Net_CB":124625},{"Brand":"HF","Year":2026,"Month":"Jan","Channel":"Grocery","Net_CB":155773},{"Brand":"HF","Year":2026,"Month":"Jan","Channel":"Other","Net_CB":4596},{"Brand":"HF","Year":2026,"Month":"Jan","Channel":"Specialty","Net_CB":17028},{"Brand":"HF","Year":2026,"Month":"Jan","Channel":"Target","Net_CB":195405},{"Brand":"HF","Year":2026,"Month":"Jan","Channel":"Walmart","Net_CB":49742},{"Brand":"HF","Year":2026,"Month":"Mar","Channel":"Club","Net_CB":128464},{"Brand":"HF","Year":2026,"Month":"Mar","Channel":"Digital","Net_CB":57466},{"Brand":"HF","Year":2026,"Month":"Mar","Channel":"Drug & Dollar","Net_CB":209425},{"Brand":"HF","Year":2026,"Month":"Mar","Channel":"Grocery","Net_CB":176286},{"Brand":"HF","Year":2026,"Month":"Mar","Channel":"Specialty","Net_CB":53118},{"Brand":"HF","Year":2026,"Month":"Mar","Channel":"Target","Net_CB":24294},{"Brand":"HF","Year":2026,"Month":"Mar","Channel":"Walmart","Net_CB":207770},{"Brand":"HF","Year":2026,"Month":"May","Channel":"Club","Net_CB":103965},{"Brand":"HF","Year":2026,"Month":"May","Channel":"Digital","Net_CB":240324},{"Brand":"HF","Year":2026,"Month":"May","Channel":"Drug & Dollar","Net_CB":71150},{"Brand":"HF","Year":2026,"Month":"May","Channel":"Grocery","Net_CB":94193},{"Brand":"HF","Year":2026,"Month":"May","Channel":"Specialty","Net_CB":13803},{"Brand":"HF","Year":2026,"Month":"May","Channel":"Target","Net_CB":109546},{"Brand":"HF","Year":2026,"Month":"May","Channel":"Walmart","Net_CB":149808},{"Brand":"LM","Year":2025,"Month":"Apr","Channel":"Club","Net_CB":23114},{"Brand":"LM","Year":2025,"Month":"Apr","Channel":"Drug & Dollar","Net_CB":205464},{"Brand":"LM","Year":2025,"Month":"Apr","Channel":"Grocery","Net_CB":69608},{"Brand":"LM","Year":2025,"Month":"Apr","Channel":"Target","Net_CB":-3206},{"Brand":"LM","Year":2025,"Month":"Apr","Channel":"Walmart","Net_CB":-4028},{"Brand":"LM","Year":2025,"Month":"Aug","Channel":"Club","Net_CB":167521},{"Brand":"LM","Year":2025,"Month":"Aug","Channel":"Drug & Dollar","Net_CB":13098},{"Brand":"LM","Year":2025,"Month":"Aug","Channel":"Grocery","Net_CB":20911},{"Brand":"LM","Year":2025,"Month":"Aug","Channel":"Other","Net_CB":84},{"Brand":"LM","Year":2025,"Month":"Aug","Channel":"Target","Net_CB":11890},{"Brand":"LM","Year":2025,"Month":"Aug","Channel":"Walmart","Net_CB":216917},{"Brand":"LM","Year":2025,"Month":"Dec","Channel":"Club","Net_CB":25541},{"Brand":"LM","Year":2025,"Month":"Dec","Channel":"Drug & Dollar","Net_CB":30213},{"Brand":"LM","Year":2025,"Month":"Dec","Channel":"Grocery","Net_CB":24002},{"Brand":"LM","Year":2025,"Month":"Dec","Channel":"Other","Net_CB":1},{"Brand":"LM","Year":2025,"Month":"Dec","Channel":"Target","Net_CB":29242},{"Brand":"LM","Year":2025,"Month":"Dec","Channel":"Walmart","Net_CB":24380},{"Brand":"LM","Year":2025,"Month":"Feb","Channel":"Drug & Dollar","Net_CB":-1094},{"Brand":"LM","Year":2025,"Month":"Feb","Channel":"Grocery","Net_CB":-1763},{"Brand":"LM","Year":2025,"Month":"Feb","Channel":"Target","Net_CB":25961},{"Brand":"LM","Year":2025,"Month":"Feb","Channel":"Walmart","Net_CB":-60981},{"Brand":"LM","Year":2025,"Month":"Jan","Channel":"Drug & Dollar","Net_CB":843},{"Brand":"LM","Year":2025,"Month":"Jan","Channel":"Grocery","Net_CB":12715},{"Brand":"LM","Year":2025,"Month":"Jan","Channel":"Target","Net_CB":-81696},{"Brand":"LM","Year":2025,"Month":"Jan","Channel":"Walmart","Net_CB":38706},{"Brand":"LM","Year":2025,"Month":"Jul","Channel":"Club","Net_CB":67444},{"Brand":"LM","Year":2025,"Month":"Jul","Channel":"Drug & Dollar","Net_CB":24745},{"Brand":"LM","Year":2025,"Month":"Jul","Channel":"Grocery","Net_CB":-5635},{"Brand":"LM","Year":2025,"Month":"Jul","Channel":"Other","Net_CB":1006},{"Brand":"LM","Year":2025,"Month":"Jul","Channel":"Target","Net_CB":-30637},{"Brand":"LM","Year":2025,"Month":"Jul","Channel":"Walmart","Net_CB":278724},{"Brand":"LM","Year":2025,"Month":"Jun","Channel":"Club","Net_CB":212590},{"Brand":"LM","Year":2025,"Month":"Jun","Channel":"Drug & Dollar","Net_CB":15173},{"Brand":"LM","Year":2025,"Month":"Jun","Channel":"Grocery","Net_CB":16528},{"Brand":"LM","Year":2025,"Month":"Jun","Channel":"Target","Net_CB":-287898},{"Brand":"LM","Year":2025,"Month":"Jun","Channel":"Walmart","Net_CB":35158},{"Brand":"LM","Year":2025,"Month":"Mar","Channel":"Drug & Dollar","Net_CB":36199},{"Brand":"LM","Year":2025,"Month":"Mar","Channel":"Grocery","Net_CB":113552},{"Brand":"LM","Year":2025,"Month":"Mar","Channel":"Target","Net_CB":23639},{"Brand":"LM","Year":2025,"Month":"Mar","Channel":"Walmart","Net_CB":204878},{"Brand":"LM","Year":2025,"Month":"May","Channel":"Drug & Dollar","Net_CB":20199},{"Brand":"LM","Year":2025,"Month":"May","Channel":"Grocery","Net_CB":37414},{"Brand":"LM","Year":2025,"Month":"May","Channel":"Target","Net_CB":-1081},{"Brand":"LM","Year":2025,"Month":"May","Channel":"Walmart","Net_CB":415869},{"Brand":"LM","Year":2025,"Month":"Nov","Channel":"Club","Net_CB":18265},{"Brand":"LM","Year":2025,"Month":"Nov","Channel":"Drug & Dollar","Net_CB":37909},{"Brand":"LM","Year":2025,"Month":"Nov","Channel":"Grocery","Net_CB":24382},{"Brand":"LM","Year":2025,"Month":"Nov","Channel":"Target","Net_CB":16959},{"Brand":"LM","Year":2025,"Month":"Nov","Channel":"Walmart","Net_CB":21216},{"Brand":"LM","Year":2025,"Month":"Oct","Channel":"Club","Net_CB":26970},{"Brand":"LM","Year":2025,"Month":"Oct","Channel":"Drug & Dollar","Net_CB":23856},{"Brand":"LM","Year":2025,"Month":"Oct","Channel":"Grocery","Net_CB":21590},{"Brand":"LM","Year":2025,"Month":"Oct","Channel":"Target","Net_CB":7153},{"Brand":"LM","Year":2025,"Month":"Oct","Channel":"Walmart","Net_CB":-160827},{"Brand":"LM","Year":2025,"Month":"Sep","Channel":"Club","Net_CB":3953},{"Brand":"LM","Year":2025,"Month":"Sep","Channel":"Drug & Dollar","Net_CB":26339},{"Brand":"LM","Year":2025,"Month":"Sep","Channel":"Grocery","Net_CB":30608},{"Brand":"LM","Year":2025,"Month":"Sep","Channel":"Target","Net_CB":6922},{"Brand":"LM","Year":2025,"Month":"Sep","Channel":"Walmart","Net_CB":63584},{"Brand":"LM","Year":2026,"Month":"Apr","Channel":"Club","Net_CB":0},{"Brand":"LM","Year":2026,"Month":"Apr","Channel":"Drug & Dollar","Net_CB":14128},{"Brand":"LM","Year":2026,"Month":"Apr","Channel":"Grocery","Net_CB":24535},{"Brand":"LM","Year":2026,"Month":"Apr","Channel":"Target","Net_CB":-2262},{"Brand":"LM","Year":2026,"Month":"Apr","Channel":"Walmart","Net_CB":35506},{"Brand":"LM","Year":2026,"Month":"Feb","Channel":"Club","Net_CB":-82053},{"Brand":"LM","Year":2026,"Month":"Feb","Channel":"Drug & Dollar","Net_CB":26611},{"Brand":"LM","Year":2026,"Month":"Feb","Channel":"Grocery","Net_CB":26770},{"Brand":"LM","Year":2026,"Month":"Feb","Channel":"Target","Net_CB":504516},{"Brand":"LM","Year":2026,"Month":"Feb","Channel":"Walmart","Net_CB":-7661},{"Brand":"LM","Year":2026,"Month":"Jan","Channel":"Club","Net_CB":45299},{"Brand":"LM","Year":2026,"Month":"Jan","Channel":"Drug & Dollar","Net_CB":23913},{"Brand":"LM","Year":2026,"Month":"Jan","Channel":"Grocery","Net_CB":78443},{"Brand":"LM","Year":2026,"Month":"Jan","Channel":"Target","Net_CB":6122},{"Brand":"LM","Year":2026,"Month":"Jan","Channel":"Walmart","Net_CB":26433},{"Brand":"LM","Year":2026,"Month":"Mar","Channel":"Club","Net_CB":200},{"Brand":"LM","Year":2026,"Month":"Mar","Channel":"Drug & Dollar","Net_CB":67778},{"Brand":"LM","Year":2026,"Month":"Mar","Channel":"Grocery","Net_CB":61170},{"Brand":"LM","Year":2026,"Month":"Mar","Channel":"Specialty","Net_CB":2376},{"Brand":"LM","Year":2026,"Month":"Mar","Channel":"Target","Net_CB":56716},{"Brand":"LM","Year":2026,"Month":"Mar","Channel":"Walmart","Net_CB":94324},{"Brand":"LM","Year":2026,"Month":"May","Channel":"Drug & Dollar","Net_CB":71974},{"Brand":"LM","Year":2026,"Month":"May","Channel":"Grocery","Net_CB":41981},{"Brand":"LM","Year":2026,"Month":"May","Channel":"Target","Net_CB":23295},{"Brand":"LM","Year":2026,"Month":"May","Channel":"Walmart","Net_CB":51398}];
const RAW_HYP = [{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Albertsons","Net_CB":11518,"Lag_Rev":490559,"Hyp_Pct":2.3479},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Amazon","Net_CB":22116,"Lag_Rev":2218439,"Hyp_Pct":0.9969},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"C&S","Net_CB":8991,"Lag_Rev":321078,"Hyp_Pct":2.8003},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"CVS","Net_CB":58507,"Lag_Rev":2177850,"Hyp_Pct":2.6865},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Costco","Net_CB":66111,"Lag_Rev":1799473,"Hyp_Pct":3.6739},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Crossmark","Net_CB":1302,"Lag_Rev":172621,"Hyp_Pct":0.7543},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Dollar General","Net_CB":6129,"Lag_Rev":431142,"Hyp_Pct":1.4216},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Harris Teeter","Net_CB":3780,"Lag_Rev":152826,"Hyp_Pct":2.4734},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"KOHLS","Net_CB":7052,"Lag_Rev":0,"Hyp_Pct":null},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Kroger","Net_CB":107960,"Lag_Rev":2285396,"Hyp_Pct":4.7239},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Meijer","Net_CB":7706,"Lag_Rev":825461,"Hyp_Pct":0.9335},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Publix","Net_CB":5138,"Lag_Rev":745787,"Hyp_Pct":0.6889},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Target","Net_CB":-130629,"Lag_Rev":9493006,"Hyp_Pct":-1.3761},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Walgreens","Net_CB":-56603,"Lag_Rev":2055520,"Hyp_Pct":-2.7537},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Walmart","Net_CB":126789,"Lag_Rev":6758809,"Hyp_Pct":1.8759},{"Brand":"HF","Year":2025,"Month":"Apr","Customer":"Walmart Canada","Net_CB":1216,"Lag_Rev":257456,"Hyp_Pct":0.4723},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Albertsons","Net_CB":7000,"Lag_Rev":353195,"Hyp_Pct":1.9819},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Amazon","Net_CB":208283,"Lag_Rev":5107002,"Hyp_Pct":4.0784},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"C&S","Net_CB":1530,"Lag_Rev":350132,"Hyp_Pct":0.437},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"CVS","Net_CB":-470,"Lag_Rev":1466597,"Hyp_Pct":-0.032},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Costco","Net_CB":65992,"Lag_Rev":7326695,"Hyp_Pct":0.9007},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Crossmark","Net_CB":20515,"Lag_Rev":181145,"Hyp_Pct":11.3252},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Dollar General","Net_CB":7459,"Lag_Rev":409090,"Hyp_Pct":1.8233},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Harris Teeter","Net_CB":1992,"Lag_Rev":119072,"Hyp_Pct":1.6729},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"KOHLS","Net_CB":59670,"Lag_Rev":130595,"Hyp_Pct":45.6909},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Kroger","Net_CB":18330,"Lag_Rev":1412352,"Hyp_Pct":1.2978},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Meijer","Net_CB":32693,"Lag_Rev":865353,"Hyp_Pct":3.778},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Publix","Net_CB":22713,"Lag_Rev":443667,"Hyp_Pct":5.1194},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Shoppers Drug Mart Inc.","Net_CB":8524,"Lag_Rev":307983,"Hyp_Pct":2.7677},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"TJX","Net_CB":585,"Lag_Rev":432788,"Hyp_Pct":0.1352},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Target","Net_CB":47894,"Lag_Rev":8219949,"Hyp_Pct":0.5827},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Walgreens","Net_CB":19846,"Lag_Rev":1755424,"Hyp_Pct":1.1306},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Walmart","Net_CB":54077,"Lag_Rev":7170993,"Hyp_Pct":0.7541},{"Brand":"HF","Year":2025,"Month":"Aug","Customer":"Walmart Canada","Net_CB":325,"Lag_Rev":171513,"Hyp_Pct":0.1895},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Albertsons","Net_CB":9025,"Lag_Rev":464703,"Hyp_Pct":1.9421},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Amazon","Net_CB":-171075,"Lag_Rev":5724173,"Hyp_Pct":-2.9886},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"C&S","Net_CB":8466,"Lag_Rev":354194,"Hyp_Pct":2.3902},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"CVS","Net_CB":43368,"Lag_Rev":2191801,"Hyp_Pct":1.9786},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Costco","Net_CB":33211,"Lag_Rev":16507949,"Hyp_Pct":0.2012},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Crossmark","Net_CB":1374,"Lag_Rev":251944,"Hyp_Pct":0.5454},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Dollar General","Net_CB":6829,"Lag_Rev":581334,"Hyp_Pct":1.1747},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Harris Teeter","Net_CB":929,"Lag_Rev":152172,"Hyp_Pct":0.6105},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"KOHLS","Net_CB":41645,"Lag_Rev":201777,"Hyp_Pct":20.6391},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Kroger","Net_CB":25782,"Lag_Rev":2018244,"Hyp_Pct":1.2774},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Meijer","Net_CB":21724,"Lag_Rev":602206,"Hyp_Pct":3.6074},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Publix","Net_CB":5316,"Lag_Rev":475328,"Hyp_Pct":1.1184},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Shoppers Drug Mart Inc.","Net_CB":84148,"Lag_Rev":284529,"Hyp_Pct":29.5745},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"TJX","Net_CB":13334,"Lag_Rev":51441,"Hyp_Pct":25.921},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Target","Net_CB":-36190,"Lag_Rev":7688209,"Hyp_Pct":-0.4707},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Walgreens","Net_CB":36459,"Lag_Rev":1416215,"Hyp_Pct":2.5744},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Walmart","Net_CB":65591,"Lag_Rev":9504692,"Hyp_Pct":0.6901},{"Brand":"HF","Year":2025,"Month":"Dec","Customer":"Walmart Canada","Net_CB":77977,"Lag_Rev":223651,"Hyp_Pct":34.8655},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Albertsons","Net_CB":13942,"Lag_Rev":293754,"Hyp_Pct":4.7461},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Amazon","Net_CB":-111680,"Lag_Rev":6122431,"Hyp_Pct":-1.8241},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"C&S","Net_CB":30514,"Lag_Rev":345731,"Hyp_Pct":8.8259},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"CVS","Net_CB":17813,"Lag_Rev":1437529,"Hyp_Pct":1.2391},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Costco","Net_CB":92879,"Lag_Rev":3586545,"Hyp_Pct":2.5897},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Crossmark","Net_CB":1243,"Lag_Rev":159026,"Hyp_Pct":0.7816},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Dollar General","Net_CB":1102,"Lag_Rev":794386,"Hyp_Pct":0.1387},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Harris Teeter","Net_CB":1545,"Lag_Rev":79908,"Hyp_Pct":1.9335},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Kroger","Net_CB":4472,"Lag_Rev":1669536,"Hyp_Pct":0.2679},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Meijer","Net_CB":37609,"Lag_Rev":638680,"Hyp_Pct":5.8886},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Target","Net_CB":6030,"Lag_Rev":5102097,"Hyp_Pct":0.1182},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Walgreens","Net_CB":67973,"Lag_Rev":2110640,"Hyp_Pct":3.2205},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Walmart","Net_CB":43139,"Lag_Rev":7123839,"Hyp_Pct":0.6056},{"Brand":"HF","Year":2025,"Month":"Jul","Customer":"Walmart Canada","Net_CB":2658,"Lag_Rev":227402,"Hyp_Pct":1.1689},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Albertsons","Net_CB":6272,"Lag_Rev":464553,"Hyp_Pct":1.3501},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Amazon","Net_CB":303688,"Lag_Rev":7900408,"Hyp_Pct":3.844},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"C&S","Net_CB":16418,"Lag_Rev":330163,"Hyp_Pct":4.9727},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"CVS","Net_CB":36598,"Lag_Rev":1722110,"Hyp_Pct":2.1252},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Costco","Net_CB":61538,"Lag_Rev":11372760,"Hyp_Pct":0.5411},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Crossmark","Net_CB":4366,"Lag_Rev":154553,"Hyp_Pct":2.8249},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Dollar General","Net_CB":-418,"Lag_Rev":671755,"Hyp_Pct":-0.0622},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Harris Teeter","Net_CB":1118,"Lag_Rev":176323,"Hyp_Pct":0.6341},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Kroger","Net_CB":19969,"Lag_Rev":1491300,"Hyp_Pct":1.339},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Meijer","Net_CB":18505,"Lag_Rev":620389,"Hyp_Pct":2.9828},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Publix","Net_CB":2574,"Lag_Rev":614001,"Hyp_Pct":0.4192},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Shoppers Drug Mart Inc.","Net_CB":4889,"Lag_Rev":315319,"Hyp_Pct":1.5505},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Target","Net_CB":45039,"Lag_Rev":6265106,"Hyp_Pct":0.7189},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Walgreens","Net_CB":-9517,"Lag_Rev":838355,"Hyp_Pct":-1.1352},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Walmart","Net_CB":16662,"Lag_Rev":6741890,"Hyp_Pct":0.2471},{"Brand":"HF","Year":2025,"Month":"Jun","Customer":"Walmart Canada","Net_CB":10489,"Lag_Rev":339671,"Hyp_Pct":3.088},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Albertsons","Net_CB":6865,"Lag_Rev":366697,"Hyp_Pct":1.8721},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Amazon","Net_CB":364136,"Lag_Rev":3310683,"Hyp_Pct":10.9988},{"Brand":"HF","Year":2025,"Month":"May","Customer":"C&S","Net_CB":72184,"Lag_Rev":337384,"Hyp_Pct":21.3952},{"Brand":"HF","Year":2025,"Month":"May","Customer":"CVS","Net_CB":29285,"Lag_Rev":2980734,"Hyp_Pct":0.9825},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Costco","Net_CB":42529,"Lag_Rev":943544,"Hyp_Pct":4.5074},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Crossmark","Net_CB":112,"Lag_Rev":97234,"Hyp_Pct":0.1152},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Dollar General","Net_CB":-6168,"Lag_Rev":563832,"Hyp_Pct":-1.0939},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Harris Teeter","Net_CB":1025,"Lag_Rev":132013,"Hyp_Pct":0.7764},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Kroger","Net_CB":8609,"Lag_Rev":2031495,"Hyp_Pct":0.4238},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Meijer","Net_CB":5921,"Lag_Rev":768931,"Hyp_Pct":0.77},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Publix","Net_CB":6144,"Lag_Rev":442118,"Hyp_Pct":1.3897},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Shoppers Drug Mart Inc.","Net_CB":12,"Lag_Rev":237600,"Hyp_Pct":0.0051},{"Brand":"HF","Year":2025,"Month":"May","Customer":"TJX","Net_CB":40520,"Lag_Rev":49010,"Hyp_Pct":82.677},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Target","Net_CB":-29262,"Lag_Rev":7071652,"Hyp_Pct":-0.4138},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Walgreens","Net_CB":-8862,"Lag_Rev":1908457,"Hyp_Pct":-0.4644},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Walmart","Net_CB":65513,"Lag_Rev":7226544,"Hyp_Pct":0.9066},{"Brand":"HF","Year":2025,"Month":"May","Customer":"Walmart Canada","Net_CB":355,"Lag_Rev":186307,"Hyp_Pct":0.1905},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Albertsons","Net_CB":18330,"Lag_Rev":320630,"Hyp_Pct":5.7169},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Amazon","Net_CB":368506,"Lag_Rev":6235813,"Hyp_Pct":5.9095},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"C&S","Net_CB":10450,"Lag_Rev":262175,"Hyp_Pct":3.9859},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"CVS","Net_CB":-82356,"Lag_Rev":1953293,"Hyp_Pct":-4.2163},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Costco","Net_CB":33717,"Lag_Rev":3992808,"Hyp_Pct":0.8444},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Crossmark","Net_CB":10076,"Lag_Rev":170317,"Hyp_Pct":5.916},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Dollar General","Net_CB":1277,"Lag_Rev":610855,"Hyp_Pct":0.2091},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Harris Teeter","Net_CB":1590,"Lag_Rev":97808,"Hyp_Pct":1.6256},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Kroger","Net_CB":103505,"Lag_Rev":1564733,"Hyp_Pct":6.6149},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Meijer","Net_CB":51471,"Lag_Rev":553165,"Hyp_Pct":9.3048},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Publix","Net_CB":2414,"Lag_Rev":378386,"Hyp_Pct":0.638},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Shoppers Drug Mart Inc.","Net_CB":8110,"Lag_Rev":153842,"Hyp_Pct":5.2716},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Target","Net_CB":123602,"Lag_Rev":6001168,"Hyp_Pct":2.0596},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Walgreens","Net_CB":62364,"Lag_Rev":1065069,"Hyp_Pct":5.8554},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Walmart","Net_CB":450197,"Lag_Rev":7276925,"Hyp_Pct":6.1866},{"Brand":"HF","Year":2025,"Month":"Nov","Customer":"Walmart Canada","Net_CB":439,"Lag_Rev":255140,"Hyp_Pct":0.1721},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Albertsons","Net_CB":5506,"Lag_Rev":398369,"Hyp_Pct":1.3821},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Amazon","Net_CB":-71196,"Lag_Rev":2560871,"Hyp_Pct":-2.7801},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"C&S","Net_CB":11014,"Lag_Rev":430467,"Hyp_Pct":2.5586},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"CVS","Net_CB":-13341,"Lag_Rev":2292061,"Hyp_Pct":-0.5821},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Costco","Net_CB":49050,"Lag_Rev":3963727,"Hyp_Pct":1.2375},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Crossmark","Net_CB":1368,"Lag_Rev":204897,"Hyp_Pct":0.6677},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Dollar General","Net_CB":1633,"Lag_Rev":737211,"Hyp_Pct":0.2215},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Harris Teeter","Net_CB":763,"Lag_Rev":152522,"Hyp_Pct":0.5003},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"KOHLS","Net_CB":4156,"Lag_Rev":107587,"Hyp_Pct":3.8629},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Kroger","Net_CB":20073,"Lag_Rev":1669030,"Hyp_Pct":1.2027},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Meijer","Net_CB":-32931,"Lag_Rev":858807,"Hyp_Pct":-3.8345},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Publix","Net_CB":3330,"Lag_Rev":189957,"Hyp_Pct":1.753},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Shoppers Drug Mart Inc.","Net_CB":8949,"Lag_Rev":270733,"Hyp_Pct":3.3055},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Target","Net_CB":73568,"Lag_Rev":8031729,"Hyp_Pct":0.916},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Walgreens","Net_CB":-6790,"Lag_Rev":1571509,"Hyp_Pct":-0.4321},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Walmart","Net_CB":124717,"Lag_Rev":9196585,"Hyp_Pct":1.3561},{"Brand":"HF","Year":2025,"Month":"Oct","Customer":"Walmart Canada","Net_CB":7975,"Lag_Rev":301817,"Hyp_Pct":2.6423},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Albertsons","Net_CB":303,"Lag_Rev":401172,"Hyp_Pct":0.0755},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Amazon","Net_CB":-592129,"Lag_Rev":6119110,"Hyp_Pct":-9.6767},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"C&S","Net_CB":-15857,"Lag_Rev":312464,"Hyp_Pct":-5.0748},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"CVS","Net_CB":-11587,"Lag_Rev":2209215,"Hyp_Pct":-0.5245},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Costco","Net_CB":46751,"Lag_Rev":10767041,"Hyp_Pct":0.4342},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Crossmark","Net_CB":2818,"Lag_Rev":173521,"Hyp_Pct":1.624},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Dollar General","Net_CB":6241,"Lag_Rev":616194,"Hyp_Pct":1.0128},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Harris Teeter","Net_CB":782,"Lag_Rev":159913,"Hyp_Pct":0.489},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"KOHLS","Net_CB":8822,"Lag_Rev":159460,"Hyp_Pct":5.5324},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Kroger","Net_CB":7750,"Lag_Rev":1737232,"Hyp_Pct":0.4461},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Meijer","Net_CB":40800,"Lag_Rev":492562,"Hyp_Pct":8.2832},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Publix","Net_CB":5315,"Lag_Rev":1219042,"Hyp_Pct":0.436},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Shoppers Drug Mart Inc.","Net_CB":565,"Lag_Rev":158480,"Hyp_Pct":0.3565},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"TJX","Net_CB":872,"Lag_Rev":235056,"Hyp_Pct":0.371},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Target","Net_CB":21133,"Lag_Rev":7709673,"Hyp_Pct":0.2741},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Walgreens","Net_CB":4791,"Lag_Rev":896854,"Hyp_Pct":0.5342},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Walmart","Net_CB":102437,"Lag_Rev":7638013,"Hyp_Pct":1.3411},{"Brand":"HF","Year":2025,"Month":"Sep","Customer":"Walmart Canada","Net_CB":39890,"Lag_Rev":262679,"Hyp_Pct":15.1858},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Albertsons","Net_CB":19522,"Lag_Rev":617952,"Hyp_Pct":3.1591},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Amazon","Net_CB":-1893,"Lag_Rev":5977216,"Hyp_Pct":-0.0317},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"C&S","Net_CB":9465,"Lag_Rev":320714,"Hyp_Pct":2.9512},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"CVS","Net_CB":66774,"Lag_Rev":3242183,"Hyp_Pct":2.0595},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Costco","Net_CB":41501,"Lag_Rev":2725140,"Hyp_Pct":1.5229},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Crossmark","Net_CB":62349,"Lag_Rev":265043,"Hyp_Pct":23.5241},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Dollar General","Net_CB":11646,"Lag_Rev":1305536,"Hyp_Pct":0.892},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Harris Teeter","Net_CB":2832,"Lag_Rev":147405,"Hyp_Pct":1.9212},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"KOHLS","Net_CB":4731,"Lag_Rev":26806,"Hyp_Pct":17.649},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Kroger","Net_CB":125474,"Lag_Rev":2147930,"Hyp_Pct":5.8416},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Meijer","Net_CB":11927,"Lag_Rev":413649,"Hyp_Pct":2.8834},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Publix","Net_CB":4392,"Lag_Rev":408816,"Hyp_Pct":1.0743},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Shoppers Drug Mart Inc.","Net_CB":39116,"Lag_Rev":446718,"Hyp_Pct":8.7563},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Target","Net_CB":105822,"Lag_Rev":9328178,"Hyp_Pct":1.1344},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Walgreens","Net_CB":18591,"Lag_Rev":1745872,"Hyp_Pct":1.0649},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Walmart","Net_CB":-70034,"Lag_Rev":11109984,"Hyp_Pct":-0.6304},{"Brand":"HF","Year":2026,"Month":"Apr","Customer":"Walmart Canada","Net_CB":3402,"Lag_Rev":227674,"Hyp_Pct":1.4942},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Albertsons","Net_CB":24176,"Lag_Rev":336589,"Hyp_Pct":7.1826},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Amazon","Net_CB":60863,"Lag_Rev":6452458,"Hyp_Pct":0.9433},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"C&S","Net_CB":22559,"Lag_Rev":292900,"Hyp_Pct":7.7019},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"CVS","Net_CB":43681,"Lag_Rev":2190590,"Hyp_Pct":1.994},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Costco","Net_CB":111916,"Lag_Rev":7702282,"Hyp_Pct":1.453},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Crossmark","Net_CB":4591,"Lag_Rev":174297,"Hyp_Pct":2.634},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Dollar General","Net_CB":2968,"Lag_Rev":415596,"Hyp_Pct":0.7142},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Harris Teeter","Net_CB":1078,"Lag_Rev":141744,"Hyp_Pct":0.7605},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"KOHLS","Net_CB":24402,"Lag_Rev":405048,"Hyp_Pct":6.0245},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Kroger","Net_CB":13462,"Lag_Rev":994136,"Hyp_Pct":1.3541},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Meijer","Net_CB":21821,"Lag_Rev":415483,"Hyp_Pct":5.252},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Publix","Net_CB":8368,"Lag_Rev":353477,"Hyp_Pct":2.3673},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Shoppers Drug Mart Inc.","Net_CB":242,"Lag_Rev":275197,"Hyp_Pct":0.0879},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"TJX","Net_CB":4585,"Lag_Rev":80173,"Hyp_Pct":5.7189},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Target","Net_CB":92929,"Lag_Rev":6134920,"Hyp_Pct":1.5148},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Walgreens","Net_CB":18517,"Lag_Rev":1788401,"Hyp_Pct":1.0354},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Walmart","Net_CB":-40589,"Lag_Rev":5475523,"Hyp_Pct":-0.7413},{"Brand":"HF","Year":2026,"Month":"Feb","Customer":"Walmart Canada","Net_CB":33730,"Lag_Rev":374408,"Hyp_Pct":9.0089},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Albertsons","Net_CB":8561,"Lag_Rev":354767,"Hyp_Pct":2.4131},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Amazon","Net_CB":139465,"Lag_Rev":5884963,"Hyp_Pct":2.3699},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"C&S","Net_CB":6676,"Lag_Rev":305489,"Hyp_Pct":2.1853},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"CVS","Net_CB":76036,"Lag_Rev":1659910,"Hyp_Pct":4.5807},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Costco","Net_CB":13038,"Lag_Rev":8382774,"Hyp_Pct":0.1555},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Crossmark","Net_CB":2430,"Lag_Rev":199659,"Hyp_Pct":1.2171},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Dollar General","Net_CB":6428,"Lag_Rev":606563,"Hyp_Pct":1.0597},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Harris Teeter","Net_CB":2135,"Lag_Rev":124065,"Hyp_Pct":1.7209},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"KOHLS","Net_CB":12695,"Lag_Rev":251556,"Hyp_Pct":5.0466},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Kroger","Net_CB":12276,"Lag_Rev":1697891,"Hyp_Pct":0.723},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Meijer","Net_CB":19149,"Lag_Rev":818681,"Hyp_Pct":2.339},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Publix","Net_CB":15315,"Lag_Rev":448738,"Hyp_Pct":3.4129},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Shoppers Drug Mart Inc.","Net_CB":76483,"Lag_Rev":344735,"Hyp_Pct":22.186},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"TJX","Net_CB":1500,"Lag_Rev":31606,"Hyp_Pct":4.7459},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Target","Net_CB":195405,"Lag_Rev":6044330,"Hyp_Pct":3.2329},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Walgreens","Net_CB":40422,"Lag_Rev":1392813,"Hyp_Pct":2.9022},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Walmart","Net_CB":24779,"Lag_Rev":8346944,"Hyp_Pct":0.2969},{"Brand":"HF","Year":2026,"Month":"Jan","Customer":"Walmart Canada","Net_CB":24963,"Lag_Rev":27667,"Hyp_Pct":90.2266},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Albertsons","Net_CB":71486,"Lag_Rev":408034,"Hyp_Pct":17.5196},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Amazon","Net_CB":57466,"Lag_Rev":5756714,"Hyp_Pct":0.9982},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"C&S","Net_CB":-372,"Lag_Rev":335367,"Hyp_Pct":-0.1109},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"CVS","Net_CB":79307,"Lag_Rev":2814396,"Hyp_Pct":2.8179},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Costco","Net_CB":118385,"Lag_Rev":5455407,"Hyp_Pct":2.17},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Crossmark","Net_CB":13164,"Lag_Rev":207868,"Hyp_Pct":6.3329},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Dollar General","Net_CB":116272,"Lag_Rev":2202269,"Hyp_Pct":5.2796},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Harris Teeter","Net_CB":4102,"Lag_Rev":114163,"Hyp_Pct":3.5931},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"KOHLS","Net_CB":12809,"Lag_Rev":58641,"Hyp_Pct":21.8431},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Kroger","Net_CB":35372,"Lag_Rev":1346172,"Hyp_Pct":2.6276},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Meijer","Net_CB":-26292,"Lag_Rev":859270,"Hyp_Pct":-3.0598},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Publix","Net_CB":2412,"Lag_Rev":583334,"Hyp_Pct":0.4135},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Shoppers Drug Mart Inc.","Net_CB":29330,"Lag_Rev":152177,"Hyp_Pct":19.2736},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"TJX","Net_CB":35970,"Lag_Rev":944200,"Hyp_Pct":3.8096},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Target","Net_CB":24294,"Lag_Rev":7532594,"Hyp_Pct":0.3225},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Walgreens","Net_CB":13595,"Lag_Rev":1146443,"Hyp_Pct":1.1858},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Walmart","Net_CB":202478,"Lag_Rev":7388093,"Hyp_Pct":2.7406},{"Brand":"HF","Year":2026,"Month":"Mar","Customer":"Walmart Canada","Net_CB":5291,"Lag_Rev":259075,"Hyp_Pct":2.0423},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Albertsons","Net_CB":1517,"Lag_Rev":228366,"Hyp_Pct":0.6643},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Amazon","Net_CB":240324,"Lag_Rev":4435553,"Hyp_Pct":5.4181},{"Brand":"HF","Year":2026,"Month":"May","Customer":"C&S","Net_CB":10334,"Lag_Rev":323513,"Hyp_Pct":3.1943},{"Brand":"HF","Year":2026,"Month":"May","Customer":"CVS","Net_CB":43315,"Lag_Rev":2164219,"Hyp_Pct":2.0014},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Costco","Net_CB":103965,"Lag_Rev":5552071,"Hyp_Pct":1.8725},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Crossmark","Net_CB":19106,"Lag_Rev":250379,"Hyp_Pct":7.6308},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Dollar General","Net_CB":3820,"Lag_Rev":539402,"Hyp_Pct":0.7082},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Harris Teeter","Net_CB":1116,"Lag_Rev":85691,"Hyp_Pct":1.3024},{"Brand":"HF","Year":2026,"Month":"May","Customer":"KOHLS","Net_CB":4204,"Lag_Rev":181601,"Hyp_Pct":2.315},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Kroger","Net_CB":45155,"Lag_Rev":1557192,"Hyp_Pct":2.8998},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Meijer","Net_CB":-21497,"Lag_Rev":666916,"Hyp_Pct":-3.2233},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Publix","Net_CB":4586,"Lag_Rev":632426,"Hyp_Pct":0.7251},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Shoppers Drug Mart Inc.","Net_CB":16,"Lag_Rev":191620,"Hyp_Pct":0.0083},{"Brand":"HF","Year":2026,"Month":"May","Customer":"TJX","Net_CB":9183,"Lag_Rev":0,"Hyp_Pct":null},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Target","Net_CB":109546,"Lag_Rev":5102333,"Hyp_Pct":2.147},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Walgreens","Net_CB":23024,"Lag_Rev":990652,"Hyp_Pct":2.3241},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Walmart","Net_CB":72109,"Lag_Rev":6380885,"Hyp_Pct":1.1301},{"Brand":"HF","Year":2026,"Month":"May","Customer":"Walmart Canada","Net_CB":77698,"Lag_Rev":143000,"Hyp_Pct":54.3343},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"C&S","Net_CB":11456,"Lag_Rev":0,"Hyp_Pct":null},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"CVS","Net_CB":28348,"Lag_Rev":2075102,"Hyp_Pct":1.3661},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"Kroger","Net_CB":11859,"Lag_Rev":720821,"Hyp_Pct":1.6452},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"Meijer","Net_CB":3469,"Lag_Rev":452033,"Hyp_Pct":0.7674},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"Target","Net_CB":-3206,"Lag_Rev":4422119,"Hyp_Pct":-0.0725},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"Ulta","Net_CB":159552,"Lag_Rev":0,"Hyp_Pct":null},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"Walgreens","Net_CB":17564,"Lag_Rev":0,"Hyp_Pct":null},{"Brand":"LM","Year":2025,"Month":"Apr","Customer":"Walmart","Net_CB":-4028,"Lag_Rev":7858807,"Hyp_Pct":-0.0513},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Albertsons","Net_CB":6111,"Lag_Rev":210598,"Hyp_Pct":2.9017},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"CVS","Net_CB":-127,"Lag_Rev":874993,"Hyp_Pct":-0.0145},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Costco","Net_CB":20273,"Lag_Rev":1588664,"Hyp_Pct":1.2761},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Harris Teeter","Net_CB":481,"Lag_Rev":37505,"Hyp_Pct":1.2825},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Kroger","Net_CB":1479,"Lag_Rev":1212894,"Hyp_Pct":0.1219},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Meijer","Net_CB":11902,"Lag_Rev":190843,"Hyp_Pct":6.2365},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Sam's Club","Net_CB":154157,"Lag_Rev":179850,"Hyp_Pct":85.7142},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Target","Net_CB":11890,"Lag_Rev":3271093,"Hyp_Pct":0.3635},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Walgreens","Net_CB":13225,"Lag_Rev":350797,"Hyp_Pct":3.77},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Walmart","Net_CB":216731,"Lag_Rev":5732199,"Hyp_Pct":3.7809},{"Brand":"LM","Year":2025,"Month":"Aug","Customer":"Walmart Canada","Net_CB":186,"Lag_Rev":39410,"Hyp_Pct":0.472},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Albertsons","Net_CB":2887,"Lag_Rev":158695,"Hyp_Pct":1.8192},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"C&S","Net_CB":754,"Lag_Rev":44599,"Hyp_Pct":1.6906},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"CVS","Net_CB":15407,"Lag_Rev":468118,"Hyp_Pct":3.2913},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Costco","Net_CB":22130,"Lag_Rev":1444240,"Hyp_Pct":1.5323},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Harris Teeter","Net_CB":292,"Lag_Rev":16543,"Hyp_Pct":1.7651},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Kroger","Net_CB":20569,"Lag_Rev":341751,"Hyp_Pct":6.0187},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Meijer","Net_CB":-3721,"Lag_Rev":54689,"Hyp_Pct":-6.8039},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Sam's Club","Net_CB":3212,"Lag_Rev":112406,"Hyp_Pct":2.8575},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Target","Net_CB":29242,"Lag_Rev":2268529,"Hyp_Pct":1.289},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Ulta","Net_CB":10511,"Lag_Rev":27771,"Hyp_Pct":37.8488},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Walgreens","Net_CB":4295,"Lag_Rev":274076,"Hyp_Pct":1.5671},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Walmart","Net_CB":22257,"Lag_Rev":4874754,"Hyp_Pct":0.4566},{"Brand":"LM","Year":2025,"Month":"Dec","Customer":"Walmart Canada","Net_CB":2123,"Lag_Rev":165707,"Hyp_Pct":1.2812},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Albertsons","Net_CB":9017,"Lag_Rev":42182,"Hyp_Pct":21.3764},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"C&S","Net_CB":4798,"Lag_Rev":46578,"Hyp_Pct":10.301},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"CVS","Net_CB":11827,"Lag_Rev":857127,"Hyp_Pct":1.3798},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Harris Teeter","Net_CB":220,"Lag_Rev":18266,"Hyp_Pct":1.2044},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Kroger","Net_CB":3277,"Lag_Rev":518294,"Hyp_Pct":0.6323},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Meijer","Net_CB":2073,"Lag_Rev":216762,"Hyp_Pct":0.9563},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Sam's Club","Net_CB":67444,"Lag_Rev":937787,"Hyp_Pct":7.1918},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Target","Net_CB":-30637,"Lag_Rev":3883105,"Hyp_Pct":-0.789},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Ulta","Net_CB":3288,"Lag_Rev":88573,"Hyp_Pct":3.7122},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Walgreens","Net_CB":9630,"Lag_Rev":720901,"Hyp_Pct":1.3358},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Walmart","Net_CB":271749,"Lag_Rev":4619734,"Hyp_Pct":5.8824},{"Brand":"LM","Year":2025,"Month":"Jul","Customer":"Walmart Canada","Net_CB":6975,"Lag_Rev":43097,"Hyp_Pct":16.1844},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Albertsons","Net_CB":6731,"Lag_Rev":947519,"Hyp_Pct":0.7104},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"C&S","Net_CB":1879,"Lag_Rev":558988,"Hyp_Pct":0.3361},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"CVS","Net_CB":12702,"Lag_Rev":919084,"Hyp_Pct":1.382},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Costco","Net_CB":6855,"Lag_Rev":0,"Hyp_Pct":null},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Kroger","Net_CB":7622,"Lag_Rev":923931,"Hyp_Pct":0.825},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Meijer","Net_CB":699,"Lag_Rev":372655,"Hyp_Pct":0.1876},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Sam's Club","Net_CB":205735,"Lag_Rev":237658,"Hyp_Pct":86.5677},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Target","Net_CB":-287898,"Lag_Rev":3415923,"Hyp_Pct":-8.4281},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Ulta","Net_CB":2470,"Lag_Rev":463681,"Hyp_Pct":0.5327},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Walgreens","Net_CB":0,"Lag_Rev":149622,"Hyp_Pct":0.0},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Walmart","Net_CB":34075,"Lag_Rev":7150908,"Hyp_Pct":0.4765},{"Brand":"LM","Year":2025,"Month":"Jun","Customer":"Walmart Canada","Net_CB":1084,"Lag_Rev":69783,"Hyp_Pct":1.5534},{"Brand":"LM","Year":2025,"Month":"May","Customer":"C&S","Net_CB":1091,"Lag_Rev":0,"Hyp_Pct":null},{"Brand":"LM","Year":2025,"Month":"May","Customer":"CVS","Net_CB":15618,"Lag_Rev":2144573,"Hyp_Pct":0.7283},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Harris Teeter","Net_CB":565,"Lag_Rev":63908,"Hyp_Pct":0.8841},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Kroger","Net_CB":4334,"Lag_Rev":501311,"Hyp_Pct":0.8645},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Meijer","Net_CB":1636,"Lag_Rev":226728,"Hyp_Pct":0.7216},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Target","Net_CB":-1081,"Lag_Rev":4286648,"Hyp_Pct":-0.0252},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Ulta","Net_CB":754,"Lag_Rev":282334,"Hyp_Pct":0.2671},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Walgreens","Net_CB":3706,"Lag_Rev":622670,"Hyp_Pct":0.5952},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Walmart","Net_CB":414053,"Lag_Rev":5295364,"Hyp_Pct":7.8192},{"Brand":"LM","Year":2025,"Month":"May","Customer":"Walmart Canada","Net_CB":1816,"Lag_Rev":495965,"Hyp_Pct":0.3662},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Albertsons","Net_CB":2485,"Lag_Rev":150087,"Hyp_Pct":1.6557},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"C&S","Net_CB":890,"Lag_Rev":3039,"Hyp_Pct":29.2859},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"CVS","Net_CB":-10110,"Lag_Rev":952310,"Hyp_Pct":-1.0616},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Costco","Net_CB":18137,"Lag_Rev":137203,"Hyp_Pct":13.2191},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Harris Teeter","Net_CB":210,"Lag_Rev":47831,"Hyp_Pct":0.439},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Kroger","Net_CB":14196,"Lag_Rev":502639,"Hyp_Pct":2.8243},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Meijer","Net_CB":3509,"Lag_Rev":301056,"Hyp_Pct":1.1656},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Sam's Club","Net_CB":128,"Lag_Rev":28904,"Hyp_Pct":0.4428},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Target","Net_CB":16959,"Lag_Rev":2588826,"Hyp_Pct":0.6551},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Ulta","Net_CB":41565,"Lag_Rev":82125,"Hyp_Pct":50.6119},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Walgreens","Net_CB":6454,"Lag_Rev":752119,"Hyp_Pct":0.8581},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Walmart","Net_CB":20335,"Lag_Rev":5364075,"Hyp_Pct":0.3791},{"Brand":"LM","Year":2025,"Month":"Nov","Customer":"Walmart Canada","Net_CB":881,"Lag_Rev":27390,"Hyp_Pct":3.2165},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Albertsons","Net_CB":6601,"Lag_Rev":84864,"Hyp_Pct":7.7783},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"C&S","Net_CB":4782,"Lag_Rev":7923,"Hyp_Pct":60.3559},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"CVS","Net_CB":17288,"Lag_Rev":739201,"Hyp_Pct":2.3387},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Costco","Net_CB":33393,"Lag_Rev":2014715,"Hyp_Pct":1.6575},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Harris Teeter","Net_CB":345,"Lag_Rev":48545,"Hyp_Pct":0.7107},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Kroger","Net_CB":4037,"Lag_Rev":365554,"Hyp_Pct":1.1044},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Meijer","Net_CB":1202,"Lag_Rev":427881,"Hyp_Pct":0.2809},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Sam's Club","Net_CB":-6423,"Lag_Rev":93136,"Hyp_Pct":-6.8964},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Target","Net_CB":7153,"Lag_Rev":2856559,"Hyp_Pct":0.2504},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Walgreens","Net_CB":6569,"Lag_Rev":214864,"Hyp_Pct":3.0573},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Walmart","Net_CB":-162388,"Lag_Rev":4915260,"Hyp_Pct":-3.3038},{"Brand":"LM","Year":2025,"Month":"Oct","Customer":"Walmart Canada","Net_CB":1562,"Lag_Rev":49272,"Hyp_Pct":3.1702},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Albertsons","Net_CB":4845,"Lag_Rev":93622,"Hyp_Pct":5.1751},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"C&S","Net_CB":308,"Lag_Rev":20275,"Hyp_Pct":1.5191},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"CVS","Net_CB":19185,"Lag_Rev":658927,"Hyp_Pct":2.9116},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Costco","Net_CB":3953,"Lag_Rev":158866,"Hyp_Pct":2.4883},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Harris Teeter","Net_CB":501,"Lag_Rev":32051,"Hyp_Pct":1.5631},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Kroger","Net_CB":10166,"Lag_Rev":456403,"Hyp_Pct":2.2274},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Meijer","Net_CB":10980,"Lag_Rev":150062,"Hyp_Pct":7.317},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Target","Net_CB":6922,"Lag_Rev":4591212,"Hyp_Pct":0.1508},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Walgreens","Net_CB":7154,"Lag_Rev":180713,"Hyp_Pct":3.9588},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Walmart","Net_CB":61094,"Lag_Rev":8037237,"Hyp_Pct":0.7601},{"Brand":"LM","Year":2025,"Month":"Sep","Customer":"Walmart Canada","Net_CB":2490,"Lag_Rev":19165,"Hyp_Pct":12.9924},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Albertsons","Net_CB":10982,"Lag_Rev":100231,"Hyp_Pct":10.9567},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"C&S","Net_CB":1043,"Lag_Rev":14230,"Hyp_Pct":7.3296},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"CVS","Net_CB":5771,"Lag_Rev":412473,"Hyp_Pct":1.3991},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Crossmark","Net_CB":730,"Lag_Rev":132768,"Hyp_Pct":0.5498},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Harris Teeter","Net_CB":219,"Lag_Rev":31695,"Hyp_Pct":0.691},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Kroger","Net_CB":5007,"Lag_Rev":1037931,"Hyp_Pct":0.4824},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Meijer","Net_CB":2237,"Lag_Rev":310210,"Hyp_Pct":0.7211},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Sam's Club","Net_CB":0,"Lag_Rev":141310,"Hyp_Pct":0.0},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Target","Net_CB":-2262,"Lag_Rev":3211353,"Hyp_Pct":-0.0704},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Walgreens","Net_CB":8357,"Lag_Rev":1055371,"Hyp_Pct":0.7919},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Walmart","Net_CB":34156,"Lag_Rev":3928209,"Hyp_Pct":0.8695},{"Brand":"LM","Year":2026,"Month":"Apr","Customer":"Walmart Canada","Net_CB":1350,"Lag_Rev":119751,"Hyp_Pct":1.1273},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Albertsons","Net_CB":6832,"Lag_Rev":131633,"Hyp_Pct":5.1902},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"C&S","Net_CB":930,"Lag_Rev":2475,"Hyp_Pct":37.5758},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Costco","Net_CB":27141,"Lag_Rev":4556577,"Hyp_Pct":0.5956},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Crossmark","Net_CB":143,"Lag_Rev":42664,"Hyp_Pct":0.3352},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Harris Teeter","Net_CB":220,"Lag_Rev":21338,"Hyp_Pct":1.031},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Kroger","Net_CB":7197,"Lag_Rev":291126,"Hyp_Pct":2.4721},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Meijer","Net_CB":5226,"Lag_Rev":155397,"Hyp_Pct":3.363},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Sam's Club","Net_CB":-109194,"Lag_Rev":70655,"Hyp_Pct":-154.5453},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Target","Net_CB":504516,"Lag_Rev":1592479,"Hyp_Pct":31.6812},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Ulta","Net_CB":17426,"Lag_Rev":59011,"Hyp_Pct":29.5301},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Walgreens","Net_CB":9185,"Lag_Rev":187806,"Hyp_Pct":4.8907},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Walmart","Net_CB":-9898,"Lag_Rev":2717186,"Hyp_Pct":-0.3643},{"Brand":"LM","Year":2026,"Month":"Feb","Customer":"Walmart Canada","Net_CB":2237,"Lag_Rev":63210,"Hyp_Pct":3.539},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Albertsons","Net_CB":-823,"Lag_Rev":79578,"Hyp_Pct":-1.0342},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"C&S","Net_CB":50,"Lag_Rev":35687,"Hyp_Pct":0.1401},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"CVS","Net_CB":913,"Lag_Rev":769279,"Hyp_Pct":0.1187},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Costco","Net_CB":45299,"Lag_Rev":4477144,"Hyp_Pct":1.0118},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Crossmark","Net_CB":19757,"Lag_Rev":48417,"Hyp_Pct":40.8059},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Harris Teeter","Net_CB":395,"Lag_Rev":25574,"Hyp_Pct":1.5445},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Kroger","Net_CB":55018,"Lag_Rev":402416,"Hyp_Pct":13.6719},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Meijer","Net_CB":2792,"Lag_Rev":242376,"Hyp_Pct":1.1519},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Target","Net_CB":6122,"Lag_Rev":1996839,"Hyp_Pct":0.3066},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Ulta","Net_CB":17072,"Lag_Rev":47821,"Hyp_Pct":35.6998},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Walgreens","Net_CB":5928,"Lag_Rev":285166,"Hyp_Pct":2.0788},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Walmart","Net_CB":24122,"Lag_Rev":4875849,"Hyp_Pct":0.4947},{"Brand":"LM","Year":2026,"Month":"Jan","Customer":"Walmart Canada","Net_CB":2311,"Lag_Rev":77254,"Hyp_Pct":2.9914},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Albertsons","Net_CB":7305,"Lag_Rev":29446,"Hyp_Pct":24.8081},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"C&S","Net_CB":398,"Lag_Rev":20079,"Hyp_Pct":1.9822},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"CVS","Net_CB":18724,"Lag_Rev":253448,"Hyp_Pct":7.3877},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Crossmark","Net_CB":3492,"Lag_Rev":19700,"Hyp_Pct":17.7259},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Harris Teeter","Net_CB":26974,"Lag_Rev":78277,"Hyp_Pct":34.4597},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Kroger","Net_CB":15686,"Lag_Rev":94417,"Hyp_Pct":16.6135},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Meijer","Net_CB":5162,"Lag_Rev":282265,"Hyp_Pct":1.8288},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"TJX","Net_CB":2376,"Lag_Rev":125219,"Hyp_Pct":1.8975},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Target","Net_CB":56716,"Lag_Rev":0,"Hyp_Pct":null},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Ulta","Net_CB":40801,"Lag_Rev":88395,"Hyp_Pct":46.1576},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Walgreens","Net_CB":8252,"Lag_Rev":41664,"Hyp_Pct":19.8061},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Walmart","Net_CB":86014,"Lag_Rev":4533898,"Hyp_Pct":1.8971},{"Brand":"LM","Year":2026,"Month":"Mar","Customer":"Walmart Canada","Net_CB":8310,"Lag_Rev":39284,"Hyp_Pct":21.1537},{"Brand":"LM","Year":2026,"Month":"May","Customer":"C&S","Net_CB":17097,"Lag_Rev":18561,"Hyp_Pct":92.1125},{"Brand":"LM","Year":2026,"Month":"May","Customer":"CVS","Net_CB":55057,"Lag_Rev":2348877,"Hyp_Pct":2.344},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Crossmark","Net_CB":279,"Lag_Rev":82745,"Hyp_Pct":0.3372},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Harris Teeter","Net_CB":1033,"Lag_Rev":9971,"Hyp_Pct":10.36},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Kroger","Net_CB":17154,"Lag_Rev":908838,"Hyp_Pct":1.8875},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Meijer","Net_CB":3503,"Lag_Rev":283001,"Hyp_Pct":1.2378},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Target","Net_CB":23295,"Lag_Rev":1464056,"Hyp_Pct":1.5911},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Walgreens","Net_CB":16918,"Lag_Rev":418163,"Hyp_Pct":4.0458},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Walmart","Net_CB":13644,"Lag_Rev":3554217,"Hyp_Pct":0.3839},{"Brand":"LM","Year":2026,"Month":"May","Customer":"Walmart Canada","Net_CB":37754,"Lag_Rev":228189,"Hyp_Pct":16.5451}];
// Category-level datasets
const RAW_CAT_MONTHLY = [{"Brand":"HF","Year":2025,"Month":"Apr","Category":"Defective","Net_CB":4466},{"Brand":"HF","Year":2025,"Month":"Apr","Category":"EDI/ASN","Net_CB":6146},{"Brand":"HF","Year":2025,"Month":"Apr","Category":"Fill Rate","Net_CB":1758},{"Brand":"HF","Year":2025,"Month":"Apr","Category":"Late Ship","Net_CB":27400},{"Brand":"HF","Year":2025,"Month":"Apr","Category":"Merch Return","Net_CB":76984},{"Brand":"HF","Year":2025,"Month":"Apr","Category":"OTIF","Net_CB":5712},{"Brand":"HF","Year":2025,"Month":"Apr","Category":"Price Claim","Net_CB":4709},{"Brand":"HF","Year":2025,"Month":"Apr","Category":"Shipping Prep","Net_CB":28357},{"Brand":"HF","Year":2025,"Month":"Apr","Category":"Shortage","Net_CB":17612},{"Brand":"HF","Year":2025,"Month":"Apr","Category":"Substitution","Net_CB":6375},{"Brand":"HF","Year":2025,"Month":"Apr","Category":"Unknown","Net_CB":84528},{"Brand":"HF","Year":2025,"Month":"Aug","Category":"Defective","Net_CB":3926},{"Brand":"HF","Year":2025,"Month":"Aug","Category":"EDI/ASN","Net_CB":15216},{"Brand":"HF","Year":2025,"Month":"Aug","Category":"Fill Rate","Net_CB":387},{"Brand":"HF","Year":2025,"Month":"Aug","Category":"Late Ship","Net_CB":17440},{"Brand":"HF","Year":2025,"Month":"Aug","Category":"Merch Return","Net_CB":69498},{"Brand":"HF","Year":2025,"Month":"Aug","Category":"OTIF","Net_CB":15797},{"Brand":"HF","Year":2025,"Month":"Aug","Category":"Other","Net_CB":3069},{"Brand":"HF","Year":2025,"Month":"Aug","Category":"Price Claim","Net_CB":4915},{"Brand":"HF","Year":2025,"Month":"Aug","Category":"Shipping Prep","Net_CB":52627},{"Brand":"HF","Year":2025,"Month":"Aug","Category":"Shortage","Net_CB":325886},{"Brand":"HF","Year":2025,"Month":"Aug","Category":"Substitution","Net_CB":10682},{"Brand":"HF","Year":2025,"Month":"Aug","Category":"Unknown","Net_CB":71709},{"Brand":"HF","Year":2025,"Month":"Dec","Category":"Defective","Net_CB":6180},{"Brand":"HF","Year":2025,"Month":"Dec","Category":"EDI/ASN","Net_CB":821},{"Brand":"HF","Year":2025,"Month":"Dec","Category":"Fill Rate","Net_CB":67740},{"Brand":"HF","Year":2025,"Month":"Dec","Category":"Late Ship","Net_CB":21629},{"Brand":"HF","Year":2025,"Month":"Dec","Category":"Merch Return","Net_CB":-63809},{"Brand":"HF","Year":2025,"Month":"Dec","Category":"OTIF","Net_CB":18356},{"Brand":"HF","Year":2025,"Month":"Dec","Category":"Price Claim","Net_CB":8864},{"Brand":"HF","Year":2025,"Month":"Dec","Category":"Shipping Prep","Net_CB":134095},{"Brand":"HF","Year":2025,"Month":"Dec","Category":"Shortage","Net_CB":-23042},{"Brand":"HF","Year":2025,"Month":"Dec","Category":"Unknown","Net_CB":123399},{"Brand":"HF","Year":2025,"Month":"Feb","Category":"Defective","Net_CB":8053},{"Brand":"HF","Year":2025,"Month":"Feb","Category":"EDI/ASN","Net_CB":2275},{"Brand":"HF","Year":2025,"Month":"Feb","Category":"Fill Rate","Net_CB":3655},{"Brand":"HF","Year":2025,"Month":"Feb","Category":"Late Ship","Net_CB":67177},{"Brand":"HF","Year":2025,"Month":"Feb","Category":"Merch Return","Net_CB":81418},{"Brand":"HF","Year":2025,"Month":"Feb","Category":"OTIF","Net_CB":22322},{"Brand":"HF","Year":2025,"Month":"Feb","Category":"Price Claim","Net_CB":8793},{"Brand":"HF","Year":2025,"Month":"Feb","Category":"Shipping Prep","Net_CB":5787},{"Brand":"HF","Year":2025,"Month":"Feb","Category":"Shortage","Net_CB":233232},{"Brand":"HF","Year":2025,"Month":"Feb","Category":"Substitution","Net_CB":5394},{"Brand":"HF","Year":2025,"Month":"Feb","Category":"Unknown","Net_CB":76910},{"Brand":"HF","Year":2025,"Month":"Jan","Category":"Defective","Net_CB":9588},{"Brand":"HF","Year":2025,"Month":"Jan","Category":"EDI/ASN","Net_CB":10},{"Brand":"HF","Year":2025,"Month":"Jan","Category":"Fill Rate","Net_CB":1384},{"Brand":"HF","Year":2025,"Month":"Jan","Category":"Late Ship","Net_CB":13664},{"Brand":"HF","Year":2025,"Month":"Jan","Category":"Merch Return","Net_CB":65922},{"Brand":"HF","Year":2025,"Month":"Jan","Category":"OTIF","Net_CB":9598},{"Brand":"HF","Year":2025,"Month":"Jan","Category":"Price Claim","Net_CB":33735},{"Brand":"HF","Year":2025,"Month":"Jan","Category":"Shipping Prep","Net_CB":29258},{"Brand":"HF","Year":2025,"Month":"Jan","Category":"Shortage","Net_CB":125282},{"Brand":"HF","Year":2025,"Month":"Jan","Category":"Substitution","Net_CB":6570},{"Brand":"HF","Year":2025,"Month":"Jan","Category":"Unknown","Net_CB":66411},{"Brand":"HF","Year":2025,"Month":"Jul","Category":"Defective","Net_CB":2921},{"Brand":"HF","Year":2025,"Month":"Jul","Category":"EDI/ASN","Net_CB":5660},{"Brand":"HF","Year":2025,"Month":"Jul","Category":"Fill Rate","Net_CB":1271},{"Brand":"HF","Year":2025,"Month":"Jul","Category":"Late Ship","Net_CB":2024},{"Brand":"HF","Year":2025,"Month":"Jul","Category":"Merch Return","Net_CB":101434},{"Brand":"HF","Year":2025,"Month":"Jul","Category":"OTIF","Net_CB":43989},{"Brand":"HF","Year":2025,"Month":"Jul","Category":"Price Claim","Net_CB":52162},{"Brand":"HF","Year":2025,"Month":"Jul","Category":"Shipping Prep","Net_CB":17857},{"Brand":"HF","Year":2025,"Month":"Jul","Category":"Shortage","Net_CB":-73369},{"Brand":"HF","Year":2025,"Month":"Jul","Category":"Substitution","Net_CB":9179},{"Brand":"HF","Year":2025,"Month":"Jul","Category":"Unknown","Net_CB":62912},{"Brand":"HF","Year":2025,"Month":"Jun","Category":"Defective","Net_CB":5390},{"Brand":"HF","Year":2025,"Month":"Jun","Category":"EDI/ASN","Net_CB":200},{"Brand":"HF","Year":2025,"Month":"Jun","Category":"Fill Rate","Net_CB":5403},{"Brand":"HF","Year":2025,"Month":"Jun","Category":"Late Ship","Net_CB":9166},{"Brand":"HF","Year":2025,"Month":"Jun","Category":"Merch Return","Net_CB":57641},{"Brand":"HF","Year":2025,"Month":"Jun","Category":"OTIF","Net_CB":100710},{"Brand":"HF","Year":2025,"Month":"Jun","Category":"Price Claim","Net_CB":6990},{"Brand":"HF","Year":2025,"Month":"Jun","Category":"Shipping Prep","Net_CB":11958},{"Brand":"HF","Year":2025,"Month":"Jun","Category":"Shortage","Net_CB":292508},{"Brand":"HF","Year":2025,"Month":"Jun","Category":"Substitution","Net_CB":7897},{"Brand":"HF","Year":2025,"Month":"Jun","Category":"Unknown","Net_CB":47404},{"Brand":"HF","Year":2025,"Month":"Mar","Category":"Defective","Net_CB":7369},{"Brand":"HF","Year":2025,"Month":"Mar","Category":"EDI/ASN","Net_CB":235},{"Brand":"HF","Year":2025,"Month":"Mar","Category":"Fill Rate","Net_CB":1899},{"Brand":"HF","Year":2025,"Month":"Mar","Category":"Late Ship","Net_CB":790},{"Brand":"HF","Year":2025,"Month":"Mar","Category":"Merch Return","Net_CB":90951},{"Brand":"HF","Year":2025,"Month":"Mar","Category":"OTIF","Net_CB":9696},{"Brand":"HF","Year":2025,"Month":"Mar","Category":"Price Claim","Net_CB":6222},{"Brand":"HF","Year":2025,"Month":"Mar","Category":"Shipping Prep","Net_CB":60991},{"Brand":"HF","Year":2025,"Month":"Mar","Category":"Shortage","Net_CB":-38129},{"Brand":"HF","Year":2025,"Month":"Mar","Category":"Substitution","Net_CB":5973},{"Brand":"HF","Year":2025,"Month":"Mar","Category":"Unknown","Net_CB":77267},{"Brand":"HF","Year":2025,"Month":"May","Category":"Defective","Net_CB":5086},{"Brand":"HF","Year":2025,"Month":"May","Category":"EDI/ASN","Net_CB":100},{"Brand":"HF","Year":2025,"Month":"May","Category":"Fill Rate","Net_CB":2003},{"Brand":"HF","Year":2025,"Month":"May","Category":"Late Ship","Net_CB":2896},{"Brand":"HF","Year":2025,"Month":"May","Category":"Merch Return","Net_CB":41022},{"Brand":"HF","Year":2025,"Month":"May","Category":"OTIF","Net_CB":102577},{"Brand":"HF","Year":2025,"Month":"May","Category":"Price Claim","Net_CB":44837},{"Brand":"HF","Year":2025,"Month":"May","Category":"Shipping Prep","Net_CB":24255},{"Brand":"HF","Year":2025,"Month":"May","Category":"Shortage","Net_CB":292396},{"Brand":"HF","Year":2025,"Month":"May","Category":"Substitution","Net_CB":9936},{"Brand":"HF","Year":2025,"Month":"May","Category":"Unknown","Net_CB":92276},{"Brand":"HF","Year":2025,"Month":"Nov","Category":"Defective","Net_CB":2742},{"Brand":"HF","Year":2025,"Month":"Nov","Category":"EDI/ASN","Net_CB":13713},{"Brand":"HF","Year":2025,"Month":"Nov","Category":"Fill Rate","Net_CB":24571},{"Brand":"HF","Year":2025,"Month":"Nov","Category":"Late Ship","Net_CB":21597},{"Brand":"HF","Year":2025,"Month":"Nov","Category":"Merch Return","Net_CB":22572},{"Brand":"HF","Year":2025,"Month":"Nov","Category":"OTIF","Net_CB":29275},{"Brand":"HF","Year":2025,"Month":"Nov","Category":"Price Claim","Net_CB":6558},{"Brand":"HF","Year":2025,"Month":"Nov","Category":"Shipping Prep","Net_CB":149543},{"Brand":"HF","Year":2025,"Month":"Nov","Category":"Shortage","Net_CB":851294},{"Brand":"HF","Year":2025,"Month":"Nov","Category":"Unknown","Net_CB":56071},{"Brand":"HF","Year":2025,"Month":"Oct","Category":"Damage","Net_CB":-268},{"Brand":"HF","Year":2025,"Month":"Oct","Category":"Defective","Net_CB":3392},{"Brand":"HF","Year":2025,"Month":"Oct","Category":"EDI/ASN","Net_CB":18061},{"Brand":"HF","Year":2025,"Month":"Oct","Category":"Fill Rate","Net_CB":4089},{"Brand":"HF","Year":2025,"Month":"Oct","Category":"Late Ship","Net_CB":8746},{"Brand":"HF","Year":2025,"Month":"Oct","Category":"Merch Return","Net_CB":48186},{"Brand":"HF","Year":2025,"Month":"Oct","Category":"OTIF","Net_CB":3287},{"Brand":"HF","Year":2025,"Month":"Oct","Category":"Price Claim","Net_CB":5603},{"Brand":"HF","Year":2025,"Month":"Oct","Category":"Shipping Prep","Net_CB":34268},{"Brand":"HF","Year":2025,"Month":"Oct","Category":"Shortage","Net_CB":42248},{"Brand":"HF","Year":2025,"Month":"Oct","Category":"Unknown","Net_CB":97107},{"Brand":"HF","Year":2025,"Month":"Sep","Category":"Defective","Net_CB":4215},{"Brand":"HF","Year":2025,"Month":"Sep","Category":"EDI/ASN","Net_CB":3295},{"Brand":"HF","Year":2025,"Month":"Sep","Category":"Fill Rate","Net_CB":411},{"Brand":"HF","Year":2025,"Month":"Sep","Category":"Late Ship","Net_CB":15536},{"Brand":"HF","Year":2025,"Month":"Sep","Category":"Merch Return","Net_CB":52627},{"Brand":"HF","Year":2025,"Month":"Sep","Category":"OTIF","Net_CB":7169},{"Brand":"HF","Year":2025,"Month":"Sep","Category":"Price Claim","Net_CB":13910},{"Brand":"HF","Year":2025,"Month":"Sep","Category":"Shipping Prep","Net_CB":26421},{"Brand":"HF","Year":2025,"Month":"Sep","Category":"Shortage","Net_CB":-504249},{"Brand":"HF","Year":2025,"Month":"Sep","Category":"Substitution","Net_CB":15762},{"Brand":"HF","Year":2025,"Month":"Sep","Category":"Unknown","Net_CB":42281},{"Brand":"HF","Year":2026,"Month":"Apr","Category":"Defective","Net_CB":18188},{"Brand":"HF","Year":2026,"Month":"Apr","Category":"EDI/ASN","Net_CB":2584},{"Brand":"HF","Year":2026,"Month":"Apr","Category":"Fill Rate","Net_CB":68348},{"Brand":"HF","Year":2026,"Month":"Apr","Category":"Late Ship","Net_CB":40634},{"Brand":"HF","Year":2026,"Month":"Apr","Category":"Merch Return","Net_CB":46935},{"Brand":"HF","Year":2026,"Month":"Apr","Category":"OTIF","Net_CB":36782},{"Brand":"HF","Year":2026,"Month":"Apr","Category":"Price Claim","Net_CB":3270},{"Brand":"HF","Year":2026,"Month":"Apr","Category":"Shipping Prep","Net_CB":17947},{"Brand":"HF","Year":2026,"Month":"Apr","Category":"Shortage","Net_CB":20695},{"Brand":"HF","Year":2026,"Month":"Apr","Category":"Substitution","Net_CB":44244},{"Brand":"HF","Year":2026,"Month":"Apr","Category":"Unknown","Net_CB":181857},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"Audit","Net_CB":375},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"Damage","Net_CB":1101},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"Defective","Net_CB":1500},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"EDI/ASN","Net_CB":1100},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"Fill Rate","Net_CB":42747},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"Late Ship","Net_CB":41292},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"Merch Return","Net_CB":114106},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"OTIF","Net_CB":29172},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"Price Claim","Net_CB":7772},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"SQEP","Net_CB":7185},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"Shipping Prep","Net_CB":33373},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"Shortage","Net_CB":114999},{"Brand":"HF","Year":2026,"Month":"Feb","Category":"Unknown","Net_CB":75317},{"Brand":"HF","Year":2026,"Month":"Jan","Category":"Defective","Net_CB":4694},{"Brand":"HF","Year":2026,"Month":"Jan","Category":"EDI/ASN","Net_CB":1658},{"Brand":"HF","Year":2026,"Month":"Jan","Category":"Fill Rate","Net_CB":44046},{"Brand":"HF","Year":2026,"Month":"Jan","Category":"Late Ship","Net_CB":36278},{"Brand":"HF","Year":2026,"Month":"Jan","Category":"Merch Return","Net_CB":14675},{"Brand":"HF","Year":2026,"Month":"Jan","Category":"OTIF","Net_CB":16521},{"Brand":"HF","Year":2026,"Month":"Jan","Category":"Price Claim","Net_CB":2455},{"Brand":"HF","Year":2026,"Month":"Jan","Category":"Shipping Prep","Net_CB":39681},{"Brand":"HF","Year":2026,"Month":"Jan","Category":"Shortage","Net_CB":432681},{"Brand":"HF","Year":2026,"Month":"Jan","Category":"Unknown","Net_CB":107782},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Appointment","Net_CB":2150},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Audit","Net_CB":1125},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Damage","Net_CB":1762},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"EDI/ASN","Net_CB":1451},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Fill Rate","Net_CB":98808},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Incorrect Paperwork","Net_CB":14200},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Late Ship","Net_CB":14015},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Merch Return","Net_CB":123822},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"OTIF","Net_CB":8241},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Other","Net_CB":9224},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Price Claim","Net_CB":6885},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"SQEP","Net_CB":9773},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Shipping Prep","Net_CB":674},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Shortage","Net_CB":376852},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Substitution","Net_CB":37218},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Unknown","Net_CB":148977},{"Brand":"HF","Year":2026,"Month":"Mar","Category":"Unloading Fees","Net_CB":1649},{"Brand":"HF","Year":2026,"Month":"May","Category":"Defective","Net_CB":2806},{"Brand":"HF","Year":2026,"Month":"May","Category":"EDI/ASN","Net_CB":2507},{"Brand":"HF","Year":2026,"Month":"May","Category":"Fill Rate","Net_CB":5106},{"Brand":"HF","Year":2026,"Month":"May","Category":"Late Ship","Net_CB":-14106},{"Brand":"HF","Year":2026,"Month":"May","Category":"Merch Return","Net_CB":115012},{"Brand":"HF","Year":2026,"Month":"May","Category":"OTIF","Net_CB":35859},{"Brand":"HF","Year":2026,"Month":"May","Category":"Other","Net_CB":770},{"Brand":"HF","Year":2026,"Month":"May","Category":"Price Claim","Net_CB":6809},{"Brand":"HF","Year":2026,"Month":"May","Category":"Shipping Prep","Net_CB":109253},{"Brand":"HF","Year":2026,"Month":"May","Category":"Shortage","Net_CB":343355},{"Brand":"HF","Year":2026,"Month":"May","Category":"Substitution","Net_CB":53580},{"Brand":"HF","Year":2026,"Month":"May","Category":"Unknown","Net_CB":121839},{"Brand":"LM","Year":2025,"Month":"Apr","Category":"Audit","Net_CB":807},{"Brand":"LM","Year":2025,"Month":"Apr","Category":"Damage","Net_CB":418},{"Brand":"LM","Year":2025,"Month":"Apr","Category":"Defective","Net_CB":500},{"Brand":"LM","Year":2025,"Month":"Apr","Category":"EDI/ASN","Net_CB":7735},{"Brand":"LM","Year":2025,"Month":"Apr","Category":"Fill Rate","Net_CB":3144},{"Brand":"LM","Year":2025,"Month":"Apr","Category":"Labeling","Net_CB":6524},{"Brand":"LM","Year":2025,"Month":"Apr","Category":"Late Ship","Net_CB":915},{"Brand":"LM","Year":2025,"Month":"Apr","Category":"Merch Return","Net_CB":9125},{"Brand":"LM","Year":2025,"Month":"Apr","Category":"OTIF","Net_CB":15439},{"Brand":"LM","Year":2025,"Month":"Apr","Category":"Shortage","Net_CB":10232},{"Brand":"LM","Year":2025,"Month":"Apr","Category":"Unknown","Net_CB":235653},{"Brand":"LM","Year":2025,"Month":"Apr","Category":"Unloading Fees","Net_CB":460},{"Brand":"LM","Year":2025,"Month":"Aug","Category":"Appointment","Net_CB":750},{"Brand":"LM","Year":2025,"Month":"Aug","Category":"Fill Rate","Net_CB":334},{"Brand":"LM","Year":2025,"Month":"Aug","Category":"Labeling","Net_CB":2473},{"Brand":"LM","Year":2025,"Month":"Aug","Category":"Late Ship","Net_CB":7791},{"Brand":"LM","Year":2025,"Month":"Aug","Category":"Merch Return","Net_CB":22535},{"Brand":"LM","Year":2025,"Month":"Aug","Category":"OTIF","Net_CB":922},{"Brand":"LM","Year":2025,"Month":"Aug","Category":"Price Claim","Net_CB":166320},{"Brand":"LM","Year":2025,"Month":"Aug","Category":"Shipping Prep","Net_CB":200},{"Brand":"LM","Year":2025,"Month":"Aug","Category":"Shortage","Net_CB":181415},{"Brand":"LM","Year":2025,"Month":"Aug","Category":"Unknown","Net_CB":46708},{"Brand":"LM","Year":2025,"Month":"Aug","Category":"Unloading Fees","Net_CB":973},{"Brand":"LM","Year":2025,"Month":"Dec","Category":"Appointment","Net_CB":750},{"Brand":"LM","Year":2025,"Month":"Dec","Category":"Audit","Net_CB":3030},{"Brand":"LM","Year":2025,"Month":"Dec","Category":"Damage","Net_CB":1360},{"Brand":"LM","Year":2025,"Month":"Dec","Category":"EDI/ASN","Net_CB":9150},{"Brand":"LM","Year":2025,"Month":"Dec","Category":"Fill Rate","Net_CB":15571},{"Brand":"LM","Year":2025,"Month":"Dec","Category":"Late Ship","Net_CB":1881},{"Brand":"LM","Year":2025,"Month":"Dec","Category":"Merch Return","Net_CB":22527},{"Brand":"LM","Year":2025,"Month":"Dec","Category":"SQEP","Net_CB":6986},{"Brand":"LM","Year":2025,"Month":"Dec","Category":"Shipping Prep","Net_CB":200},{"Brand":"LM","Year":2025,"Month":"Dec","Category":"Shortage","Net_CB":45559},{"Brand":"LM","Year":2025,"Month":"Dec","Category":"Unknown","Net_CB":27938},{"Brand":"LM","Year":2025,"Month":"Dec","Category":"Unloading Fees","Net_CB":340},{"Brand":"LM","Year":2025,"Month":"Feb","Category":"Audit","Net_CB":114},{"Brand":"LM","Year":2025,"Month":"Feb","Category":"Defective","Net_CB":59},{"Brand":"LM","Year":2025,"Month":"Feb","Category":"EDI/ASN","Net_CB":6329},{"Brand":"LM","Year":2025,"Month":"Feb","Category":"Fill Rate","Net_CB":4474},{"Brand":"LM","Year":2025,"Month":"Feb","Category":"Labeling","Net_CB":2818},{"Brand":"LM","Year":2025,"Month":"Feb","Category":"Late Ship","Net_CB":16304},{"Brand":"LM","Year":2025,"Month":"Feb","Category":"Merch Return","Net_CB":2606},{"Brand":"LM","Year":2025,"Month":"Feb","Category":"OTIF","Net_CB":-1208},{"Brand":"LM","Year":2025,"Month":"Feb","Category":"Shortage","Net_CB":-68635},{"Brand":"LM","Year":2025,"Month":"Feb","Category":"Unknown","Net_CB":-1637},{"Brand":"LM","Year":2025,"Month":"Feb","Category":"Unloading Fees","Net_CB":900},{"Brand":"LM","Year":2025,"Month":"Jan","Category":"Audit","Net_CB":158},{"Brand":"LM","Year":2025,"Month":"Jan","Category":"Fill Rate","Net_CB":7},{"Brand":"LM","Year":2025,"Month":"Jan","Category":"Late Ship","Net_CB":2303},{"Brand":"LM","Year":2025,"Month":"Jan","Category":"Merch Return","Net_CB":3095},{"Brand":"LM","Year":2025,"Month":"Jan","Category":"OTIF","Net_CB":447},{"Brand":"LM","Year":2025,"Month":"Jan","Category":"Shortage","Net_CB":-38367},{"Brand":"LM","Year":2025,"Month":"Jan","Category":"Unknown","Net_CB":2589},{"Brand":"LM","Year":2025,"Month":"Jan","Category":"Unloading Fees","Net_CB":335},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"Appointment","Net_CB":500},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"Audit","Net_CB":2815},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"Damage","Net_CB":2473},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"Defective","Net_CB":120},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"EDI/ASN","Net_CB":109},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"Fill Rate","Net_CB":3823},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"Labeling","Net_CB":3250},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"Late Ship","Net_CB":3904},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"Merch Return","Net_CB":2794},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"OTIF","Net_CB":2030},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"Shipping Prep","Net_CB":1000},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"Shortage","Net_CB":280868},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"Unknown","Net_CB":31650},{"Brand":"LM","Year":2025,"Month":"Jul","Category":"Unloading Fees","Net_CB":312},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"Appointment","Net_CB":500},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"Damage","Net_CB":2232},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"Defective","Net_CB":244},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"Fill Rate","Net_CB":2795},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"Labeling","Net_CB":2180},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"Late Ship","Net_CB":2612},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"Merch Return","Net_CB":8967},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"OTIF","Net_CB":5859},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"Price Claim","Net_CB":11},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"Shipping Prep","Net_CB":600},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"Shortage","Net_CB":-50310},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"Unknown","Net_CB":15336},{"Brand":"LM","Year":2025,"Month":"Jun","Category":"Unloading Fees","Net_CB":526},{"Brand":"LM","Year":2025,"Month":"Mar","Category":"Audit","Net_CB":307},{"Brand":"LM","Year":2025,"Month":"Mar","Category":"Defective","Net_CB":19},{"Brand":"LM","Year":2025,"Month":"Mar","Category":"EDI/ASN","Net_CB":8384},{"Brand":"LM","Year":2025,"Month":"Mar","Category":"Fill Rate","Net_CB":1430},{"Brand":"LM","Year":2025,"Month":"Mar","Category":"Labeling","Net_CB":5966},{"Brand":"LM","Year":2025,"Month":"Mar","Category":"OTIF","Net_CB":14440},{"Brand":"LM","Year":2025,"Month":"Mar","Category":"Shortage","Net_CB":218218},{"Brand":"LM","Year":2025,"Month":"Mar","Category":"Unknown","Net_CB":128027},{"Brand":"LM","Year":2025,"Month":"Mar","Category":"Unloading Fees","Net_CB":1478},{"Brand":"LM","Year":2025,"Month":"May","Category":"Audit","Net_CB":1094},{"Brand":"LM","Year":2025,"Month":"May","Category":"Damage","Net_CB":122},{"Brand":"LM","Year":2025,"Month":"May","Category":"EDI/ASN","Net_CB":589},{"Brand":"LM","Year":2025,"Month":"May","Category":"Fill Rate","Net_CB":3254},{"Brand":"LM","Year":2025,"Month":"May","Category":"Labeling","Net_CB":15352},{"Brand":"LM","Year":2025,"Month":"May","Category":"Late Ship","Net_CB":326},{"Brand":"LM","Year":2025,"Month":"May","Category":"Merch Return","Net_CB":1954},{"Brand":"LM","Year":2025,"Month":"May","Category":"OTIF","Net_CB":236814},{"Brand":"LM","Year":2025,"Month":"May","Category":"Shortage","Net_CB":158446},{"Brand":"LM","Year":2025,"Month":"May","Category":"Unknown","Net_CB":53690},{"Brand":"LM","Year":2025,"Month":"May","Category":"Unloading Fees","Net_CB":760},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"Appointment","Net_CB":250},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"Audit","Net_CB":1820},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"Damage","Net_CB":10932},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"Defective","Net_CB":468},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"EDI/ASN","Net_CB":30850},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"Labeling","Net_CB":7718},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"Late Ship","Net_CB":8274},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"Merch Return","Net_CB":19738},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"OTIF","Net_CB":3311},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"Shipping Prep","Net_CB":600},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"Shortage","Net_CB":8999},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"Unknown","Net_CB":25341},{"Brand":"LM","Year":2025,"Month":"Nov","Category":"Unloading Fees","Net_CB":430},{"Brand":"LM","Year":2025,"Month":"Oct","Category":"Appointment","Net_CB":7575},{"Brand":"LM","Year":2025,"Month":"Oct","Category":"Defective","Net_CB":117},{"Brand":"LM","Year":2025,"Month":"Oct","Category":"EDI/ASN","Net_CB":300},{"Brand":"LM","Year":2025,"Month":"Oct","Category":"Labeling","Net_CB":7093},{"Brand":"LM","Year":2025,"Month":"Oct","Category":"Late Ship","Net_CB":3909},{"Brand":"LM","Year":2025,"Month":"Oct","Category":"Merch Return","Net_CB":35714},{"Brand":"LM","Year":2025,"Month":"Oct","Category":"OTIF","Net_CB":-231459},{"Brand":"LM","Year":2025,"Month":"Oct","Category":"Price Claim","Net_CB":86},{"Brand":"LM","Year":2025,"Month":"Oct","Category":"Shipping Prep","Net_CB":400},{"Brand":"LM","Year":2025,"Month":"Oct","Category":"Shortage","Net_CB":44378},{"Brand":"LM","Year":2025,"Month":"Oct","Category":"Unknown","Net_CB":49987},{"Brand":"LM","Year":2025,"Month":"Oct","Category":"Unloading Fees","Net_CB":643},{"Brand":"LM","Year":2025,"Month":"Sep","Category":"Appointment","Net_CB":3800},{"Brand":"LM","Year":2025,"Month":"Sep","Category":"Audit","Net_CB":3848},{"Brand":"LM","Year":2025,"Month":"Sep","Category":"EDI/ASN","Net_CB":300},{"Brand":"LM","Year":2025,"Month":"Sep","Category":"Fill Rate","Net_CB":460},{"Brand":"LM","Year":2025,"Month":"Sep","Category":"Labeling","Net_CB":1055},{"Brand":"LM","Year":2025,"Month":"Sep","Category":"Late Ship","Net_CB":5901},{"Brand":"LM","Year":2025,"Month":"Sep","Category":"Merch Return","Net_CB":13691},{"Brand":"LM","Year":2025,"Month":"Sep","Category":"OTIF","Net_CB":2048},{"Brand":"LM","Year":2025,"Month":"Sep","Category":"Shipping Prep","Net_CB":200},{"Brand":"LM","Year":2025,"Month":"Sep","Category":"Shortage","Net_CB":82284},{"Brand":"LM","Year":2025,"Month":"Sep","Category":"Unknown","Net_CB":17570},{"Brand":"LM","Year":2025,"Month":"Sep","Category":"Unloading Fees","Net_CB":249},{"Brand":"LM","Year":2026,"Month":"Apr","Category":"Merch Return","Net_CB":3827},{"Brand":"LM","Year":2026,"Month":"Apr","Category":"OTIF","Net_CB":557},{"Brand":"LM","Year":2026,"Month":"Apr","Category":"Price Claim","Net_CB":75},{"Brand":"LM","Year":2026,"Month":"Apr","Category":"Shipping Prep","Net_CB":23073},{"Brand":"LM","Year":2026,"Month":"Apr","Category":"Shortage","Net_CB":16360},{"Brand":"LM","Year":2026,"Month":"Apr","Category":"Substitution","Net_CB":351},{"Brand":"LM","Year":2026,"Month":"Apr","Category":"Unknown","Net_CB":27662},{"Brand":"LM","Year":2026,"Month":"Feb","Category":"Damage","Net_CB":2974},{"Brand":"LM","Year":2026,"Month":"Feb","Category":"EDI/ASN","Net_CB":15100},{"Brand":"LM","Year":2026,"Month":"Feb","Category":"Fill Rate","Net_CB":5642},{"Brand":"LM","Year":2026,"Month":"Feb","Category":"Late Ship","Net_CB":4652},{"Brand":"LM","Year":2026,"Month":"Feb","Category":"Merch Return","Net_CB":517704},{"Brand":"LM","Year":2026,"Month":"Feb","Category":"Shipping Prep","Net_CB":4442},{"Brand":"LM","Year":2026,"Month":"Feb","Category":"Shortage","Net_CB":-120295},{"Brand":"LM","Year":2026,"Month":"Feb","Category":"Unknown","Net_CB":37343},{"Brand":"LM","Year":2026,"Month":"Feb","Category":"Unloading Fees","Net_CB":620},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"Damage","Net_CB":1372},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"Defective","Net_CB":6215},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"EDI/ASN","Net_CB":15700},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"Fill Rate","Net_CB":1999},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"Late Ship","Net_CB":2324},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"Merch Return","Net_CB":47028},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"OTIF","Net_CB":13584},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"Other","Net_CB":126},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"Price Claim","Net_CB":19228},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"Shipping Prep","Net_CB":6910},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"Shortage","Net_CB":7082},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"Unknown","Net_CB":58532},{"Brand":"LM","Year":2026,"Month":"Jan","Category":"Unloading Fees","Net_CB":109},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"Audit","Net_CB":3336},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"Damage","Net_CB":26620},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"EDI/ASN","Net_CB":37500},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"Fill Rate","Net_CB":21226},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"Late Ship","Net_CB":3355},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"Merch Return","Net_CB":10240},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"OTIF","Net_CB":8437},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"Price Claim","Net_CB":5975},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"SQEP","Net_CB":1917},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"Shortage","Net_CB":84368},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"Substitution","Net_CB":15036},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"Unknown","Net_CB":63980},{"Brand":"LM","Year":2026,"Month":"Mar","Category":"Unloading Fees","Net_CB":574},{"Brand":"LM","Year":2026,"Month":"May","Category":"Defective","Net_CB":5033},{"Brand":"LM","Year":2026,"Month":"May","Category":"EDI/ASN","Net_CB":165},{"Brand":"LM","Year":2026,"Month":"May","Category":"Late Ship","Net_CB":997},{"Brand":"LM","Year":2026,"Month":"May","Category":"Merch Return","Net_CB":16661},{"Brand":"LM","Year":2026,"Month":"May","Category":"OTIF","Net_CB":1836},{"Brand":"LM","Year":2026,"Month":"May","Category":"Other","Net_CB":66},{"Brand":"LM","Year":2026,"Month":"May","Category":"Shipping Prep","Net_CB":14419},{"Brand":"LM","Year":2026,"Month":"May","Category":"Shortage","Net_CB":63946},{"Brand":"LM","Year":2026,"Month":"May","Category":"Substitution","Net_CB":2361},{"Brand":"LM","Year":2026,"Month":"May","Category":"Unknown","Net_CB":83165}]; // {Brand,Year,Month,mi,Category,Net_CB}
const RAW_CAT_CUST = [{"Brand":"HF","Year":2025,"Customer":"Albertsons","Channel":"Grocery","Category":"Defective","Net_CB":39507},{"Brand":"HF","Year":2025,"Customer":"Albertsons","Channel":"Grocery","Category":"Fill Rate","Net_CB":1000},{"Brand":"HF","Year":2025,"Customer":"Albertsons","Channel":"Grocery","Category":"Late Ship","Net_CB":11000},{"Brand":"HF","Year":2025,"Customer":"Albertsons","Channel":"Grocery","Category":"Shipping Prep","Net_CB":27743},{"Brand":"HF","Year":2025,"Customer":"Albertsons","Channel":"Grocery","Category":"Shortage","Net_CB":32686},{"Brand":"HF","Year":2025,"Customer":"Amazon","Channel":"Digital","Category":"EDI/ASN","Net_CB":2887},{"Brand":"HF","Year":2025,"Customer":"Amazon","Channel":"Digital","Category":"Fill Rate","Net_CB":51811},{"Brand":"HF","Year":2025,"Customer":"Amazon","Channel":"Digital","Category":"Late Ship","Net_CB":68033},{"Brand":"HF","Year":2025,"Customer":"Amazon","Channel":"Digital","Category":"Merch Return","Net_CB":7959},{"Brand":"HF","Year":2025,"Customer":"Amazon","Channel":"Digital","Category":"OTIF","Net_CB":206613},{"Brand":"HF","Year":2025,"Customer":"Amazon","Channel":"Digital","Category":"Price Claim","Net_CB":35773},{"Brand":"HF","Year":2025,"Customer":"Amazon","Channel":"Digital","Category":"Shipping Prep","Net_CB":110116},{"Brand":"HF","Year":2025,"Customer":"Amazon","Channel":"Digital","Category":"Shortage","Net_CB":169902},{"Brand":"HF","Year":2025,"Customer":"Amazon","Channel":"Digital","Category":"Unknown","Net_CB":17957},{"Brand":"HF","Year":2025,"Customer":"C&S","Channel":"Grocery","Category":"Shortage","Net_CB":-3946},{"Brand":"HF","Year":2025,"Customer":"C&S","Channel":"Grocery","Category":"Unknown","Net_CB":180536},{"Brand":"HF","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"EDI/ASN","Net_CB":2400},{"Brand":"HF","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Late Ship","Net_CB":9956},{"Brand":"HF","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Merch Return","Net_CB":22030},{"Brand":"HF","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"OTIF","Net_CB":42021},{"Brand":"HF","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Shipping Prep","Net_CB":80585},{"Brand":"HF","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Shortage","Net_CB":26528},{"Brand":"HF","Year":2025,"Customer":"Costco","Channel":"Club","Category":"Merch Return","Net_CB":600962},{"Brand":"HF","Year":2025,"Customer":"Costco","Channel":"Club","Category":"Price Claim","Net_CB":104},{"Brand":"HF","Year":2025,"Customer":"Costco","Channel":"Club","Category":"Shipping Prep","Net_CB":23231},{"Brand":"HF","Year":2025,"Customer":"Costco","Channel":"Club","Category":"Shortage","Net_CB":16828},{"Brand":"HF","Year":2025,"Customer":"Costco","Channel":"Club","Category":"Unknown","Net_CB":5301},{"Brand":"HF","Year":2025,"Customer":"Crossmark","Channel":"Grocery","Category":"Defective","Net_CB":-160},{"Brand":"HF","Year":2025,"Customer":"Crossmark","Channel":"Grocery","Category":"EDI/ASN","Net_CB":1050},{"Brand":"HF","Year":2025,"Customer":"Crossmark","Channel":"Grocery","Category":"Late Ship","Net_CB":215},{"Brand":"HF","Year":2025,"Customer":"Crossmark","Channel":"Grocery","Category":"Other","Net_CB":3069},{"Brand":"HF","Year":2025,"Customer":"Crossmark","Channel":"Grocery","Category":"Shipping Prep","Net_CB":2114},{"Brand":"HF","Year":2025,"Customer":"Crossmark","Channel":"Grocery","Category":"Shortage","Net_CB":22342},{"Brand":"HF","Year":2025,"Customer":"Crossmark","Channel":"Grocery","Category":"Unknown","Net_CB":28025},{"Brand":"HF","Year":2025,"Customer":"Dollar General","Channel":"Drug & Dollar","Category":"Fill Rate","Net_CB":19422},{"Brand":"HF","Year":2025,"Customer":"Dollar General","Channel":"Drug & Dollar","Category":"Late Ship","Net_CB":11325},{"Brand":"HF","Year":2025,"Customer":"Dollar General","Channel":"Drug & Dollar","Category":"OTIF","Net_CB":250},{"Brand":"HF","Year":2025,"Customer":"Dollar General","Channel":"Drug & Dollar","Category":"Shortage","Net_CB":5611},{"Brand":"HF","Year":2025,"Customer":"Dollar General","Channel":"Drug & Dollar","Category":"Unknown","Net_CB":1003},{"Brand":"HF","Year":2025,"Customer":"Harris Teeter","Channel":"Grocery","Category":"Shortage","Net_CB":1480},{"Brand":"HF","Year":2025,"Customer":"Harris Teeter","Channel":"Grocery","Category":"Unknown","Net_CB":39618},{"Brand":"HF","Year":2025,"Customer":"KOHLS","Channel":"Specialty","Category":"Fill Rate","Net_CB":18426},{"Brand":"HF","Year":2025,"Customer":"KOHLS","Channel":"Specialty","Category":"Price Claim","Net_CB":941},{"Brand":"HF","Year":2025,"Customer":"KOHLS","Channel":"Specialty","Category":"Shipping Prep","Net_CB":98125},{"Brand":"HF","Year":2025,"Customer":"KOHLS","Channel":"Specialty","Category":"Shortage","Net_CB":-97028},{"Brand":"HF","Year":2025,"Customer":"KOHLS","Channel":"Specialty","Category":"Unknown","Net_CB":14697},{"Brand":"HF","Year":2025,"Customer":"Kroger","Channel":"Grocery","Category":"EDI/ASN","Net_CB":986},{"Brand":"HF","Year":2025,"Customer":"Kroger","Channel":"Grocery","Category":"Late Ship","Net_CB":24092},{"Brand":"HF","Year":2025,"Customer":"Kroger","Channel":"Grocery","Category":"Shipping Prep","Net_CB":1400},{"Brand":"HF","Year":2025,"Customer":"Kroger","Channel":"Grocery","Category":"Shortage","Net_CB":202819},{"Brand":"HF","Year":2025,"Customer":"Kroger","Channel":"Grocery","Category":"Unknown","Net_CB":130521},{"Brand":"HF","Year":2025,"Customer":"Meijer","Channel":"Grocery","Category":"Fill Rate","Net_CB":131},{"Brand":"HF","Year":2025,"Customer":"Meijer","Channel":"Grocery","Category":"Late Ship","Net_CB":73298},{"Brand":"HF","Year":2025,"Customer":"Meijer","Channel":"Grocery","Category":"Price Claim","Net_CB":3126},{"Brand":"HF","Year":2025,"Customer":"Meijer","Channel":"Grocery","Category":"Shipping Prep","Net_CB":919},{"Brand":"HF","Year":2025,"Customer":"Meijer","Channel":"Grocery","Category":"Shortage","Net_CB":96389},{"Brand":"HF","Year":2025,"Customer":"Meijer","Channel":"Grocery","Category":"Substitution","Net_CB":12811},{"Brand":"HF","Year":2025,"Customer":"Meijer","Channel":"Grocery","Category":"Unknown","Net_CB":8747},{"Brand":"HF","Year":2025,"Customer":"Publix","Channel":"Grocery","Category":"Merch Return","Net_CB":101023},{"Brand":"HF","Year":2025,"Customer":"Publix","Channel":"Grocery","Category":"Shortage","Net_CB":11463},{"Brand":"HF","Year":2025,"Customer":"Publix","Channel":"Grocery","Category":"Unknown","Net_CB":86316},{"Brand":"HF","Year":2025,"Customer":"Shoppers Drug Mart Inc.","Channel":"Grocery","Category":"Shortage","Net_CB":5510},{"Brand":"HF","Year":2025,"Customer":"Shoppers Drug Mart Inc.","Channel":"Grocery","Category":"Unknown","Net_CB":113927},{"Brand":"HF","Year":2025,"Customer":"TJX","Channel":"Specialty","Category":"Price Claim","Net_CB":63041},{"Brand":"HF","Year":2025,"Customer":"TJX","Channel":"Specialty","Category":"Shortage","Net_CB":4087},{"Brand":"HF","Year":2025,"Customer":"TJX","Channel":"Specialty","Category":"Unknown","Net_CB":14791},{"Brand":"HF","Year":2025,"Customer":"Target","Channel":"Target","Category":"Defective","Net_CB":1332},{"Brand":"HF","Year":2025,"Customer":"Target","Channel":"Target","Category":"EDI/ASN","Net_CB":58409},{"Brand":"HF","Year":2025,"Customer":"Target","Channel":"Target","Category":"Fill Rate","Net_CB":24515},{"Brand":"HF","Year":2025,"Customer":"Target","Channel":"Target","Category":"Late Ship","Net_CB":10146},{"Brand":"HF","Year":2025,"Customer":"Target","Channel":"Target","Category":"Merch Return","Net_CB":-89194},{"Brand":"HF","Year":2025,"Customer":"Target","Channel":"Target","Category":"Price Claim","Net_CB":27953},{"Brand":"HF","Year":2025,"Customer":"Target","Channel":"Target","Category":"Shipping Prep","Net_CB":1669},{"Brand":"HF","Year":2025,"Customer":"Target","Channel":"Target","Category":"Shortage","Net_CB":-24733},{"Brand":"HF","Year":2025,"Customer":"Target","Channel":"Target","Category":"Substitution","Net_CB":64966},{"Brand":"HF","Year":2025,"Customer":"Target","Channel":"Target","Category":"Unknown","Net_CB":-1267},{"Brand":"HF","Year":2025,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"Fill Rate","Net_CB":-734},{"Brand":"HF","Year":2025,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"OTIF","Net_CB":100126},{"Brand":"HF","Year":2025,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"Price Claim","Net_CB":43428},{"Brand":"HF","Year":2025,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"Shipping Prep","Net_CB":37847},{"Brand":"HF","Year":2025,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"Shortage","Net_CB":-24661},{"Brand":"HF","Year":2025,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"Unknown","Net_CB":3610},{"Brand":"HF","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"Damage","Net_CB":-268},{"Brand":"HF","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"Defective","Net_CB":6188},{"Brand":"HF","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"Merch Return","Net_CB":1666},{"Brand":"HF","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"OTIF","Net_CB":16542},{"Brand":"HF","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"Price Claim","Net_CB":22808},{"Brand":"HF","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"Shipping Prep","Net_CB":120270},{"Brand":"HF","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"Shortage","Net_CB":992282},{"Brand":"HF","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"Substitution","Net_CB":-9},{"Brand":"HF","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"Unknown","Net_CB":14798},{"Brand":"HF","Year":2025,"Customer":"Walmart Canada","Channel":"Walmart","Category":"OTIF","Net_CB":2936},{"Brand":"HF","Year":2025,"Customer":"Walmart Canada","Channel":"Walmart","Category":"Shipping Prep","Net_CB":62929},{"Brand":"HF","Year":2025,"Customer":"Walmart Canada","Channel":"Walmart","Category":"Shortage","Net_CB":63838},{"Brand":"HF","Year":2025,"Customer":"Walmart Canada","Channel":"Walmart","Category":"Unknown","Net_CB":44270},{"Brand":"HF","Year":2026,"Customer":"Albertsons","Channel":"Grocery","Category":"Appointment","Net_CB":250},{"Brand":"HF","Year":2026,"Customer":"Albertsons","Channel":"Grocery","Category":"Defective","Net_CB":19730},{"Brand":"HF","Year":2026,"Customer":"Albertsons","Channel":"Grocery","Category":"Fill Rate","Net_CB":2000},{"Brand":"HF","Year":2026,"Customer":"Albertsons","Channel":"Grocery","Category":"Late Ship","Net_CB":11700},{"Brand":"HF","Year":2026,"Customer":"Albertsons","Channel":"Grocery","Category":"Shipping Prep","Net_CB":4400},{"Brand":"HF","Year":2026,"Customer":"Albertsons","Channel":"Grocery","Category":"Shortage","Net_CB":59438},{"Brand":"HF","Year":2026,"Customer":"Albertsons","Channel":"Grocery","Category":"Unknown","Net_CB":27745},{"Brand":"HF","Year":2026,"Customer":"Amazon","Channel":"Digital","Category":"EDI/ASN","Net_CB":93},{"Brand":"HF","Year":2026,"Customer":"Amazon","Channel":"Digital","Category":"Fill Rate","Net_CB":182297},{"Brand":"HF","Year":2026,"Customer":"Amazon","Channel":"Digital","Category":"Late Ship","Net_CB":54487},{"Brand":"HF","Year":2026,"Customer":"Amazon","Channel":"Digital","Category":"OTIF","Net_CB":55144},{"Brand":"HF","Year":2026,"Customer":"Amazon","Channel":"Digital","Category":"Other","Net_CB":8608},{"Brand":"HF","Year":2026,"Customer":"Amazon","Channel":"Digital","Category":"Price Claim","Net_CB":11065},{"Brand":"HF","Year":2026,"Customer":"Amazon","Channel":"Digital","Category":"Shipping Prep","Net_CB":86407},{"Brand":"HF","Year":2026,"Customer":"Amazon","Channel":"Digital","Category":"Shortage","Net_CB":128180},{"Brand":"HF","Year":2026,"Customer":"Amazon","Channel":"Digital","Category":"Unknown","Net_CB":-30056},{"Brand":"HF","Year":2026,"Customer":"C&S","Channel":"Grocery","Category":"Shortage","Net_CB":11690},{"Brand":"HF","Year":2026,"Customer":"C&S","Channel":"Grocery","Category":"Unknown","Net_CB":36971},{"Brand":"HF","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"EDI/ASN","Net_CB":800},{"Brand":"HF","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Incorrect Paperwork","Net_CB":14200},{"Brand":"HF","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Merch Return","Net_CB":10217},{"Brand":"HF","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"OTIF","Net_CB":25752},{"Brand":"HF","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Other","Net_CB":770},{"Brand":"HF","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Price Claim","Net_CB":429},{"Brand":"HF","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Shipping Prep","Net_CB":66578},{"Brand":"HF","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Shortage","Net_CB":190059},{"Brand":"HF","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Unknown","Net_CB":309},{"Brand":"HF","Year":2026,"Customer":"Costco","Channel":"Club","Category":"Merch Return","Net_CB":387919},{"Brand":"HF","Year":2026,"Customer":"Costco","Channel":"Club","Category":"Price Claim","Net_CB":24},{"Brand":"HF","Year":2026,"Customer":"Costco","Channel":"Club","Category":"Unknown","Net_CB":861},{"Brand":"HF","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Category":"Damage","Net_CB":191},{"Brand":"HF","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Category":"Defective","Net_CB":72},{"Brand":"HF","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Category":"EDI/ASN","Net_CB":1350},{"Brand":"HF","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Category":"Merch Return","Net_CB":132},{"Brand":"HF","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Category":"Other","Net_CB":617},{"Brand":"HF","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Category":"Shortage","Net_CB":71880},{"Brand":"HF","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Category":"Unknown","Net_CB":27396},{"Brand":"HF","Year":2026,"Customer":"Dollar General","Channel":"Drug & Dollar","Category":"Appointment","Net_CB":1900},{"Brand":"HF","Year":2026,"Customer":"Dollar General","Channel":"Drug & Dollar","Category":"Audit","Net_CB":1500},{"Brand":"HF","Year":2026,"Customer":"Dollar General","Channel":"Drug & Dollar","Category":"Fill Rate","Net_CB":4750},{"Brand":"HF","Year":2026,"Customer":"Dollar General","Channel":"Drug & Dollar","Category":"Late Ship","Net_CB":7400},{"Brand":"HF","Year":2026,"Customer":"Dollar General","Channel":"Drug & Dollar","Category":"Shortage","Net_CB":124884},{"Brand":"HF","Year":2026,"Customer":"Dollar General","Channel":"Drug & Dollar","Category":"Unknown","Net_CB":700},{"Brand":"HF","Year":2026,"Customer":"Harris Teeter","Channel":"Grocery","Category":"Shortage","Net_CB":777},{"Brand":"HF","Year":2026,"Customer":"Harris Teeter","Channel":"Grocery","Category":"Unknown","Net_CB":10486},{"Brand":"HF","Year":2026,"Customer":"KOHLS","Channel":"Specialty","Category":"Fill Rate","Net_CB":6473},{"Brand":"HF","Year":2026,"Customer":"KOHLS","Channel":"Specialty","Category":"Price Claim","Net_CB":123},{"Brand":"HF","Year":2026,"Customer":"KOHLS","Channel":"Specialty","Category":"Shipping Prep","Net_CB":10966},{"Brand":"HF","Year":2026,"Customer":"KOHLS","Channel":"Specialty","Category":"Shortage","Net_CB":18975},{"Brand":"HF","Year":2026,"Customer":"KOHLS","Channel":"Specialty","Category":"Unknown","Net_CB":22304},{"Brand":"HF","Year":2026,"Customer":"Kroger","Channel":"Grocery","Category":"Late Ship","Net_CB":500},{"Brand":"HF","Year":2026,"Customer":"Kroger","Channel":"Grocery","Category":"Merch Return","Net_CB":4192},{"Brand":"HF","Year":2026,"Customer":"Kroger","Channel":"Grocery","Category":"Shipping Prep","Net_CB":3000},{"Brand":"HF","Year":2026,"Customer":"Kroger","Channel":"Grocery","Category":"Shortage","Net_CB":89812},{"Brand":"HF","Year":2026,"Customer":"Kroger","Channel":"Grocery","Category":"Unknown","Net_CB":134234},{"Brand":"HF","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Fill Rate","Net_CB":257},{"Brand":"HF","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Late Ship","Net_CB":4238},{"Brand":"HF","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Price Claim","Net_CB":16},{"Brand":"HF","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Shipping Prep","Net_CB":4554},{"Brand":"HF","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Shortage","Net_CB":-2560},{"Brand":"HF","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Substitution","Net_CB":-10647},{"Brand":"HF","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Unknown","Net_CB":7894},{"Brand":"HF","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Unloading Fees","Net_CB":1356},{"Brand":"HF","Year":2026,"Customer":"Publix","Channel":"Grocery","Category":"Shortage","Net_CB":8368},{"Brand":"HF","Year":2026,"Customer":"Publix","Channel":"Grocery","Category":"Unknown","Net_CB":26705},{"Brand":"HF","Year":2026,"Customer":"Shoppers Drug Mart Inc.","Channel":"Grocery","Category":"Shortage","Net_CB":29296},{"Brand":"HF","Year":2026,"Customer":"Shoppers Drug Mart Inc.","Channel":"Grocery","Category":"Unknown","Net_CB":115890},{"Brand":"HF","Year":2026,"Customer":"TJX","Channel":"Specialty","Category":"Unknown","Net_CB":51239},{"Brand":"HF","Year":2026,"Customer":"Target","Channel":"Target","Category":"Damage","Net_CB":1992},{"Brand":"HF","Year":2026,"Customer":"Target","Channel":"Target","Category":"EDI/ASN","Net_CB":7058},{"Brand":"HF","Year":2026,"Customer":"Target","Channel":"Target","Category":"Fill Rate","Net_CB":57138},{"Brand":"HF","Year":2026,"Customer":"Target","Channel":"Target","Category":"Late Ship","Net_CB":39789},{"Brand":"HF","Year":2026,"Customer":"Target","Channel":"Target","Category":"Merch Return","Net_CB":9857},{"Brand":"HF","Year":2026,"Customer":"Target","Channel":"Target","Category":"Price Claim","Net_CB":2628},{"Brand":"HF","Year":2026,"Customer":"Target","Channel":"Target","Category":"Shortage","Net_CB":263948},{"Brand":"HF","Year":2026,"Customer":"Target","Channel":"Target","Category":"Substitution","Net_CB":145684},{"Brand":"HF","Year":2026,"Customer":"Target","Channel":"Target","Category":"Unknown","Net_CB":-97},{"Brand":"HF","Year":2026,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"Fill Rate","Net_CB":6140},{"Brand":"HF","Year":2026,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"OTIF","Net_CB":16985},{"Brand":"HF","Year":2026,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"Shipping Prep","Net_CB":19137},{"Brand":"HF","Year":2026,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"Shortage","Net_CB":43855},{"Brand":"HF","Year":2026,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"Unknown","Net_CB":28033},{"Brand":"HF","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Damage","Net_CB":-58},{"Brand":"HF","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Defective","Net_CB":2960},{"Brand":"HF","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Merch Return","Net_CB":1557},{"Brand":"HF","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Price Claim","Net_CB":12742},{"Brand":"HF","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"SQEP","Net_CB":13836},{"Brand":"HF","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Shipping Prep","Net_CB":3830},{"Brand":"HF","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Shortage","Net_CB":157651},{"Brand":"HF","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Substitution","Net_CB":5},{"Brand":"HF","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Unknown","Net_CB":-3780},{"Brand":"HF","Year":2026,"Customer":"Walmart Canada","Channel":"Walmart","Category":"OTIF","Net_CB":28694},{"Brand":"HF","Year":2026,"Customer":"Walmart Canada","Channel":"Walmart","Category":"Price Claim","Net_CB":162},{"Brand":"HF","Year":2026,"Customer":"Walmart Canada","Channel":"Walmart","Category":"SQEP","Net_CB":3122},{"Brand":"HF","Year":2026,"Customer":"Walmart Canada","Channel":"Walmart","Category":"Shortage","Net_CB":82132},{"Brand":"HF","Year":2026,"Customer":"Walmart Canada","Channel":"Walmart","Category":"Unknown","Net_CB":30974},{"Brand":"LM","Year":2025,"Customer":"Albertsons","Channel":"Grocery","Category":"Appointment","Net_CB":3250},{"Brand":"LM","Year":2025,"Customer":"Albertsons","Channel":"Grocery","Category":"Late Ship","Net_CB":19700},{"Brand":"LM","Year":2025,"Customer":"Albertsons","Channel":"Grocery","Category":"Shipping Prep","Net_CB":3200},{"Brand":"LM","Year":2025,"Customer":"Albertsons","Channel":"Grocery","Category":"Shortage","Net_CB":7560},{"Brand":"LM","Year":2025,"Customer":"Albertsons","Channel":"Grocery","Category":"Unknown","Net_CB":4967},{"Brand":"LM","Year":2025,"Customer":"C&S","Channel":"Grocery","Category":"Unknown","Net_CB":25959},{"Brand":"LM","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Appointment","Net_CB":10875},{"Brand":"LM","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Audit","Net_CB":13994},{"Brand":"LM","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"EDI/ASN","Net_CB":1000},{"Brand":"LM","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Merch Return","Net_CB":13659},{"Brand":"LM","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"OTIF","Net_CB":48644},{"Brand":"LM","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Shortage","Net_CB":-46727},{"Brand":"LM","Year":2025,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Unknown","Net_CB":104641},{"Brand":"LM","Year":2025,"Customer":"Costco","Channel":"Club","Category":"Merch Return","Net_CB":104741},{"Brand":"LM","Year":2025,"Customer":"Harris Teeter","Channel":"Grocery","Category":"Unknown","Net_CB":3050},{"Brand":"LM","Year":2025,"Customer":"Kroger","Channel":"Grocery","Category":"Late Ship","Net_CB":5099},{"Brand":"LM","Year":2025,"Customer":"Kroger","Channel":"Grocery","Category":"Shortage","Net_CB":52054},{"Brand":"LM","Year":2025,"Customer":"Kroger","Channel":"Grocery","Category":"Unknown","Net_CB":139410},{"Brand":"LM","Year":2025,"Customer":"Meijer","Channel":"Grocery","Category":"Fill Rate","Net_CB":279},{"Brand":"LM","Year":2025,"Customer":"Meijer","Channel":"Grocery","Category":"Late Ship","Net_CB":10888},{"Brand":"LM","Year":2025,"Customer":"Meijer","Channel":"Grocery","Category":"Shortage","Net_CB":9266},{"Brand":"LM","Year":2025,"Customer":"Meijer","Channel":"Grocery","Category":"Unknown","Net_CB":10246},{"Brand":"LM","Year":2025,"Customer":"Meijer","Channel":"Grocery","Category":"Unloading Fees","Net_CB":5747},{"Brand":"LM","Year":2025,"Customer":"Sam's Club","Channel":"Club","Category":"Shortage","Net_CB":424252},{"Brand":"LM","Year":2025,"Customer":"Target","Channel":"Target","Category":"Damage","Net_CB":29},{"Brand":"LM","Year":2025,"Customer":"Target","Channel":"Target","Category":"Defective","Net_CB":1525},{"Brand":"LM","Year":2025,"Customer":"Target","Channel":"Target","Category":"EDI/ASN","Net_CB":23045},{"Brand":"LM","Year":2025,"Customer":"Target","Channel":"Target","Category":"Fill Rate","Net_CB":35011},{"Brand":"LM","Year":2025,"Customer":"Target","Channel":"Target","Category":"Late Ship","Net_CB":18433},{"Brand":"LM","Year":2025,"Customer":"Target","Channel":"Target","Category":"Merch Return","Net_CB":24346},{"Brand":"LM","Year":2025,"Customer":"Target","Channel":"Target","Category":"Shortage","Net_CB":-385142},{"Brand":"LM","Year":2025,"Customer":"Ulta","Channel":"Drug & Dollar","Category":"Damage","Net_CB":17386},{"Brand":"LM","Year":2025,"Customer":"Ulta","Channel":"Drug & Dollar","Category":"EDI/ASN","Net_CB":39300},{"Brand":"LM","Year":2025,"Customer":"Ulta","Channel":"Drug & Dollar","Category":"Shortage","Net_CB":80},{"Brand":"LM","Year":2025,"Customer":"Ulta","Channel":"Drug & Dollar","Category":"Unknown","Net_CB":161376},{"Brand":"LM","Year":2025,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"Unknown","Net_CB":68596},{"Brand":"LM","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"Labeling","Net_CB":54429},{"Brand":"LM","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"OTIF","Net_CB":0},{"Brand":"LM","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"Price Claim","Net_CB":166320},{"Brand":"LM","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"SQEP","Net_CB":6986},{"Brand":"LM","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"Shortage","Net_CB":827128},{"Brand":"LM","Year":2025,"Customer":"Walmart","Channel":"Walmart","Category":"Unknown","Net_CB":152},{"Brand":"LM","Year":2025,"Customer":"Walmart Canada","Channel":"Walmart","Category":"Price Claim","Net_CB":97},{"Brand":"LM","Year":2025,"Customer":"Walmart Canada","Channel":"Walmart","Category":"Shortage","Net_CB":12668},{"Brand":"LM","Year":2025,"Customer":"Walmart Canada","Channel":"Walmart","Category":"Unknown","Net_CB":5817},{"Brand":"LM","Year":2026,"Customer":"Albertsons","Channel":"Grocery","Category":"Unknown","Net_CB":24296},{"Brand":"LM","Year":2026,"Customer":"C&S","Channel":"Grocery","Category":"Shortage","Net_CB":400},{"Brand":"LM","Year":2026,"Customer":"C&S","Channel":"Grocery","Category":"Unknown","Net_CB":19118},{"Brand":"LM","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Audit","Net_CB":3336},{"Brand":"LM","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Merch Return","Net_CB":226},{"Brand":"LM","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"OTIF","Net_CB":10830},{"Brand":"LM","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Shipping Prep","Net_CB":14211},{"Brand":"LM","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Shortage","Net_CB":14662},{"Brand":"LM","Year":2026,"Customer":"CVS","Channel":"Drug & Dollar","Category":"Unknown","Net_CB":37200},{"Brand":"LM","Year":2026,"Customer":"Costco","Channel":"Club","Category":"Merch Return","Net_CB":72440},{"Brand":"LM","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Category":"Damage","Net_CB":21},{"Brand":"LM","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Category":"Price Claim","Net_CB":19228},{"Brand":"LM","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Category":"Shortage","Net_CB":3359},{"Brand":"LM","Year":2026,"Customer":"Crossmark","Channel":"Grocery","Category":"Unknown","Net_CB":1792},{"Brand":"LM","Year":2026,"Customer":"Harris Teeter","Channel":"Grocery","Category":"Shortage","Net_CB":238},{"Brand":"LM","Year":2026,"Customer":"Harris Teeter","Channel":"Grocery","Category":"Unknown","Net_CB":28602},{"Brand":"LM","Year":2026,"Customer":"Kroger","Channel":"Grocery","Category":"Merch Return","Net_CB":5100},{"Brand":"LM","Year":2026,"Customer":"Kroger","Channel":"Grocery","Category":"Other","Net_CB":66},{"Brand":"LM","Year":2026,"Customer":"Kroger","Channel":"Grocery","Category":"Shipping Prep","Net_CB":1100},{"Brand":"LM","Year":2026,"Customer":"Kroger","Channel":"Grocery","Category":"Shortage","Net_CB":40809},{"Brand":"LM","Year":2026,"Customer":"Kroger","Channel":"Grocery","Category":"Unknown","Net_CB":52988},{"Brand":"LM","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Fill Rate","Net_CB":111},{"Brand":"LM","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Late Ship","Net_CB":11328},{"Brand":"LM","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Shipping Prep","Net_CB":2426},{"Brand":"LM","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Shortage","Net_CB":3659},{"Brand":"LM","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Unknown","Net_CB":405},{"Brand":"LM","Year":2026,"Customer":"Meijer","Channel":"Grocery","Category":"Unloading Fees","Net_CB":992},{"Brand":"LM","Year":2026,"Customer":"Sam's Club","Channel":"Club","Category":"Shortage","Net_CB":-109194},{"Brand":"LM","Year":2026,"Customer":"TJX","Channel":"Specialty","Category":"Unknown","Net_CB":2376},{"Brand":"LM","Year":2026,"Customer":"Target","Channel":"Target","Category":"Damage","Net_CB":1048},{"Brand":"LM","Year":2026,"Customer":"Target","Channel":"Target","Category":"Defective","Net_CB":646},{"Brand":"LM","Year":2026,"Customer":"Target","Channel":"Target","Category":"Fill Rate","Net_CB":28756},{"Brand":"LM","Year":2026,"Customer":"Target","Channel":"Target","Category":"Merch Return","Net_CB":517694},{"Brand":"LM","Year":2026,"Customer":"Target","Channel":"Target","Category":"Shortage","Net_CB":10320},{"Brand":"LM","Year":2026,"Customer":"Target","Channel":"Target","Category":"Substitution","Net_CB":17718},{"Brand":"LM","Year":2026,"Customer":"Target","Channel":"Target","Category":"Unknown","Net_CB":12203},{"Brand":"LM","Year":2026,"Customer":"Ulta","Channel":"Drug & Dollar","Category":"Damage","Net_CB":5319},{"Brand":"LM","Year":2026,"Customer":"Ulta","Channel":"Drug & Dollar","Category":"EDI/ASN","Net_CB":68300},{"Brand":"LM","Year":2026,"Customer":"Ulta","Channel":"Drug & Dollar","Category":"Shortage","Net_CB":1680},{"Brand":"LM","Year":2026,"Customer":"Walgreens","Channel":"Drug & Dollar","Category":"Unknown","Net_CB":48640},{"Brand":"LM","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Damage","Net_CB":24577},{"Brand":"LM","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Defective","Net_CB":10602},{"Brand":"LM","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"OTIF","Net_CB":13584},{"Brand":"LM","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Price Claim","Net_CB":6050},{"Brand":"LM","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"SQEP","Net_CB":1917},{"Brand":"LM","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Shipping Prep","Net_CB":30859},{"Brand":"LM","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Shortage","Net_CB":76549},{"Brand":"LM","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Substitution","Net_CB":29},{"Brand":"LM","Year":2026,"Customer":"Walmart","Channel":"Walmart","Category":"Unknown","Net_CB":-16130},{"Brand":"LM","Year":2026,"Customer":"Walmart Canada","Channel":"Walmart","Category":"Shortage","Net_CB":6240},{"Brand":"LM","Year":2026,"Customer":"Walmart Canada","Channel":"Walmart","Category":"Unknown","Net_CB":45722}]; // {Brand,Year,Customer,Channel,Category,Net_CB}
const RAW_CAT_CH = [{"Channel":"Walmart","Category":"Shortage","Net_CB":2218488},{"Channel":"Grocery","Category":"Unknown","Net_CB":1684632},{"Channel":"Club","Category":"Merch Return","Net_CB":1166063},{"Channel":"Grocery","Category":"Shortage","Net_CB":737427},{"Channel":"Drug & Dollar","Category":"Unknown","Net_CB":475624},{"Channel":"Target","Category":"Merch Return","Net_CB":462702},{"Channel":"Club","Category":"Shortage","Net_CB":358173},{"Channel":"Drug & Dollar","Category":"Shortage","Net_CB":339351},{"Channel":"Digital","Category":"Shortage","Net_CB":310123},{"Channel":"Digital","Category":"OTIF","Net_CB":261757},{"Channel":"Drug & Dollar","Category":"OTIF","Net_CB":244608},{"Channel":"Digital","Category":"Fill Rate","Net_CB":234108},{"Channel":"Target","Category":"Substitution","Net_CB":228369},{"Channel":"Drug & Dollar","Category":"Shipping Prep","Net_CB":218358},{"Channel":"Walmart","Category":"Shipping Prep","Net_CB":217888},{"Channel":"Walmart","Category":"Price Claim","Net_CB":208179},{"Channel":"Digital","Category":"Shipping Prep","Net_CB":196524},{"Channel":"Grocery","Category":"Late Ship","Net_CB":172057},{"Channel":"Target","Category":"Fill Rate","Net_CB":145421},{"Channel":"Target","Category":"Shortage","Net_CB":-135607},{"Channel":"Specialty","Category":"Unknown","Net_CB":125729},{"Channel":"Digital","Category":"Late Ship","Net_CB":122519},{"Channel":"Walmart","Category":"Unknown","Net_CB":121822},{"Channel":"Drug & Dollar","Category":"EDI/ASN","Net_CB":111800},{"Channel":"Grocery","Category":"Merch Return","Net_CB":111123},{"Channel":"Specialty","Category":"Shipping Prep","Net_CB":109091},{"Channel":"Target","Category":"EDI/ASN","Net_CB":88512},{"Channel":"Grocery","Category":"Defective","Net_CB":78085},{"Channel":"Specialty","Category":"Shortage","Net_CB":-73155},{"Channel":"Target","Category":"Late Ship","Net_CB":68367},{"Channel":"Specialty","Category":"Price Claim","Net_CB":64106},{"Channel":"Walmart","Category":"OTIF","Net_CB":61756},{"Channel":"Grocery","Category":"Shipping Prep","Net_CB":58781},{"Channel":"Walmart","Category":"Labeling","Net_CB":54429},{"Channel":"Digital","Category":"Price Claim","Net_CB":46839},{"Channel":"Drug & Dollar","Category":"Merch Return","Net_CB":46133},{"Channel":"Drug & Dollar","Category":"Price Claim","Net_CB":43857},{"Channel":"Target","Category":"Price Claim","Net_CB":30581},{"Channel":"Drug & Dollar","Category":"Fill Rate","Net_CB":29577},{"Channel":"Drug & Dollar","Category":"Late Ship","Net_CB":28681},{"Channel":"Club","Category":"Shipping Prep","Net_CB":26080},{"Channel":"Walmart","Category":"SQEP","Net_CB":25861},{"Channel":"Specialty","Category":"Fill Rate","Net_CB":24900},{"Channel":"Walmart","Category":"Damage","Net_CB":24251},{"Channel":"Drug & Dollar","Category":"Damage","Net_CB":22705},{"Channel":"Grocery","Category":"Price Claim","Net_CB":22494},{"Channel":"Walmart","Category":"Defective","Net_CB":19751},{"Channel":"Drug & Dollar","Category":"Audit","Net_CB":18829},{"Channel":"Club","Category":"Unknown","Net_CB":16992},{"Channel":"Drug & Dollar","Category":"Incorrect Paperwork","Net_CB":14200},{"Channel":"Drug & Dollar","Category":"Appointment","Net_CB":12775},{"Channel":"Target","Category":"Unknown","Net_CB":10839},{"Channel":"Grocery","Category":"Unloading Fees","Net_CB":10358},{"Channel":"Digital","Category":"Other","Net_CB":8608},{"Channel":"Digital","Category":"Merch Return","Net_CB":7959},{"Channel":"Other","Category":"Unknown","Net_CB":7868},{"Channel":"Digital","Category":"Unknown","Net_CB":-7839},{"Channel":"Grocery","Category":"EDI/ASN","Net_CB":3951},{"Channel":"Grocery","Category":"Other","Net_CB":3878},{"Channel":"Grocery","Category":"Fill Rate","Net_CB":3777},{"Channel":"Target","Category":"Defective","Net_CB":3505},{"Channel":"Grocery","Category":"Appointment","Net_CB":3500},{"Channel":"Walmart","Category":"Merch Return","Net_CB":3223},{"Channel":"Target","Category":"Damage","Net_CB":3069},{"Channel":"Digital","Category":"EDI/ASN","Net_CB":2980},{"Channel":"Grocery","Category":"Substitution","Net_CB":2164},{"Channel":"Drug & Dollar","Category":"Defective","Net_CB":1950},{"Channel":"Target","Category":"Shipping Prep","Net_CB":1669},{"Channel":"Grocery","Category":"Damage","Net_CB":1071}]; // {Channel,Category,Net_CB} \u2014 all years/brands summed
const MONTH_ORDER = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
const MI = Object.fromEntries(MONTH_ORDER.map((m,i)=>[m,i]));
const ALL_PERIODS = [
...MONTH_ORDER.map((m,i)=>({year:2025,month:m,mi:i,idx:i, label:`2025-${m}`,qLabel:`2025 Q${Math.ceil((i+1)/3)}`,yLabel:"2025"})),
...["Jan","Feb","Mar","Apr","May"].map((m,i)=>({year:2026,month:m,mi:i,idx:12+i,label:`2026-${m}`,qLabel:"2026 Q1",yLabel:"2026"})),
];
const MIN_IDX = 0, MAX_IDX = ALL_PERIODS.length - 1;
const BLABEL = {HF:"H&F", LM:"L&M"};
const BCOLORS = {HF:"#2563EB", LM:"#7C3AED"};
const BLIGHT = {HF:"#DBEAFE", LM:"#EDE9FE"};
const CH_COLORS = {"Walmart":"#0071CE","Target":"#CC0000","Club":"#F59E0B","Grocery":"#10B981","Digital":"#6366F1","Drug & Dollar":"#EC4899","Specialty":"#8B5CF6","Other":"#9CA3AF"};
const ALL_CHANNELS = ["Walmart","Target","Club","Grocery","Digital","Drug & Dollar","Specialty"];
const ALL_CATS = ["Appointment", "Audit", "Damage", "Defective", "EDI/ASN", "Fill Rate", "Incorrect Paperwork", "Labeling", "Late Ship", "Merch Return", "OTIF", "Other", "Price Claim", "SQEP", "Shipping Prep", "Shortage", "Substitution", "Unknown", "Unloading Fees"];
const CAT_COLORS = {"Shortage": "#EF4444", "Unknown": "#6B7280", "Merch Return": "#F97316", "OTIF": "#EAB308", "Shipping Prep": "#06B6D4", "Fill Rate": "#8B5CF6", "Price Claim": "#EC4899", "Late Ship": "#F59E0B", "EDI/ASN": "#10B981", "Substitution": "#3B82F6", "Defective": "#84CC16", "Labeling": "#A78BFA", "Damage": "#FB923C", "SQEP": "#E11D48", "Audit": "#0EA5E9", "Appointment": "#D946EF", "Incorrect Paperwork": "#64748B", "Unloading Fees": "#78716C", "Other": "#9CA3AF"};
const RAW_RECOVERY_MONTHLY = [{"Brand": "H&F", "Year": 2025, "Month": "Apr", "Gross_CB": -1031862, "Reversals": 767815, "Net_CB": -264047, "Recovery_Rate": 74.41}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Gross_CB": -3517728, "Reversals": 2926576, "Net_CB": -591152, "Recovery_Rate": 83.2}, {"Brand": "H&F", "Year": 2025, "Month": "Dec", "Gross_CB": -4213466, "Reversals": 3919233, "Net_CB": -294233, "Recovery_Rate": 93.02}, {"Brand": "H&F", "Year": 2025, "Month": "Feb", "Gross_CB": -1406141, "Reversals": 891125, "Net_CB": -515016, "Recovery_Rate": 63.37}, {"Brand": "H&F", "Year": 2025, "Month": "Jan", "Gross_CB": -1072408, "Reversals": 710986, "Net_CB": -361422, "Recovery_Rate": 66.3}, {"Brand": "H&F", "Year": 2025, "Month": "Jul", "Gross_CB": -913227, "Reversals": 687187, "Net_CB": -226040, "Recovery_Rate": 75.25}, {"Brand": "H&F", "Year": 2025, "Month": "Jun", "Gross_CB": -1211556, "Reversals": 666289, "Net_CB": -545267, "Recovery_Rate": 54.99}, {"Brand": "H&F", "Year": 2025, "Month": "Mar", "Gross_CB": -1206794, "Reversals": 983530, "Net_CB": -223264, "Recovery_Rate": 81.5}, {"Brand": "H&F", "Year": 2025, "Month": "May", "Gross_CB": -1187899, "Reversals": 570515, "Net_CB": -617384, "Recovery_Rate": 48.03}, {"Brand": "H&F", "Year": 2025, "Month": "Nov", "Gross_CB": -2009091, "Reversals": 831155, "Net_CB": -1177936, "Recovery_Rate": 41.37}, {"Brand": "H&F", "Year": 2025, "Month": "Oct", "Gross_CB": -2818965, "Reversals": 2554246, "Net_CB": -264719, "Recovery_Rate": 90.61}, {"Brand": "H&F", "Year": 2025, "Month": "Sep", "Gross_CB": -1963248, "Reversals": 2285870, "Net_CB": 322622, "Recovery_Rate": 116.43}, {"Brand": "H&F", "Year": 2026, "Month": "Apr", "Gross_CB": -6190367, "Reversals": 5708883, "Net_CB": -481484, "Recovery_Rate": 92.22}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Gross_CB": -1833489, "Reversals": 1363450, "Net_CB": -470039, "Recovery_Rate": 74.36}, {"Brand": "H&F", "Year": 2026, "Month": "Jan", "Gross_CB": -4187557, "Reversals": 3487086, "Net_CB": -700471, "Recovery_Rate": 83.27}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Gross_CB": -2137078, "Reversals": 1280255, "Net_CB": -856824, "Recovery_Rate": 59.91}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Gross_CB": -1433454, "Reversals": 650665, "Net_CB": -782789, "Recovery_Rate": 45.39}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Gross_CB": -408698, "Reversals": 117746, "Net_CB": -290952, "Recovery_Rate": 28.81}, {"Brand": "L&M", "Year": 2025, "Month": "Aug", "Gross_CB": -468364, "Reversals": 37943, "Net_CB": -430421, "Recovery_Rate": 8.1}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Gross_CB": -224732, "Reversals": 89438, "Net_CB": -135293, "Recovery_Rate": 39.8}, {"Brand": "L&M", "Year": 2025, "Month": "Feb", "Gross_CB": -2230555, "Reversals": 2268432, "Net_CB": 37877, "Recovery_Rate": 101.7}, {"Brand": "L&M", "Year": 2025, "Month": "Jan", "Gross_CB": -88238, "Reversals": 117670, "Net_CB": 29432, "Recovery_Rate": 133.36}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Gross_CB": -484527, "Reversals": 148880, "Net_CB": -335647, "Recovery_Rate": 30.73}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Gross_CB": -1034219, "Reversals": 1042668, "Net_CB": 8449, "Recovery_Rate": 100.82}, {"Brand": "L&M", "Year": 2025, "Month": "Mar", "Gross_CB": -4114242, "Reversals": 3735973, "Net_CB": -378268, "Recovery_Rate": 90.81}, {"Brand": "L&M", "Year": 2025, "Month": "May", "Gross_CB": -494690, "Reversals": 22289, "Net_CB": -472400, "Recovery_Rate": 4.51}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Gross_CB": -167364, "Reversals": 48632, "Net_CB": -118732, "Recovery_Rate": 29.06}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Gross_CB": -222824, "Reversals": 304080, "Net_CB": 81256, "Recovery_Rate": 136.47}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Gross_CB": -301409, "Reversals": 170002, "Net_CB": -131407, "Recovery_Rate": 56.4}, {"Brand": "L&M", "Year": 2026, "Month": "Apr", "Gross_CB": -145897, "Reversals": 73991, "Net_CB": -71906, "Recovery_Rate": 50.71}, {"Brand": "L&M", "Year": 2026, "Month": "Feb", "Gross_CB": -683287, "Reversals": 215105, "Net_CB": -468182, "Recovery_Rate": 31.48}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Gross_CB": -202229, "Reversals": 22020, "Net_CB": -180210, "Recovery_Rate": 10.89}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Gross_CB": -386418, "Reversals": 103854, "Net_CB": -282563, "Recovery_Rate": 26.88}, {"Brand": "L&M", "Year": 2026, "Month": "May", "Gross_CB": -245633, "Reversals": 56984, "Net_CB": -188649, "Recovery_Rate": 23.2}];
const RAW_RECOVERY_CAT = [{"Brand": "H&F", "Year": 2025, "Month": "Apr", "Category": "Defective", "Gross_CB": -4565, "Reversals": 99}, {"Brand": "H&F", "Year": 2025, "Month": "Apr", "Category": "EDI/ASN", "Gross_CB": -6146, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Apr", "Category": "Fill Rate", "Gross_CB": -1758, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Apr", "Category": "Late ship", "Gross_CB": -27400, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Apr", "Category": "Merch Return", "Gross_CB": -76984, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Apr", "Category": "OTIF", "Gross_CB": -5712, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Apr", "Category": "Price Claim", "Gross_CB": -4709, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Apr", "Category": "Shipping Prep", "Gross_CB": -29257, "Reversals": 900}, {"Brand": "H&F", "Year": 2025, "Month": "Apr", "Category": "Shortage", "Gross_CB": -732092, "Reversals": 714480}, {"Brand": "H&F", "Year": 2025, "Month": "Apr", "Category": "Subsitution", "Gross_CB": -6375, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Apr", "Category": "Unknown", "Gross_CB": -136864, "Reversals": 52336}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Category": "A&D", "Gross_CB": -3069, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Category": "Defective", "Gross_CB": -3926, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Category": "EDI/ASN", "Gross_CB": -15216, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Category": "Fill Rate", "Gross_CB": -387, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Category": "Late ship", "Gross_CB": -17440, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Category": "Merch Return", "Gross_CB": -69498, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Category": "OTIF", "Gross_CB": -15797, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Category": "Price Claim", "Gross_CB": -4915, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Category": "Shipping Prep", "Gross_CB": -52627, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Category": "Shortage", "Gross_CB": -889951, "Reversals": 564065}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Category": "Subsitution", "Gross_CB": -10682, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Aug", "Category": "Unknown", "Gross_CB": -2434220, "Reversals": 2362511}, {"Brand": "H&F", "Year": 2025, "Month": "Dec", "Category": "Defective", "Gross_CB": -35342, "Reversals": 29162}, {"Brand": "H&F", "Year": 2025, "Month": "Dec", "Category": "EDI/ASN", "Gross_CB": -821, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Dec", "Category": "Fill Rate", "Gross_CB": -72773, "Reversals": 5033}, {"Brand": "H&F", "Year": 2025, "Month": "Dec", "Category": "Late ship", "Gross_CB": -21629, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Dec", "Category": "Merch Return", "Gross_CB": -43041, "Reversals": 106850}, {"Brand": "H&F", "Year": 2025, "Month": "Dec", "Category": "OTIF", "Gross_CB": -18973, "Reversals": 617}, {"Brand": "H&F", "Year": 2025, "Month": "Dec", "Category": "Price Claim", "Gross_CB": -8864, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Dec", "Category": "Shipping Prep", "Gross_CB": -134095, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Dec", "Category": "Shortage", "Gross_CB": -1653475, "Reversals": 1676517}, {"Brand": "H&F", "Year": 2025, "Month": "Dec", "Category": "Unknown", "Gross_CB": -2224453, "Reversals": 2101054}, {"Brand": "H&F", "Year": 2025, "Month": "Feb", "Category": "Defective", "Gross_CB": -8053, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Feb", "Category": "EDI/ASN", "Gross_CB": -2275, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Feb", "Category": "Fill Rate", "Gross_CB": -3655, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Feb", "Category": "Late ship", "Gross_CB": -67177, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Feb", "Category": "Merch Return", "Gross_CB": -81418, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Feb", "Category": "OTIF", "Gross_CB": -22322, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Feb", "Category": "Price Claim", "Gross_CB": -8793, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Feb", "Category": "Shipping Prep", "Gross_CB": -12841, "Reversals": 7054}, {"Brand": "H&F", "Year": 2025, "Month": "Feb", "Category": "Shortage", "Gross_CB": -526397, "Reversals": 293165}, {"Brand": "H&F", "Year": 2025, "Month": "Feb", "Category": "Subsitution", "Gross_CB": -5394, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Feb", "Category": "Unknown", "Gross_CB": -667816, "Reversals": 590906}, {"Brand": "H&F", "Year": 2025, "Month": "Jan", "Category": "Defective", "Gross_CB": -9588, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jan", "Category": "EDI/ASN", "Gross_CB": -10, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jan", "Category": "Fill Rate", "Gross_CB": -4637, "Reversals": 3253}, {"Brand": "H&F", "Year": 2025, "Month": "Jan", "Category": "Late ship", "Gross_CB": -13664, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jan", "Category": "Merch Return", "Gross_CB": -65922, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jan", "Category": "OTIF", "Gross_CB": -9598, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jan", "Category": "Price Claim", "Gross_CB": -33735, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jan", "Category": "Shipping Prep", "Gross_CB": -29258, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jan", "Category": "Shortage", "Gross_CB": -753944, "Reversals": 628662}, {"Brand": "H&F", "Year": 2025, "Month": "Jan", "Category": "Subsitution", "Gross_CB": -6570, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jan", "Category": "Unknown", "Gross_CB": -145482, "Reversals": 79071}, {"Brand": "H&F", "Year": 2025, "Month": "Jul", "Category": "Defective", "Gross_CB": -2921, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jul", "Category": "EDI/ASN", "Gross_CB": -5660, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jul", "Category": "Fill Rate", "Gross_CB": -1271, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jul", "Category": "Late ship", "Gross_CB": -2024, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jul", "Category": "Merch Return", "Gross_CB": -101465, "Reversals": 31}, {"Brand": "H&F", "Year": 2025, "Month": "Jul", "Category": "OTIF", "Gross_CB": -43989, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jul", "Category": "Price Claim", "Gross_CB": -52162, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jul", "Category": "Shipping Prep", "Gross_CB": -17857, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jul", "Category": "Shortage", "Gross_CB": -611705, "Reversals": 685074}, {"Brand": "H&F", "Year": 2025, "Month": "Jul", "Category": "Subsitution", "Gross_CB": -10000, "Reversals": 821}, {"Brand": "H&F", "Year": 2025, "Month": "Jul", "Category": "Unknown", "Gross_CB": -64173, "Reversals": 1261}, {"Brand": "H&F", "Year": 2025, "Month": "Jun", "Category": "Defective", "Gross_CB": -5390, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jun", "Category": "EDI/ASN", "Gross_CB": -200, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jun", "Category": "Fill Rate", "Gross_CB": -5403, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jun", "Category": "Late ship", "Gross_CB": -9166, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jun", "Category": "Merch Return", "Gross_CB": -57641, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jun", "Category": "OTIF", "Gross_CB": -100710, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jun", "Category": "Price Claim", "Gross_CB": -6990, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jun", "Category": "Shipping Prep", "Gross_CB": -11958, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jun", "Category": "Shortage", "Gross_CB": -878099, "Reversals": 585591}, {"Brand": "H&F", "Year": 2025, "Month": "Jun", "Category": "Subsitution", "Gross_CB": -7897, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Jun", "Category": "Unknown", "Gross_CB": -128102, "Reversals": 80698}, {"Brand": "H&F", "Year": 2025, "Month": "Mar", "Category": "Defective", "Gross_CB": -7369, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Mar", "Category": "EDI/ASN", "Gross_CB": -500, "Reversals": 265}, {"Brand": "H&F", "Year": 2025, "Month": "Mar", "Category": "Fill Rate", "Gross_CB": -1899, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Mar", "Category": "Late ship", "Gross_CB": -790, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Mar", "Category": "Merch Return", "Gross_CB": -90982, "Reversals": 31}, {"Brand": "H&F", "Year": 2025, "Month": "Mar", "Category": "OTIF", "Gross_CB": -17159, "Reversals": 7463}, {"Brand": "H&F", "Year": 2025, "Month": "Mar", "Category": "Price Claim", "Gross_CB": -6222, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Mar", "Category": "Shipping Prep", "Gross_CB": -62357, "Reversals": 1366}, {"Brand": "H&F", "Year": 2025, "Month": "Mar", "Category": "Shortage", "Gross_CB": -928833, "Reversals": 966962}, {"Brand": "H&F", "Year": 2025, "Month": "Mar", "Category": "Subsitution", "Gross_CB": -5973, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Mar", "Category": "Unknown", "Gross_CB": -84710, "Reversals": 7443}, {"Brand": "H&F", "Year": 2025, "Month": "May", "Category": "Defective", "Gross_CB": -5086, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "May", "Category": "EDI/ASN", "Gross_CB": -100, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "May", "Category": "Fill Rate", "Gross_CB": -2003, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "May", "Category": "Late ship", "Gross_CB": -2896, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "May", "Category": "Merch Return", "Gross_CB": -41022, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "May", "Category": "OTIF", "Gross_CB": -102577, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "May", "Category": "Price Claim", "Gross_CB": -44837, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "May", "Category": "Shipping Prep", "Gross_CB": -24255, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "May", "Category": "Shortage", "Gross_CB": -834180, "Reversals": 541784}, {"Brand": "H&F", "Year": 2025, "Month": "May", "Category": "Subsitution", "Gross_CB": -9936, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "May", "Category": "Unknown", "Gross_CB": -121007, "Reversals": 28731}, {"Brand": "H&F", "Year": 2025, "Month": "Nov", "Category": "Defective", "Gross_CB": -2742, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Nov", "Category": "EDI/ASN", "Gross_CB": -13713, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Nov", "Category": "Fill Rate", "Gross_CB": -24571, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Nov", "Category": "Late ship", "Gross_CB": -21597, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Nov", "Category": "Merch Return", "Gross_CB": -35498, "Reversals": 12926}, {"Brand": "H&F", "Year": 2025, "Month": "Nov", "Category": "OTIF", "Gross_CB": -29275, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Nov", "Category": "Price Claim", "Gross_CB": -6558, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Nov", "Category": "Shipping Prep", "Gross_CB": -150094, "Reversals": 551}, {"Brand": "H&F", "Year": 2025, "Month": "Nov", "Category": "Shortage", "Gross_CB": -1401969, "Reversals": 550675}, {"Brand": "H&F", "Year": 2025, "Month": "Nov", "Category": "Unknown", "Gross_CB": -323074, "Reversals": 267003}, {"Brand": "H&F", "Year": 2025, "Month": "Oct", "Category": "Damage", "Gross_CB": 0, "Reversals": 268}, {"Brand": "H&F", "Year": 2025, "Month": "Oct", "Category": "Defective", "Gross_CB": -3392, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Oct", "Category": "EDI/ASN", "Gross_CB": -18061, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Oct", "Category": "Fill Rate", "Gross_CB": -4089, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Oct", "Category": "Late ship", "Gross_CB": -8746, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Oct", "Category": "Merch Return", "Gross_CB": -48186, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Oct", "Category": "OTIF", "Gross_CB": -3287, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Oct", "Category": "Price Claim", "Gross_CB": -5603, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Oct", "Category": "Shipping Prep", "Gross_CB": -34268, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Oct", "Category": "Shortage", "Gross_CB": -538507, "Reversals": 496259}, {"Brand": "H&F", "Year": 2025, "Month": "Oct", "Category": "Unknown", "Gross_CB": -2154826, "Reversals": 2057719}, {"Brand": "H&F", "Year": 2025, "Month": "Sep", "Category": "Defective", "Gross_CB": -4454, "Reversals": 239}, {"Brand": "H&F", "Year": 2025, "Month": "Sep", "Category": "EDI/ASN", "Gross_CB": -3295, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Sep", "Category": "Fill Rate", "Gross_CB": -1145, "Reversals": 734}, {"Brand": "H&F", "Year": 2025, "Month": "Sep", "Category": "Late ship", "Gross_CB": -15536, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Sep", "Category": "Merch Return", "Gross_CB": -52627, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Sep", "Category": "OTIF", "Gross_CB": -8512, "Reversals": 1343}, {"Brand": "H&F", "Year": 2025, "Month": "Sep", "Category": "Price Claim", "Gross_CB": -13910, "Reversals": 0}, {"Brand": "H&F", "Year": 2025, "Month": "Sep", "Category": "Shipping Prep", "Gross_CB": -27128, "Reversals": 707}, {"Brand": "H&F", "Year": 2025, "Month": "Sep", "Category": "Shortage", "Gross_CB": -664152, "Reversals": 1168401}, {"Brand": "H&F", "Year": 2025, "Month": "Sep", "Category": "Subsitution", "Gross_CB": -15771, "Reversals": 9}, {"Brand": "H&F", "Year": 2025, "Month": "Sep", "Category": "Unknown", "Gross_CB": -1156718, "Reversals": 1114437}, {"Brand": "H&F", "Year": 2026, "Month": "Apr", "Category": "Damage/Defective", "Gross_CB": -18253, "Reversals": 65}, {"Brand": "H&F", "Year": 2026, "Month": "Apr", "Category": "EDI/ASN", "Gross_CB": -2734, "Reversals": 150}, {"Brand": "H&F", "Year": 2026, "Month": "Apr", "Category": "Fill Rate", "Gross_CB": -68537, "Reversals": 189}, {"Brand": "H&F", "Year": 2026, "Month": "Apr", "Category": "Late Ship", "Gross_CB": -40634, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Apr", "Category": "Merch Return", "Gross_CB": -46935, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Apr", "Category": "OTIF", "Gross_CB": -37812, "Reversals": 1029}, {"Brand": "H&F", "Year": 2026, "Month": "Apr", "Category": "Price Claim", "Gross_CB": -3270, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Apr", "Category": "Shipping Prep", "Gross_CB": -17947, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Apr", "Category": "Shortage", "Gross_CB": -494606, "Reversals": 473911}, {"Brand": "H&F", "Year": 2026, "Month": "Apr", "Category": "Substitution", "Gross_CB": -44244, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Apr", "Category": "Unknown", "Gross_CB": -5415395, "Reversals": 5233539}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "Audit", "Gross_CB": -375, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "Damage", "Gross_CB": -1101, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "Defective", "Gross_CB": -1500, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "EDI/ASN", "Gross_CB": -1100, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "Fill Rate", "Gross_CB": -42988, "Reversals": 241}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "Late ship", "Gross_CB": -41292, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "Merch Return", "Gross_CB": -114137, "Reversals": 32}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "OTIF", "Gross_CB": -42341, "Reversals": 13169}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "Price Claim", "Gross_CB": -7772, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "SQEP", "Gross_CB": -7185, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "Shipping Prep", "Gross_CB": -33379, "Reversals": 5}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "Shortage", "Gross_CB": -417263, "Reversals": 302263}, {"Brand": "H&F", "Year": 2026, "Month": "Feb", "Category": "Unknown", "Gross_CB": -1123056, "Reversals": 1047739}, {"Brand": "H&F", "Year": 2026, "Month": "Jan", "Category": "Defective", "Gross_CB": -6819, "Reversals": 2125}, {"Brand": "H&F", "Year": 2026, "Month": "Jan", "Category": "EDI/ASN", "Gross_CB": -1658, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Jan", "Category": "Fill Rate", "Gross_CB": -44046, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Jan", "Category": "Late ship", "Gross_CB": -36478, "Reversals": 200}, {"Brand": "H&F", "Year": 2026, "Month": "Jan", "Category": "Merch Return", "Gross_CB": -14675, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Jan", "Category": "OTIF", "Gross_CB": -16521, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Jan", "Category": "Price Claim", "Gross_CB": -2455, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Jan", "Category": "Shipping Prep", "Gross_CB": -39681, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Jan", "Category": "Shortage", "Gross_CB": -1075955, "Reversals": 643274}, {"Brand": "H&F", "Year": 2026, "Month": "Jan", "Category": "Unknown", "Gross_CB": -2949269, "Reversals": 2841487}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Appointment", "Gross_CB": -2150, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Audit", "Gross_CB": -1125, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Damage", "Gross_CB": -1819, "Reversals": 58}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "EDI/ASN", "Gross_CB": -1451, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Fill Rate", "Gross_CB": -101211, "Reversals": 2403}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Incorrect Paperwork", "Gross_CB": -14200, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Late Ship", "Gross_CB": -18058, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Late ship", "Gross_CB": -11480, "Reversals": 15524}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Merch Return", "Gross_CB": -123822, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "OTIF", "Gross_CB": -8241, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Other", "Gross_CB": -140, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Price Claim", "Gross_CB": -6885, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Receiving Accuracy", "Gross_CB": -548900, "Reversals": 540292}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "SQEP", "Gross_CB": -9773, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Shipping Prep", "Gross_CB": -674, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Shortage", "Gross_CB": -1074330, "Reversals": 697478}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Subsitution", "Gross_CB": -47865, "Reversals": 10647}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Unknown", "Gross_CB": -162829, "Reversals": 13852}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Unloading Fees", "Gross_CB": -1649, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "Mar", "Category": "Vendor Compliance", "Gross_CB": -477, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Category": "Allowance", "Gross_CB": -770, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Category": "Damage/Defective", "Gross_CB": -2806, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Category": "EDI/ASN", "Gross_CB": -2507, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Category": "Fill Rate", "Gross_CB": -5534, "Reversals": 428}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Category": "Late Ship", "Gross_CB": -3739, "Reversals": 17845}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Category": "Merch Return", "Gross_CB": -115040, "Reversals": 29}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Category": "OTIF", "Gross_CB": -35863, "Reversals": 4}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Category": "Price Claim", "Gross_CB": -6809, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Category": "Shipping Prep", "Gross_CB": -109253, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Category": "Shortage", "Gross_CB": -563152, "Reversals": 219798}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Category": "Substitution", "Gross_CB": -53580, "Reversals": 0}, {"Brand": "H&F", "Year": 2026, "Month": "May", "Category": "Unknown", "Gross_CB": -534400, "Reversals": 412561}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Category": "Audit", "Gross_CB": -807, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Category": "Damage", "Gross_CB": -418, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Category": "Defective", "Gross_CB": -500, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Category": "EDI/ASN", "Gross_CB": -7735, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Category": "Fill Rate", "Gross_CB": -3144, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Category": "Labeling", "Gross_CB": -6524, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Category": "Late ship", "Gross_CB": -1318, "Reversals": 403}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Category": "Merch Return", "Gross_CB": -9125, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Category": "OTIF", "Gross_CB": -15439, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Category": "Shortage", "Gross_CB": -125708, "Reversals": 115477}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Category": "Unknown", "Gross_CB": -237519, "Reversals": 1867}, {"Brand": "L&M", "Year": 2025, "Month": "Apr", "Category": "Unloading Fees", "Gross_CB": -460, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Aug", "Category": "Appointment", "Gross_CB": -750, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Aug", "Category": "Fill Rate", "Gross_CB": -334, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Aug", "Category": "Labeling", "Gross_CB": -2473, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Aug", "Category": "Late ship", "Gross_CB": -7960, "Reversals": 169}, {"Brand": "L&M", "Year": 2025, "Month": "Aug", "Category": "Merch Return", "Gross_CB": -22535, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Aug", "Category": "OTIF", "Gross_CB": -922, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Aug", "Category": "Price Claim", "Gross_CB": -166320, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Aug", "Category": "Shipping Prep", "Gross_CB": -200, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Aug", "Category": "Shortage", "Gross_CB": -218712, "Reversals": 37297}, {"Brand": "L&M", "Year": 2025, "Month": "Aug", "Category": "Unknown", "Gross_CB": -47185, "Reversals": 477}, {"Brand": "L&M", "Year": 2025, "Month": "Aug", "Category": "Unloading Fees", "Gross_CB": -973, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Category": "Appointment", "Gross_CB": -750, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Category": "Audit", "Gross_CB": -3030, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Category": "Damage", "Gross_CB": -1360, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Category": "EDI/ASN", "Gross_CB": -9150, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Category": "Fill Rate", "Gross_CB": -15890, "Reversals": 319}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Category": "Late ship", "Gross_CB": -1881, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Category": "Merch Return", "Gross_CB": -23930, "Reversals": 1403}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Category": "SQEP", "Gross_CB": -6986, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Category": "Shipping Prep", "Gross_CB": -200, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Category": "Shortage", "Gross_CB": -126233, "Reversals": 80674}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Category": "Unknown", "Gross_CB": -34981, "Reversals": 7042}, {"Brand": "L&M", "Year": 2025, "Month": "Dec", "Category": "Unloading Fees", "Gross_CB": -340, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Feb", "Category": "Audit", "Gross_CB": -114, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Feb", "Category": "Defective", "Gross_CB": -59, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Feb", "Category": "EDI/ASN", "Gross_CB": -6329, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Feb", "Category": "Fill Rate", "Gross_CB": -4474, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Feb", "Category": "Labeling", "Gross_CB": -2818, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Feb", "Category": "Late ship", "Gross_CB": -16304, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Feb", "Category": "Merch Return", "Gross_CB": -2606, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Feb", "Category": "OTIF", "Gross_CB": -370, "Reversals": 1578}, {"Brand": "L&M", "Year": 2025, "Month": "Feb", "Category": "Shortage", "Gross_CB": -2194399, "Reversals": 2263034}, {"Brand": "L&M", "Year": 2025, "Month": "Feb", "Category": "Unknown", "Gross_CB": -2183, "Reversals": 3820}, {"Brand": "L&M", "Year": 2025, "Month": "Feb", "Category": "Unloading Fees", "Gross_CB": -900, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jan", "Category": "Audit", "Gross_CB": -158, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jan", "Category": "Fill Rate", "Gross_CB": -7, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jan", "Category": "Late ship", "Gross_CB": -3732, "Reversals": 1428}, {"Brand": "L&M", "Year": 2025, "Month": "Jan", "Category": "Merch Return", "Gross_CB": -3095, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jan", "Category": "OTIF", "Gross_CB": -983, "Reversals": 536}, {"Brand": "L&M", "Year": 2025, "Month": "Jan", "Category": "Shortage", "Gross_CB": -77339, "Reversals": 115706}, {"Brand": "L&M", "Year": 2025, "Month": "Jan", "Category": "Unknown", "Gross_CB": -2589, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jan", "Category": "Unloading Fees", "Gross_CB": -335, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "Appointment", "Gross_CB": -500, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "Audit", "Gross_CB": -2815, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "Damage", "Gross_CB": -2473, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "Defective", "Gross_CB": -120, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "EDI/ASN", "Gross_CB": -109, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "Fill Rate", "Gross_CB": -3823, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "Labeling", "Gross_CB": -3250, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "Late ship", "Gross_CB": -5333, "Reversals": 1430}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "Merch Return", "Gross_CB": -2794, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "OTIF", "Gross_CB": -2030, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "Shipping Prep", "Gross_CB": -1000, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "Shortage", "Gross_CB": -426766, "Reversals": 145898}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "Unknown", "Gross_CB": -33202, "Reversals": 1552}, {"Brand": "L&M", "Year": 2025, "Month": "Jul", "Category": "Unloading Fees", "Gross_CB": -312, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "Appointment", "Gross_CB": -500, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "Damage", "Gross_CB": -2232, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "Defective", "Gross_CB": -244, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "Fill Rate", "Gross_CB": -2795, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "Labeling", "Gross_CB": -2180, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "Late ship", "Gross_CB": -4456, "Reversals": 1844}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "Merch Return", "Gross_CB": -8967, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "OTIF", "Gross_CB": -5859, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "Price Claim", "Gross_CB": -11, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "Shipping Prep", "Gross_CB": -600, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "Shortage", "Gross_CB": -990513, "Reversals": 1040823}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "Unknown", "Gross_CB": -15337, "Reversals": 1}, {"Brand": "L&M", "Year": 2025, "Month": "Jun", "Category": "Unloading Fees", "Gross_CB": -526, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Mar", "Category": "Audit", "Gross_CB": -307, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Mar", "Category": "Defective", "Gross_CB": -19, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Mar", "Category": "EDI/ASN", "Gross_CB": -8384, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Mar", "Category": "Fill Rate", "Gross_CB": -1430, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Mar", "Category": "Labeling", "Gross_CB": -5966, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Mar", "Category": "OTIF", "Gross_CB": -14440, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Mar", "Category": "Shortage", "Gross_CB": -3661865, "Reversals": 3443647}, {"Brand": "L&M", "Year": 2025, "Month": "Mar", "Category": "Unknown", "Gross_CB": -420353, "Reversals": 292327}, {"Brand": "L&M", "Year": 2025, "Month": "Mar", "Category": "Unloading Fees", "Gross_CB": -1478, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "May", "Category": "Audit", "Gross_CB": -1094, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "May", "Category": "Damage", "Gross_CB": -122, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "May", "Category": "EDI/ASN", "Gross_CB": -589, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "May", "Category": "Fill Rate", "Gross_CB": -3254, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "May", "Category": "Labeling", "Gross_CB": -15352, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "May", "Category": "Late ship", "Gross_CB": -500, "Reversals": 174}, {"Brand": "L&M", "Year": 2025, "Month": "May", "Category": "Merch Return", "Gross_CB": -1954, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "May", "Category": "OTIF", "Gross_CB": -236814, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "May", "Category": "Shortage", "Gross_CB": -180561, "Reversals": 22115}, {"Brand": "L&M", "Year": 2025, "Month": "May", "Category": "Unknown", "Gross_CB": -53690, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "May", "Category": "Unloading Fees", "Gross_CB": -760, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "Appointment", "Gross_CB": -250, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "Audit", "Gross_CB": -1820, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "Damage", "Gross_CB": -10932, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "Defective", "Gross_CB": -468, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "EDI/ASN", "Gross_CB": -30850, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "Labeling", "Gross_CB": -7718, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "Late ship", "Gross_CB": -10993, "Reversals": 2719}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "Merch Return", "Gross_CB": -19738, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "OTIF", "Gross_CB": -3311, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "Shipping Prep", "Gross_CB": -600, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "Shortage", "Gross_CB": -54913, "Reversals": 45913}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "Unknown", "Gross_CB": -25341, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Nov", "Category": "Unloading Fees", "Gross_CB": -430, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Category": "Appointment", "Gross_CB": -7575, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Category": "Defective", "Gross_CB": -117, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Category": "EDI/ASN", "Gross_CB": -300, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Category": "Labeling", "Gross_CB": -7093, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Category": "Late ship", "Gross_CB": -3909, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Category": "Merch Return", "Gross_CB": -35714, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Category": "OTIF", "Gross_CB": -4013, "Reversals": 235472}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Category": "Price Claim", "Gross_CB": -86, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Category": "Shipping Prep", "Gross_CB": -400, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Category": "Shortage", "Gross_CB": -103090, "Reversals": 58712}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Category": "Unknown", "Gross_CB": -59884, "Reversals": 9897}, {"Brand": "L&M", "Year": 2025, "Month": "Oct", "Category": "Unloading Fees", "Gross_CB": -643, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Category": "Appointment", "Gross_CB": -3800, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Category": "Audit", "Gross_CB": -3848, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Category": "EDI/ASN", "Gross_CB": -300, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Category": "Fill Rate", "Gross_CB": -460, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Category": "Labeling", "Gross_CB": -1055, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Category": "Late ship", "Gross_CB": -5901, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Category": "Merch Return", "Gross_CB": -13691, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Category": "OTIF", "Gross_CB": -2048, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Category": "Shipping Prep", "Gross_CB": -200, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Category": "Shortage", "Gross_CB": -252287, "Reversals": 170002}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Category": "Unknown", "Gross_CB": -17570, "Reversals": 0}, {"Brand": "L&M", "Year": 2025, "Month": "Sep", "Category": "Unloading Fees", "Gross_CB": -249, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Apr", "Category": "Merch Return", "Gross_CB": -3827, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Apr", "Category": "OTIF", "Gross_CB": -557, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Apr", "Category": "Price Claim", "Gross_CB": -75, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Apr", "Category": "Shipping Prep", "Gross_CB": -23073, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Apr", "Category": "Shortage", "Gross_CB": -87381, "Reversals": 71021}, {"Brand": "L&M", "Year": 2026, "Month": "Apr", "Category": "Substitution", "Gross_CB": -351, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Apr", "Category": "Unknown", "Gross_CB": -30632, "Reversals": 2969}, {"Brand": "L&M", "Year": 2026, "Month": "Feb", "Category": "Damage", "Gross_CB": -2974, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Feb", "Category": "EDI/ASN", "Gross_CB": -15100, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Feb", "Category": "Fill Rate", "Gross_CB": -5642, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Feb", "Category": "Late ship", "Gross_CB": -4652, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Feb", "Category": "Merch Return", "Gross_CB": -517704, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Feb", "Category": "Shipping Prep", "Gross_CB": -4442, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Feb", "Category": "Shortage", "Gross_CB": -94468, "Reversals": 214763}, {"Brand": "L&M", "Year": 2026, "Month": "Feb", "Category": "Unknown", "Gross_CB": -37685, "Reversals": 342}, {"Brand": "L&M", "Year": 2026, "Month": "Feb", "Category": "Unloading Fees", "Gross_CB": -620, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "Damage", "Gross_CB": -1372, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "Defective", "Gross_CB": -6215, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "EDI/ASN", "Gross_CB": -15700, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "Fill Rate", "Gross_CB": -1999, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "Late ship", "Gross_CB": -2324, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "Merch Return", "Gross_CB": -47028, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "OTIF", "Gross_CB": -13584, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "Other", "Gross_CB": -126, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "Price Claim", "Gross_CB": -19228, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "Shipping Prep", "Gross_CB": -6910, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "Shortage", "Gross_CB": -27290, "Reversals": 20208}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "Unknown", "Gross_CB": -60331, "Reversals": 1799}, {"Brand": "L&M", "Year": 2026, "Month": "Jan", "Category": "Unloading Fees", "Gross_CB": -121, "Reversals": 12}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "Audit", "Gross_CB": -3336, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "Damage", "Gross_CB": -26620, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "EDI/ASN", "Gross_CB": -37500, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "Fill Rate", "Gross_CB": -21226, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "Late ship", "Gross_CB": -3355, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "Merch Return", "Gross_CB": -10240, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "OTIF", "Gross_CB": -8437, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "Price Claim", "Gross_CB": -7163, "Reversals": 1188}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "SQEP", "Gross_CB": -1917, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "Shortage", "Gross_CB": -116699, "Reversals": 32331}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "Subsitution", "Gross_CB": -15036, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "Unknown", "Gross_CB": -134316, "Reversals": 70335}, {"Brand": "L&M", "Year": 2026, "Month": "Mar", "Category": "Unloading Fees", "Gross_CB": -574, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "May", "Category": "Damage/Defective", "Gross_CB": -5033, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "May", "Category": "EDI / ASN", "Gross_CB": -65, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "May", "Category": "EDI/ASN", "Gross_CB": -100, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "May", "Category": "Late Ship", "Gross_CB": -997, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "May", "Category": "Merch Return", "Gross_CB": -16661, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "May", "Category": "OTIF", "Gross_CB": -1836, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "May", "Category": "Promo", "Gross_CB": -66, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "May", "Category": "Shipping Prep", "Gross_CB": -14419, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "May", "Category": "Shortage", "Gross_CB": -75832, "Reversals": 11886}, {"Brand": "L&M", "Year": 2026, "Month": "May", "Category": "Substitution", "Gross_CB": -2361, "Reversals": 0}, {"Brand": "L&M", "Year": 2026, "Month": "May", "Category": "Unknown", "Gross_CB": -128264, "Reversals": 45099}];
const RAW_RECOVERY_CUST = [{"Brand": "H&F", "Year": 2025, "Customer": "Albertsons", "Gross_CB": -146972, "Reversals": 35036, "Net_CB": -111936, "Recovery_Rate": 23.84}, {"Brand": "H&F", "Year": 2025, "Customer": "Amazon", "Gross_CB": -16472031, "Reversals": 15800980, "Net_CB": -671051, "Recovery_Rate": 95.93}, {"Brand": "H&F", "Year": 2025, "Customer": "BJ's", "Gross_CB": -13280, "Reversals": 0, "Net_CB": -13280, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Burlington", "Gross_CB": -8418, "Reversals": 0, "Net_CB": -8418, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "C&S", "Gross_CB": -220431, "Reversals": 43841, "Net_CB": -176590, "Recovery_Rate": 19.89}, {"Brand": "H&F", "Year": 2025, "Customer": "CVS", "Gross_CB": -660569, "Reversals": 477049, "Net_CB": -183520, "Recovery_Rate": 72.22}, {"Brand": "H&F", "Year": 2025, "Customer": "Costco", "Gross_CB": -651890, "Reversals": 5464, "Net_CB": -646426, "Recovery_Rate": 0.84}, {"Brand": "H&F", "Year": 2025, "Customer": "Crossmark", "Gross_CB": -61730, "Reversals": 5075, "Net_CB": -56655, "Recovery_Rate": 8.22}, {"Brand": "H&F", "Year": 2025, "Customer": "Dollar General", "Gross_CB": -93959, "Reversals": 56348, "Net_CB": -37611, "Recovery_Rate": 59.97}, {"Brand": "H&F", "Year": 2025, "Customer": "Food Lion", "Gross_CB": -17435, "Reversals": 0, "Net_CB": -17435, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Giant Eagle, Inc.", "Gross_CB": -2807, "Reversals": 0, "Net_CB": -2807, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Gopuff", "Gross_CB": -14179, "Reversals": 0, "Net_CB": -14179, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "H-E-B", "Gross_CB": -20464, "Reversals": 252, "Net_CB": -20212, "Recovery_Rate": 1.23}, {"Brand": "H&F", "Year": 2025, "Customer": "Hannaford", "Gross_CB": -19125, "Reversals": 0, "Net_CB": -19125, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Harris Teeter", "Gross_CB": -41098, "Reversals": 0, "Net_CB": -41098, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Hy-Vee", "Gross_CB": -36939, "Reversals": 200, "Net_CB": -36739, "Recovery_Rate": 0.54}, {"Brand": "H&F", "Year": 2025, "Customer": "Jean Coutu", "Gross_CB": -30639, "Reversals": 54, "Net_CB": -30585, "Recovery_Rate": 0.18}, {"Brand": "H&F", "Year": 2025, "Customer": "KOHLS", "Gross_CB": -233078, "Reversals": 197917, "Net_CB": -35161, "Recovery_Rate": 84.91}, {"Brand": "H&F", "Year": 2025, "Customer": "Kroger", "Gross_CB": -390320, "Reversals": 30502, "Net_CB": -359818, "Recovery_Rate": 7.81}, {"Brand": "H&F", "Year": 2025, "Customer": "Kroger.com", "Gross_CB": -6689, "Reversals": 0, "Net_CB": -6689, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Loblaws", "Gross_CB": -19507, "Reversals": 2078, "Net_CB": -17429, "Recovery_Rate": 10.65}, {"Brand": "H&F", "Year": 2025, "Customer": "London Drugs Limited", "Gross_CB": -3041, "Reversals": 0, "Net_CB": -3041, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Meijer", "Gross_CB": -281720, "Reversals": 86299, "Net_CB": -195421, "Recovery_Rate": 30.63}, {"Brand": "H&F", "Year": 2025, "Customer": "Metro Ontario", "Gross_CB": -5164, "Reversals": 790, "Net_CB": -4374, "Recovery_Rate": 15.3}, {"Brand": "H&F", "Year": 2025, "Customer": "Military Resale Solutions", "Gross_CB": -14807, "Reversals": 1822, "Net_CB": -12985, "Recovery_Rate": 12.3}, {"Brand": "H&F", "Year": 2025, "Customer": "Navajo Inc.", "Gross_CB": -108, "Reversals": 0, "Net_CB": -108, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Pattern", "Gross_CB": -1172, "Reversals": 0, "Net_CB": -1172, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Publix", "Gross_CB": -198986, "Reversals": 184, "Net_CB": -198802, "Recovery_Rate": 0.09}, {"Brand": "H&F", "Year": 2025, "Customer": "Rite Aid", "Gross_CB": -9066, "Reversals": 0, "Net_CB": -9066, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Ross Stores", "Gross_CB": -536, "Reversals": 0, "Net_CB": -536, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Save on Foods", "Gross_CB": -6319, "Reversals": 0, "Net_CB": -6319, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Shoppers Drug Mart Inc.", "Gross_CB": -133708, "Reversals": 14271, "Net_CB": -119437, "Recovery_Rate": 10.67}, {"Brand": "H&F", "Year": 2025, "Customer": "Sobeys", "Gross_CB": -2136, "Reversals": 75, "Net_CB": -2061, "Recovery_Rate": 3.51}, {"Brand": "H&F", "Year": 2025, "Customer": "SpartanNash Company", "Gross_CB": -5466, "Reversals": 47, "Net_CB": -5419, "Recovery_Rate": 0.86}, {"Brand": "H&F", "Year": 2025, "Customer": "TJX", "Gross_CB": -82819, "Reversals": 900, "Net_CB": -81919, "Recovery_Rate": 1.09}, {"Brand": "H&F", "Year": 2025, "Customer": "Target", "Gross_CB": -662103, "Reversals": 588307, "Net_CB": -73796, "Recovery_Rate": 88.85}, {"Brand": "H&F", "Year": 2025, "Customer": "Urban Outfitters", "Gross_CB": -1425, "Reversals": 0, "Net_CB": -1425, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Vanguard Packaging LLC", "Gross_CB": -2181, "Reversals": 0, "Net_CB": -2181, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2025, "Customer": "Wakefern", "Gross_CB": -17200, "Reversals": 3358, "Net_CB": -13842, "Recovery_Rate": 19.52}, {"Brand": "H&F", "Year": 2025, "Customer": "Walgreens", "Gross_CB": -365209, "Reversals": 205593, "Net_CB": -159616, "Recovery_Rate": 56.29}, {"Brand": "H&F", "Year": 2025, "Customer": "Walmart", "Gross_CB": -1388372, "Reversals": 214095, "Net_CB": -1174277, "Recovery_Rate": 15.42}, {"Brand": "H&F", "Year": 2025, "Customer": "Walmart Canada", "Gross_CB": -176362, "Reversals": 2389, "Net_CB": -173973, "Recovery_Rate": 1.35}, {"Brand": "H&F", "Year": 2025, "Customer": "Wegmans", "Gross_CB": -15161, "Reversals": 402, "Net_CB": -14759, "Recovery_Rate": 2.65}, {"Brand": "H&F", "Year": 2025, "Customer": "WinCo", "Gross_CB": -17764, "Reversals": 21199, "Net_CB": 3435, "Recovery_Rate": 119.34}, {"Brand": "H&F", "Year": 2026, "Customer": "Albertsons", "Gross_CB": -131485, "Reversals": 6223, "Net_CB": -125262, "Recovery_Rate": 4.73}, {"Brand": "H&F", "Year": 2026, "Customer": "Amazon", "Gross_CB": -12071262, "Reversals": 11575038, "Net_CB": -496225, "Recovery_Rate": 95.89}, {"Brand": "H&F", "Year": 2026, "Customer": "BJ's", "Gross_CB": -10080, "Reversals": 0, "Net_CB": -10080, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "C&S", "Gross_CB": -62334, "Reversals": 13673, "Net_CB": -48661, "Recovery_Rate": 21.93}, {"Brand": "H&F", "Year": 2026, "Customer": "CVS", "Gross_CB": -409687, "Reversals": 100575, "Net_CB": -309113, "Recovery_Rate": 24.55}, {"Brand": "H&F", "Year": 2026, "Customer": "Costco", "Gross_CB": -388864, "Reversals": 60, "Net_CB": -388804, "Recovery_Rate": 0.02}, {"Brand": "H&F", "Year": 2026, "Customer": "Crossmark", "Gross_CB": -102342, "Reversals": 703, "Net_CB": -101639, "Recovery_Rate": 0.69}, {"Brand": "H&F", "Year": 2026, "Customer": "Dollar General", "Gross_CB": -177241, "Reversals": 36107, "Net_CB": -141134, "Recovery_Rate": 20.37}, {"Brand": "H&F", "Year": 2026, "Customer": "Food Lion", "Gross_CB": -6394, "Reversals": 0, "Net_CB": -6394, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "Giant Eagle, Inc.", "Gross_CB": -1970, "Reversals": 0, "Net_CB": -1970, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "Gopuff", "Gross_CB": -950, "Reversals": 0, "Net_CB": -950, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "H-E-B", "Gross_CB": -42996, "Reversals": 5, "Net_CB": -42990, "Recovery_Rate": 0.01}, {"Brand": "H&F", "Year": 2026, "Customer": "Hannaford", "Gross_CB": -14178, "Reversals": 252, "Net_CB": -13926, "Recovery_Rate": 1.77}, {"Brand": "H&F", "Year": 2026, "Customer": "Harris Teeter", "Gross_CB": -11353, "Reversals": 91, "Net_CB": -11263, "Recovery_Rate": 0.8}, {"Brand": "H&F", "Year": 2026, "Customer": "Highstock Inc.", "Gross_CB": -4596, "Reversals": 0, "Net_CB": -4596, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "Hy-Vee", "Gross_CB": -1391, "Reversals": 203, "Net_CB": -1188, "Recovery_Rate": 14.61}, {"Brand": "H&F", "Year": 2026, "Customer": "Jean Coutu", "Gross_CB": -40415, "Reversals": 2362, "Net_CB": -38053, "Recovery_Rate": 5.84}, {"Brand": "H&F", "Year": 2026, "Customer": "KOHLS", "Gross_CB": -59129, "Reversals": 287, "Net_CB": -58842, "Recovery_Rate": 0.49}, {"Brand": "H&F", "Year": 2026, "Customer": "Kroger", "Gross_CB": -231738, "Reversals": 0, "Net_CB": -231738, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "Loblaws", "Gross_CB": -387, "Reversals": 0, "Net_CB": -387, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "London Drugs Limited", "Gross_CB": -3295, "Reversals": 0, "Net_CB": -3295, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "Meijer", "Gross_CB": -128232, "Reversals": 123124, "Net_CB": -5108, "Recovery_Rate": 96.02}, {"Brand": "H&F", "Year": 2026, "Customer": "Menard", "Gross_CB": -4335, "Reversals": 25, "Net_CB": -4310, "Recovery_Rate": 0.58}, {"Brand": "H&F", "Year": 2026, "Customer": "Metro Ontario", "Gross_CB": -1860, "Reversals": 0, "Net_CB": -1860, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "Military Resale Solutions", "Gross_CB": -4673, "Reversals": 0, "Net_CB": -4673, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "Publix", "Gross_CB": -35073, "Reversals": 0, "Net_CB": -35073, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "Save on Foods", "Gross_CB": -13384, "Reversals": 0, "Net_CB": -13384, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "Shoppers Drug Mart Inc.", "Gross_CB": -145187, "Reversals": 0, "Net_CB": -145187, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "Sobeys", "Gross_CB": -3227, "Reversals": 59, "Net_CB": -3168, "Recovery_Rate": 1.82}, {"Brand": "H&F", "Year": 2026, "Customer": "SpartanNash Company", "Gross_CB": -953, "Reversals": 0, "Net_CB": -953, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "TJX", "Gross_CB": -51239, "Reversals": 0, "Net_CB": -51239, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "Target", "Gross_CB": -697308, "Reversals": 169312, "Net_CB": -527996, "Recovery_Rate": 24.28}, {"Brand": "H&F", "Year": 2026, "Customer": "Wakefern", "Gross_CB": -7668, "Reversals": 0, "Net_CB": -7668, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "Walgreens", "Gross_CB": -133072, "Reversals": 18922, "Net_CB": -114149, "Recovery_Rate": 14.22}, {"Brand": "H&F", "Year": 2026, "Customer": "Walmart", "Gross_CB": -631635, "Reversals": 442891, "Net_CB": -188744, "Recovery_Rate": 70.12}, {"Brand": "H&F", "Year": 2026, "Customer": "Walmart Canada", "Gross_CB": -145511, "Reversals": 427, "Net_CB": -145084, "Recovery_Rate": 0.29}, {"Brand": "H&F", "Year": 2026, "Customer": "Wegmans", "Gross_CB": -1571, "Reversals": 0, "Net_CB": -1571, "Recovery_Rate": 0.0}, {"Brand": "H&F", "Year": 2026, "Customer": "WinCo", "Gross_CB": -4930, "Reversals": 0, "Net_CB": -4930, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2025, "Customer": "Albertsons", "Gross_CB": -39807, "Reversals": 1129, "Net_CB": -38678, "Recovery_Rate": 2.84}, {"Brand": "L&M", "Year": 2025, "Customer": "BJ's", "Gross_CB": -23314, "Reversals": 6909, "Net_CB": -16405, "Recovery_Rate": 29.63}, {"Brand": "L&M", "Year": 2025, "Customer": "C&S", "Gross_CB": -25959, "Reversals": 0, "Net_CB": -25959, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2025, "Customer": "CVS", "Gross_CB": -244139, "Reversals": 98052, "Net_CB": -146087, "Recovery_Rate": 40.16}, {"Brand": "L&M", "Year": 2025, "Customer": "Costco", "Gross_CB": -104741, "Reversals": 0, "Net_CB": -104741, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2025, "Customer": "H-E-B", "Gross_CB": -52279, "Reversals": 47843, "Net_CB": -4437, "Recovery_Rate": 91.51}, {"Brand": "L&M", "Year": 2025, "Customer": "Harris Teeter", "Gross_CB": -3050, "Reversals": 0, "Net_CB": -3050, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2025, "Customer": "KeHe", "Gross_CB": -55728, "Reversals": 1867, "Net_CB": -53861, "Recovery_Rate": 3.35}, {"Brand": "L&M", "Year": 2025, "Customer": "Kroger", "Gross_CB": -212140, "Reversals": 15577, "Net_CB": -196563, "Recovery_Rate": 7.34}, {"Brand": "L&M", "Year": 2025, "Customer": "Meijer", "Gross_CB": -334056, "Reversals": 297629, "Net_CB": -36427, "Recovery_Rate": 89.1}, {"Brand": "L&M", "Year": 2025, "Customer": "Military Resale Solutions", "Gross_CB": -122, "Reversals": 0, "Net_CB": -122, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2025, "Customer": "None", "Gross_CB": -1915, "Reversals": 0, "Net_CB": -1915, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2025, "Customer": "Sam's Club", "Gross_CB": -1236594, "Reversals": 812342, "Net_CB": -424252, "Recovery_Rate": 65.69}, {"Brand": "L&M", "Year": 2025, "Customer": "Spartan Nash", "Gross_CB": -538, "Reversals": 0, "Net_CB": -538, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2025, "Customer": "SpartanNash", "Gross_CB": -100, "Reversals": 0, "Net_CB": -100, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2025, "Customer": "Target", "Gross_CB": -440893, "Reversals": 723646, "Net_CB": 282753, "Recovery_Rate": 164.13}, {"Brand": "L&M", "Year": 2025, "Customer": "Ulta", "Gross_CB": -218141, "Reversals": 0, "Net_CB": -218141, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2025, "Customer": "Vanguard Packaging LLC", "Gross_CB": -1091, "Reversals": 0, "Net_CB": -1091, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2025, "Customer": "Wakefern", "Gross_CB": -1137, "Reversals": 0, "Net_CB": -1137, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2025, "Customer": "Walgreens", "Gross_CB": -87564, "Reversals": 18968, "Net_CB": -68596, "Recovery_Rate": 21.66}, {"Brand": "L&M", "Year": 2025, "Customer": "Walmart", "Gross_CB": -7133317, "Reversals": 6078303, "Net_CB": -1055014, "Recovery_Rate": 85.21}, {"Brand": "L&M", "Year": 2025, "Customer": "Walmart Canada", "Gross_CB": -18582, "Reversals": 0, "Net_CB": -18582, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2025, "Customer": "Wegmans", "Gross_CB": -4652, "Reversals": 1490, "Net_CB": -3163, "Recovery_Rate": 32.02}, {"Brand": "L&M", "Year": 2026, "Customer": "Albertsons", "Gross_CB": -26437, "Reversals": 2141, "Net_CB": -24296, "Recovery_Rate": 8.1}, {"Brand": "L&M", "Year": 2026, "Customer": "BJ's", "Gross_CB": -200, "Reversals": 0, "Net_CB": -200, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2026, "Customer": "C&S", "Gross_CB": -19518, "Reversals": 0, "Net_CB": -19518, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2026, "Customer": "CVS", "Gross_CB": -104535, "Reversals": 24070, "Net_CB": -80465, "Recovery_Rate": 23.03}, {"Brand": "L&M", "Year": 2026, "Customer": "Costco", "Gross_CB": -72440, "Reversals": 0, "Net_CB": -72440, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2026, "Customer": "Crossmark", "Gross_CB": -24400, "Reversals": 0, "Net_CB": -24400, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2026, "Customer": "H-E-B", "Gross_CB": -1528, "Reversals": 12, "Net_CB": -1515, "Recovery_Rate": 0.8}, {"Brand": "L&M", "Year": 2026, "Customer": "Harris Teeter", "Gross_CB": -28840, "Reversals": 0, "Net_CB": -28840, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2026, "Customer": "Hy-Vee", "Gross_CB": -238, "Reversals": 487, "Net_CB": 249, "Recovery_Rate": 204.64}, {"Brand": "L&M", "Year": 2026, "Customer": "KeHe", "Gross_CB": -9073, "Reversals": 0, "Net_CB": -9073, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2026, "Customer": "Kroger", "Gross_CB": -124672, "Reversals": 24609, "Net_CB": -100063, "Recovery_Rate": 19.74}, {"Brand": "L&M", "Year": 2026, "Customer": "Meijer", "Gross_CB": -18920, "Reversals": 0, "Net_CB": -18920, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2026, "Customer": "Sam's Club", "Gross_CB": -61020, "Reversals": 170215, "Net_CB": 109194, "Recovery_Rate": 278.95}, {"Brand": "L&M", "Year": 2026, "Customer": "Spartan Nash", "Gross_CB": -363, "Reversals": 0, "Net_CB": -363, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2026, "Customer": "TJX", "Gross_CB": -63921, "Reversals": 61545, "Net_CB": -2376, "Recovery_Rate": 96.28}, {"Brand": "L&M", "Year": 2026, "Customer": "Target", "Gross_CB": -627560, "Reversals": 39174, "Net_CB": -588386, "Recovery_Rate": 6.24}, {"Brand": "L&M", "Year": 2026, "Customer": "Ulta", "Gross_CB": -75300, "Reversals": 0, "Net_CB": -75300, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2026, "Customer": "Wakefern", "Gross_CB": -4584, "Reversals": 0, "Net_CB": -4584, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2026, "Customer": "Walgreens", "Gross_CB": -48640, "Reversals": 0, "Net_CB": -48640, "Recovery_Rate": 0.0}, {"Brand": "L&M", "Year": 2026, "Customer": "Walmart", "Gross_CB": -293991, "Reversals": 145953, "Net_CB": -148038, "Recovery_Rate": 49.65}, {"Brand": "L&M", "Year": 2026, "Customer": "Walmart Canada", "Gross_CB": -55708, "Reversals": 3747, "Net_CB": -51962, "Recovery_Rate": 6.73}, {"Brand": "L&M", "Year": 2026, "Customer": "Wegmans", "Gross_CB": -1576, "Reversals": 0, "Net_CB": -1576, "Recovery_Rate": 0.0}];
const fmt$ = v => { if(v==null) return "\u2014"; const s=v<0?"-":""; const a=Math.abs(v); if(a>=1e6) return `${s}$${(a/1e6).toFixed(2)}M`; if(a>=1000) return `${s}$${Math.round(a/1000)}K`; return `${s}$${Math.round(a)}`; };
const fmtP = v => v==null ? "\u2014" : `${v.toFixed(2)}%`;
function periodInRange(year, month, lo, hi) {
const p = ALL_PERIODS.find(p=>p.year===year&&p.month===month);
return p!=null && p.idx>=lo && p.idx<=hi;
}
function bucketKey(p, gran) {
return gran==="month" ? p.label : gran==="quarter" ? p.qLabel : p.yLabel;
}
// Mutable theme object - Dashboard writes to this before each render
const T = {
bg:"#F9FAFB", card:"#fff", border:"#E5E7EB", border2:"#D1D5DB",
text1:"#111827", text2:"#6B7280", text3:"#374151",
muted:"#9CA3AF", rowAlt:"#FAFAFA", rowBase:"#fff",
tabActive:"#fff", tabInactive:"#F9FAFB", tabBorder:"#E5E7EB",
input:"#fff", inputBorder:"#D1D5DB",
};
let _dark = false;
function RangeSlider({lo, hi, setLo, setHi}) {
const trackRef = useRef(null);
const pct = v => (v - MIN_IDX) / (MAX_IDX - MIN_IDX) * 100;
function drag(which, e) {
e.preventDefault();
const track = trackRef.current;
function move(ev) {
const cx = ev.touches ? ev.touches[0].clientX : ev.clientX;
const {left, width} = track.getBoundingClientRect();
const v = Math.max(MIN_IDX, Math.min(MAX_IDX, Math.round((cx - left) / width * (MAX_IDX - MIN_IDX))));
if (which==="lo") setLo(Math.min(v, hi));
else setHi(Math.max(v, lo));
}
function up() {
window.removeEventListener("mousemove", move);
window.removeEventListener("mouseup", up);
window.removeEventListener("touchmove", move);
window.removeEventListener("touchend", up);
}
window.addEventListener("mousemove", move);
window.addEventListener("mouseup", up);
window.addEventListener("touchmove", move, {passive:false});
window.addEventListener("touchend", up);
}
const loP = pct(lo), hiP = pct(hi);
return (
drag("lo",e)} onTouchStart={e=>drag("lo",e)}
style={{position:"absolute",left:`${loP}%`,top:"50%",transform:"translate(-50%,-50%)",width:18,height:18,borderRadius:"50%",background:T.card,border:"2.5px solid #2563EB",cursor:"grab",boxShadow:"0 1px 4px rgba(0,0,0,.18)",zIndex:2}}/>
drag("hi",e)} onTouchStart={e=>drag("hi",e)}
style={{position:"absolute",left:`${hiP}%`,top:"50%",transform:"translate(-50%,-50%)",width:18,height:18,borderRadius:"50%",background:T.card,border:"2.5px solid #2563EB",cursor:"grab",boxShadow:"0 1px 4px rgba(0,0,0,.18)",zIndex:2}}/>
);
}
function KPI({label,value,sub,delta,hi}) {
const up = delta>0;
return (
{label}
{value}
{sub &&
{sub}
}
{delta!==undefined &&
{up?"\u25b2":"\u25bc"} {Math.abs(delta).toFixed(1)}% vs prior yr
}
);
}
const Pill = ({active,onClick,label,color}) => (
{label}
);
const TabBtn = ({active,onClick,label}) => (
{label}
);
const Lbl = ({children,style={}}) =>
{children}
;
const MetricToggle = ({metric,setMetric}) => (
VIEW
setMetric("$")} label="$ Amount"/>
setMetric("%")} label="% of GR"/>
);
function TrendChart({data, metric, hideHF, hideLM, height=250, gran}) {
const dotR = gran==="month" ? 3 : 5;
return (
{metric==="$"
?
[fmt$(v),n]}/>
:
v!=null?`${v.toFixed(1)}%`:"\u2014"} tick={{fontSize:10}} width={52}/>
[v!=null?`${v.toFixed(2)}%`:"\u2014",n]}/>
}
);
}
function AskAI({rawMonthly,rawCustomer,rawChannel,rawCatMonthly,rawCatCust,rawCatCh}) {
const [messages, setMessages] = useState([]);
const [input, setInput] = useState("");
const [loading, setLoading] = useState(false);
const bottomRef = useRef(null);
const SUGGESTIONS = [
"Which customer has the highest CB % of revenue?",
"What is H&F's top chargeback category?",
"Compare H&F vs L&M chargeback rates in 2025 vs 2026 YTD.",
"Which channel drives the most chargebacks?",
];
const scrollToBottom = () => { if(bottomRef.current) bottomRef.current.scrollIntoView({behavior:"smooth"}); };
const send = async (text) => {
const q = (text || input).trim();
if(!q || loading) return;
setInput("");
const userMsg = {role:"user", content:q};
const newMsgs = [...messages, userMsg];
setMessages(newMsgs);
setLoading(true);
setTimeout(scrollToBottom, 50);
const systemPrompt = `You are a supply chain analytics assistant for Mammoth Care (MCR).
H&F = Harry's Grooming (brand code HF). L&M = Lume/Mando (brand code LM).
FY2025 = full year Jan-Dec 2025. FY2026 YTD = Jan-May 2026.
Answer concisely with specific figures pulled from the data provided.
RAW_MONTHLY (brand+month totals): ${JSON.stringify(rawMonthly)}
RAW_CUSTOMER (annual by customer): ${JSON.stringify(rawCustomer)}
RAW_CHANNEL (annual by channel): ${JSON.stringify(rawChannel)}
RAW_CAT_MONTHLY (monthly by category): ${JSON.stringify(rawCatMonthly)}
RAW_CAT_CUST (annual by customer+category): ${JSON.stringify(rawCatCust)}
RAW_CAT_CH (all-period by channel+category): ${JSON.stringify(rawCatCh)}`;
try {
const res = await fetch("https://api.anthropic.com/v1/messages", {
method:"POST",
headers:{"Content-Type":"application/json"},
body:JSON.stringify({
model:"claude-sonnet-4-6",
max_tokens:1000,
system:systemPrompt,
messages:newMsgs,
}),
});
const data = await res.json();
const reply = data.content?.[0]?.text || "Sorry, no response received.";
setMessages(prev => [...prev, {role:"assistant", content:reply}]);
} catch(err) {
setMessages(prev => [...prev, {role:"assistant", content:`Error: ${err.message}`}]);
}
setLoading(false);
setTimeout(scrollToBottom, 50);
};
return (
Ask Me Anything
Ask questions about chargebacks across customers, categories, channels and brands.
{messages.length===0 && (
?
Ask a question to get started.
{SUGGESTIONS.map((s,i)=>(
send(s)} style={{background:T.card,border:`1.5px solid ${T.border}`,borderRadius:20,padding:"5px 14px",fontSize:11,color:T.text3,cursor:"pointer",fontFamily:"inherit",maxWidth:380}}>{s}
))}
)}
{messages.map((m,i)=>(
{m.role==="user"?"U":"A"}
{m.content}
))}
{loading && (
)}
setInput(e.target.value)}
onKeyDown={e=>{if(e.key==="Enter"&&!e.shiftKey){e.preventDefault();send();}}}
placeholder="Ask about chargebacks data..."
style={{flex:1,padding:"9px 13px",borderRadius:8,border:"1.5px solid #D1D5DB",fontSize:13,outline:"none",fontFamily:"inherit"}}
/>
send()} disabled={loading||!input.trim()} style={{padding:"9px 20px",borderRadius:8,background:loading||!input.trim()?T.border:"#2563EB",color:loading||!input.trim()?T.muted:"#fff",border:"none",fontWeight:700,fontSize:13,cursor:loading||!input.trim()?"default":"pointer",fontFamily:"inherit"}}>
Send
);
}
function RetailerScorecard({ brand, lo, hi, retailerView, setRetailerView, _dark }) {
const ALL_RETAILERS = [
"Target","Walmart","Walmart Canada","Amazon","Costco","Sam's Club",
"CVS","Walgreens","Kroger","Albertsons","Meijer","Dollar General",
"Publix","H-E-B","Harris Teeter","Crossmark","C&S","Shoppers Drug Mart",
"TJX","KOHLS","Ulta","KeHe"
];
// ── On-Time & In-Full data keyed by retailer (2026 YTD weekly) ──
// Weekly data is all 2026 — filter weeks whose month is within the selected lo/hi range
const selectedMonths = new Set(ALL_PERIODS.filter(p=>p.year===2026&&p.idx>=lo&&p.idx<=hi).map(p=>p.month));
// "Jan 19" -> "Jan", "Feb 2" -> "Feb", etc.
const weekInRange = w => selectedMonths.has(w.split(" ")[0]);
const JUN1_OT = {"Target":100,"Walmart":86,"Drug & Dollar":33,"Grocery":76,"Walgreens":null,"CVS":null};
const INFUL_BY_RETAILER = {
"Target": [{w:"Jan 19",v:99.4},{w:"Feb 2",v:97.7},{w:"Feb 9",v:99.3},{w:"Feb 16",v:98.9},{w:"Feb 23",v:98.1},{w:"Mar 2",v:97.5},{w:"Mar 9",v:null},{w:"Mar 16",v:96.9},{w:"Mar 23",v:96.5},{w:"Mar 30",v:96.9},{w:"Apr 6",v:96.7},{w:"Apr 13",v:97.0},{w:"Apr 20",v:97.3},{w:"Apr 27",v:97.4},{w:"May 4",v:98.2},{w:"May 11",v:98.1},{w:"May 18",v:97.9},{w:"May 25",v:97.9},{w:"Jun 1",v:97.5},{w:"Jun 8",v:null}],
"Walmart": [{w:"Feb 2",v:94.7},{w:"Feb 9",v:98.3},{w:"Feb 16",v:99.1},{w:"Feb 23",v:99.4},{w:"Mar 2",v:99.5},{w:"Mar 9",v:99.5},{w:"Mar 16",v:null},{w:"Mar 23",v:99.6},{w:"Mar 30",v:99.5},{w:"Apr 6",v:null},{w:"Apr 13",v:null},{w:"Apr 20",v:99.3},{w:"Apr 27",v:99.2},{w:"May 4",v:null},{w:"May 11",v:98.9},{w:"May 18",v:99.0},{w:"May 25",v:99.0},{w:"Jun 1",v:99.2},{w:"Jun 8",v:null}],
};
// NA Retail weekly On-Time (aggregate, used for all retailers)
const NA_OT_WEEKLY = [
{w:"Jan 19",ot:86.4},{w:"Feb 2",ot:95.7},{w:"Feb 9",ot:93.9},{w:"Feb 16",ot:90.7},{w:"Feb 23",ot:91.1},
{w:"Mar 2",ot:92.8},{w:"Mar 9",ot:96.1},{w:"Mar 16",ot:96.4},{w:"Mar 23",ot:92.1},{w:"Mar 30",ot:83.5},
{w:"Apr 6",ot:95.1},{w:"Apr 13",ot:96.1},{w:"Apr 20",ot:95.4},{w:"Apr 27",ot:95.2},
{w:"May 11",ot:94.6},{w:"May 18",ot:94.9},{w:"May 25",ot:95.5},{w:"Jun 1",ot:89.8},
];
// Merge + apply date range filter
const retailerIfSeries = INFUL_BY_RETAILER[retailerView];
const retailerOtif = (() => {
const otMap = Object.fromEntries(NA_OT_WEEKLY.map(d=>[d.w,d.ot]));
if (retailerIfSeries) {
return retailerIfSeries
.filter(d=>weekInRange(d.w))
.map(d=>({w:d.w, if:d.v, ot:otMap[d.w]||null}))
.filter(d=>d.if!==null||d.ot!==null);
}
return [
{w:"Jan 19",if:99.4,ot:86.4,otif:85.9},{w:"Feb 2",if:97.7,ot:95.7,otif:93.5},{w:"Feb 9",if:99.3,ot:93.9,otif:93.2},
{w:"Feb 16",if:98.9,ot:90.7,otif:89.7},{w:"Feb 23",if:98.1,ot:91.1,otif:89.4},{w:"Mar 2",if:97.5,ot:92.8,otif:92.0},
{w:"Mar 9",if:96.7,ot:96.1,otif:93.8},{w:"Mar 16",if:97.3,ot:96.4,otif:93.8},{w:"Mar 23",if:97.6,ot:92.1,otif:89.9},
{w:"Mar 30",if:98.6,ot:83.5,otif:82.3},{w:"Apr 6",if:99.2,ot:95.1,otif:94.3},{w:"Apr 13",if:99.3,ot:96.1,otif:95.4},
{w:"Apr 20",if:97.8,ot:95.4,otif:93.3},{w:"Apr 27",if:99.0,ot:95.2,otif:94.2},{w:"May 11",if:97.8,ot:94.6,otif:92.5},
{w:"May 18",if:97.8,ot:94.9,otif:92.8},{w:"May 25",if:97.7,ot:95.5,otif:93.3},{w:"Jun 1",if:98.1,ot:89.8,otif:88.1},
].filter(d=>weekInRange(d.w));
})();
const hasRetailerOtif = !!retailerIfSeries;
const jun1OT = JUN1_OT[retailerView];
// ── In-Stock weekly (date-range filtered) ──
const INSTOCK_DATA = {
"Target": [{w:"Jan 5",v:92.8},{w:"Jan 12",v:94.0},{w:"Jan 19",v:95.3},{w:"Jan 26",v:95.7},{w:"Feb 2",v:95.8},{w:"Feb 9",v:97.8},{w:"Feb 16",v:97.4},{w:"Feb 23",v:97.6},{w:"Mar 2",v:97.6},{w:"Mar 9",v:null},{w:"Mar 16",v:96.9},{w:"Mar 23",v:96.5},{w:"Mar 30",v:96.9},{w:"Apr 6",v:96.7},{w:"Apr 13",v:97.0},{w:"Apr 20",v:97.3},{w:"Apr 27",v:97.4},{w:"May 4",v:98.2},{w:"May 11",v:98.1},{w:"May 18",v:97.9},{w:"May 25",v:97.9},{w:"Jun 1",v:97.5},{w:"Jun 8",v:null}],
"Walmart": [{w:"Jan 5",v:96.0},{w:"Jan 12",v:87.0},{w:"Jan 19",v:88.0},{w:"Jan 26",v:91.0},{w:"Feb 2",v:94.7},{w:"Feb 9",v:98.3},{w:"Feb 16",v:99.1},{w:"Feb 23",v:99.4},{w:"Mar 2",v:99.5},{w:"Mar 9",v:99.5},{w:"Mar 16",v:null},{w:"Mar 23",v:99.6},{w:"Mar 30",v:99.5},{w:"Apr 6",v:null},{w:"Apr 13",v:null},{w:"Apr 20",v:99.3},{w:"Apr 27",v:99.2},{w:"May 4",v:null},{w:"May 11",v:98.9},{w:"May 18",v:99.0},{w:"May 25",v:99.0},{w:"Jun 1",v:99.2},{w:"Jun 8",v:null}],
"Amazon": [{w:"Jan 5",v:98.9},{w:"Jan 12",v:98.8},{w:"Jan 19",v:98.8},{w:"Jan 26",v:98.7},{w:"Feb 2",v:98.6},{w:"Feb 9",v:98.5},{w:"Feb 16",v:98.5},{w:"Feb 23",v:98.1},{w:"Mar 2",v:97.7},{w:"Mar 9",v:97.8},{w:"Mar 16",v:98.0},{w:"Mar 23",v:97.9},{w:"Mar 30",v:97.8},{w:"Apr 6",v:null},{w:"Apr 13",v:97.8},{w:"Apr 20",v:97.8},{w:"Apr 27",v:97.5},{w:"May 4",v:96.8},{w:"May 11",v:96.3},{w:"May 18",v:96.3},{w:"May 25",v:96.2},{w:"Jun 1",v:95.9},{w:"Jun 8",v:96.3}],
};
const instockData = (INSTOCK_DATA[retailerView] || []).filter(d=>d.v!==null && weekInRange(d.w));
// ── Cut $ weekly (2026 YTD) ──
const CUT_WEEKS = ["2/2","2/9","2/16","2/23","3/2","3/9","3/16","3/23","3/30","4/6","4/13","4/20","4/27","5/4","5/11","5/18","5/25","6/1","6/8"];
const CUT_DATA = {
"Target": [0,552,49934,111583,39913,72612,73330,23559,9915,37518,74458,110479,12903,111865,198719,54904,0,198212,162972],
"Walmart": [527,13062,2619,53652,68826,127583,186464,26923,14810,22384,67553,11948,11764,195283,126064,96531,80824,119635,42460],
"Walmart Canada":[0,2889,6403,7223,15485,34488,144257,0,0,0,0,0,0,2593,0,27,0,54,52],
"CVS": [0,0,0,6212,3662,469,5493,0,13332,0,0,0,0,0,0,31094,21315,43331,0],
"Kroger": [0,0,0,16078,2857,0,0,0,0,0,0,0,0,1190,7500,21594,21565,18007,0],
"Meijer": [0,6962,0,3225,4629,3186,707,6987,4408,4750,3326,2289,1656,6928,5858,7621,6456,12753,3537],
"Walgreens": [0,0,0,0,0,0,0,1462,0,1462,12710,12660,0,10952,238,19210,0,9764,6087],
"C&S": [3959,3215,252,29153,627,0,5394,0,1848,0,0,0,0,0,0,7034,7064,5243,0],
"H-E-B": [0,0,0,7619,14860,4197,10132,591,9053,731,6577,0,0,0,4291,27267,0,1905,3282],
};
// Map cut week "m/d" -> month name for range filtering
const CUT_WEEK_MONTHS = {"2/2":"Feb","2/9":"Feb","2/16":"Feb","2/23":"Feb","3/2":"Mar","3/9":"Mar","3/16":"Mar","3/23":"Mar","3/30":"Mar","4/6":"Apr","4/13":"Apr","4/20":"Apr","4/27":"Apr","5/4":"May","5/11":"May","5/18":"May","5/25":"May","6/1":"Jun","6/8":"Jun"};
const cutSeries = CUT_DATA[retailerView];
const cutChartData = cutSeries ? CUT_WEEKS.map((w,i)=>({w,cuts:cutSeries[i]})).filter(d=>d.cuts>0 && selectedMonths.has(CUT_WEEK_MONTHS[d.w])) : [];
const totalCuts = cutChartData.reduce((s,d)=>s+d.cuts,0);
// ── Brand + date range filter helpers ──
const bMatch = b => brand==="All" || b===brand;
const inRange = (year, month) => { const p=ALL_PERIODS.find(p=>p.year===year&&p.month===month); return p && p.idx>=lo && p.idx<=hi; };
// ── CB monthly by brand (date-range filtered) ──
const cbMonthly = RAW_CUST_MONTHLY.filter(d=>d.Customer===retailerView && bMatch(d.Brand) && inRange(d.Year,d.Month))
.sort((a,b)=>a.Year!==b.Year?a.Year-b.Year:MI[a.Month]-MI[b.Month]);
const cbByPeriod = {};
cbMonthly.forEach(d=>{
const key=`${d.Year}-${d.Month}`;
if(!cbByPeriod[key]) cbByPeriod[key]={label:key,hf_cb:null,lm_cb:null,total_cb:0};
if(d.Brand==="HF") cbByPeriod[key].hf_cb=(cbByPeriod[key].hf_cb||0)+d.Net_CB;
else cbByPeriod[key].lm_cb=(cbByPeriod[key].lm_cb||0)+d.Net_CB;
cbByPeriod[key].total_cb+=d.Net_CB;
});
// ── Revenue allocation: annual cust rev * (monthly brand rev share) ──
// annual customer rev per brand/year from RAW_CUSTOMER
const annualCustRevLu = {};
RAW_CUSTOMER.forEach(d=>{ annualCustRevLu[`${d.Brand}|${d.Year}|${d.Customer}`]=d.Rev; });
// brand-level monthly rev totals (to get each month's share of annual)
const annualBrandRevLu = {};
RAW_MONTHLY.forEach(d=>{
const yr=d.Year, br=d.Brand;
if(!annualBrandRevLu[`${br}|${yr}`]) annualBrandRevLu[`${br}|${yr}`]=0;
annualBrandRevLu[`${br}|${yr}`]+=d.Rev;
});
// monthly brand rev lookup
const monthBrandRevLu = {};
RAW_MONTHLY.forEach(d=>{ monthBrandRevLu[`${d.Brand}|${d.Year}|${d.Month}`]=d.Rev; });
// compute allocated monthly customer revenue per brand
const custMonthRevLu = {}; // key = "Brand|Year|Month"
["HF","LM"].forEach(br=>{
[2025,2026].forEach(yr=>{
const annualCustRev = annualCustRevLu[`${br}|${yr}|${retailerView}`]
|| annualCustRevLu[`${br}|${yr}|${retailerView.replace(" Inc.","")}`]
|| 0;
const annualBrandRev = annualBrandRevLu[`${br}|${yr}`]||1;
MONTH_ORDER.forEach(mo=>{
const mRev = monthBrandRevLu[`${br}|${yr}|${mo}`]||0;
custMonthRevLu[`${br}|${yr}|${mo}`] = annualCustRev * (mRev/annualBrandRev);
});
});
});
const cbChartData = ALL_PERIODS.filter(p=>p.idx>=lo&&p.idx<=hi).map(p=>{
const key=`${p.year}-${p.month}`;
const row = cbByPeriod[key];
if(!row) return {label:p.label,hf:null,lm:null,total:null};
const hfRev = custMonthRevLu[`HF|${p.year}|${p.month}`]||0;
const lmRev = custMonthRevLu[`LM|${p.year}|${p.month}`]||0;
const hfPct = (row.hf_cb!==null && hfRev>0) ? row.hf_cb/hfRev*100 : null;
const lmPct = (row.lm_cb!==null && lmRev>0) ? row.lm_cb/lmRev*100 : null;
const totRev = hfRev + lmRev;
const totPct = (row.total_cb!==0 && totRev>0) ? row.total_cb/totRev*100 : null;
return {label:p.label, hf:hfPct, lm:lmPct, total:totPct,
hf_cb:row.hf_cb, lm_cb:row.lm_cb, total_cb:row.total_cb};
}).filter(d=>d.hf!==null||d.lm!==null);
// ── Annual CB summary (brand-filtered) ──
const yearsInRange = [...new Set(ALL_PERIODS.filter(p=>p.idx>=lo&&p.idx<=hi).map(p=>p.year))];
const annualCB=RAW_CUSTOMER.filter(d=>(d.Customer===retailerView||d.Customer===retailerView.replace(" Inc.","")) && bMatch(d.Brand) && yearsInRange.includes(d.Year));
const cb2025=annualCB.filter(d=>d.Year===2025).reduce((s,d)=>s+d.Net_CB,0);
const cb2026=annualCB.filter(d=>d.Year===2026).reduce((s,d)=>s+d.Net_CB,0);
const rev2025=annualCB.filter(d=>d.Year===2025).reduce((s,d)=>s+d.Rev,0);
const rev2026=annualCB.filter(d=>d.Year===2026).reduce((s,d)=>s+d.Rev,0);
const pct2025=rev2025>0?cb2025/rev2025*100:null;
const pct2026=rev2026>0?cb2026/rev2026*100:null;
// ── Recovery (brand + year range filtered) ──
const recovAll=RAW_RECOVERY_CUST.filter(d=>d.Customer===retailerView && yearsInRange.includes(d.Year) && (brand==="All"||(brand==="HF"&&d.Brand==="H&F")||(brand==="LM"&&d.Brand==="L&M")));
const grossCBTotal=recovAll.reduce((s,d)=>s+Math.abs(d.Gross_CB),0);
const reversalsTotal=recovAll.reduce((s,d)=>s+d.Reversals,0);
const recovRate=grossCBTotal>0?reversalsTotal/grossCBTotal*100:null;
const hasData=cbChartData.length>0;
const hasCuts=cutSeries&&totalCuts>0;
const hasOtif=retailerOtif.length>0;
const hasInstock=instockData.length>0;
const SectionHdr = ({icon,title,sub})=>(
);
return (
{/* ── Header + selector ── */}
🏪 Retailer Scorecard
On-time · In-full · Cuts $ · Chargebacks by reason · 2025–2026 YTD
{brand!=="All"&&{brand==="HF"?"H&F Only":"L&M Only"} }
RETAILER
setRetailerView(e.target.value)}
style={{padding:"8px 14px",borderRadius:8,border:"1.5px solid #DDD6FE",fontSize:13,fontWeight:700,color:"#6D28D9",background:"#F5F3FF",cursor:"pointer",minWidth:190}}>
{ALL_RETAILERS.map(r=>{r} )}
{!hasData&&!hasOtif&&!hasCuts ? (
No data available for {retailerView} in the current dataset.
) : (
<>
{/* ── KPI strip ── */}
{[
{label:"2025 CB % of Rev", value:pct2025!==null?fmtP(pct2025):"—", sub:cb2025!==0?`Net CB: ${fmt$(cb2025)}`:"no rev data", hi:pct2025>2?"red":pct2025!==null?"green":null},
{label:"2026 YTD CB % of Rev",value:pct2026!==null?fmtP(pct2026):"—", sub:cb2026!==0?`Net CB: ${fmt$(cb2026)}`:"no rev data", hi:pct2026>2?"red":pct2026!==null?"green":null},
...(hasCuts?[{label:"2026 YTD Cut $",value:fmt$(totalCuts),sub:"actualized weekly",hi:"red"}]:[]),
...(recovRate!==null?[{label:"Avg Recovery Rate",value:`${recovRate.toFixed(1)}%`,sub:"reversals / gross CB",hi:recovRate>50?"green":"red"}]:[]),
].map(k=>(
{k.label}
{k.value}
{k.sub}
))}
{/* ══ SECTION 1: On-Time & In-Full ══ */}
{brand!=="All"&&(
ℹ️ OTIF and In-Stock data is tracked at the Mammoth Brands level and is not split by brand. The {brand==="HF"?"H&F":"L&M"} filter does not apply here.
)}
{jun1OT!==undefined&&jun1OT!==null&&(
⚡ Jun 1 On-Time snapshot — {retailerView}: {jun1OT}% · Weekly retailer-level On-Time series is not tracked in this dataset. On-Time line below reflects NA Retail aggregate.
)}
In-Full %{hasRetailerOtif?" (retailer)":""}
On-Time % (NA Retail)
{!hasRetailerOtif&& OTIF % }
v+"%"} tick={{fontSize:10}} width={38}/>
[v!=null?v.toFixed(1)+"%":"N/A",n]}/>
{!hasRetailerOtif&& }
{/* In-Stock line (where available) */}
{hasInstock&&(
In-Stock % — {retailerView} 2026 YTD weekly
v+"%"} tick={{fontSize:10}} width={38}/>
[v!=null?v.toFixed(1)+"%":"N/A","In-Stock %"]}/>
)}
{/* ══ SECTION 2: Cuts $ Over Time ══ */}
{hasCuts ? (
<>
<$100K — low
$100–299K — elevated
$300K+ — high
v>=1000?"$"+(v/1000).toFixed(0)+"K":"$"+v} tick={{fontSize:10}} width={56}/>
["$"+Math.round(v).toLocaleString(),"Cut $"]}/>
{cutChartData.map((d,i)=>| =300000?"#EF4444":d.cuts>=100000?"#F59E0B":"#10B981"}/>)}
|
>
) : (
ℹ️ Weekly cut $ data is not available for {retailerView} . This dataset tracks Target, Walmart, Walmart Canada, CVS, Kroger, Meijer, Walgreens, C&S, and H-E-B.
)}
{/* ══ SECTION 3: Chargebacks Over Time ══ */}
{hasData&&(
<>
H&F CB%
L&M CB%
Combined CB%
v!=null?v.toFixed(1)+"%":""} tick={{fontSize:10}} width={52}/>
[v!=null?v.toFixed(2)+"%":"N/A",n]}/>
{/* CB % of Revenue tiles */}
{annualCB.filter(d=>d.Rev>0).length>0&&(
{annualCB.filter(d=>d.Rev>0).map((d,i)=>(
{d.Year} · {d.Brand==="HF"?"H&F":"L&M"}
3?"#DC2626":d.Pct>1.5?"#D97706":"#059669"}}>{fmtP(d.Pct)}
{fmt$(d.Net_CB)} on {fmt$(d.Rev)} rev
))}
)}
>
)}
{/* ── Recovery table ── */}
{recovAll.length>0&&(
<>
{["Brand","Year","Gross CB","Reversals","Net CB","Recovery %"].map(h=>(
{h}
))}
{recovAll.sort((a,b)=>a.Year-b.Year).map((r,i)=>{
const rc=r.Recovery_Rate>=50?"#16A34A":r.Recovery_Rate>=25?"#D97706":"#DC2626";
return (
{r.Brand}
{r.Year}
{fmt$(Math.abs(r.Gross_CB))}
{fmt$(r.Reversals)}
{fmt$(Math.abs(r.Net_CB))}
{r.Recovery_Rate.toFixed(1)}%
);
})}
>
)}
>
)}
);
}
export default function Dashboard() {
// Global filters
const [brand, setBrand] = useState("All");
const [dark, setDark] = useState(false);
const [lo, setLo] = useState(12); // Jan 2026
const [hi, setHi] = useState(MAX_IDX);
const [gran, setGran] = useState("month");
const [categories, setCategories] = useState(["All"]);
// helpers - use array so useMemo dep comparisons work correctly
const catMatch = c => categories[0]==="All" || categories.includes(c);
const toggleCat = c => {
if (c === "All") { setCategories(["All"]); return; }
setCategories(prev => {
const cur = prev[0] === "All" ? [] : prev;
if (cur.includes(c)) {
const next = cur.filter(x => x !== c);
return next.length === 0 ? ["All"] : next;
}
return [...cur, c];
});
};
// Mutate module-level T so external components (KPI, Pill, TabBtn, etc.) pick it up
_dark = dark;
if (dark) {
Object.assign(T, {bg:"#0F172A",card:"#1E293B",border:"#334155",border2:"#475569",
text1:"#F1F5F9",text2:"#94A3B8",text3:"#CBD5E1",
muted:"#64748B",rowAlt:"#1E293B",rowBase:"#0F172A",
tabActive:"#1E293B",tabInactive:"#0F172A",tabBorder:"#334155",
input:"#1E293B",inputBorder:"#475569"});
} else {
Object.assign(T, {bg:"#F9FAFB",card:"#fff",border:"#E5E7EB",border2:"#D1D5DB",
text1:"#111827",text2:"#6B7280",text3:"#374151",
muted:"#9CA3AF",rowAlt:"#FAFAFA",rowBase:"#fff",
tabActive:"#fff",tabInactive:"#F9FAFB",tabBorder:"#E5E7EB",
input:"#fff",inputBorder:"#D1D5DB"});
}
const [tab, setTab] = useState("trends");
const [retailerView, setRetailerView] = useState("Walmart");
// Per-tab state
const [metric, setMetric] = useState("%");
const [custTrendCust, setCustTrendCust] = useState("Walmart");
const [custTrendBrand, setCustTrendBrand] = useState("All");
const [custTrendMetric,setCustTrendMetric] = useState("%");
const [chTrendCh, setChTrendCh] = useState("Walmart");
const [chTrendBrand, setChTrendBrand] = useState("All");
const [chTrendMetric, setChTrendMetric] = useState("%");
const [hypCustomer, setHypCustomer] = useState("All");
const [hypBrand, setHypBrand] = useState("All");
const [custSearch, setCustSearch] = useState("");
const [sortCust, setSortCust] = useState("Net_CB");
// Helpers
const bMatch = b => brand==="All" || b===brand;
const inRange = (yr, mo) => periodInRange(yr, mo, lo, hi);
const loP = ALL_PERIODS[lo], hiP = ALL_PERIODS[hi];
const rangeLabel = `${loP.month} ${loP.year} \u2013 ${hiP.month} ${hiP.year}`;
const hideHF = brand==="LM", hideLM = brand==="HF", isAll = brand==="All";
const dotR = gran==="month" ? 3 : 5;
// Bucket builder \u2014 shared across all tabs
function makeBuckets(rows) {
const map = {};
rows.forEach(d => {
const p = ALL_PERIODS.find(p=>p.year===d.Year&&p.month===d.Month);
if (!p || p.idx
hi) return;
const bk = bucketKey(p, gran);
if (!map[bk]) map[bk] = {bKey:bk, sortKey:p.idx, Net_CB_HF:0, Net_CB_LM:0, Rev_HF:0, Rev_LM:0};
else map[bk].sortKey = Math.min(map[bk].sortKey, p.idx);
map[bk][`Net_CB_${d.Brand}`] = (map[bk][`Net_CB_${d.Brand}`]||0) + (d.Net_CB||0);
if (d.Rev) map[bk][`Rev_${d.Brand}`] = (map[bk][`Rev_${d.Brand}`]||0) + d.Rev;
});
return Object.values(map)
.sort((a,b)=>a.sortKey-b.sortKey)
.map(r=>({...r,
Pct_HF: r.Rev_HF>0 ? r.Net_CB_HF/r.Rev_HF*100 : null,
Pct_LM: r.Rev_LM>0 ? r.Net_CB_LM/r.Rev_LM*100 : null,
}));
}
// \u2500\u2500 TRENDS data \u2500\u2500
// When category is "All" use RAW_MONTHLY; when filtered use RAW_CAT_MONTHLY
const trendData = useMemo(() => {
const _allCats = categories[0]==="All";
if (_allCats) {
return makeBuckets(RAW_MONTHLY.filter(d=>bMatch(d.Brand)));
}
// Build a rev lookup from RAW_MONTHLY so % mode works for filtered categories
const revLu = {};
RAW_MONTHLY.forEach(d=>{ revLu[`${d.Brand}|${d.Year}|${d.Month}`] = d.Rev; });
const src = RAW_CAT_MONTHLY
.filter(d=>bMatch(d.Brand)&&categories.includes(d.Category))
.map(d=>({...d, Rev: revLu[`${d.Brand}|${d.Year}|${d.Month}`]||0}));
return makeBuckets(src);
}, [brand,lo,hi,gran,categories]);
// -- KPIs --
const kpiData = useMemo(() => {
const _allCats = categories[0]==="All";
const rows = _allCats
? RAW_MONTHLY.filter(d=>bMatch(d.Brand)&&inRange(d.Year,d.Month))
: RAW_CAT_MONTHLY.filter(d=>bMatch(d.Brand)&&categories.includes(d.Category)&&inRange(d.Year,d.Month));
const totalCB = rows.reduce((s,d)=>s+d.Net_CB,0);
// always use brand-level rev as denominator so % is meaningful
const revRows = RAW_MONTHLY.filter(d=>bMatch(d.Brand)&&inRange(d.Year,d.Month));
const totalRev = revRows.reduce((s,d)=>s+d.Rev,0);
const pct = totalRev>0 ? totalCB/totalRev*100 : 0;
const r25 = RAW_MONTHLY.filter(d=>bMatch(d.Brand)&&d.Year===2025);
const r26 = RAW_MONTHLY.filter(d=>bMatch(d.Brand)&&d.Year===2026);
const cb25=r25.reduce((s,d)=>s+d.Net_CB,0), rv25=r25.reduce((s,d)=>s+d.Rev,0);
const cb26=r26.reduce((s,d)=>s+d.Net_CB,0), rv26=r26.reduce((s,d)=>s+d.Rev,0);
const p25=rv25>0?cb25/rv25*100:0, p26=rv26>0?cb26/rv26*100:0;
return {totalCB,totalRev,pct,cb25,rv25,cb26,rv26,p25,p26,yoyD:p25>0?(p26-p25)/p25*100:0};
}, [brand,lo,hi,categories]);
// -- RETAILER CATEGORY PIES -----------------------------------------------
const retailerPieData = useMemo(() => {
// Revenue lookup: sum rev across filtered years per customer+brand
const revMap = {};
RAW_CUSTOMER.filter(d =>
bMatch(d.Brand) &&
ALL_PERIODS.some(p => p.year===d.Year && p.idx>=lo && p.idx<=hi)
).forEach(d => {
revMap[d.Customer] = (revMap[d.Customer]||0) + (d.Rev||0);
});
const map = {};
RAW_CAT_CUST.filter(d =>
bMatch(d.Brand) &&
ALL_PERIODS.some(p => p.year===d.Year && p.idx>=lo && p.idx<=hi)
).forEach(d => {
if (!map[d.Customer]) map[d.Customer] = {Customer:d.Customer, cats:{}, total:0};
map[d.Customer].cats[d.Category] = (map[d.Customer].cats[d.Category]||0) + d.Net_CB;
map[d.Customer].total += d.Net_CB;
});
return Object.values(map)
.filter(r => r.total > 0)
.sort((a,b) => b.total - a.total)
.map(r => {
const rev = revMap[r.Customer] || 0;
return {
Customer: r.Customer,
total: r.total,
rev,
slices: Object.entries(r.cats)
.filter(([,v]) => v > 0)
.sort(([,a],[,b]) => b - a)
.map(([name, value]) => ({
name,
value,
pct: rev > 0 ? value / rev * 100 : 0,
})),
};
});
}, [brand, lo, hi]);
// -- CUSTOMER TABLE --------------------------------------------------------
const custRows = useMemo(() => {
// Use RAW_CAT_CUST when filtered, aggregate RAW_CUSTOMER otherwise
const _allCats = categories[0]==="All";
if (_allCats) {
return RAW_CUSTOMER
.filter(d=>bMatch(d.Brand)&&ALL_PERIODS.some(p=>p.year===d.Year&&p.idx>=lo&&p.idx<=hi))
.filter(d=>custSearch===""||d.Customer.toLowerCase().includes(custSearch.toLowerCase()))
.sort((a,b)=>sortCust==="Net_CB"?b.Net_CB-a.Net_CB:sortCust==="Pct"?(b.Rev>0?b.Pct:0)-(a.Rev>0?a.Pct:0):b.Rev-a.Rev);
}
// Aggregate RAW_CAT_CUST by customer for selected category
const map = {};
RAW_CAT_CUST.filter(d=>bMatch(d.Brand)&&categories.includes(d.Category)&&ALL_PERIODS.some(p=>p.year===d.Year&&p.idx>=lo&&p.idx<=hi)).forEach(d=>{
const k=`${d.Brand}|${d.Customer}`;
if(!map[k]) map[k]={Brand:d.Brand,Customer:d.Customer,Channel:d.Channel,Net_CB:0,Rev:0,Pct:0};
map[k].Net_CB+=d.Net_CB;
});
// pull annual rev from RAW_CUSTOMER
Object.values(map).forEach(r=>{
const rev = RAW_CUSTOMER.filter(d=>d.Brand===r.Brand&&d.Customer===r.Customer).reduce((s,d)=>s+d.Rev,0);
r.Rev = rev;
r.Pct = rev>0?r.Net_CB/rev*100:0;
});
return Object.values(map)
.filter(d=>custSearch===""||d.Customer.toLowerCase().includes(custSearch.toLowerCase()))
.sort((a,b)=>sortCust==="Net_CB"?b.Net_CB-a.Net_CB:sortCust==="Pct"?(b.Rev>0?b.Pct:0)-(a.Rev>0?a.Pct:0):b.Rev-a.Rev);
}, [brand,lo,hi,categories,custSearch,sortCust]);
// \u2500\u2500 CUSTOMER TRENDLINE \u2500\u2500
const custRevLookup = useMemo(() => {
// Annual rev keyed by Brand|Year|Customer
const lu={};
RAW_CUSTOMER.forEach(d=>{ lu[`${d.Brand}|${d.Year}|${d.Customer}`]=d.Rev; });
return lu;
}, []);
const custTrendData = useMemo(() => {
// Build buckets of monthly CB; then attach the annual rev for each brand+year bucket
// so Pct = (period CB) / (annual rev for that brand+year)
const rows = RAW_CUST_MONTHLY
.filter(d=>d.Customer===custTrendCust&&(custTrendBrand==="All"||d.Brand===custTrendBrand));
const map = {};
rows.forEach(d => {
const p = ALL_PERIODS.find(p=>p.year===d.Year&&p.month===d.Month);
if (!p || p.idxhi) return;
const bk = bucketKey(p, gran);
if (!map[bk]) map[bk] = {bKey:bk, sortKey:p.idx, Net_CB_HF:0, Net_CB_LM:0, years:{}};
else map[bk].sortKey = Math.min(map[bk].sortKey, p.idx);
map[bk][`Net_CB_${d.Brand}`] = (map[bk][`Net_CB_${d.Brand}`]||0) + (d.Net_CB||0);
// track which brand+years fall in this bucket (for rev lookup)
if (!map[bk].years[d.Brand]) map[bk].years[d.Brand] = new Set();
map[bk].years[d.Brand].add(d.Year);
});
return Object.values(map).sort((a,b)=>a.sortKey-b.sortKey).map(r => {
const revHF = [...(r.years.HF||[])].reduce((s,yr)=>s+(custRevLookup[`HF|${yr}|${custTrendCust}`]||0),0);
const revLM = [...(r.years.LM||[])].reduce((s,yr)=>s+(custRevLookup[`LM|${yr}|${custTrendCust}`]||0),0);
return {...r,
Rev_HF: revHF, Rev_LM: revLM,
Pct_HF: revHF>0 ? r.Net_CB_HF/revHF*100 : null,
Pct_LM: revLM>0 ? r.Net_CB_LM/revLM*100 : null,
};
});
}, [custTrendCust,custTrendBrand,lo,hi,gran,custRevLookup]);
const custList = useMemo(() => [...new Set(RAW_CUST_MONTHLY.map(d=>d.Customer))].sort(), []);
// -- CHANNEL BAR --
const chBarData = useMemo(() => {
const map={};
const _allCats = categories[0]==="All";
const src = _allCats
? RAW_CHANNEL.filter(d=>bMatch(d.Brand)&&ALL_PERIODS.some(p=>p.year===d.Year&&p.idx>=lo&&p.idx<=hi))
: RAW_CAT_CH.filter(d=>categories.includes(d.Category));
src.forEach(d=>{
const ch = d.Channel||d.channel;
if(!map[ch]) map[ch]={channel:ch,Net_CB:0};
map[ch].Net_CB+=d.Net_CB;
});
return Object.values(map).sort((a,b)=>b.Net_CB-a.Net_CB);
}, [brand,lo,hi,categories]);
// -- CHANNEL TRENDLINE --
const chRevLookup = useMemo(() => {
// Annual rev keyed by Brand|Year|Channel
const lu={};
RAW_CUSTOMER.forEach(d=>{ const k=`${d.Brand}|${d.Year}|${d.Channel}`; lu[k]=(lu[k]||0)+d.Rev; });
return lu;
}, []);
const chTrendData = useMemo(() => {
const rows = RAW_CH_MONTHLY
.filter(d=>d.Channel===chTrendCh&&(chTrendBrand==="All"||d.Brand===chTrendBrand));
const map = {};
rows.forEach(d => {
const p = ALL_PERIODS.find(p=>p.year===d.Year&&p.month===d.Month);
if (!p || p.idxhi) return;
const bk = bucketKey(p, gran);
if (!map[bk]) map[bk] = {bKey:bk, sortKey:p.idx, Net_CB_HF:0, Net_CB_LM:0, years:{}};
else map[bk].sortKey = Math.min(map[bk].sortKey, p.idx);
map[bk][`Net_CB_${d.Brand}`] = (map[bk][`Net_CB_${d.Brand}`]||0) + (d.Net_CB||0);
if (!map[bk].years[d.Brand]) map[bk].years[d.Brand] = new Set();
map[bk].years[d.Brand].add(d.Year);
});
return Object.values(map).sort((a,b)=>a.sortKey-b.sortKey).map(r => {
const revHF = [...(r.years.HF||[])].reduce((s,yr)=>s+(chRevLookup[`HF|${yr}|${chTrendCh}`]||0),0);
const revLM = [...(r.years.LM||[])].reduce((s,yr)=>s+(chRevLookup[`LM|${yr}|${chTrendCh}`]||0),0);
return {...r,
Rev_HF: revHF, Rev_LM: revLM,
Pct_HF: revHF>0 ? r.Net_CB_HF/revHF*100 : null,
Pct_LM: revLM>0 ? r.Net_CB_LM/revLM*100 : null,
};
});
}, [chTrendCh,chTrendBrand,lo,hi,gran,chRevLookup]);
// \u2500\u2500 HYPOTHESIS \u2500\u2500
const hypCustomers = useMemo(() =>
["All",...new Set(RAW_HYP.map(d=>d.Customer))].sort((a,b)=>a==="All"?-1:b==="All"?1:a.localeCompare(b))
, []);
const hypBkts = useMemo(() => {
const bm = b => hypBrand==="All"||b===hypBrand;
const cm = c => hypCustomer==="All"||c===hypCustomer;
const rows = RAW_HYP.filter(d=>bm(d.Brand)&&cm(d.Customer)&&periodInRange(d.Year,d.Month,lo,hi))
.map(d=>({...d, Rev: d.Lag_Rev||0}));
const map={};
rows.forEach(d=>{
const p=ALL_PERIODS.find(p=>p.year===d.Year&&p.month===d.Month);
if(!p) return;
const bk=bucketKey(p,gran);
if(!map[bk]) map[bk]={bKey:bk,sortKey:p.idx,Net_CB_HF:0,Net_CB_LM:0,Rev_HF:0,Rev_LM:0};
else map[bk].sortKey=Math.min(map[bk].sortKey,p.idx);
map[bk][`Net_CB_${d.Brand}`]=(map[bk][`Net_CB_${d.Brand}`]||0)+d.Net_CB;
if(d.Lag_Rev>0) map[bk][`Rev_${d.Brand}`]=(map[bk][`Rev_${d.Brand}`]||0)+d.Lag_Rev;
});
return Object.values(map)
.sort((a,b)=>a.sortKey-b.sortKey)
.map(r=>({...r,
Pct_HF: r.Rev_HF>0&&r.Net_CB_HF!=null ? r.Net_CB_HF/r.Rev_HF*100 : null,
Pct_LM: r.Rev_LM>0&&r.Net_CB_LM!=null ? r.Net_CB_LM/r.Rev_LM*100 : null,
}));
}, [hypBrand,hypCustomer,lo,hi,gran]);
const hypSummary = useMemo(() => {
const bm = b => hypBrand==="All"||b===hypBrand;
const cm = c => hypCustomer==="All"||c===hypCustomer;
const rows = RAW_HYP.filter(d=>bm(d.Brand)&&cm(d.Customer)&&periodInRange(d.Year,d.Month,lo,hi)&&d.Hyp_Pct!=null);
const map={};
rows.forEach(d=>{
const k=`${d.Brand}|${d.Customer}`;
if(!map[k]) map[k]={Brand:d.Brand,Customer:d.Customer,Net_CB:0,Lag_Rev:0};
map[k].Net_CB+=d.Net_CB;
map[k].Lag_Rev+=d.Lag_Rev;
});
return Object.values(map)
.map(r=>({...r, Hyp_Pct: r.Lag_Rev>0?r.Net_CB/r.Lag_Rev*100:null}))
.sort((a,b)=>b.Net_CB-a.Net_CB);
}, [hypBrand,hypCustomer,lo,hi]);
// Category filter bar
const catFilterBar = (
CATEGORY
toggleCat("All")} label="All"/>
{ALL_CATS.map(c=>(
toggleCat(c)} label={c} color={CAT_COLORS[c]}/>
))}
);
return (
{/* Header */}
ALPHA - CSC Reporting
setDark(d=>!d)} style={{padding:"4px 12px",borderRadius:20,fontSize:11,fontWeight:600,cursor:"pointer",border:"1.5px solid",borderColor:dark?"#475569":"#D1D5DB",background:dark?"#1E293B":"#fff",color:dark?"#94A3B8":"#374151",marginRight:8}}>{dark?"Light":"Dark"}
BRAND
{[["All","All"],["HF","H&F"],["LM","L&M"]].map(([v,l])=>
setBrand(v)} label={l}/>)}
{/* Date range + granularity */}
Date Range: {rangeLabel}
GROUP BY
{[["month","Month"],["quarter","Quarter"],["year","Year"]].map(([v,l])=>
setGran(v)} label={l}/>)}
{[0, Math.round(MAX_IDX/3), Math.round(MAX_IDX*2/3), MAX_IDX].map(idx=>(
{ALL_PERIODS[idx].month} {ALL_PERIODS[idx].year}
))}
{/* KPIs */}
2?"red":"green"}/>
kpiData.p25?"red":"green"}/>
{/* Tabs */}
{["perf_overview","perf_cuts","perf_callouts"].map((id,i)=>{
const labels=["📊 Perf: Overview","📊 Perf: Cuts $","📊 Perf: Supply"];
const on=tab===id;
return
setTab(id)} style={{padding:"7px 16px",borderRadius:"8px 8px 0 0",fontSize:13,fontWeight:600,cursor:"pointer",border:"1.5px solid",borderColor:on?"#2563EB":"#BFDBFE",borderBottom:on?`2px solid ${T.tabActive}`:"1.5px solid #BFDBFE",background:on?"#EFF6FF":"#DBEAFE",color:on?"#1D4ED8":"#3B82F6",marginRight:2,whiteSpace:"nowrap"}}>{labels[i]} ;
})}
{(()=>{const on=tab==="retailer_view"; return
setTab("retailer_view")} style={{padding:"7px 16px",borderRadius:"8px 8px 0 0",fontSize:13,fontWeight:600,cursor:"pointer",border:"1.5px solid",borderColor:on?"#7C3AED":"#DDD6FE",borderBottom:on?`2px solid ${T.tabActive}`:"1.5px solid #DDD6FE",background:on?"#F5F3FF":"#EDE9FE",color:on?"#6D28D9":"#8B5CF6",marginRight:2,whiteSpace:"nowrap",marginLeft:4,marginRight:4}}>🏪 Retailer Scorecard ;})()}
{[["trends","$ CB: Overview"],["customers","$ CB: Customer"],["channels","$ CB: Channel"],["recovery","$ CB: Revenue Recovery"],["askai","$ CB: Ask Me Anything"]].map(([id,label])=>{
const on=tab===id;
return
setTab(id)} style={{padding:"7px 16px",borderRadius:"8px 8px 0 0",fontSize:13,fontWeight:600,cursor:"pointer",border:"1.5px solid",borderColor:on?"#16A34A":"#BBF7D0",borderBottom:on?`2px solid ${T.tabActive}`:"1.5px solid #BBF7D0",background:on?"#F0FDF4":"#DCFCE7",color:on?"#15803D":"#22C55E",marginRight:2,whiteSpace:"nowrap"}}>{label} ;
})}
setTab("hypothesis")} style={{padding:"7px 16px",borderRadius:"8px 8px 0 0",fontSize:13,fontWeight:600,cursor:"pointer",border:"1.5px solid",borderColor:tab==="hypothesis"?"#D97706":T.border,borderBottom:tab==="hypothesis"?`2px solid ${T.tabActive}`:`1.5px solid ${T.border}`,background:tab==="hypothesis"?"#FFFBEB":T.tabInactive,color:tab==="hypothesis"?"#92400E":T.muted,marginRight:2,whiteSpace:"nowrap",marginLeft:8}}>$ CB: * Hypothesis Testing
{/* \u2550\u2550\u2550\u2550 TRENDS \u2550\u2550\u2550\u2550 */}
{tab==="trends" && (
Monthly Net Chargebacks
{metric==="$"
?
[fmt$(v),n]}/>
:
`${(v||0).toFixed(1)}%`} tick={{fontSize:10}} width={52}/>
[v!=null?`${v.toFixed(2)}%`:"\u2014",n]}/>
}
{/* Retailer category pies */}
{categories[0]==="All" && retailerPieData.length>0 && (
Category Mix by Retailer - % of Gross Revenue
{retailerPieData.map(({Customer,total,rev,slices})=>(
{Customer}
{fmt$(total)} total{rev>0?` (${(total/rev*100).toFixed(2)}% of GR)`:""}
{slices.map((s,i)=>(
|
))}
|
[`${(+v).toFixed(2)}%`,n]}/>
{slices.slice(0,3).map((s,i)=>(
{s.name}
{rev>0?`${s.pct.toFixed(2)}%`:fmt$(s.value)}
))}
))}
Pie size = category % of customer gross revenue. Retailers with no revenue data show $ amounts instead.
)}
)}
{/* \u2550\u2550\u2550\u2550 CUSTOMERS \u2550\u2550\u2550\u2550 */}
{tab==="customers" && (
{/* Trendline */}
Customer Trendline{categories[0]!=="All"?` - ${categories.join(", ")}`:""}
CUSTOMER
setCustTrendCust(e.target.value)}
style={{padding:"5px 10px",borderRadius:8,border:"1.5px solid #D1D5DB",fontSize:12,color:T.text3,background:T.card}}>
{custList.map(c=>{c} )}
BRAND
{[["All","All"],["HF","H&F"],["LM","L&M"]].map(([v,l])=>
setCustTrendBrand(v)} label={l}/>)}
{custTrendMetric==="%" && % = period CB \u00f7 annual revenue for that customer. Multi-year ranges sum both CB and rev.
}
{categories[0]!=="All" && Note: trendline shows all categories for selected customer; category filter applies to summary table below.
}
{/* Table controls */}
setCustSearch(e.target.value)}
style={{padding:"6px 11px",borderRadius:8,border:"1.5px solid #D1D5DB",fontSize:13,width:200,outline:"none"}}/>
SORT
{[["Net_CB","$ CB"],["Pct","% Rev"],["Rev","Revenue"]].map(([v,l])=>
setSortCust(v)} label={l}/>)}
{/* Bar */}
Top Customers by Net Chargebacks{categories[0]!=="All"?` (${categories.join(", ")})`:""}
[fmt$(v),"Net CB"]}/>
{custRows.slice(0,15).map((r,i)=>| )}
|
{/* Table */}
{["Brand","Customer","Channel","Net CB ($)","Revenue","CB % Rev"].map(h=>(
{h}
))}
{custRows.slice(0,50).map((r,i)=>{
const flag = r.Rev>0&&r.Pct>3;
return (
{BLABEL[r.Brand]}
{r.Customer}
{r.Channel}
{fmt$(r.Net_CB)}
{r.Rev>0?fmt$(r.Rev):"\u2014"}
{r.Rev>0?fmtP(r.Pct):"\u2014"}{flag?" \u26a0":""}
);
})}
{custRows.length>50 &&
Showing 50 of {custRows.length}
}
)}
{/* \u2550\u2550\u2550\u2550 CHANNELS \u2550\u2550\u2550\u2550 */}
{tab==="channels" && (
{/* Trendline */}
Channel Trendline{categories[0]!=="All"?` - ${categories.join(", ")}`:""}
CHANNEL
setChTrendCh(e.target.value)}
style={{padding:"5px 10px",borderRadius:8,border:"1.5px solid #D1D5DB",fontSize:12,color:T.text3,background:T.card}}>
{ALL_CHANNELS.map(c=>{c} )}
BRAND
{[["All","All"],["HF","H&F"],["LM","L&M"]].map(([v,l])=>
setChTrendBrand(v)} label={l}/>)}
{chTrendMetric==="%" && % = period CB \u00f7 annual revenue for that channel. Multi-year ranges sum both CB and rev.
}
{/* Bar + table */}
Net Chargebacks by Channel{categories[0]!=="All"?` - ${categories.join(", ")}`:""}
[fmt$(v),"Net CB"]}/>
{chBarData.map((r,i)=>| )}
|
Channel \u00d7 Category Breakdown
Channel
Category
Net CB
{RAW_CAT_CH
.filter(r=>categories[0]==="All"||categories.includes(r.Category))
.sort((a,b)=>b.Net_CB-a.Net_CB)
.slice(0,40)
.map((r,i)=>(
{r.Channel}
{r.Category}
{fmt$(r.Net_CB)}
))}
)}
{/* \u2550\u2550\u2550\u2550 REVENUE RECOVERY \u2550\u2550\u2550\u2550 */}
{tab==="recovery" && (() => {
const brandR = brand==="HF"?"H&F":brand==="LM"?"L&M":brand;
const bMatchR = b => brand==="All" || b===brandR;
const inRangeR = (yr, mo) => { const p=ALL_PERIODS.find(p=>p.year===yr&&p.month===mo); return p&&p.idx>=lo&&p.idx<=hi; };
const monthlyRows = RAW_RECOVERY_MONTHLY.filter(d=>bMatchR(d.Brand)&&inRangeR(d.Year,d.Month));
const trendMap={};
monthlyRows.forEach(d=>{
const p=ALL_PERIODS.find(p=>p.year===d.Year&&p.month===d.Month);
if(!p) return;
const bk=bucketKey(p,gran);
if(!trendMap[bk]) trendMap[bk]={bKey:bk,sortKey:p.idx,Gross_CB:0,Reversals:0};
trendMap[bk].Gross_CB+=d.Gross_CB; trendMap[bk].Reversals+=d.Reversals;
});
const trendRows=Object.values(trendMap).sort((a,b)=>a.sortKey-b.sortKey).map(r=>({...r,
Gross_CB_abs:Math.abs(r.Gross_CB),
Recovery_Rate:r.Gross_CB!==0?r.Reversals/Math.abs(r.Gross_CB)*100:0,
}));
const catMap={};
RAW_RECOVERY_CAT.filter(d=>bMatchR(d.Brand)&&inRangeR(d.Year,d.Month)).forEach(d=>{
if(!catMap[d.Category]) catMap[d.Category]={Category:d.Category,Gross_CB:0,Reversals:0};
catMap[d.Category].Gross_CB+=d.Gross_CB; catMap[d.Category].Reversals+=d.Reversals;
});
const catRows=Object.values(catMap).map(r=>({...r,
Gross_CB_abs:Math.abs(r.Gross_CB),Net_CB:r.Gross_CB+r.Reversals,
Recovery_Rate:r.Gross_CB!==0?r.Reversals/Math.abs(r.Gross_CB)*100:0,
})).sort((a,b)=>b.Gross_CB_abs-a.Gross_CB_abs);
const custMap={};
RAW_RECOVERY_CUST.filter(d=>bMatchR(d.Brand)&&ALL_PERIODS.some(p=>p.year===d.Year&&p.idx>=lo&&p.idx<=hi)).forEach(d=>{
const k=`${d.Brand}|${d.Customer}`;
if(!custMap[k]) custMap[k]={Brand:d.Brand,Customer:d.Customer,Gross_CB:0,Reversals:0};
custMap[k].Gross_CB+=d.Gross_CB; custMap[k].Reversals+=d.Reversals;
});
const custRows2=Object.values(custMap).map(r=>({...r,
Gross_CB_abs:Math.abs(r.Gross_CB),Net_CB:r.Gross_CB+r.Reversals,
Recovery_Rate:r.Gross_CB!==0?r.Reversals/Math.abs(r.Gross_CB)*100:0,
})).sort((a,b)=>b.Gross_CB_abs-a.Gross_CB_abs);
const totalGross=Math.abs(monthlyRows.reduce((s,d)=>s+d.Gross_CB,0));
const totalRev=monthlyRows.reduce((s,d)=>s+d.Reversals,0);
const totalNet=monthlyRows.reduce((s,d)=>s+d.Net_CB,0);
const overallRate=totalGross>0?totalRev/totalGross*100:0;
const rateColor=r=>r>=50?"#16A34A":r>=25?"#D97706":"#DC2626";
return (
BRAND
{[["All","All"],["HF","H&F"],["LM","L&M"]].map(([v,l])=>
setBrand(v)} label={l}/>)}
{[{label:"Gross Chargebacks",value:fmt$(totalGross),sub:"before reversals",color:"#DC2626"},
{label:"Total Reversals",value:fmt$(totalRev),sub:"recovered",color:"#16A34A"},
{label:"Net Chargebacks",value:fmt$(Math.abs(totalNet)),sub:"after reversals",color:"#2563EB"},
{label:"Recovery Rate",value:`${overallRate.toFixed(1)}%`,sub:"reversals / gross CB",color:rateColor(overallRate)},
].map(({label,value,sub,color})=>(
))}
Gross Chargebacks vs Reversals
[fmt$(v),n]}/>
Recovery Rate % by Period
`${v.toFixed(0)}%`} tick={{fontSize:10}} width={44} domain={[0,110]}/>
[`${v.toFixed(1)}%`,"Recovery Rate"]}/>
By Category
{["Category","Gross CB","Reversals","Net CB","Recovery %"].map(h=>(
{h}
))}
{catRows.map((r,i)=>(
{r.Category}
{fmt$(r.Gross_CB_abs)}
{fmt$(r.Reversals)}
{fmt$(Math.abs(r.Net_CB))}
{r.Recovery_Rate.toFixed(1)}%
))}
By Customer
{["Brand","Customer","Gross CB","Reversals","Net CB","Recovery %"].map(h=>(
{h}
))}
{custRows2.map((r,i)=>(
{r.Brand}
{r.Customer}
{fmt$(r.Gross_CB_abs)}
{fmt$(r.Reversals)}
{fmt$(Math.abs(r.Net_CB))}
{r.Recovery_Rate.toFixed(1)}%
))}
);
})()}
{/* \u2550\u2550\u2550\u2550 HYPOTHESIS \u2550\u2550\u2550\u2550 */}
{tab==="hypothesis" && (
Rolling Lag Hypothesis
Each month's chargeback $ is divided by revenue from 3 months prior (M\u22123) to test whether CBs correlate with a lagged billing cycle. Revenue is pulled at the individual customer \u00d7 brand \u00d7 month level from the FPA P&L.
CUSTOMER
setHypCustomer(e.target.value)}
style={{padding:"5px 10px",borderRadius:8,border:"1.5px solid #D1D5DB",fontSize:12,color:T.text3,background:T.card}}>
{hypCustomers.map(c=>{c} )}
BRAND
{[["All","All"],["HF","H&F"],["LM","L&M"]].map(([v,l])=>
setHypBrand(v)} label={l}/>)}
CB % of 3-Month Lagged Revenue
v!=null?`${v.toFixed(1)}%`:"\u2014"} tick={{fontSize:10}} width={52}/>
[v!=null?`${v.toFixed(2)}%`:"\u2014",n]}/>
Net CB $ vs 3-Month Lagged Revenue
[fmt$(v),n]}/>
Bars = CB $ (left axis). Dashed lines = 3-month lagged revenue (right axis).
Summary by Customer
{["Brand","Customer","Net CB ($)","Lagged Rev (M\u22123)","CB % Lag Rev","Signal"].map(h=>(
{h}
))}
{hypSummary.map((r,i)=>{
const pct = r.Hyp_Pct;
const isHi = pct!=null && pct>3;
const isMid = pct!=null && pct>1.5 && pct<=3;
const isNeg = r.Net_CB < 0;
const signal = isNeg?"\u2713 Reversal":isHi?"\u26a0 Elevated":isMid?"\u25b3 Monitor":"\u2713 Normal";
const sigColor = isNeg?"#16A34A":isHi?"#DC2626":isMid?"#D97706":"#16A34A";
return (
{BLABEL[r.Brand]}
{r.Customer}
{fmt$(r.Net_CB)}
{r.Lag_Rev>0?fmt$(r.Lag_Rev):"\u2014"}
{pct!=null?fmtP(pct):"\u2014"}
{signal}
);
})}
Lagged rev = cumulative M\u22123 revenue. \u26a0 Elevated = lag % > 3%. \u25b3 Monitor = 1.5\u20133%.
)}
{tab==="askai" && (
)}
{/* ══════════════ PERF: OVERVIEW TAB (from CSC Performance Dashboard) ══════════════ */}
{tab==="perf_overview" && (
{/* Header */}
CSC Performance Dashboard
Global product availability · Actualized data · Week of June 22, 2026
{/* KPI row */}
{[
{label:"Actualized In-Full", value:"96.0%", cls:"warn", sub:"$612K in cuts · wk Jun 15"},
{label:"Actualized On-Time", value:"90.1%", cls:"bad", sub:"Up from 83.0% prior wk"},
{label:"Actualized OTIF", value:"86.5%", cls:"bad", sub:"Up from 80.8% prior wk"},
{label:"Jun 22 Projected In-Full", value:"94.9%", cls:"bad", sub:"$467K projected cuts"},
].map(k=>(
{k.label}
{k.value}
{k.sub}
))}
{/* Section: Retail */}
{/* Retail OTIF chart */}
Retail OTIF — actualized weekly % (latest actualized: wk Jun 15, 2026)
{[["#3B82F6","In-Full %"],["#10B981","On-Time %"],["#EF4444","OTIF %"]].map(([c,l])=>(
{l}
))}
v+"%"} width={38}/>
[v!=null?v.toFixed(1)+"%":"N/A",n]}/>
{/* In-Full by channel chart */}
In-Full % by channel — actualized YTD
{[["#3B82F6","NA Retail"],["#10B981","INTL Retail"],["#F59E0B","AMZ US H&F 1P"],["#8B5CF6","AMZ UK/EU 1P"]].map(([c,l])=>(
{l}
))}
v+"%"} width={38}/>
[v!=null?v.toFixed(1)+"%":"N/A",n]}/>
⚡ Amazon US H&F 1P dips to 59.9% (wk Apr 13) and 72% (wk Apr 6) were Amazon ordering anomalies, not supply issues.
{/* On-Time by channel tiles */}
On-Time % by channel — week of Jun 15, 2026
{[
{n:"Target", v:100,cls:"good"},{n:"Walmart", v:89, cls:"warn"},
{n:"Drug & Dollar", v:89, cls:"warn"}, {n:"Digital", v:100,cls:"good"},
{n:"Club", v:89, cls:"warn"},{n:"International", v:100,cls:"good"},
{n:"Canada Prepaid", v:85, cls:"warn"}, {n:"Grocery", v:76, cls:"warn"},
{n:"Specialty", v:80, cls:"warn"},
].map(({n,v,cls})=>(
⚡ On-Time recovered to 90.1% (wk Jun 15), up from 83.0% the prior week. Performance was pressured by carrier issues at RJW, with Grocery (76%) and Walmart (89%) the most impacted channels. We have escalated the issue to multiple levels of RJW leadership and are actively working toward a resolution.
{/* In-Stock by retailer */}
In-Stock % by retailer — YTD (Jan 5 – Jun 8, 2026)
{[["#3B82F6","Target"],["#10B981","Walmart"],["#F97316","D&D"],["#F59E0B","L&M 3P AMZ"],["#8B5CF6","INTL Retail"]].map(([c,l])=>(
{l}
))}
v+"%"} width={38}/>
[v!=null?v.toFixed(1)+"%":"N/A",n]}/>
{/* Section: Shopify/DTC */}
DTC Perfect Order Rate — actualized by brand
{[["#3B82F6","Harry's"],["#8B5CF6","Flamingo"],["#10B981","Lume"],["#F97316","Mando"]].map(([c,l])=>(
{l}
))}
v+"%"} width={38}/>
[v.toFixed(1)+"%",n]}/>
⚡ Jun 8 POR is projected: Harry's 92.5%, Flamingo 91.9%, Lume 83.2%, Mando 81.6% — reflecting a sharp rebound from the May 25 Memorial Day dip. L&M recovery driven by fulfillment returning to SLA (0.7 business days) and OTD tightening to 4.5 days.
)}
{/* ══════════════ PERF: CUTS $ TAB ══════════════ */}
{tab==="perf_cuts" && (
{/* Summary cards */}
{[
{label:"YTD Cut $ (Feb 2 – Jun 22)",val:"$4.8M",sub:"21 weeks of actuals · all channels",note:"Lume/Mando body wash and solid deo supply constraints are the dominant driver since mid-March. Jun 8 was the peak week at $548K.",dotColor:"#DC2626"},
{label:"Jun 22 Week (Latest)",val:"$285K",sub:"Week of Jun 22 · partial data",note:"Driven by Lume Body Wash Lavender ($116K) and Unscented ($89K) plus Lume Solid Deo Powder ($78K). Walmart and Target remain primary affected customers.",dotColor:"#D97706"},
{label:"Jun 8 Week (Peak)",val:"$548K",sub:"Week of Jun 8 · highest week YTD",note:"Peak driven by Lume/Mando body wash micro failures plus solid deo supply constraints. Walmart US ($221K) and Target ($163K) bore the majority of cuts.",dotColor:"#DC2626"},
].map(c=>(
{c.label}
{c.val}
{c.sub}
{c.note}
))}
{/* Cut $ bar chart — full YTD */}
NA Retail cut $ by week — Feb 2 through Jun 22, 2026
{[["#10B981","<$50K — low"],["#3B82F6","$50–200K — elevated"],["#EF4444","$200K+ — high"]].map(([c,l])=>(
{l}
))}
"$"+v+"K"} width={52}/>
["$"+v+"K","Cut $"]}/>
{[7,45.1,107.6,235.2,185.4,255.4,437.0,60.4,56.1,66.8,164.6,137.4,26.6,365.0,384.4,318.4,226.0,436.7,548.3,470.1,284.9].map((v,i)=>(
| =200?"#EF4444":v>=50?"#3B82F6":"#10B981"}/>
))}
|
⚡ Cuts were contained through mid-Feb (SKU transitions + minor supply), then spiked sharply in Feb 23–Mar 16 ($893K, 3 wks) driven by Lume Body Wash Unscented and Mando Cedar Grove supply constraints. Apr 27 dipped to $27K as replenishments landed. Cuts re-accelerated in May–Jun on body wash micro failures and broader Lume/Mando solid deo constraints, peaking at $548K (Jun 8).
{/* Period context table */}
Cut $ context — key drivers by period
Period
Cut $
Primary Drivers
{[
{p:"Feb 2–16",v:"$160K",vc:"#3B82F6",d:"Mando AP Solid Cedar Grove R2 at Target ($52K) + Lume Body Wash Unscented at Walmart ($44K) + SKU transitions (Dolphin Handle Lilac, Truman Pack CAN, Craft Pack Gunmetal)"},
{p:"Feb 23 – Mar 2",v:"$421K",vc:"#EF4444",d:"Moisture+ Refill 8CT at Target ($75K) + Lume Body Wash Unscented supply ramp ($71K) + H'26 Body Wash Wildlands at Walmart + Walmart Canada Truman Pack CAN transition"},
{p:"Mar 9–16",v:"$692K",vc:"#EF4444",d:"Lume Body Wash Unscented at Walmart ($199K, peak supply constraint) + Mando Cedar Grove R2 ($56K) + Walmart Canada Truman Pack CAN transition ($178K)"},
{p:"Mar 23 – Apr 27",v:"$512K",vc:"#EF4444",d:"Lume Deo Spray Soft Powder at Target ($158K, VAS project) + H'25 Refill G2++ 12CT Billboard ($104K) + Walgreens Lume/Mando deo ramp"},
{p:"May 4–25",v:"$1,294K",vc:"#EF4444",d:"Solid Deo 2.6oz Unscented ($142K) + Lume Body Wash Unscented ($141K) + KeHE Lume/Mando solid deo ($119K) + Target body wash + CVS solid deo cuts"},
{p:"Jun 1–22",v:"$1,740K",vc:"#EF4444",d:"Lume Body Wash 7oz Unscented ($347K), Lavender ($235K), Tangerine ($179K) — micro failure production hold. Solid Deo Powder ($132K). Walmart US ($668K) + Target ($587K) primary customers."},
].map((r,i)=>(
{r.p}
{r.v}
{r.d}
))}
{/* Top SKUs YTD */}
Top cut SKUs — YTD (Feb 2 – Jun 22, 2026)
SKU Description
Brand
YTD Cut $
Root Cause
{[
{sku:"Body Wash 7oz Tube Unscented F", brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", cut:802367, reason:"Micro failure production hold — peak supply constraint Mar–Jun"},
{sku:"Solid Deo 2.6oz Stick Powder", brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", cut:325699, reason:"Raw material delay — supply constrained May–Aug"},
{sku:"F '25 Moisture+ Pack Fig US RTL", brand:"Flamingo", bdg:"#FCE7F3",bc:"#9D174D", cut:308581, reason:"SKU hold / rework; VAS project ongoing"},
{sku:"Body Wash 7oz Tube Tangerine F", brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", cut:282148, reason:"Micro failure production hold — supply constrained Jun–Aug"},
{sku:"Body Wash 7oz Tube Lavender F", brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", cut:234810, reason:"Micro failure production hold — supply constrained Jun–Aug"},
{sku:"H '25 Refill G2++ 12CT Billboard US RTL", brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", cut:220418, reason:"Inventory availability — high demand / replen timing"},
{sku:"Lume Deo Spray 3.6oz Soft Powder TGT OL", brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", cut:212481, reason:"VAS project at Target — label rework delay"},
{sku:"H '26 Body Wash Wildlands 18oz US", brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", cut:185034, reason:"Raw material delay — production delay late Feb/Mar"},
{sku:"Deo Cream 2.2oz Stick Powder", brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", cut:184470, reason:"Supply constrained — orders past due from supplier"},
{sku:"Mando AP Solid 2.6oz Cedar Grove R2", brand:"Mando", bdg:"#EDE9FE",bc:"#5B21B6", cut:174390, reason:"Supply constraint — Target Feb–Mar; constrained through 8/31"},
{sku:"Solid Deo 2.6oz Stick Unscented", brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", cut:141546, reason:"Raw material delay — supply constrained through 8/17"},
{sku:"Mando Solid Deo 2.6oz Mt. Fuji", brand:"Mando", bdg:"#EDE9FE",bc:"#5B21B6", cut:137924, reason:"Supply constraint — constrained; units delivering wk 6/15"},
].map((r,i)=>(
{r.sku}
{r.brand}
=200000?"#DC2626":r.cut>=80000?"#D97706":T.text1}}>${r.cut.toLocaleString()}
{r.reason}
))}
{/* Stacked bar by sold-to party */}
Cut $ by sold-to party — weekly (Feb 2 – Jun 22)
{(()=>{
const stpParties=[
{name:"Walmart US", color:"#10B981", data:[527,13895,42267,53652,68826,127583,186464,26923,14810,22384,67553,11948,11764,195283,126064,96531,80824,119635,220765,237144,90191]},
{name:"Target", color:"#3B82F6", data:[0,552,49934,111583,39913,72612,73330,23559,9915,37518,74458,110479,12903,111865,198719,54904,0,198212,162972,149193,76968]},
{name:"CVS", color:"#F97316", data:[0,0,0,6212,3662,469,5493,0,13332,0,0,0,0,0,0,31094,21315,43331,0,0,61396]},
{name:"KeHE", color:"#F59E0B", data:[0,6088,0,0,0,9333,0,0,0,0,0,0,0,0,36517,35332,47384,7596,12366,0,0]},
{name:"Walgreens", color:"#8B5CF6", data:[0,0,0,0,0,0,0,1462,0,1462,12710,12660,0,10952,238,19210,0,9764,29935,15904,22185]},
{name:"Kroger", color:"#60A5FA", data:[0,0,1218,16078,2857,0,0,0,0,0,0,0,0,1190,7500,21594,21565,18007,20572,5952,1760]},
{name:"Meijer", color:"#14B8A6", data:[0,6962,0,3225,4629,3186,707,6987,4408,4750,3326,2289,1656,6928,5858,7621,6456,12753,3537,15165,6453]},
{name:"Walmart Canada", color:"#A78BFA", data:[0,2889,6403,7223,15485,34488,144257,0,0,0,0,0,0,2593,0,27,0,54,52,107,53]},
{name:"Other", color:"#9CA3AF", data:[6475,14743,7793,37259,50018,7720,26722,1437,13597,731,6577,0,238,36231,9529,52046,48501,27302,98101,46608,25934]},
];
const weeks=["2/2","2/9","2/16","2/23","3/2","3/9","3/16","3/23","3/30","4/6","4/13","4/20","4/27","5/4","5/11","5/18","5/25","6/1","6/8","6/15","6/22"];
const chartData=weeks.map((w,i)=>{
const obj={w};
stpParties.forEach(p=>{obj[p.name]=p.data[i]||0;});
return obj;
});
const grandTotal=stpParties.reduce((s,p)=>s+p.data.reduce((a,b)=>a+b,0),0);
return (
{stpParties.map(p=>(
{p.name}
))}
"$"+Math.round(v/1000)+"K"} width={52}/>
v>0?["$"+Math.round(v).toLocaleString(),n]:null} filterNull/>
{stpParties.map(p=>(
))}
Cut $ by sold-to party — YTD totals (Feb 2 – Jun 22)
Sold-To Party
YTD Cut $
Share
Bar
{stpParties.map((p,i)=>{
const tot=p.data.reduce((a,b)=>a+b,0);
const pct=(tot/grandTotal*100).toFixed(1);
const sparkW=Math.min(100,(tot/stpParties.reduce((mx,pp)=>Math.max(mx,pp.data.reduce((a,b)=>a+b,0)),0))*100);
const color=tot>=500000?"#DC2626":tot>=100000?"#D97706":T.text1;
return (
{p.name}
${Math.round(tot).toLocaleString()}
{pct}%
);
})}
⚡ Walmart US ($1.8M, 38%) and Target ($1.6M, 33%) account for 71% of YTD cuts. Both are downstream of the same Lume body wash and solid deo supply constraints. CVS ($186K), KeHE ($155K), and Walgreens ($136K) reflect the Drug & Dollar channel impact of the same SKU constraints.
);
})()}
)}
{tab==="perf_callouts" && (
Active supply callouts — week of June 22, 2026
45 active items across Harry's, Flamingo, Lume, and Mando
Brand
Risk
SKU / Issue
ETA / Notes
{[
{brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", risk:"High", rc:"#DC2626", sku:"H'26 2-in-1 Shampoo Wildlands 14oz US", notes:"Raw material delay in April led to production delay. Supplier resumed production; 33K ETA 6/17.", eta:"ETA 6/17"},
{brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", risk:"High", rc:"#DC2626", sku:"H'26 Shave Cream 6oz Canada Retail", notes:"ISM transfer wiped majority of inventory. Cuts expected 5/25–7/6.", eta:"25K ETA 7/10"},
{brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", risk:"Medium", rc:"#D97706", sku:"H Face Lotion 1.7oz 2CT TGT Retail", notes:"VAS kicked off; RJW working on kitting. ETA TBD.", eta:"TBD"},
{brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", risk:"Medium", rc:"#D97706", sku:"H'25 Truman Value Pack G2++ Ember RTL", notes:"Not expecting cuts but monitoring production and shipment delays.", eta:"ETA 6/29"},
{brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", risk:"Medium", rc:"#D97706", sku:"H'25 Shave Cream 2oz US Amazon", notes:"Overperformance led to OOS on AMZ. Next production ongoing.", eta:"25K ETA 7/1"},
{brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", risk:"Medium", rc:"#D97706", sku:"H'25 Shave Cream 3.4oz CAN DTC", notes:"Included in allergen IL update under development. May need to expand production.", eta:"TBD"},
{brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", risk:"Low", rc:"#059669", sku:"H'25 Hair Texturizing Putty 2.5oz CAN Retail", notes:"10K ETA RJW.", eta:"ETA 6/29"},
{brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", risk:"Low", rc:"#059669", sku:"H'25 Truman Pack G2++ Ember RTL", notes:"50K inbound delayed to 6/27; partial cuts Monday due to receiving.", eta:"ETA 6/29"},
{brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", risk:"Low", rc:"#059669", sku:"H'25 Truman Pack G2++ Sage RTL", notes:"Production delayed 3 weeks from China; cartridge shortage. Using alternative supplier.", eta:"ETA 7/13"},
{brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", risk:"Low", rc:"#059669", sku:"H'26 Eye Cream 0.5oz US All Channel", notes:"Inbound arrived to RJW 6/24.", eta:"Available 6/24"},
{brand:"Harry's", bdg:"#DBEAFE",bc:"#1D4ED8", risk:"Low", rc:"#059669", sku:"H'25 Hair Cream 5.1oz US Amazon", notes:"Back in stock at retail.", eta:"Available 6/15"},
{brand:"Flamingo", bdg:"#FCE7F3",bc:"#9D174D", risk:"High", rc:"#DC2626", sku:"F'25 Moisture+ Pack Fig US RTL", notes:"~12.8K units rework to be complete by 6/25; 20K units inbound ETA wk 7/13.", eta:"Ongoing through 7/13"},
{brand:"Flamingo", bdg:"#FCE7F3",bc:"#9D174D", risk:"High", rc:"#DC2626", sku:"F'26 Handle Pink US RTL 1CT", notes:"Airshipping 40 pallets June delivery (46,400 units). Likely cutting 2–3 wks in July/August. Additional production ~30 pallets for arrival, may not need due to ISM.", eta:"8/3*"},
{brand:"Flamingo", bdg:"#FCE7F3",bc:"#9D174D", risk:"High", rc:"#DC2626", sku:"F Body Depilatory 200ML All Channel", notes:"Weekly inbounds of ~60,000 units arriving 6/29.", eta:"ETA 6/29"},
{brand:"Flamingo", bdg:"#FCE7F3",bc:"#9D174D", risk:"Medium", rc:"#D97706", sku:"F'8CT Cartridge Pack CAN Retail", notes:"Inbound of 3,840 units received. Shoppers demand not in Beacon — risk of partial OOS.", eta:"ETA 6/25"},
{brand:"Flamingo", bdg:"#FCE7F3",bc:"#9D174D", risk:"Medium", rc:"#D97706", sku:"F' Recovery Serum 1.7floz US All Channel", notes:"Inbound tracking towards 8/15; demand increases driven by TikTok.", eta:"Inbound 8/15"},
{brand:"Flamingo", bdg:"#FCE7F3",bc:"#9D174D", risk:"Medium", rc:"#D97706", sku:"F' Shower Holder Premium DTC Digital", notes:"Inbound arriving.", eta:"ETA 7/20"},
{brand:"Flamingo", bdg:"#FCE7F3",bc:"#9D174D", risk:"Low", rc:"#059669", sku:"F'26 Travel Razor Pack US Retail", notes:"Golden SKU. Production ongoing. No cuts projected.", eta:"Cuts not projected"},
{brand:"Flamingo", bdg:"#FCE7F3",bc:"#9D174D", risk:"Low", rc:"#059669", sku:"F' Shave Gel 1.0oz US Retail", notes:"No real risk. Leaving on list for visibility through end of year.", eta:"See notes"},
{brand:"Mando", bdg:"#EDE9FE",bc:"#5B21B6", risk:"High", rc:"#DC2626", sku:"Mando Sweat Control Solid 2.6oz Mt. Fuji DTC+AMZ", notes:"OOS across the network.", eta:"8/31"},
{brand:"Mando", bdg:"#EDE9FE",bc:"#5B21B6", risk:"High", rc:"#DC2626", sku:"Mando AP Solid 2.6oz Clover Woods R2 All Channel", notes:"Constrained across the network.", eta:"8/31"},
{brand:"Mando", bdg:"#EDE9FE",bc:"#5B21B6", risk:"High", rc:"#DC2626", sku:"Mando AP Solid 2.6oz Mt. Fuji R2 Amazon", notes:"Constrained across the network.", eta:"TBD"},
{brand:"Mando", bdg:"#EDE9FE",bc:"#5B21B6", risk:"High", rc:"#DC2626", sku:"Mando Body Wash 8.5oz Pro Sport DTC+AMZ", notes:"Production in trial after new cleaning/sanitization process approved. Production should resume shortly.", eta:"8/30"},
{brand:"Mando", bdg:"#EDE9FE",bc:"#5B21B6", risk:"High", rc:"#DC2626", sku:"Mando Solid Deo 2.6oz Cedar All Channel", notes:"Units delivering to DCs wk 6/15.", eta:"6/19"},
{brand:"Mando", bdg:"#EDE9FE",bc:"#5B21B6", risk:"High", rc:"#DC2626", sku:"Mando Solid Deo 2.6oz Bourbon All Channel", notes:"Constrained through 8/31. Channel allocation in place.", eta:"8/31"},
{brand:"Mando", bdg:"#EDE9FE",bc:"#5B21B6", risk:"Medium", rc:"#D97706", sku:"Mando Solid Deo 2.6oz Clover All Channel", notes:"Constrained through 8/31.", eta:"8/31"},
{brand:"Mando", bdg:"#EDE9FE",bc:"#5B21B6", risk:"Low", rc:"#059669", sku:"Mando Solid Deo 2.6oz Mt. Fuji All Channel", notes:"Units delivering to DCs wk 6/15.", eta:"8/31"},
{brand:"Mando", bdg:"#EDE9FE",bc:"#5B21B6", risk:"Low", rc:"#059669", sku:"Mando Deo Cream 3.0oz Tube Mt. Fuji Amazon", notes:"Constrained.", eta:"TBD"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Lume AP Solid 2.6oz Fresh Spring R2 All Channel", notes:"Constrained through 8/31. Channel allocation in place.", eta:"8/31"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Lume AP Solid 2.6oz Vanilla R2 All Channel", notes:"Constrained through 8/31. Channel allocation in place.", eta:"8/31"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Lume Sweat Cream Tube 3.0oz Tangerine DTC+AMZ", notes:"Constraint from supplier — orders 2 months past due.", eta:"7/20"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Lume Sweat Cream Tube 3.0oz Powder DTC+AMZ", notes:"Constraint from supplier — orders 2 months past due.", eta:"7/20"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Body Wash 7oz Tube Tangerine/Unscented/Lavender Retail", notes:"Production in trial after new cleaning/sanitization process; 22K units should deliver 6/26.", eta:"7/15–7/30"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Body Wash 8.5oz Tube Unscented/Lavender/Tangerine DTC+AMZ", notes:"Production in trial after new cleaning/sanitization process approved.", eta:"7/22–7/30"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Solid Deo 2.6oz Minted All Channel", notes:"Constrained through August. Channel allocation in place.", eta:"8/31"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Solid Deo 2.6oz Powder All Channel", notes:"Constrained through August. Channel allocation in place.", eta:"8/17"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Lume Solid Deo 0.5oz Mini Stick Powder Retail", notes:"Units delivered to RJW; still constrained to supply.", eta:"7/20"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Solid Deo 2.6oz Alpine DTC+AMZ", notes:"Constrained through 8/31.", eta:"8/31"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Solid Deo 2.6oz Unscented All Channel", notes:"Constrained through 8/17. Channel allocation in place.", eta:"8/17"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Solid Deo 2.6oz Vanilla Bliss All Channel", notes:"Constrained through 8/17. Channel allocation in place.", eta:"8/17"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Solid Deo 2.6oz Coconut All Channel", notes:"Constrained through 8/17. Channel allocation in place.", eta:"8/17"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Solid Deo 0.5oz Mini Stick Tangerine All Channel", notes:"Constrained through 8/31.", eta:"8/31"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Deo Cream 2.2oz Vanilla Bliss DTC+AMZ", notes:"Currently OOS; production scheduled 6/23.", eta:"6/23"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Deo Cream 3.0oz Powder All Channel", notes:"Currently OOS.", eta:"6/22"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Deo Cream 3oz Peony Retail + Amazon", notes:"Will transfer inventory from UPS.", eta:"7/15"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Deo Cream 2.2oz Powder All Channel", notes:"15K delivered 6/17. Additional 34K units running.", eta:"7/15"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"High", rc:"#DC2626", sku:"Deo Cream 3oz Coconut / Unscented Amazon", notes:"Constrained.", eta:"TBD"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"Medium", rc:"#D97706", sku:"Body Wash 1.5oz Mini Lavender/Peony DTC+AMZ", notes:"Production in trial after new cleaning/sanitization process approved; 25K ETA 7/20.", eta:"7/20"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"Medium", rc:"#D97706", sku:"Solid Deo 2.6oz Tangerine All Channel", notes:"Constrained through 8/17. Channel allocation in place.", eta:"8/17"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"Medium", rc:"#D97706", sku:"Solid Deo 2.6oz Lavender All Channel", notes:"Constrained through 8/17. Channel allocation in place.", eta:"8/17"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"Medium", rc:"#D97706", sku:"Solid Deo 2.6oz Peony All Channel", notes:"Constrained through 8/31. Channel allocation in place.", eta:"8/31"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"Medium", rc:"#D97706", sku:"Deo Cream 2.2oz Coconut/Lavender All Channel", notes:"Inbounding 6/18–6/29.", eta:"6/18–6/29"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"Medium", rc:"#D97706", sku:"Deo Cream 2.2oz Tube Unscented PC Retail", notes:"12K inbound.", eta:"6/22"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"Medium", rc:"#D97706", sku:"Deo Cream 3oz Tangerine DTC+AMZ", notes:"35K units releasing over the next replenishment order.", eta:"8/15"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"Medium", rc:"#D97706", sku:"Deo Cream 0.5oz Mini Vanilla Bliss Amazon", notes:"Constrained.", eta:"TBD"},
{brand:"Lume", bdg:"#D1FAE5",bc:"#065F46", risk:"Low", rc:"#059669", sku:"Lume Deo Spray 3.6oz Unscented R1 Retail", notes:"20K replen arriving wk of 6/29.", eta:"6/30"},
].map((r,i)=>(
{r.brand}
{r.risk}
{r.sku}
{r.notes}
{r.eta}
))}
)}
{/* ══════════════ RETAILER VIEW TAB ══════════════ */}
{tab==="retailer_view" &&
}
{false && (()=>{
const ALL_RETAILERS = [
"Target","Walmart","Walmart Canada","Amazon","Costco","Sam's Club",
"CVS","Walgreens","Kroger","Albertsons","Meijer","Dollar General",
"Publix","H-E-B","Harris Teeter","Crossmark","C&S","Shoppers Drug Mart",
"TJX","KOHLS","Ulta","KeHe"
];
// ── On-Time & In-Full data keyed by retailer (2026 YTD weekly) ──
// Weekly data is all 2026 — filter weeks whose month is within the selected lo/hi range
const selectedMonths = new Set(ALL_PERIODS.filter(p=>p.year===2026&&p.idx>=lo&&p.idx<=hi).map(p=>p.month));
// "Jan 19" -> "Jan", "Feb 2" -> "Feb", etc.
const weekInRange = w => selectedMonths.has(w.split(" ")[0]);
const JUN1_OT = {"Target":100,"Walmart":86,"Drug & Dollar":33,"Grocery":76,"Walgreens":null,"CVS":null};
const INFUL_BY_RETAILER = {
"Target": [{w:"Jan 19",v:99.4},{w:"Feb 2",v:97.7},{w:"Feb 9",v:99.3},{w:"Feb 16",v:98.9},{w:"Feb 23",v:98.1},{w:"Mar 2",v:97.5},{w:"Mar 9",v:null},{w:"Mar 16",v:96.9},{w:"Mar 23",v:96.5},{w:"Mar 30",v:96.9},{w:"Apr 6",v:96.7},{w:"Apr 13",v:97.0},{w:"Apr 20",v:97.3},{w:"Apr 27",v:97.4},{w:"May 4",v:98.2},{w:"May 11",v:98.1},{w:"May 18",v:97.9},{w:"May 25",v:97.9},{w:"Jun 1",v:97.5},{w:"Jun 8",v:null}],
"Walmart": [{w:"Feb 2",v:94.7},{w:"Feb 9",v:98.3},{w:"Feb 16",v:99.1},{w:"Feb 23",v:99.4},{w:"Mar 2",v:99.5},{w:"Mar 9",v:99.5},{w:"Mar 16",v:null},{w:"Mar 23",v:99.6},{w:"Mar 30",v:99.5},{w:"Apr 6",v:null},{w:"Apr 13",v:null},{w:"Apr 20",v:99.3},{w:"Apr 27",v:99.2},{w:"May 4",v:null},{w:"May 11",v:98.9},{w:"May 18",v:99.0},{w:"May 25",v:99.0},{w:"Jun 1",v:99.2},{w:"Jun 8",v:null}],
};
// NA Retail weekly On-Time (aggregate, used for all retailers)
const NA_OT_WEEKLY = [
{w:"Jan 19",ot:86.4},{w:"Feb 2",ot:95.7},{w:"Feb 9",ot:93.9},{w:"Feb 16",ot:90.7},{w:"Feb 23",ot:91.1},
{w:"Mar 2",ot:92.8},{w:"Mar 9",ot:96.1},{w:"Mar 16",ot:96.4},{w:"Mar 23",ot:92.1},{w:"Mar 30",ot:83.5},
{w:"Apr 6",ot:95.1},{w:"Apr 13",ot:96.1},{w:"Apr 20",ot:95.4},{w:"Apr 27",ot:95.2},
{w:"May 11",ot:94.6},{w:"May 18",ot:94.9},{w:"May 25",ot:95.5},{w:"Jun 1",ot:89.8},
];
// Merge + apply date range filter
const retailerIfSeries = INFUL_BY_RETAILER[retailerView];
const retailerOtif = (() => {
const otMap = Object.fromEntries(NA_OT_WEEKLY.map(d=>[d.w,d.ot]));
if (retailerIfSeries) {
return retailerIfSeries
.filter(d=>weekInRange(d.w))
.map(d=>({w:d.w, if:d.v, ot:otMap[d.w]||null}))
.filter(d=>d.if!==null||d.ot!==null);
}
return [
{w:"Jan 19",if:99.4,ot:86.4,otif:85.9},{w:"Feb 2",if:97.7,ot:95.7,otif:93.5},{w:"Feb 9",if:99.3,ot:93.9,otif:93.2},
{w:"Feb 16",if:98.9,ot:90.7,otif:89.7},{w:"Feb 23",if:98.1,ot:91.1,otif:89.4},{w:"Mar 2",if:97.5,ot:92.8,otif:92.0},
{w:"Mar 9",if:96.7,ot:96.1,otif:93.8},{w:"Mar 16",if:97.3,ot:96.4,otif:93.8},{w:"Mar 23",if:97.6,ot:92.1,otif:89.9},
{w:"Mar 30",if:98.6,ot:83.5,otif:82.3},{w:"Apr 6",if:99.2,ot:95.1,otif:94.3},{w:"Apr 13",if:99.3,ot:96.1,otif:95.4},
{w:"Apr 20",if:97.8,ot:95.4,otif:93.3},{w:"Apr 27",if:99.0,ot:95.2,otif:94.2},{w:"May 11",if:97.8,ot:94.6,otif:92.5},
{w:"May 18",if:97.8,ot:94.9,otif:92.8},{w:"May 25",if:97.7,ot:95.5,otif:93.3},{w:"Jun 1",if:98.1,ot:89.8,otif:88.1},
].filter(d=>weekInRange(d.w));
})();
const hasRetailerOtif = !!retailerIfSeries;
const jun1OT = JUN1_OT[retailerView];
// ── In-Stock weekly (date-range filtered) ──
const INSTOCK_DATA = {
"Target": [{w:"Jan 5",v:92.8},{w:"Jan 12",v:94.0},{w:"Jan 19",v:95.3},{w:"Jan 26",v:95.7},{w:"Feb 2",v:95.8},{w:"Feb 9",v:97.8},{w:"Feb 16",v:97.4},{w:"Feb 23",v:97.6},{w:"Mar 2",v:97.6},{w:"Mar 9",v:null},{w:"Mar 16",v:96.9},{w:"Mar 23",v:96.5},{w:"Mar 30",v:96.9},{w:"Apr 6",v:96.7},{w:"Apr 13",v:97.0},{w:"Apr 20",v:97.3},{w:"Apr 27",v:97.4},{w:"May 4",v:98.2},{w:"May 11",v:98.1},{w:"May 18",v:97.9},{w:"May 25",v:97.9},{w:"Jun 1",v:97.5},{w:"Jun 8",v:null}],
"Walmart": [{w:"Jan 5",v:96.0},{w:"Jan 12",v:87.0},{w:"Jan 19",v:88.0},{w:"Jan 26",v:91.0},{w:"Feb 2",v:94.7},{w:"Feb 9",v:98.3},{w:"Feb 16",v:99.1},{w:"Feb 23",v:99.4},{w:"Mar 2",v:99.5},{w:"Mar 9",v:99.5},{w:"Mar 16",v:null},{w:"Mar 23",v:99.6},{w:"Mar 30",v:99.5},{w:"Apr 6",v:null},{w:"Apr 13",v:null},{w:"Apr 20",v:99.3},{w:"Apr 27",v:99.2},{w:"May 4",v:null},{w:"May 11",v:98.9},{w:"May 18",v:99.0},{w:"May 25",v:99.0},{w:"Jun 1",v:99.2},{w:"Jun 8",v:null}],
"Amazon": [{w:"Jan 5",v:98.9},{w:"Jan 12",v:98.8},{w:"Jan 19",v:98.8},{w:"Jan 26",v:98.7},{w:"Feb 2",v:98.6},{w:"Feb 9",v:98.5},{w:"Feb 16",v:98.5},{w:"Feb 23",v:98.1},{w:"Mar 2",v:97.7},{w:"Mar 9",v:97.8},{w:"Mar 16",v:98.0},{w:"Mar 23",v:97.9},{w:"Mar 30",v:97.8},{w:"Apr 6",v:null},{w:"Apr 13",v:97.8},{w:"Apr 20",v:97.8},{w:"Apr 27",v:97.5},{w:"May 4",v:96.8},{w:"May 11",v:96.3},{w:"May 18",v:96.3},{w:"May 25",v:96.2},{w:"Jun 1",v:95.9},{w:"Jun 8",v:96.3}],
};
const instockData = (INSTOCK_DATA[retailerView] || []).filter(d=>d.v!==null && weekInRange(d.w));
// ── Cut $ weekly (2026 YTD) ──
const CUT_WEEKS = ["2/2","2/9","2/16","2/23","3/2","3/9","3/16","3/23","3/30","4/6","4/13","4/20","4/27","5/4","5/11","5/18","5/25","6/1","6/8"];
const CUT_DATA = {
"Target": [0,552,49934,111583,39913,72612,73330,23559,9915,37518,74458,110479,12903,111865,198719,54904,0,198212,162972],
"Walmart": [527,13062,2619,53652,68826,127583,186464,26923,14810,22384,67553,11948,11764,195283,126064,96531,80824,119635,42460],
"Walmart Canada":[0,2889,6403,7223,15485,34488,144257,0,0,0,0,0,0,2593,0,27,0,54,52],
"CVS": [0,0,0,6212,3662,469,5493,0,13332,0,0,0,0,0,0,31094,21315,43331,0],
"Kroger": [0,0,0,16078,2857,0,0,0,0,0,0,0,0,1190,7500,21594,21565,18007,0],
"Meijer": [0,6962,0,3225,4629,3186,707,6987,4408,4750,3326,2289,1656,6928,5858,7621,6456,12753,3537],
"Walgreens": [0,0,0,0,0,0,0,1462,0,1462,12710,12660,0,10952,238,19210,0,9764,6087],
"C&S": [3959,3215,252,29153,627,0,5394,0,1848,0,0,0,0,0,0,7034,7064,5243,0],
"H-E-B": [0,0,0,7619,14860,4197,10132,591,9053,731,6577,0,0,0,4291,27267,0,1905,3282],
};
// Map cut week "m/d" -> month name for range filtering
const CUT_WEEK_MONTHS = {"2/2":"Feb","2/9":"Feb","2/16":"Feb","2/23":"Feb","3/2":"Mar","3/9":"Mar","3/16":"Mar","3/23":"Mar","3/30":"Mar","4/6":"Apr","4/13":"Apr","4/20":"Apr","4/27":"Apr","5/4":"May","5/11":"May","5/18":"May","5/25":"May","6/1":"Jun","6/8":"Jun"};
const cutSeries = CUT_DATA[retailerView];
const cutChartData = cutSeries ? CUT_WEEKS.map((w,i)=>({w,cuts:cutSeries[i]})).filter(d=>d.cuts>0 && selectedMonths.has(CUT_WEEK_MONTHS[d.w])) : [];
const totalCuts = cutChartData.reduce((s,d)=>s+d.cuts,0);
// ── Brand + date range filter helpers ──
const bMatch = b => brand==="All" || b===brand;
const inRange = (year, month) => { const p=ALL_PERIODS.find(p=>p.year===year&&p.month===month); return p && p.idx>=lo && p.idx<=hi; };
// ── CB monthly by brand (date-range filtered) ──
const cbMonthly = RAW_CUST_MONTHLY.filter(d=>d.Customer===retailerView && bMatch(d.Brand) && inRange(d.Year,d.Month))
.sort((a,b)=>a.Year!==b.Year?a.Year-b.Year:MI[a.Month]-MI[b.Month]);
const cbByPeriod = {};
cbMonthly.forEach(d=>{
const key=`${d.Year}-${d.Month}`;
if(!cbByPeriod[key]) cbByPeriod[key]={label:key,hf_cb:null,lm_cb:null,total_cb:0};
if(d.Brand==="HF") cbByPeriod[key].hf_cb=(cbByPeriod[key].hf_cb||0)+d.Net_CB;
else cbByPeriod[key].lm_cb=(cbByPeriod[key].lm_cb||0)+d.Net_CB;
cbByPeriod[key].total_cb+=d.Net_CB;
});
// ── Revenue allocation: annual cust rev * (monthly brand rev share) ──
// annual customer rev per brand/year from RAW_CUSTOMER
const annualCustRevLu = {};
RAW_CUSTOMER.forEach(d=>{ annualCustRevLu[`${d.Brand}|${d.Year}|${d.Customer}`]=d.Rev; });
// brand-level monthly rev totals (to get each month's share of annual)
const annualBrandRevLu = {};
RAW_MONTHLY.forEach(d=>{
const yr=d.Year, br=d.Brand;
if(!annualBrandRevLu[`${br}|${yr}`]) annualBrandRevLu[`${br}|${yr}`]=0;
annualBrandRevLu[`${br}|${yr}`]+=d.Rev;
});
// monthly brand rev lookup
const monthBrandRevLu = {};
RAW_MONTHLY.forEach(d=>{ monthBrandRevLu[`${d.Brand}|${d.Year}|${d.Month}`]=d.Rev; });
// compute allocated monthly customer revenue per brand
const custMonthRevLu = {}; // key = "Brand|Year|Month"
["HF","LM"].forEach(br=>{
[2025,2026].forEach(yr=>{
const annualCustRev = annualCustRevLu[`${br}|${yr}|${retailerView}`]
|| annualCustRevLu[`${br}|${yr}|${retailerView.replace(" Inc.","")}`]
|| 0;
const annualBrandRev = annualBrandRevLu[`${br}|${yr}`]||1;
MONTH_ORDER.forEach(mo=>{
const mRev = monthBrandRevLu[`${br}|${yr}|${mo}`]||0;
custMonthRevLu[`${br}|${yr}|${mo}`] = annualCustRev * (mRev/annualBrandRev);
});
});
});
const cbChartData = ALL_PERIODS.filter(p=>p.idx>=lo&&p.idx<=hi).map(p=>{
const key=`${p.year}-${p.month}`;
const row = cbByPeriod[key];
if(!row) return {label:p.label,hf:null,lm:null,total:null};
const hfRev = custMonthRevLu[`HF|${p.year}|${p.month}`]||0;
const lmRev = custMonthRevLu[`LM|${p.year}|${p.month}`]||0;
const hfPct = (row.hf_cb!==null && hfRev>0) ? row.hf_cb/hfRev*100 : null;
const lmPct = (row.lm_cb!==null && lmRev>0) ? row.lm_cb/lmRev*100 : null;
const totRev = hfRev + lmRev;
const totPct = (row.total_cb!==0 && totRev>0) ? row.total_cb/totRev*100 : null;
return {label:p.label, hf:hfPct, lm:lmPct, total:totPct,
hf_cb:row.hf_cb, lm_cb:row.lm_cb, total_cb:row.total_cb};
}).filter(d=>d.hf!==null||d.lm!==null);
// ── CB by category (date-range filtered via years in selected range) ──
const yearsInRange = [...new Set(ALL_PERIODS.filter(p=>p.idx>=lo&&p.idx<=hi).map(p=>p.year))];
const catForRetailer = RAW_CAT_CUST.filter(d=>d.Customer===retailerView && bMatch(d.Brand==="HF"?"HF":"LM") && yearsInRange.includes(d.Year));
const allCatsForRetailer = [...new Set(catForRetailer.map(d=>d.Category))];
const annualCatTotals = {};
catForRetailer.forEach(d=>{
const yr=d.Year; if(!annualCatTotals[yr]) annualCatTotals[yr]={};
annualCatTotals[yr][d.Category]=(annualCatTotals[yr][d.Category]||0)+d.Net_CB;
});
const TOP_CATS = allCatsForRetailer
.map(c=>({c, total:Object.values(annualCatTotals).reduce((s,yr)=>s+(yr[c]||0),0)}))
.sort((a,b)=>b.total-a.total).slice(0,6).map(x=>x.c);
// Build stacked category monthly data
const catMonthlyData = cbChartData.map(row=>{
const yearKey=parseInt(row.label.split("-")[0]);
const monthTotal=row.total||0;
const catYr=annualCatTotals[yearKey]||{};
const annualSum=Object.values(catYr).reduce((s,v)=>s+v,0)||1;
const obj={label:row.label};
TOP_CATS.forEach(c=>{ obj[c]=annualSum!==0?Math.round(monthTotal*(catYr[c]||0)/annualSum):null; });
return obj;
});
// ── Annual CB summary (brand-filtered) ──
const annualCB=RAW_CUSTOMER.filter(d=>(d.Customer===retailerView||d.Customer===retailerView.replace(" Inc.","")) && bMatch(d.Brand) && yearsInRange.includes(d.Year));
const cb2025=annualCB.filter(d=>d.Year===2025).reduce((s,d)=>s+d.Net_CB,0);
const cb2026=annualCB.filter(d=>d.Year===2026).reduce((s,d)=>s+d.Net_CB,0);
const rev2025=annualCB.filter(d=>d.Year===2025).reduce((s,d)=>s+d.Rev,0);
const rev2026=annualCB.filter(d=>d.Year===2026).reduce((s,d)=>s+d.Rev,0);
const pct2025=rev2025>0?cb2025/rev2025*100:null;
const pct2026=rev2026>0?cb2026/rev2026*100:null;
// ── Recovery (brand + year range filtered) ──
const recovAll=RAW_RECOVERY_CUST.filter(d=>d.Customer===retailerView && yearsInRange.includes(d.Year) && (brand==="All"||(brand==="HF"&&d.Brand==="H&F")||(brand==="LM"&&d.Brand==="L&M")));
const grossCBTotal=recovAll.reduce((s,d)=>s+Math.abs(d.Gross_CB),0);
const reversalsTotal=recovAll.reduce((s,d)=>s+d.Reversals,0);
const recovRate=grossCBTotal>0?reversalsTotal/grossCBTotal*100:null;
const hasData=cbChartData.length>0;
const hasCuts=cutSeries&&totalCuts>0;
const hasOtif=retailerOtif.length>0;
const hasInstock=instockData.length>0;
const SectionHdr = ({icon,title,sub})=>(
);
return (
{/* ── Header + selector ── */}
🏪 Retailer Scorecard
On-time · In-full · Cuts $ · Chargebacks by reason · 2025–2026 YTD
{brand!=="All"&&{brand==="HF"?"H&F Only":"L&M Only"} }
RETAILER
setRetailerView(e.target.value)}
style={{padding:"8px 14px",borderRadius:8,border:"1.5px solid #DDD6FE",fontSize:13,fontWeight:700,color:"#6D28D9",background:"#F5F3FF",cursor:"pointer",minWidth:190}}>
{ALL_RETAILERS.map(r=>{r} )}
{!hasData&&!hasOtif&&!hasCuts ? (
No data available for {retailerView} in the current dataset.
) : (
<>
{/* ── KPI strip ── */}
{[
{label:"2025 CB % of Rev", value:pct2025!==null?fmtP(pct2025):"—", sub:cb2025!==0?`Net CB: ${fmt$(cb2025)}`:"no rev data", hi:pct2025>2?"red":pct2025!==null?"green":null},
{label:"2026 YTD CB % of Rev",value:pct2026!==null?fmtP(pct2026):"—", sub:cb2026!==0?`Net CB: ${fmt$(cb2026)}`:"no rev data", hi:pct2026>2?"red":pct2026!==null?"green":null},
...(hasCuts?[{label:"2026 YTD Cut $",value:fmt$(totalCuts),sub:"actualized weekly",hi:"red"}]:[]),
...(recovRate!==null?[{label:"Avg Recovery Rate",value:`${recovRate.toFixed(1)}%`,sub:"reversals / gross CB",hi:recovRate>50?"green":"red"}]:[]),
].map(k=>(
{k.label}
{k.value}
{k.sub}
))}
{/* ══ SECTION 1: On-Time & In-Full ══ */}
{jun1OT!==undefined&&jun1OT!==null&&(
⚡ Jun 1 On-Time snapshot — {retailerView}: {jun1OT}% · Weekly retailer-level On-Time series is not tracked in this dataset. On-Time line below reflects NA Retail aggregate.
)}
In-Full %{hasRetailerOtif?" (retailer)":""}
On-Time % (NA Retail)
{!hasRetailerOtif&& OTIF % }
v+"%"} tick={{fontSize:10}} width={38}/>
[v!=null?v.toFixed(1)+"%":"N/A",n]}/>
{!hasRetailerOtif&& }
{/* In-Stock line (where available) */}
{hasInstock&&(
In-Stock % — {retailerView} 2026 YTD weekly
v+"%"} tick={{fontSize:10}} width={38}/>
[v!=null?v.toFixed(1)+"%":"N/A","In-Stock %"]}/>
)}
{/* ══ SECTION 2: Cuts $ Over Time ══ */}
{hasCuts ? (
<>
<$100K — low
$100–299K — elevated
$300K+ — high
v>=1000?"$"+(v/1000).toFixed(0)+"K":"$"+v} tick={{fontSize:10}} width={56}/>
["$"+Math.round(v).toLocaleString(),"Cut $"]}/>
{cutChartData.map((d,i)=>| =300000?"#EF4444":d.cuts>=100000?"#F59E0B":"#10B981"}/>)}
|
>
) : (
ℹ️ Weekly cut $ data is not available for {retailerView} . This dataset tracks Target, Walmart, Walmart Canada, CVS, Kroger, Meijer, Walgreens, C&S, and H-E-B.
)}
{/* ══ SECTION 3: Chargebacks Over Time ══ */}
{hasData&&(
<>
H&F CB%
L&M CB%
Combined CB%
v!=null?v.toFixed(1)+"%":""} tick={{fontSize:10}} width={52}/>
[v!=null?v.toFixed(2)+"%":"N/A",n]}/>
{/* CB % of Revenue tiles */}
{annualCB.filter(d=>d.Rev>0).length>0&&(
{annualCB.filter(d=>d.Rev>0).map((d,i)=>(
{d.Year} · {d.Brand==="HF"?"H&F":"L&M"}
3?"#DC2626":d.Pct>1.5?"#D97706":"#059669"}}>{fmtP(d.Pct)}
{fmt$(d.Net_CB)} on {fmt$(d.Rev)} rev
))}
)}
>
)}
{/* ══ SECTION 4: Chargebacks by Reason Over Time ══ */}
{hasData&&TOP_CATS.length>0&&(
<>
{TOP_CATS.map(c=>(
{c}
))}
[fmt$(v),n]}/>
{TOP_CATS.map(c=>(
))}
Category splits are estimated from annual proportions applied to monthly totals. Exact monthly category data not available in this dataset.
{/* All-time category horizontal bar */}
Total CB by Category — {retailerView} all periods
({
Category:c,
Net_CB:Object.values(annualCatTotals).reduce((s,yr)=>s+(yr[c]||0),0)
}))].sort((a,b)=>b.Net_CB-a.Net_CB)} layout="vertical" margin={{top:4,right:60,left:8,bottom:4}}>
[fmt$(v),"Net CB"]}/>
{TOP_CATS.map((c,i)=>| )}
|
>
)}
{/* ── Recovery table ── */}
{recovAll.length>0&&(
<>
{["Brand","Year","Gross CB","Reversals","Net CB","Recovery %"].map(h=>(
{h}
))}
{recovAll.sort((a,b)=>a.Year-b.Year).map((r,i)=>{
const rc=r.Recovery_Rate>=50?"#16A34A":r.Recovery_Rate>=25?"#D97706":"#DC2626";
return (
{r.Brand}
{r.Year}
{fmt$(Math.abs(r.Gross_CB))}
{fmt$(r.Reversals)}
{fmt$(Math.abs(r.Net_CB))}
{r.Recovery_Rate.toFixed(1)}%
);
})}
>
)}
>
)}
);
})()}
{false && null}
Net chargebacks = gross chargebacks less reversals. ⚠ = CB % > 3.0% where revenue is available. 2026 data through May.
);
}