{"as_of": "20 Oct 2026", "horizon": "to 30 Nov 2026", "areas": ["Cluster performance", "Modern trade", "Wholesale", "Discounters", "Grocery", "E-commerce", "Pricing and promotions", "Supply and stock", "Customers and finance", "Team"], "panels": [{"task": 1, "area": "Cluster performance", "title": "Sell-in vs daily target", "question": "Are we selling enough each day to hit the plan?", "kpis": [{"label": "1\u201320 Oct sell-in", "value": "SAR 9.3M", "note": "vs SAR 10.0M target to date", "tone": "warn", "basis": "Actual"}, {"label": "Last 7 days", "value": "SAR 2.7M", "note": "target SAR 3.5M", "tone": "", "basis": "Actual"}, {"label": "Next 7 days", "value": "SAR 3.1M", "note": "target SAR 3.5M", "tone": "", "basis": "Predicted"}], "chart": {"type": "line", "labels": ["2026-09-01", "2026-09-02", "2026-09-03", "2026-09-04", "2026-09-05", "2026-09-06", "2026-09-07", "2026-09-08", "2026-09-09", "2026-09-10", "2026-09-11", "2026-09-12", "2026-09-13", "2026-09-14", "2026-09-15", "2026-09-16", "2026-09-17", "2026-09-18", "2026-09-19", "2026-09-20", "2026-09-21", "2026-09-22", "2026-09-23", "2026-09-24", "2026-09-25", "2026-09-26", "2026-09-27", "2026-09-28", "2026-09-29", "2026-09-30", "2026-10-01", "2026-10-02", "2026-10-03", "2026-10-04", "2026-10-05", "2026-10-06", "2026-10-07", "2026-10-08", "2026-10-09", "2026-10-10", "2026-10-11", "2026-10-12", "2026-10-13", "2026-10-14", "2026-10-15", "2026-10-16", "2026-10-17", "2026-10-18", "2026-10-19", "2026-10-20", "2026-10-21", "2026-10-22", "2026-10-23", "2026-10-24", "2026-10-25", "2026-10-26", "2026-10-27", "2026-10-28", "2026-10-29", "2026-10-30", "2026-10-31", "2026-11-01", "2026-11-02", "2026-11-03", "2026-11-04", "2026-11-05", "2026-11-06", "2026-11-07", "2026-11-08", "2026-11-09", "2026-11-10", "2026-11-11", "2026-11-12", "2026-11-13", "2026-11-14", "2026-11-15", "2026-11-16", "2026-11-17", "2026-11-18", "2026-11-19", "2026-11-20", "2026-11-21", "2026-11-22", "2026-11-23", "2026-11-24", "2026-11-25", "2026-11-26", "2026-11-27", "2026-11-28", "2026-11-29", "2026-11-30"], "series": [{"name": "Actual", "data": [454280.23, 443906.76, 427204.47, 2339.2, 422578.55, 470626.06, 469917.51, 484354.56, 468444.98, 481906.66, 4440.62, 503050.97, 570778.54, 584502.62, 605123.52, 578975.8, 574473.88, 7440.91, 509293.34, 561603.78, 574389.57, 512591.32, 490115.25, 499678.45, 0.0, 430140.31, 446080.82, 490311.82, 475255.89, 597631.08, 510729.9, 0.0, 513688.56, 551248.02, 606232.42, 602025.15, 639693.94, 717916.33, 18566.23, 644193.57, 643901.05, 604767.48, 575749.73, 538845.01, 586187.85, 2168.77, 461977.17, 421840.97, 382450.06, 295049.17, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null], "style": "actual", "color": null}, {"name": "Target", "data": [516261.21, 547477.29, 556834.06, 4664.25, 516440.14, 547248.22, 551926.18, 516261.21, 547477.29, 556834.06, 4664.25, 516440.14, 547248.22, 551926.18, 516261.21, 547477.29, 556834.06, 4664.25, 516440.14, 547248.22, 551926.18, 516261.21, 547477.29, 556834.06, 4664.25, 516440.14, 547248.22, 551926.18, 516261.21, 547477.29, 607374.23, 5100.89, 563234.11, 596911.13, 602082.92, 563047.62, 597076.76, 607374.23, 5100.89, 563234.11, 596911.13, 602082.92, 563047.62, 597076.76, 607374.23, 5100.89, 563234.11, 596911.13, 602082.92, 563047.62, 597076.76, 607374.23, 5100.89, 563234.11, 596911.13, 602082.92, 563047.62, 597076.76, 607374.23, 5100.89, 563234.11, 607862.17, 613084.85, 573558.93, 608134.07, 618533.52, 5171.03, 573748.79, 607862.17, 613084.85, 573558.93, 608134.07, 618533.52, 5171.03, 573748.79, 607862.17, 613084.85, 573558.93, 608134.07, 618533.52, 5171.03, 573748.79, 607862.17, 613084.85, 573558.93, 608134.07, 618533.52, 5171.03, 573748.79, 607862.17, 613084.85], "style": "target", "color": null}, {"name": "Predicted", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 531085.57, 540438.69, 4552.11, 501408.8, 531687.78, 536456.62, 501755.01, 532349.92, 541715.4, 4560.19, 502611.82, 532941.75, 537716.69, 502959.36, 533617.42, 542995.28, 4568.29, 503817.88, 534198.83, 538979.9, 522746.36, 553917.75, 562937.34, 4576.4, 505027.0, 535459.06, 540246.24, 505377.22, 536162.02, 545564.63, 4584.52, 517301.94, 547758.82, 552350.25, 517811.75, 548931.93, 576904.7, 4592.66, 537051.9, 549061.54, 553658.42], "style": "pred", "color": null}, {"name": "Low", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 338465.09, 339234.14, 1478.15, 324508.04, 332853.96, 333272.1, 324753.78, 339335.28, 340102.14, 1480.78, 325346.21, 333704.6, 334121.51, 325593.0, 340207.79, 340972.46, 1483.4, 326186.66, 334557.51, 334973.2, 341954.15, 356978.23, 357431.07, 1486.04, 327029.33, 335412.7, 335827.14, 327278.19, 341959.82, 342720.02, 1488.68, 337115.1, 345488.93, 345733.5, 337497.19, 352439.38, 368698.79, 1491.32, 353444.51, 346378.91, 346621.67], "style": "low", "color": null}, {"name": "High", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 723706.04, 741643.25, 7626.07, 678309.56, 730521.6, 739641.13, 678756.25, 725364.56, 743328.66, 7639.61, 679877.42, 732178.88, 741311.87, 680325.73, 727027.06, 745018.12, 7653.17, 681449.11, 733840.16, 742986.6, 703538.55, 750857.27, 768443.6, 7666.75, 683024.66, 735505.43, 744665.37, 683476.26, 730364.22, 748409.25, 7680.36, 697488.78, 750028.69, 758966.99, 698126.33, 745424.48, 785110.59, 7694.0, 720659.29, 751744.15, 760695.19], "style": "high", "color": null}], "bych": {"GR": {"actual": [153591.35, 145821.56, 155088.51, 2339.2, 155269.68, 196373.9, 192540.7, 203044.38, 180628.0, 187001.7, 4440.62, 174849.9, 234581.88, 236480.73, 264080.54, 234886.44, 234343.91, 7440.91, 173860.07, 243523.84, 254969.34, 199006.52, 177781.72, 214283.35, 0.0, 164302.31, 145402.38, 197056.99, 177058.32, 300408.48, 196953.14, 0.0, 169534.8, 220794.6, 248296.61, 240043.38, 249797.83, 316246.5, 18566.23, 255961.86, 266039.35, 237385.47, 219737.09, 196972.07, 263074.45, 2168.77, 200367.65, 174964.02, 173747.69, 33810.1, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null], "target": [191031.02, 213020.53, 227085.28, 4664.25, 191092.8, 225010.32, 232101.14, 191031.02, 213020.53, 227085.28, 4664.25, 191092.8, 225010.32, 232101.14, 191031.02, 213020.53, 227085.28, 4664.25, 191092.8, 225010.32, 232101.14, 191031.02, 213020.53, 227085.28, 4664.25, 191092.8, 225010.32, 232101.14, 191031.02, 213020.53, 248343.61, 5100.89, 208981.73, 246074.4, 253829.02, 208914.17, 232962.2, 248343.61, 5100.89, 208981.73, 246074.4, 253829.02, 208914.17, 232962.2, 248343.61, 5100.89, 208981.73, 246074.4, 253829.02, 208914.17, 232962.2, 248343.61, 5100.89, 208981.73, 246074.4, 253829.02, 208914.17, 232962.2, 248343.61, 5100.89, 208981.73, 249458.04, 257319.29, 211786.84, 236165.54, 251758.45, 5171.03, 211855.33, 249458.04, 257319.29, 211786.84, 236165.54, 251758.45, 5171.03, 211855.33, 249458.04, 257319.29, 211786.84, 236165.54, 251758.45, 5171.03, 211855.33, 249458.04, 257319.29, 211786.84, 236165.54, 251758.45, 5171.03, 211855.33, 249458.04, 257319.29], "pred": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 207793.61, 221569.38, 4552.11, 186545.66, 219711.75, 226693.03, 186627.14, 208162.46, 221962.68, 4560.19, 186876.78, 220101.75, 227095.42, 186958.42, 208531.95, 222356.67, 4568.29, 187208.5, 220492.44, 227498.52, 187290.28, 208902.11, 222751.37, 4576.4, 187540.8, 220883.83, 227902.34, 187622.73, 209272.92, 223146.76, 4584.52, 187873.7, 221275.91, 228306.88, 187955.76, 209644.39, 223542.86, 4592.66, 188207.18, 221668.68, 228712.13], "low": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 67474.31, 71947.55, 1478.15, 60574.72, 71344.35, 73611.29, 60601.18, 67594.08, 72075.26, 1480.78, 60682.24, 71470.98, 73741.95, 60708.75, 67714.06, 72203.2, 1483.4, 60789.96, 71597.85, 73872.85, 60816.51, 67834.26, 72331.36, 1486.04, 60897.86, 71724.94, 74003.98, 60924.46, 67954.67, 72459.75, 1488.68, 61005.96, 71852.25, 74135.34, 61032.61, 68075.29, 72588.37, 1491.32, 61114.25, 71979.79, 74266.93], "high": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 348112.91, 371191.21, 7626.07, 312516.59, 368079.16, 379774.76, 312653.11, 348730.83, 371850.1, 7639.61, 313071.33, 368732.52, 380448.88, 313208.08, 349349.84, 372510.15, 7653.17, 313627.04, 369387.04, 381124.19, 313764.04, 349969.96, 373171.37, 7666.75, 314183.75, 370042.72, 381800.71, 314320.99, 350591.17, 373833.77, 7680.36, 314741.44, 370699.56, 382478.42, 314878.92, 351213.49, 374497.34, 7694.0, 315300.12, 371357.57, 383157.34]}, "MT": {"actual": [149878.97, 143842.75, 136069.67, 0.0, 134242.6, 138969.06, 137701.77, 140539.53, 144851.96, 146334.65, 0.0, 166731.96, 167910.69, 174226.42, 168624.32, 172581.03, 168648.88, 0.0, 168833.35, 157388.46, 160775.75, 158235.22, 155832.81, 141642.13, 0.0, 132723.63, 148582.37, 145230.51, 147145.38, 148540.67, 154553.14, 0.0, 170685.94, 162725.57, 180110.49, 181979.06, 191137.3, 200974.78, 0.0, 193638.69, 189949.13, 183325.08, 174954.1, 167126.13, 160931.62, 0.0, 131270.39, 124285.43, 107852.31, 131648.01, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null], "target": [161842.17, 165835.25, 163823.37, 0.0, 162332.02, 160334.54, 159870.8, 161842.17, 165835.25, 163823.37, 0.0, 162332.02, 160334.54, 159870.8, 161842.17, 165835.25, 163823.37, 0.0, 162332.02, 160334.54, 159870.8, 161842.17, 165835.25, 163823.37, 0.0, 162332.02, 160334.54, 159870.8, 161842.17, 165835.25, 181562.71, 0.0, 179909.87, 177696.1, 177182.14, 179366.98, 183792.44, 181562.71, 0.0, 179909.87, 177696.1, 177182.14, 179366.98, 183792.44, 181562.71, 0.0, 179909.87, 177696.1, 177182.14, 179366.98, 183792.44, 181562.71, 0.0, 179909.87, 177696.1, 177182.14, 179366.98, 183792.44, 181562.71, 0.0, 179909.87, 181505.8, 180980.82, 183212.5, 187732.84, 185455.31, 0.0, 183767.03, 181505.8, 180980.82, 183212.5, 187732.84, 185455.31, 0.0, 183767.03, 181505.8, 180980.82, 183212.5, 187732.84, 185455.31, 0.0, 183767.03, 181505.8, 180980.82, 183212.5, 187732.84, 185455.31, 0.0, 183767.03, 181505.8, 180980.82], "pred": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 160548.38, 158658.39, 0.0, 157328.57, 155449.24, 155056.06, 157025.22, 160958.04, 159063.22, 0.0, 157730.01, 155845.88, 155451.7, 157425.88, 161368.73, 159469.09, 0.0, 158132.47, 156243.53, 155848.35, 157827.57, 161780.48, 159875.99, 0.0, 158535.96, 156642.2, 156246.01, 158230.28, 162193.28, 160283.92, 0.0, 158940.47, 157041.89, 156644.69, 158634.02, 162607.13, 160692.9, 0.0, 159346.02, 157442.6, 157044.38], "low": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 135196.16, 133604.62, 0.0, 132484.79, 130902.22, 130571.14, 132229.34, 135541.13, 133945.52, 0.0, 132822.83, 131236.23, 130904.3, 132566.73, 135886.97, 134287.3, 0.0, 133161.74, 131571.09, 131238.31, 132904.99, 136233.7, 134629.94, 0.0, 133501.52, 131906.81, 131573.18, 133244.11, 136581.31, 134973.46, 0.0, 133842.16, 132243.38, 131908.9, 133584.09, 136929.81, 135317.86, 0.0, 134183.67, 132580.81, 132245.48], "high": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 185900.6, 183712.16, 0.0, 182172.35, 179996.25, 179540.99, 181821.1, 186374.95, 184180.92, 0.0, 182637.18, 180455.53, 179999.11, 182285.03, 186850.5, 184650.88, 0.0, 183103.19, 180915.98, 180458.39, 182750.14, 187327.26, 185122.03, 0.0, 183570.39, 181377.6, 180918.85, 183216.45, 187805.24, 185594.38, 0.0, 184038.79, 181840.4, 181380.48, 183683.94, 188284.45, 186067.94, 0.0, 184508.38, 182304.38, 181843.28]}, "WS": {"actual": [75802.6, 81212.24, 67752.58, 0.0, 65500.22, 66992.47, 70755.64, 70049.17, 71931.04, 74179.03, 0.0, 81808.34, 85202.22, 87382.51, 86190.41, 86847.04, 86383.17, 0.0, 83124.73, 80239.9, 80040.05, 77984.02, 79879.25, 71389.84, 0.0, 65780.55, 77212.83, 74527.09, 75673.95, 73016.78, 80698.95, 0.0, 87537.76, 85580.77, 89628.96, 90479.08, 98886.24, 100009.68, 0.0, 98560.45, 94109.61, 90995.89, 91819.19, 85882.68, 81558.81, 0.0, 65503.37, 61681.56, 50613.24, 62659.69, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null], "target": [82165.47, 85368.17, 83692.56, 0.0, 82364.85, 81920.93, 80804.86, 82165.47, 85368.17, 83692.56, 0.0, 82364.85, 81920.93, 80804.86, 82165.47, 85368.17, 83692.56, 0.0, 82364.85, 81920.93, 80804.86, 82165.47, 85368.17, 83692.56, 0.0, 82364.85, 81920.93, 80804.86, 82165.47, 85368.17, 86373.56, 0.0, 85003.32, 84545.18, 83393.36, 84797.55, 88102.85, 86373.56, 0.0, 85003.32, 84545.18, 83393.36, 84797.55, 88102.85, 86373.56, 0.0, 85003.32, 84545.18, 83393.36, 84797.55, 88102.85, 86373.56, 0.0, 85003.32, 84545.18, 83393.36, 84797.55, 88102.85, 86373.56, 0.0, 85003.32, 86369.84, 85193.16, 86627.66, 90004.29, 88237.68, 0.0, 86837.87, 86369.84, 85193.16, 86627.66, 90004.29, 88237.68, 0.0, 86837.87, 86369.84, 85193.16, 86627.66, 90004.29, 88237.68, 0.0, 86837.87, 86369.84, 85193.16, 86627.66, 90004.29, 88237.68, 0.0, 86837.87, 86369.84, 85193.16], "pred": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 81935.42, 80356.97, 0.0, 79140.85, 78743.5, 77699.52, 79037.15, 82148.37, 80565.82, 0.0, 79346.54, 78948.16, 77901.46, 79242.56, 82361.87, 80775.21, 0.0, 79552.76, 79153.34, 78103.93, 79448.51, 82575.93, 80985.14, 0.0, 79759.52, 79359.06, 78306.92, 79655.0, 82790.54, 81195.62, 0.0, 79966.81, 79565.31, 78510.44, 79862.02, 83005.71, 81406.65, 0.0, 80174.64, 79772.1, 78714.49], "low": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 68289.53, 66973.96, 0.0, 65960.38, 65629.21, 64759.1, 65873.95, 68467.01, 67148.03, 0.0, 66131.81, 65799.78, 64927.41, 66045.16, 68644.96, 67322.55, 0.0, 66303.69, 65970.79, 65096.15, 66216.81, 68823.36, 67497.52, 0.0, 66476.01, 66142.25, 65265.34, 66388.9, 69002.24, 67672.94, 0.0, 66648.78, 66314.15, 65434.96, 66561.45, 69181.57, 67848.82, 0.0, 66822.0, 66486.5, 65605.03], "high": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 95581.3, 93739.98, 0.0, 92321.32, 91857.8, 90639.95, 92200.35, 95829.72, 93983.61, 0.0, 92561.26, 92096.53, 90875.52, 92439.97, 96078.78, 94227.87, 0.0, 92801.83, 92335.89, 91111.7, 92680.22, 96328.49, 94472.77, 0.0, 93043.02, 92575.87, 91348.5, 92921.1, 96578.84, 94718.3, 0.0, 93284.84, 92816.47, 91585.92, 93162.6, 96829.85, 94964.47, 0.0, 93527.28, 93057.7, 91823.95]}, "DS": {"actual": [40332.66, 40021.75, 37969.68, 0.0, 36050.75, 35344.11, 36504.99, 37041.36, 37058.75, 39861.76, 0.0, 42099.64, 43165.85, 47528.81, 45437.13, 45416.2, 46769.17, 0.0, 44798.6, 42911.65, 41911.63, 42788.23, 41404.52, 37611.65, 0.0, 37132.02, 40081.45, 38933.07, 39847.82, 39300.6, 43271.56, 0.0, 45727.6, 45467.35, 46905.96, 47161.31, 53981.76, 52991.38, 0.0, 51288.61, 49589.45, 50452.46, 47675.65, 47340.49, 44373.58, 0.0, 35101.43, 32277.64, 26733.19, 35744.2, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null], "target": [43446.84, 44580.75, 44331.24, 0.0, 43355.21, 42793.5, 42657.81, 43446.84, 44580.75, 44331.24, 0.0, 43355.21, 42793.5, 42657.81, 43446.84, 44580.75, 44331.24, 0.0, 43355.21, 42793.5, 42657.81, 43446.84, 44580.75, 44331.24, 0.0, 43355.21, 42793.5, 42657.81, 43446.84, 44580.75, 49484.68, 0.0, 48395.19, 47768.18, 47616.72, 48497.47, 49763.19, 49484.68, 0.0, 48395.19, 47768.18, 47616.72, 48497.47, 49763.19, 49484.68, 0.0, 48395.19, 47768.18, 47616.72, 48497.47, 49763.19, 49484.68, 0.0, 48395.19, 47768.18, 47616.72, 48497.47, 49763.19, 49484.68, 0.0, 48395.19, 48819.91, 48665.11, 49565.26, 50858.85, 50574.2, 0.0, 49460.73, 48819.91, 48665.11, 49565.26, 50858.85, 50574.2, 0.0, 49460.73, 48819.91, 48665.11, 49565.26, 50858.85, 50574.2, 0.0, 49460.73, 48819.91, 48665.11, 49565.26, 50858.85, 50574.2, 0.0, 49460.73, 48819.91, 48665.11], "pred": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 43121.06, 42900.89, 0.0, 41997.8, 41474.14, 41363.05, 42148.93, 43270.31, 43049.39, 0.0, 42143.16, 41617.69, 41506.21, 42294.82, 43420.08, 43198.39, 0.0, 42289.03, 41761.74, 41649.88, 42441.21, 43570.37, 43347.91, 0.0, 42435.41, 41906.29, 41794.04, 42588.11, 43721.18, 43497.95, 0.0, 42582.29, 42051.34, 41938.7, 42735.52, 43872.51, 43648.51, 0.0, 42729.68, 42196.89, 42083.86], "low": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 36024.75, 35840.82, 0.0, 35086.34, 34648.86, 34556.05, 35212.6, 36149.44, 35964.87, 0.0, 35207.78, 34768.78, 34675.65, 35334.48, 36274.56, 36089.35, 0.0, 35329.65, 34889.13, 34795.68, 35456.78, 36400.12, 36214.27, 0.0, 35451.93, 35009.89, 34916.11, 35579.51, 36526.11, 36339.62, 0.0, 35574.64, 35131.07, 35036.97, 35702.66, 36652.54, 36465.4, 0.0, 35697.77, 35252.67, 35158.24], "high": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 50217.37, 49960.97, 0.0, 48909.26, 48299.42, 48170.04, 49085.26, 50391.19, 50133.9, 0.0, 49078.54, 48466.59, 48336.77, 49255.16, 50565.6, 50307.43, 0.0, 49248.42, 48634.35, 48504.08, 49425.64, 50740.62, 50481.56, 0.0, 49418.88, 48802.69, 48671.97, 49596.72, 50916.25, 50656.29, 0.0, 49589.93, 48971.61, 48840.43, 49768.39, 51092.49, 50831.62, 0.0, 49761.58, 49141.11, 49009.48]}, "EC": {"actual": [34674.65, 33008.46, 30324.03, 0.0, 31515.3, 32946.52, 32414.41, 33680.12, 33975.23, 34529.52, 0.0, 37561.13, 39917.9, 38884.15, 40791.12, 39245.09, 38328.75, 0.0, 38676.59, 37539.93, 36692.8, 34577.33, 35216.95, 34751.48, 0.0, 30201.8, 34801.79, 34564.16, 35530.42, 36364.55, 35253.11, 0.0, 40202.46, 36679.73, 41290.4, 42362.32, 45890.81, 47693.99, 0.0, 44743.96, 44213.51, 42608.58, 41563.7, 41523.64, 36249.39, 0.0, 29734.33, 28632.32, 23503.63, 31187.17, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null], "target": [37775.71, 38672.59, 37901.61, 0.0, 37295.26, 37188.93, 36491.57, 37775.71, 38672.59, 37901.61, 0.0, 37295.26, 37188.93, 36491.57, 37775.71, 38672.59, 37901.61, 0.0, 37295.26, 37188.93, 36491.57, 37775.71, 38672.59, 37901.61, 0.0, 37295.26, 37188.93, 36491.57, 37775.71, 38672.59, 41609.67, 0.0, 40944.0, 40827.27, 40061.68, 41471.45, 42456.08, 41609.67, 0.0, 40944.0, 40827.27, 40061.68, 41471.45, 42456.08, 41609.67, 0.0, 40944.0, 40827.27, 40061.68, 41471.45, 42456.08, 41609.67, 0.0, 40944.0, 40827.27, 40061.68, 41471.45, 42456.08, 41609.67, 0.0, 40944.0, 41708.58, 40926.47, 42366.67, 43372.55, 42507.88, 0.0, 41827.83, 41708.58, 40926.47, 42366.67, 43372.55, 42507.88, 0.0, 41827.83, 41708.58, 40926.47, 42366.67, 43372.55, 42507.88, 0.0, 41827.83, 41708.58, 40926.47, 42366.67, 43372.55, 42507.88, 0.0, 41827.83, 41708.58, 40926.47], "pred": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 37687.1, 36953.06, 0.0, 36395.92, 36309.15, 35644.96, 36916.57, 37810.74, 37074.29, 0.0, 36515.33, 36428.27, 35761.9, 37037.68, 37934.79, 37195.92, 0.0, 36635.12, 36547.78, 35879.22, 55738.79, 57088.86, 55976.93, 0.0, 36755.31, 36667.68, 35996.93, 37281.1, 38184.1, 37440.38, 0.0, 47938.67, 47824.37, 46949.54, 48624.43, 49802.19, 67613.78, 0.0, 66594.38, 47981.27, 47103.56], "low": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 31480.34, 30867.19, 0.0, 30401.81, 30329.32, 29774.52, 30836.71, 31583.62, 30968.46, 0.0, 30501.55, 30428.83, 29872.2, 30937.88, 31687.24, 31070.06, 0.0, 30601.62, 30528.65, 29970.21, 46559.06, 47686.79, 46757.98, 0.0, 30702.01, 30628.81, 30068.53, 31141.21, 31895.49, 31274.25, 0.0, 40043.56, 39948.08, 39217.33, 40616.38, 41600.17, 56478.34, 0.0, 55626.82, 40079.14, 39345.99], "high": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 43893.86, 43038.93, 0.0, 42390.04, 42288.97, 41515.39, 42996.43, 44037.87, 43180.13, 0.0, 42529.11, 42427.71, 41651.59, 43137.49, 44182.34, 43321.79, 0.0, 42668.63, 42566.9, 41788.24, 64918.51, 66490.94, 65195.87, 0.0, 42808.62, 42706.55, 41925.34, 43421.0, 44472.72, 43606.51, 0.0, 55833.78, 55700.65, 54681.74, 56632.48, 58004.2, 78749.22, 0.0, 77561.93, 55883.39, 54861.14]}}, "yfmt": "sar"}, "table": null, "source": "t01_sellin_vs_daily_target.csv", "note": "Forecast = recent 8-week level \u00d7 day-of-week pattern; shaded band is the 80% range. E-commerce lifted for 11.11 (10\u201312 Nov) and White Friday (20\u201330 Nov, peak 26\u201328 Nov)."}, {"task": 2, "area": "Cluster performance", "title": "Month-to-date run rate vs target", "question": "Where will October land, and November?", "kpis": [{"label": "October landing", "value": "92%", "note": "SAR 14.0M of SAR 15.3M", "tone": "warn", "basis": "Predicted"}, {"label": "Straight-line run rate", "value": "94%", "note": "if the last 20 days just repeat", "tone": "", "basis": "Actual"}, {"label": "November landing", "value": "89%", "note": "SAR 14.0M of SAR 15.6M", "tone": "warn", "basis": "Predicted"}], "chart": {"type": "bar", "labels": ["Discounters", "E-commerce", "Grocery (van)", "Modern trade", "Wholesale"], "series": [{"name": "Target", "data": [1263981.6, 1072034.25, 6079250.35, 4679513.55, 2220240.15], "style": "target", "color": null}, {"name": "Actual to 20 Oct", "data": [756083.62, 653333.05, 3684461.61, 2807147.17, 1416205.93], "style": "actual", "color": null}, {"name": "Predicted month end", "data": [1137552.36, 984640.17, 5559516.4, 4228964.29, 2135180.06], "style": "pred", "color": null}], "yfmt": "sar"}, "table": {"cols": ["Division", "Oct target", "Predicted", "Attainment"], "rows": [["Ice Cream", "SAR 3.6M", "SAR 3.0M", "83%"], ["Chilled", "SAR 1.8M", "SAR 1.5M", "84%"], ["Unilever", "SAR 2.4M", "SAR 2.2M", "92%"], ["Drinks", "SAR 4.3M", "SAR 4.0M", "93%"], ["Non-Food", "SAR 1.2M", "SAR 1.1M", "93%"], ["Food", "SAR 2.0M", "SAR 2.2M", "110%"]]}, "source": "t02_mtd_run_rate.csv", "note": "October plan in the data covers 1\u201320 Oct; scaled to the full month. November target = October + 2% (no November plan received)."}, {"task": 3, "area": "Cluster performance", "title": "Channel mix vs plan", "question": "Is the business moving away from the planned channel mix?", "kpis": [{"label": "Grocery share, Nov", "value": "39.4%", "note": "plan 40%", "tone": "", "basis": "Predicted"}, {"label": "Biggest gap, Nov", "value": "E-commerce", "note": "+1.3 pts vs plan", "tone": "warn", "basis": "Predicted"}, {"label": "E-commerce share, Nov", "value": "8.3%", "note": "White Friday lift", "tone": "", "basis": "Predicted"}], "chart": {"type": "bar", "stacked": true, "labels": ["Plan", "Aug", "Sep", "Oct (to 20th + forecast)", "Nov (forecast)"], "series": [{"name": "Grocery (van)", "data": [0.4, 0.4017, 0.3965, 0.3958, 0.3935], "style": "cat", "color": "#1F4E8C"}, {"name": "Modern trade", "data": [0.3, 0.2982, 0.301, 0.3011, 0.2952], "style": "cat", "color": "#2F8F6B"}, {"name": "Wholesale", "data": [0.15, 0.1508, 0.152, 0.152, 0.1491], "style": "cat", "color": "#8E5BB5"}, {"name": "Discounters", "data": [0.08, 0.0798, 0.0805, 0.081, 0.0793], "style": "cat", "color": "#D9733B"}, {"name": "E-commerce", "data": [0.07, 0.0694, 0.0701, 0.0701, 0.0828], "style": "cat", "color": "#2C9AB0"}], "yfmt": "pct"}, "table": null, "source": "t03_channel_mix.csv", "note": ""}, {"task": 4, "area": "Cluster performance", "title": "Sell-out (EPOS)", "question": "Is stock actually leaving the shelves at our biggest customers?", "kpis": [{"label": "Sell-out, last 4 weeks", "value": "SAR 921K", "note": "key accounts 01\u201303 EPOS", "tone": "", "basis": "Actual"}, {"label": "Out-of-stock days", "value": "3.2%", "note": "share of store-SKU days", "tone": "", "basis": "Actual"}, {"label": "Next 4 weeks", "value": "SAR 918K", "note": "-0.4% vs last 4", "tone": "", "basis": "Predicted"}], "chart": {"type": "line", "labels": ["2026-07-05", "2026-07-12", "2026-07-19", "2026-07-26", "2026-08-02", "2026-08-09", "2026-08-16", "2026-08-23", "2026-08-30", "2026-09-06", "2026-09-13", "2026-09-20", "2026-09-27", "2026-10-04", "2026-10-11", "2026-10-18", "2026-10-25", "2026-11-01", "2026-11-08", "2026-11-15", "2026-11-22", "2026-11-29"], "series": [{"name": "Actual", "data": [191278.81, 196039.76, 190599.32, 185115.03, 183121.36, 182323.43, 179972.7, 191883.42, 201570.77, 218374.93, 230571.85, 230322.12, 224850.2, 232162.55, 233978.91, null, null, null, null, null, null, null], "style": "actual", "color": null}, {"name": "Predicted", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 228640.84, 228910.32, 229185.11, 229465.28, 229750.82, 230041.8, 230338.13], "style": "pred", "color": null}, {"name": "Low", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 204372.52, 204641.95, 204916.75, 205196.94, 205482.51, 205773.45, 206069.75], "style": "low", "color": null}, {"name": "High", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 252909.21, 253178.66, 253453.47, 253733.64, 254019.19, 254310.13, 254606.48], "style": "high", "color": null}], "yfmt": "sar"}, "table": {"cols": ["Account", "Last 4 wks", "OOS days", "Next 4 wks"], "rows": [["Key account 01", "SAR 398K", "4.3%", "SAR 399K"], ["Key account 02", "SAR 307K", "2.4%", "SAR 303K"], ["Key account 03", "SAR 217K", "2.7%", "SAR 217K"]]}, "source": "t04_sell_out.csv", "note": ""}, {"task": 5, "area": "Modern trade", "title": "POs received vs expected", "question": "Are the chains ordering as normal, and how many lines get rejected or delayed?", "kpis": [{"label": "POs, last 4 weeks", "value": "2,378", "note": "expected 2,380", "tone": "", "basis": "Actual"}, {"label": "Lines rejected", "value": "3.4%", "note": "top reason: price mismatch", "tone": "warn", "basis": "Actual"}, {"label": "Lines delayed", "value": "2.8%", "note": "delivered after the requested date", "tone": "", "basis": "Actual"}], "chart": {"type": "bar", "labels": ["2026-08-02", "2026-08-09", "2026-08-16", "2026-08-23", "2026-08-30", "2026-09-06", "2026-09-13", "2026-09-20", "2026-09-27", "2026-10-04", "2026-10-11", "2026-10-18", "2026-10-25", "2026-11-01", "2026-11-08", "2026-11-15", "2026-11-22", "2026-11-29"], "series": [{"name": "Expected", "data": [595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0], "style": "target", "color": null}, {"name": "POs received", "data": [593.0, 594.0, 595.0, 594.0, 595.0, 595.0, 595.0, 594.0, 595.0, 595.0, 594.0, null, null, null, null, null, null, null], "style": "actual", "color": null}, {"name": "Predicted", "data": [null, null, null, null, null, null, null, null, null, null, null, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0, 595.0], "style": "pred", "color": null}], "yfmt": "num"}, "table": {"cols": ["Account", "POs (4 wks)", "vs expected", "Rejected", "Delayed"], "rows": [["Key account 01", "567", "-1", "3.3%", "2.8%"], ["Key account 04", "279", "-1", "3.7%", "2.9%"], ["Key account 02", "404", "+0", "3.5%", "2.8%"], ["Key account 03", "324", "+0", "2.9%", "2.7%"], ["Key account 05", "224", "+0", "3.5%", "2.9%"], ["Key account 06", "224", "+0", "3.5%", "2.5%"], ["Key account 07", "188", "+0", "3.6%", "2.9%"], ["Key account 08", "168", "+0", "3.2%", "2.8%"]]}, "source": "t05_po_tracker.csv \u00b7 t05b_po_rejection_reasons.csv", "note": ""}, {"task": 6, "area": "Modern trade", "title": "Merchandiser photo reports", "question": "What did the photos show, and which stores will be out of stock next visit?", "kpis": [{"label": "Visits done", "value": "82%", "note": "2,386 of 2,912 planned, 28 days", "tone": "", "basis": "Actual"}, {"label": "Photos per visit", "value": "8.4", "note": "shelf images recognised", "tone": "", "basis": "Actual"}, {"label": "High-risk stores", "value": "40", "note": "predicted OOS above 10% next visit", "tone": "risk", "basis": "Predicted"}], "chart": {"type": "bar", "horizontal": true, "labels": ["On shelf (planogram OK)", "Out of stock", "Wrong pack", "Fair share met"], "series": [{"name": "Share of audited SKUs", "data": [0.86, 0.067, 0.0006, 0.0053], "style": "actual", "color": null}], "yfmt": "pct"}, "table": {"cols": ["Store", "Account", "Visits", "OOS now", "OOS next visit"], "rows": [["ST0322", "DS02", "50%", "14.0%", "13.2%"], ["ST0314", "DS02", "50%", "14.0%", "13.2%"], ["ST0336", "DS03", "88%", "14.9%", "12.8%"], ["ST0308", "DS02", "100%", "15.0%", "12.8%"], ["ST0284", "DS01", "75%", "14.7%", "12.6%"], ["ST0306", "DS02", "75%", "13.3%", "12.3%"], ["ST0323", "DS02", "100%", "13.5%", "11.9%"], ["ST0312", "DS02", "0%", "", "11.6%"]]}, "source": "t06_merch_photo_reports.csv", "note": ""}, {"task": 7, "area": "Modern trade", "title": "Promotions live in store", "question": "Are promotions actually running in the stores we pay for?", "kpis": [{"label": "Running now", "value": "11", "note": "live in 75% of store checks", "tone": "warn", "basis": "Actual"}, {"label": "Starting by 30 Nov", "value": "49", "note": "expected live 84%", "tone": "", "basis": "Predicted"}, {"label": "Price wrong at shelf", "value": "9%", "note": "Sep\u2013Oct ended promotions", "tone": "warn", "basis": "Actual"}], "chart": {"type": "bar", "labels": ["KA05", "KA08", "KA06", "DS01", "KA07", "DS02", "KA01", "KA02", "KA04", "KA03", "DS03", "DS04", "EC01", "EC02", "EC03", "EC04"], "series": [{"name": "Live rate (ended promos)", "data": [0.7897, 0.7929, 0.8042, 0.8156, 0.8183, 0.85, 0.8522, 0.8526, 0.8653, 0.8884, 0.8944, 0.9032, null, null, null, null], "style": "actual", "color": null}], "yfmt": "pct", "target": 0.95}, "table": {"cols": ["Promotion", "Account", "Status", "Dates", "Live rate"], "rows": [["PR0440", "KA06", "running", "2026-10-09", "54%"], ["PR0418", "KA06", "running", "2026-10-04", "56%"], ["PR0001", "KA01", "running", "2026-10-07", "68%"], ["PR0398", "KA05", "running", "2026-10-04", "76%"], ["PR0312", "KA04", "running", "2026-10-07", "80%"], ["PR0139", "KA02", "running", "2026-10-08", "81%"], ["PR0343", "KA05", "running", "2026-10-09", "82%"], ["PR0629", "DS02", "running", "2026-10-07", "87%"], ["PR0152", "KA02", "running", "2026-10-08", "96%"]]}, "source": "t07_promotions_live.csv", "note": "November calendar = the last four weeks of promotions repeated (no November plan in the data)."}, {"task": 8, "area": "Wholesale", "title": "Wholesale price levels", "question": "Are wholesalers buying at the right price, or is the price slipping?", "kpis": [{"label": "Avg price vs list", "value": "80.0%", "note": "top 40 SKUs, last 4 weeks", "tone": "", "basis": "Actual"}, {"label": "Lines below floor", "value": "30", "note": "since March", "tone": "risk", "basis": "Actual"}, {"label": "Price index, end Nov", "value": "80.0%", "note": "+0.1 pts", "tone": "", "basis": "Predicted"}], "chart": {"type": "line", "labels": ["2026-03-01", "2026-03-08", "2026-03-15", "2026-03-22", "2026-03-29", "2026-04-05", "2026-04-12", "2026-04-19", "2026-04-26", "2026-05-03", "2026-05-10", "2026-05-17", "2026-05-24", "2026-05-31", "2026-06-07", "2026-06-14", "2026-06-21", "2026-06-28", "2026-07-05", "2026-07-12", "2026-07-19", "2026-07-26", "2026-08-02", "2026-08-09", "2026-08-16", "2026-08-23", "2026-08-30", "2026-09-06", "2026-09-13", "2026-09-20", "2026-09-27", "2026-10-04", "2026-10-11", "2026-10-18", "2026-10-25", "2026-11-01", "2026-11-08", "2026-11-15", "2026-11-22", "2026-11-29"], "series": [{"name": "Actual", "data": [0.7998, 0.799, 0.7966, 0.7963, 0.7973, 0.7993, 0.8008, 0.7991, 0.7981, 0.7994, 0.8, 0.7997, 0.8003, 0.7999, 0.7993, 0.8004, 0.8012, 0.798, 0.7986, 0.7974, 0.7995, 0.7994, 0.8003, 0.8002, 0.7986, 0.799, 0.7982, 0.7986, 0.798, 0.8004, 0.7987, 0.8005, 0.7987, null, null, null, null, null, null, null], "style": "actual", "color": null}, {"name": "Predicted", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0.799, 0.799, 0.7993, 0.7994, 0.7994, 0.7997, 0.8], "style": "pred", "color": null}, {"name": "Floor", "data": [0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499, 0.7499], "style": "target", "color": null}], "yfmt": "pct"}, "table": {"cols": ["SKU", "Name", "Price vs list", "Below-floor lines"], "rows": [["219656", "TIFFANY BREAK TIME MINI 13", "79.5%", "1"], ["206821", "IGLOO BALOU BALOU CONE CHO", "79.5%", "0"], ["218759", "TIFFANY BREAK SUPA 30 GM", "79.5%", "0"], ["201767", "MOUSSY PEACH BOTTLE 330 ML", "79.6%", "0"], ["206484", "HEINZ MAYONNAISE LITE 12x4", "79.7%", "0"], ["210339", "HOLSTEN STRAWBERRY BOTTLE ", "79.7%", "0"], ["210341", "HOLSTEN CLASSIC BOTTLE 330", "79.7%", "0"], ["219866", "TIFFANY BREAK 2F 12.5 GM", "79.7%", "0"]]}, "source": "t08_wholesale_price_levels.csv", "note": ""}, {"task": 9, "area": "Wholesale", "title": "Abnormal or irregular orders", "question": "Which orders look wrong before they ship?", "kpis": [{"label": "Orders flagged", "value": "306", "note": "SAR 1.5M of value", "tone": "risk", "basis": "Predicted"}, {"label": "Hit rate", "value": "46%", "note": "flags that were real problems (test labels)", "tone": "", "basis": "Actual"}, {"label": "Caught", "value": "76%", "note": "of the planted problems", "tone": "", "basis": "Actual"}], "chart": {"type": "bar", "horizontal": true, "labels": ["line quantity 12x+ the usual for this SKU", "non-promo price below floor", "ships outside normal regions (possible parallel trade)"], "series": [{"name": "Orders flagged", "data": [166, 100, 40], "style": "risk", "color": null}], "yfmt": "num"}, "table": {"cols": ["Order", "Account", "Date", "Value", "Why"], "rows": [["WS002802", "WS043", "2026-06-25", "SAR 11K", "ships outside normal regions (possible parallel trade)"], ["WS000941", "WS015", "2026-05-09", "SAR 8K", "non-promo price below floor"], ["WS001040", "WS016", "2026-08-29", "SAR 8K", "non-promo price below floor"], ["WS003928", "WS060", "2026-05-19", "SAR 7K", "ships outside normal regions (possible parallel trade)"], ["WS001510", "WS023", "2026-09-10", "SAR 6K", "ships outside normal regions (possible parallel trade)"], ["WS001766", "WS027", "2026-08-04", "SAR 6K", "ships outside normal regions (possible parallel trade)"], ["WS001079", "WS017", "2026-05-21", "SAR 5K", "non-promo price below floor"], ["WS000693", "WS011", "2026-07-14", "SAR 5K", "non-promo price below floor"]]}, "source": "t09_irregular_orders.csv", "note": "Rules: ships outside Riyadh/Jeddah/Dammam, non-promo price under 73% of list, or a line 12\u00d7 the normal quantity."}, {"task": 10, "area": "Discounters", "title": "Discounter shelf prices vs MT", "question": "Are discounters undercutting the chains by more than agreed?", "kpis": [{"label": "Avg DS price gap", "value": "-14.6%", "note": "per unit, vs MT shelf (agreed about \u221215%)", "tone": "", "basis": "Actual"}, {"label": "Store undercuts", "value": "51", "note": "more than 25% below MT", "tone": "risk", "basis": "Actual"}, {"label": "Gap next 4 weeks", "value": "-14.6%", "note": "stable", "tone": "", "basis": "Predicted"}], "chart": {"type": "line", "labels": ["2026-03-01", "2026-03-08", "2026-03-15", "2026-03-22", "2026-03-29", "2026-04-05", "2026-04-12", "2026-04-19", "2026-04-26", "2026-05-03", "2026-05-10", "2026-05-17", "2026-05-24", "2026-05-31", "2026-06-07", "2026-06-14", "2026-06-21", "2026-06-28", "2026-07-05", "2026-07-12", "2026-07-19", "2026-07-26", "2026-08-02", "2026-08-09", "2026-08-16", "2026-08-23", "2026-08-30", "2026-09-06", "2026-09-13", "2026-09-20", "2026-09-27", "2026-10-04", "2026-10-11", "2026-10-18", "2026-10-25", "2026-11-01", "2026-11-08"], "series": [{"name": "Actual gap", "data": [-0.1464, -0.1456, -0.1424, -0.1495, -0.1449, -0.1455, -0.1463, -0.1472, -0.1452, -0.1451, -0.1418, -0.1425, -0.1478, -0.1466, -0.1457, -0.1477, -0.1443, -0.1466, -0.1449, -0.1474, -0.1473, -0.1455, -0.1442, -0.1442, -0.146, -0.1473, -0.1486, -0.144, -0.1475, -0.1471, -0.144, -0.1456, -0.1453, null, null, null, null], "style": "actual", "color": null}, {"name": "Predicted", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, -0.1457, -0.1457, -0.1457, -0.1457], "style": "pred", "color": null}, {"name": "Agreed gap", "data": [-0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15, -0.15], "style": "target", "color": null}], "yfmt": "pct"}, "table": {"cols": ["SKU", "Undercut checks", "Avg gap", "Last seen"], "rows": [["201764", "5", "-11.4%", "2026-10-11"], ["201765", "4", "-15.0%", "2026-09-13"], ["201773", "4", "-15.2%", "2026-08-09"], ["219662", "4", "-14.3%", "2026-09-06"], ["210334", "3", "-14.5%", "2026-10-11"], ["201768", "3", "-14.3%", "2026-03-29"], ["219656", "3", "-16.0%", "2026-07-12"], ["222195", "3", "-14.6%", "2026-10-11"]]}, "source": "t10_ds_vs_mt_price.csv", "note": ""}, {"task": 11, "area": "Discounters", "title": "Pack and SKU compliance", "question": "Are discounters stocking the discounter packs, not the MT packs?", "kpis": [{"label": "Stores with a wrong pack", "value": "68", "note": "120 MT-pack sightings since March", "tone": "risk", "basis": "Actual"}, {"label": "Planogram OK", "value": "86%", "note": "120 discounter stores", "tone": "", "basis": "Actual"}, {"label": "Stores likely to breach", "value": "17", "note": "above 5% chance at next audit", "tone": "warn", "basis": "Predicted"}], "chart": {"type": "bar", "labels": ["DS01", "DS02", "DS03", "DS04"], "series": [{"name": "Wrong-pack rate", "data": [0.0009, 0.0009, 0.0009, 0.001], "style": "risk", "color": null}], "yfmt": "pct2"}, "table": {"cols": ["Store", "Account", "Breaches", "Breach chance next audit"], "rows": [["ST0284", "DS01", "3", "10%"], ["ST0347", "DS03", "3", "10%"], ["ST0266", "DS01", "3", "9%"], ["ST0369", "DS04", "5", "8%"], ["ST0317", "DS02", "4", "7%"], ["ST0374", "DS04", "2", "7%"], ["ST0378", "DS04", "2", "7%"], ["ST0310", "DS02", "2", "7%"]]}, "source": "t11_pack_compliance.csv", "note": ""}, {"task": 12, "area": "Grocery", "title": "Calls, strike rate and drop size", "question": "How productive is each van rep (by van code)?", "kpis": [{"label": "Strike rate", "value": "76.3%", "note": "target 80%, last 4 weeks", "tone": "warn", "basis": "Actual"}, {"label": "Drop size", "value": "SAR 558", "note": "per productive call", "tone": "", "basis": "Actual"}, {"label": "Calls per van-day", "value": "9.2", "note": "planned and unplanned", "tone": "", "basis": "Actual"}], "chart": {"type": "line", "labels": ["2026-06-07", "2026-06-14", "2026-06-21", "2026-06-28", "2026-07-05", "2026-07-12", "2026-07-19", "2026-07-26", "2026-08-02", "2026-08-09", "2026-08-16", "2026-08-23", "2026-08-30", "2026-09-06", "2026-09-13", "2026-09-20", "2026-09-27", "2026-10-04", "2026-10-11", "2026-10-18", "2026-10-25", "2026-11-01", "2026-11-08", "2026-11-15", "2026-11-22", "2026-11-29"], "series": [{"name": "Actual", "data": [1338920.12, 1283941.24, 1316954.67, 1222686.19, 1212133.08, 1439143.15, 1112834.08, 1145107.58, 1169006.0, 1017001.56, 1037281.88, 1242617.37, 1156211.29, 1138878.85, 1385674.3, 1253866.71, 1186413.4, 1549706.54, 1385744.68, null, null, null, null, null, null, null], "style": "actual", "color": null}, {"name": "Predicted", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 1336045.82, 1337140.39, 1338293.08, 1339503.88, 1340772.84, 1342099.94, 1343485.24], "style": "pred", "color": null}, {"name": "Low", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 588011.92, 588847.67, 589787.8, 590961.98, 592235.84, 593620.25, 595055.75], "style": "low", "color": null}, {"name": "High", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 2113856.59, 2114951.21, 2116103.83, 2117314.65, 2118583.6, 2119910.68, 2121296.02], "style": "high", "color": null}], "yfmt": "sar"}, "table": {"cols": ["Van", "Division", "Strike", "Drop size", "Calls/day"], "rows": [["V94870", "Unilever", "64%", "SAR 521", "9.3"], ["V95581", "Ice Cream", "68%", "SAR 397", "12.6"], ["V95265", "Drinks", "69%", "SAR 630", "12.3"], ["V91712", "Drinks", "70%", "SAR 1K", "10.5"], ["V93724", "Unilever", "70%", "SAR 268", "12.0"], ["V94969", "Ice Cream", "70%", "SAR 414", "10.0"], ["V94854", "Drinks", "71%", "SAR 1K", "6.7"], ["V94122", "Food", "71%", "SAR 1K", "14.3"]]}, "source": "t12_salesman_kpis.csv", "note": "Lowest strike rates shown. Rep names are never stored; vans by code only."}, {"task": 13, "area": "Grocery", "title": "New and lost outlets, must-sell coverage", "question": "Is the outlet base growing, and are shops buying the must-sell range?", "kpis": [{"label": "Active outlets, Sep", "value": "3,612", "note": "bought at least once that month", "tone": "", "basis": "Actual"}, {"label": "Must-sell coverage", "value": "42%", "note": "active outlets buying 3+ must-sell SKUs (target 60%)", "tone": "warn", "basis": "Actual"}, {"label": "Likely lost in Nov", "value": "115", "note": "594 outlets overdue for an order", "tone": "risk", "basis": "Predicted"}], "chart": {"type": "bar", "labels": ["Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct*", "Nov (forecast)"], "series": [{"name": "New", "data": [31.0, 284.0, 136.0, 91.0, 101.0, 23.0, 7.0, 55.5], "style": "good", "color": null}, {"name": "Lost", "data": [-0.0, -21.0, -123.0, -151.0, -61.0, -86.0, -129.0, -115.4], "style": "risk", "color": null}], "yfmt": "num", "predlast": true}, "table": {"cols": ["Outlet", "Van", "Days silent", "Usual gap", "Loss chance"], "rows": [["8000-825315", "V93499", "51", "1", "90%"], ["1000-312823", "V95029", "26", "3", "90%"], ["1000-310080", "V94854", "33", "7", "90%"], ["1000-338146", "V93071", "44", "7", "90%"], ["1000-312613", "V94822", "51", "11", "90%"], ["1000-313071", "V93724", "40", "8", "90%"], ["1000-313138", "V95477", "33", "6", "90%"], ["1000-337965", "V95381", "48", "9", "90%"]]}, "source": "t13_outlet_movement.csv \u00b7 t13b_outlets_at_risk.csv", "note": "Lost = 60 days without an order. *October to the 20th."}, {"task": 14, "area": "Grocery", "title": "Van stock, cash and credit reconciliation", "question": "Does every van balance at the end of the day?", "kpis": [{"label": "Cash short, 12 weeks", "value": "SAR 2K", "note": "82 short days", "tone": "risk", "basis": "Actual"}, {"label": "Stock unexplained", "value": "SAR 15K", "note": "400 loss lines", "tone": "", "basis": "Actual"}, {"label": "Credit sales, 12 weeks", "value": "SAR 13.0M", "note": "94% of van sales", "tone": "", "basis": "Actual"}], "chart": {"type": "bar", "labels": ["2026-08-02", "2026-08-09", "2026-08-16", "2026-08-23", "2026-08-30", "2026-09-06", "2026-09-13", "2026-09-20", "2026-09-27", "2026-10-04", "2026-10-11", "2026-10-18"], "series": [{"name": "Cash variance", "data": [-32.4, -45.93, -333.57, -25.27, -428.93, -179.24, -22.05, -56.02, -98.17, -581.37, -203.68, 0.0], "style": "risk", "color": null}, {"name": "Stock variance (value)", "data": [-2666.7, -1134.21, -643.36, -8.12, -3014.92, -409.68, -1060.89, -1831.1, -664.94, -1160.74, -1342.27, -793.65], "style": "warn", "color": null}], "yfmt": "sar"}, "table": {"cols": ["Van", "Division", "Short days", "Stock loss lines", "Issue chance next wk"], "rows": [["V93724", "Unilever", "1", "39", "94%"], ["V93267", "Unilever", "1", "38", "94%"], ["V95559", "Unilever", "1", "27", "87%"], ["V93648", "Unilever", "1", "26", "86%"], ["V94991", "Non-Food", "3", "21", "83%"], ["V94921", "Unilever", "2", "22", "83%"], ["V95658", "Unilever", "0", "24", "83%"], ["V95676", "Unilever", "1", "23", "83%"]]}, "source": "t14_van_reconciliation.csv", "note": ""}, {"task": 15, "area": "E-commerce", "title": "Orders by platform, stock-outs, inactive listings", "question": "How are the platforms trading, and what is switched off?", "kpis": [{"label": "Orders, last 4 weeks", "value": "130,406", "note": "SAR 837K GMV for our SKUs", "tone": "", "basis": "Actual"}, {"label": "Listing-days out of stock", "value": "7.1%", "note": "on the platforms", "tone": "warn", "basis": "Actual"}, {"label": "Listings down today", "value": "88", "note": "\u2248SAR 3K/day GMV lost", "tone": "risk", "basis": "Actual"}], "chart": {"type": "line", "labels": ["2026-07-05", "2026-07-12", "2026-07-19", "2026-07-26", "2026-08-02", "2026-08-09", "2026-08-16", "2026-08-23", "2026-08-30", "2026-09-06", "2026-09-13", "2026-09-20", "2026-09-27", "2026-10-04", "2026-10-11", "2026-10-18", "2026-10-25", "2026-11-01", "2026-11-08", "2026-11-15", "2026-11-22", "2026-11-29"], "series": [{"name": "Platform A", "data": [7836.0, 8200.0, 7523.0, 7956.0, 8439.0, 8255.0, 7605.0, 7176.0, 7278.0, 8592.0, 8717.0, 8099.0, 8164.0, 8941.0, 8426.0, null, null, null, null, null, null, null], "style": "cat", "color": "#1F4E8C"}, {"name": "Platform A forecast", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 8492.76, 8495.69, 8498.62, 10839.48, 9907.73, 12250.69, 9914.57], "style": "catpred", "color": "#1F4E8C"}, {"name": "Platform B", "data": [8251.0, 8214.0, 8929.0, 8534.0, 8659.0, 8325.0, 7144.0, 7111.0, 8494.0, 8769.0, 8509.0, 8213.0, 8129.0, 8586.0, 8281.0, null, null, null, null, null, null, null], "style": "cat", "color": "#2F8F6B"}, {"name": "Platform B forecast", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 8402.72, 8390.96, 8379.22, 10668.55, 9734.48, 12015.47, 9707.25], "style": "catpred", "color": "#2F8F6B"}, {"name": "Platform C", "data": [7353.0, 7748.0, 7862.0, 7688.0, 8346.0, 8036.0, 7391.0, 8081.0, 8224.0, 8029.0, 8221.0, 8221.0, 8367.0, 7359.0, 8077.0, null, null, null, null, null, null, null], "style": "cat", "color": "#8E5BB5"}, {"name": "Platform C forecast", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 8029.78, 8013.92, 7998.09, 10177.43, 9281.01, 11449.15, 9244.38], "style": "catpred", "color": "#8E5BB5"}, {"name": "Platform D", "data": [8283.0, 8099.0, 8123.0, 7810.0, 8566.0, 8035.0, 7795.0, 7490.0, 7815.0, 8172.0, 7618.0, 7467.0, 7711.0, 8015.0, 8350.0, null, null, null, null, null, null, null], "style": "cat", "color": "#D9733B"}, {"name": "Platform D forecast", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 7908.36, 7927.93, 7947.56, 10158.22, 9304.79, 11529.67, 9350.91], "style": "catpred", "color": "#D9733B"}], "yfmt": "num"}, "table": {"cols": ["Platform", "SKU", "Status", "Days down (30)", "Lost/day"], "rows": [["Platform C", "MOUSSY CLASSIC BOTTLE 33", "out of stock", "9", "SAR 331"], ["Platform D", "MOUSSY CLASSIC BOTTLE 33", "out of stock", "2", "SAR 331"], ["Platform A", "MOUSSY APPLE BOTTLE 330 ", "out of stock", "4", "SAR 191"], ["Platform A", "MOUSSY ICE BERRY BOTTLE ", "inactive", "9", "SAR 173"], ["Platform C", "MOUSSY ICE BERRY BOTTLE ", "inactive", "12", "SAR 138"], ["Platform A", "HOLSTEN POMEGRANATE BOTT", "inactive", "11", "SAR 121"], ["Platform C", "HOLSTEN CRANBERRY BOTTLE", "out of stock", "12", "SAR 105"], ["Platform A", "DOVE BARBEAUTYCREAM GT (", "out of stock", "8", "SAR 93"]]}, "source": "t15_ecom_orders.csv \u00b7 t15b_ecom_listings_down.csv", "note": "Platforms are anonymised (Platform A\u2013D). Forecast lift vs a normal week: 11.11 week +27%, White Friday week (22\u201328 Nov) +44%."}, {"task": 16, "area": "E-commerce", "title": "Search ranking, ratings, ad return", "question": "Can shoppers find us, do they like us, and do ads pay back?", "kpis": [{"label": "Average rating", "value": "4.19 \u2605", "note": "124 listings under 3.8", "tone": "", "basis": "Actual"}, {"label": "Ad return (ROAS)", "value": "5.0\u00d7", "note": "last 28 days", "tone": "", "basis": "Actual"}, {"label": "Listings losing rank", "value": "123", "note": "down 15+ places in 3 weeks", "tone": "warn", "basis": "Predicted"}], "chart": {"type": "bar", "labels": ["Platform A", "Platform B", "Platform C", "Platform D"], "series": [{"name": "ROAS", "data": [5.0, 5.0468, 4.9722, 5.0072], "style": "actual", "color": null}], "yfmt": "x"}, "table": {"cols": ["Platform", "SKU", "Rank now", "Next week", "Action"], "rows": [["Platform B", "MOUSSY CLASSIC BOTTLE ", "1", "1", "fix reviews / quality"], ["Platform C", "MOUSSY STRAWBERRY BOTT", "1", "1", "improve content"], ["Platform B", "MOUSSY POMEGRANATE BOT", "1", "1", "improve content"], ["Platform C", "MOUSSY LEMON MINT BOTT", "3", "2", "fix reviews / quality"], ["Platform D", "TIFFANY BREAKSTA MINI ", "1", "1", "improve content"], ["Platform B", "TIFFANY BREAK TIME MIN", "1", "1", "fix reviews / quality"], ["Platform B", "MOUSSY PEACH BOTTLE 33", "8", "6", "improve content"], ["Platform D", "HERSHEY COOKIE N CREAM", "5", "3", "improve content"]]}, "source": "t16_ecom_rank_rating_roas.csv", "note": "Table: listings that need an action, biggest sellers first (not the 123 losing rank)."}, {"task": 17, "area": "Pricing and promotions", "title": "Promotion uplift vs plan", "question": "Do promotions deliver the extra volume we planned?", "kpis": [{"label": "Measured uplift (median)", "value": "50%", "note": "plan 50%", "tone": "", "basis": "Actual"}, {"label": "Below plan", "value": "52%", "note": "of measured promotions", "tone": "warn", "basis": "Actual"}, {"label": "Upcoming promos, to 30 Nov", "value": "49", "note": "expected uplift 41%", "tone": "", "basis": "Predicted"}], "chart": {"type": "bar", "labels": ["display", "free goods", "multibuy", "price-off"], "series": [{"name": "Planned", "data": [0.5057, 0.4937, 0.5006, 0.5116], "style": "target", "color": null}, {"name": "Measured", "data": [0.6, 0.6, 0.4, 0.48], "style": "actual", "color": null}], "yfmt": "pct"}, "table": {"cols": ["Promotion", "Account", "Starts", "Mechanic", "Plan", "Expected"], "rows": [["PRN0138", "KA02", "2026-10-27", "price-off", "39%", "41%"], ["PRN0160", "KA02", "2026-10-27", "price-off", "66%", "41%"], ["PRN0462", "KA07", "2026-10-28", "display", "64%", "-14%"], ["PRN0416", "KA06", "2026-10-28", "multibuy", "33%", "62%"], ["PRN0361", "KA05", "2026-10-28", "multibuy", "57%", "11%"], ["PRN0141", "KA02", "2026-10-28", "price-off", "68%", "41%"], ["PRN0367", "KA05", "2026-10-31", "price-off", "58%", "37%"], ["PRN0303", "KA04", "2026-10-31", "price-off", "54%", "41%"]]}, "source": "t17_promo_uplift.csv", "note": "Measured = units in promo days vs the 4 weeks before, same account and SKUs."}, {"task": 18, "area": "Pricing and promotions", "title": "Trade spend vs budget and claims", "question": "Are we spending the promo budget well, and are claims fair?", "kpis": [{"label": "Spend vs budget, YTD", "value": "48%", "note": "SAR 806K of SAR 1.7M", "tone": "", "basis": "Actual"}, {"label": "Disputed claims", "value": "72", "note": "out of SAR 826K claimed", "tone": "warn", "basis": "Actual"}, {"label": "November spend", "value": "SAR 88K", "note": "budget SAR 136K", "tone": "", "basis": "Predicted"}], "chart": {"type": "bar", "labels": ["2026-04-01", "2026-05-01", "2026-06-01", "2026-07-01", "2026-08-01", "2026-09-01", "2026-11-01"], "series": [{"name": "Budget", "data": [170940.0, 186710.0, 214910.0, 185390.0, 366360.0, 92320.0, 135817.15], "style": "target", "color": null}, {"name": "Spend (accrued)", "data": [74878.39, 80863.65, 94090.82, 88534.57, 172619.34, 49498.47, 87798.16], "style": "actual", "color": null}, {"name": "Claimed", "data": [76716.39, 81404.3, 95724.71, 91065.55, 175508.56, 51381.51, null], "style": "warn", "color": null}], "yfmt": "sar", "predlast": true}, "table": {"cols": ["Account", "Budget", "Spent", "Used", "Disputes"], "rows": [["Key account 04", "SAR 158K", "SAR 75K", "48%", "8"], ["Platform B", "SAR 72K", "SAR 33K", "45%", "8"], ["Key account 06", "SAR 125K", "SAR 52K", "41%", "6"], ["Discounter 03", "SAR 68K", "SAR 39K", "57%", "6"], ["Platform C", "SAR 62K", "SAR 27K", "43%", "6"], ["Key account 03", "SAR 150K", "SAR 69K", "46%", "5"], ["Key account 01", "SAR 233K", "SAR 113K", "48%", "5"], ["Key account 02", "SAR 160K", "SAR 74K", "46%", "5"]]}, "source": "t18_trade_spend.csv", "note": ""}, {"task": 19, "area": "Pricing and promotions", "title": "Competitor launches and price cuts", "question": "What are competitors doing, and who is likely to cut price next?", "kpis": [{"label": "Events, last 45 days", "value": "180", "note": "71 price cuts \u00b7 21 launches", "tone": "", "basis": "Actual"}, {"label": "Avg price-cut depth", "value": "18%", "note": "reported by the field", "tone": "", "basis": "Actual"}, {"label": "Likely cuts next 30 days", "value": "9", "note": "brand \u00d7 category above 50%", "tone": "warn", "basis": "Predicted"}], "chart": {"type": "bar", "labels": ["display", "launch", "price cut", "promotion"], "series": [{"name": "Events (45 days)", "data": [26, 21, 71, 62], "style": "actual", "color": null}], "yfmt": "num"}, "table": {"cols": ["Competitor", "Category", "Cuts so far", "Chance next 30d"], "rows": [["Competitor G", "BINZAGR FOODS-NAKHLATAIN-BU 2-FD85 - FOOD D", "8", "66%"], ["Competitor F", "Binzagr Unilever Distribution Ltd-Glow & Lovely-BU", "6", "66%"], ["Competitor I", "BINZAGR FOODS-Taleen-BU 2-FD85 - FOOD D", "5", "56%"], ["Competitor I", "Lipton Teas and Infusions-BB Red Label Tea-BU 1-FD", "3", "56%"], ["Competitor C", "BINZAGR FOODS-Dawar-BU 2-FD85 - FOOD D", "5", "56%"], ["Competitor F", "SANPELLEGRINO.S.P.A.-S. PELLEGRINO-BU 11-PERSONAL", "5", "56%"], ["Competitor A", "Lipton Teas and Infusions-BB Red Label Tea-BU 5-FD", "3", "56%"], ["Competitor L", "Binzagr Unilever Distribution Ltd-Hellmann's-BU 1-", "3", "56%"]]}, "source": "t19_competitor_activity.csv \u00b7 t19b_competitor_events_recent.csv", "note": "Competitors are anonymised (Competitor A\u2013L)."}, {"task": 20, "area": "Supply and stock", "title": "Warehouse stock cover vs forecast", "question": "Will we run out, or are we sitting on too much?", "kpis": [{"label": "Stock-out risk", "value": "134", "note": "SKU-locations with cover below lead time", "tone": "risk", "basis": "Predicted"}, {"label": "Overstock value", "value": "SAR 1.2M", "note": "399 SKU-locations over 90 days", "tone": "warn", "basis": "Actual"}, {"label": "Median cover", "value": "35 days", "note": "on-hand vs forecast demand", "tone": "", "basis": "Actual"}], "chart": {"type": "bar", "horizontal": true, "labels": ["ok", "overstock", "stock-out risk", "no recent demand"], "series": [{"name": "SKU-locations", "data": [2156, 399, 134, 89], "style": "actual", "color": null}], "yfmt": "num"}, "table": {"cols": ["SKU", "Warehouse", "Cover (days)", "Lead time", "Runs out"], "rows": [["CLEAR COOL SPORT SHAMP 1", "2100-04", "0", "28", "out now"], ["BROOKEBOND TB LAAL 36X10", "2100-04", "0", "7", "out now"], ["LIPTON Inf Sweet Night 1", "2100-04", "0", "7", "out now"], ["BROOKBOND RLTP SQR JAR D", "2100-04", "0", "7", "out now"], ["BROOKEBOND RLTP CHARGE R", "2100-07", "0", "7", "out now"], ["LIPTON GT LEM ENV EKT TH", "2100-07", "0", "7", "out now"], ["Hanaa Whole Grain Oats 9", "2100-07", "0", "7", "out now"], ["LIPTON GTB FRESHNESS LEM", "2100-07", "0", "7", "out now"]]}, "source": "t20_stock_cover.csv", "note": ""}, {"task": 21, "area": "Supply and stock", "title": "Fill rate and OTIF with cut reasons", "question": "Do customers get the full order on time, and why not?", "kpis": [{"label": "OTIF, last 4 weeks", "value": "92.0%", "note": "order lines on time and in full", "tone": "warn", "basis": "Actual"}, {"label": "Case fill", "value": "97.2%", "note": "cases delivered / ordered", "tone": "", "basis": "Actual"}, {"label": "Top cut reason", "value": "no stock", "note": "51% of cut lines", "tone": "risk", "basis": "Actual"}], "chart": {"type": "line", "labels": ["2026-07-05", "2026-07-12", "2026-07-19", "2026-07-26", "2026-08-02", "2026-08-09", "2026-08-16", "2026-08-23", "2026-08-30", "2026-09-06", "2026-09-13", "2026-09-20", "2026-09-27", "2026-10-04", "2026-10-11", "2026-10-18", "2026-10-25", "2026-11-01", "2026-11-08", "2026-11-15", "2026-11-22", "2026-11-29"], "series": [{"name": "Modern trade", "data": [0.9206, 0.9228, 0.9238, 0.9203, 0.9216, 0.9183, 0.8612, 0.8368, 0.8371, 0.8863, 0.9201, 0.9208, 0.9187, 0.9178, 0.9249, null, null, null, null, null, null, null], "style": "cat", "color": "#2F8F6B"}, {"name": "Modern trade forecast", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0.8953, 0.8953, 0.8953, 0.8953, 0.8953, 0.8953, 0.8953], "style": "catpred", "color": "#2F8F6B"}, {"name": "Discounters", "data": [0.9221, 0.9233, 0.9196, 0.9199, 0.9292, 0.9067, 0.8577, 0.8369, 0.8281, 0.9063, 0.9162, 0.9093, 0.9158, 0.9134, 0.925, null, null, null, null, null, null, null], "style": "cat", "color": "#D9733B"}, {"name": "Discounters forecast", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0.8939, 0.8939, 0.8939, 0.8939, 0.8939, 0.8939, 0.8939], "style": "catpred", "color": "#D9733B"}, {"name": "Wholesale", "data": [0.9168, 0.9122, 0.9114, 0.9175, 0.9215, 0.9072, 0.8685, 0.8316, 0.8272, 0.8575, 0.9151, 0.9179, 0.9226, 0.9158, 0.9222, null, null, null, null, null, null, null], "style": "cat", "color": "#8E5BB5"}, {"name": "Wholesale forecast", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0.8888, 0.8888, 0.8888, 0.8888, 0.8888, 0.8888, 0.8888], "style": "catpred", "color": "#8E5BB5"}, {"name": "E-commerce", "data": [0.9312, 0.918, 0.9127, 0.9289, 0.9436, 0.9277, 0.8442, 0.8221, 0.8394, 0.8948, 0.9046, 0.9191, 0.9105, 0.923, 0.9257, null, null, null, null, null, null, null], "style": "cat", "color": "#2C9AB0"}, {"name": "E-commerce forecast", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0.8924, 0.8924, 0.8924, 0.8924, 0.8924, 0.8924, 0.8924], "style": "catpred", "color": "#2C9AB0"}], "yfmt": "pct"}, "table": {"cols": ["Cut reason", "Lines (4 wks)", "Share"], "rows": [["no stock", "1,328", "51%"], ["truck capacity", "494", "19%"], ["late picking", "353", "14%"], ["quality hold", "236", "9%"], ["customer refusal", "200", "8%"]]}, "source": "t21_fill_otif.csv", "note": ""}, {"task": 22, "area": "Supply and stock", "title": "Customer stock, near-expiry, pending returns", "question": "What stock in our customers\u2019 stores is about to come back to us?", "kpis": [{"label": "Near-expiry units", "value": "2,636", "note": "in key-account stores now", "tone": "warn", "basis": "Actual"}, {"label": "Returns pending", "value": "186", "note": "requested, not yet authorised", "tone": "", "basis": "Actual"}, {"label": "Returns next 30 days", "value": "SAR 9K", "note": "expected value", "tone": "risk", "basis": "Predicted"}], "chart": {"type": "bar", "labels": ["Chilled", "Drinks", "Food", "Ice Cream", "Unilever"], "series": [{"name": "Expected returns (SAR)", "data": [6467.37, 933.62, 317.28, 1205.64, 0.0], "style": "risk", "color": null}], "yfmt": "sar"}, "table": {"cols": ["Account", "SKU", "Near expiry", "Pending", "Expected return"], "rows": [["KA01", "LIPTON YLTB FRESH 555 ", "326", "40", "SAR 2K"], ["KA02", "LIPTON YLTB FRESH 555 ", "303", "7", "SAR 2K"], ["KA03", "LIPTON YLTB FRESH 555 ", "152", "4", "SAR 884"], ["KA01", "Igloo King Cone Butter", "573", "0", "SAR 573"], ["KA03", "ANCHOR DAILY PLUS 2.5K", "16", "1", "SAR 367"], ["KA02", "ANCHOR DAILY PLUS 2.5K", "15", "1", "SAR 344"], ["KA01", "HERSHEY COOKIE N CREAM", "191", "87", "SAR 317"], ["KA02", "LD BELGIAN STK 100ML", "78", "0", "SAR 297"]]}, "source": "t22_customer_stock_expiry.csv", "note": ""}, {"task": 23, "area": "Supply and stock", "title": "Demand shifts to share with planning", "question": "Which November forecasts have moved enough to tell planning?", "kpis": [{"label": "Shifts to share", "value": "166", "note": "of 900 SKU-locations", "tone": "warn", "basis": "Predicted"}, {"label": "Up vs plan", "value": "84", "note": "+445,527 units", "tone": "", "basis": "Predicted"}, {"label": "Down vs plan", "value": "82", "note": "-1,478,546 units", "tone": "", "basis": "Predicted"}], "chart": {"type": "bar", "labels": ["Chilled", "Drinks", "Food", "Ice Cream", "Non-Food", "Unilever"], "series": [{"name": "Up", "data": [8, 17, 18, 23, 2, 16], "style": "good", "color": null}, {"name": "Down", "data": [-10, -11, -36, -21, -3, -1], "style": "risk", "color": null}], "yfmt": "num"}, "table": {"cols": ["SKU", "Location", "Plan", "New forecast", "Shift", "Why"], "rows": [["TIFFANY BREAKSTA MIN", "RYD-DC", "724,582", "336,626", "-54%", "recent run rate below plan"], ["MOUSSY CLASSIC BOTTL", "RYD-DC", "420,421", "183,566", "-56%", "recent run rate below plan"], ["Igloo Mark Up 60 ml", "RYD-DC", "197,630", "70,423", "-64%", "recent run rate below plan"], ["IGLOO KULFI STICK 65", "RYD-DC", "236,726", "122,941", "-48%", "recent run rate below plan"], ["TIFFANY BREAK DELIGH", "RYD-DC", "68,583", "27,090", "-61%", "recent run rate below plan"], ["TIFFANY BREAK TIME M", "2100-04", "92,366", "132,672", "+44%", "November promotion"], ["IGLOO BALOU BALOU CO", "RYD-DC", "98,204", "63,372", "-35%", "recent run rate below plan"], ["HERSHEY COOKIE N CRE", "RYD-DC", "26,894", "60,689", "+126%", "recent run rate above plan"]]}, "source": "t23_demand_shifts.csv", "note": ""}, {"task": 24, "area": "Customers and finance", "title": "Overdue receivables and credit blocks", "question": "Who owes us, how late, and what will come in this month?", "kpis": [{"label": "Overdue", "value": "SAR 4.9M", "note": "of SAR 21.3M open at 20 Oct", "tone": "risk", "basis": "Actual"}, {"label": "Expected in 30 days", "value": "SAR 10.1M", "note": "from each customer\u2019s payment habit", "tone": "", "basis": "Predicted"}, {"label": "Customers on credit block", "value": "103", "note": "503 blocks since March", "tone": "", "basis": "Actual"}], "chart": {"type": "bar", "labels": ["Not due", "1\u201330", "31\u201360", "61\u201390", "90+"], "series": [{"name": "Open SAR", "data": [16427759.9, 3441643.22, 1046026.16, 289539.2, 85319.14], "style": "actual", "color": null}], "yfmt": "sar"}, "table": {"cols": ["Customer", "Channel", "Overdue", "Half paid by", "30-day chance"], "rows": [["Key account 02", "MT", "SAR 1.2M", "2026-12-20", "29%"], ["Key account 01", "MT", "SAR 510K", "2026-12-03", "34%"], ["Discounter 03", "DS", "SAR 384K", "2026-12-11", "31%"], ["Key account 04", "MT", "SAR 245K", "2026-12-03", "33%"], ["Key account 08", "MT", "SAR 190K", "2026-12-08", "31%"], ["Discounter 02", "DS", "SAR 182K", "2026-11-22", "45%"], ["Platform C", "EC", "SAR 141K", "2026-11-15", "58%"], ["Wholesaler 042", "WS", "SAR 67K", "2026-12-07", "35%"]]}, "source": "t24_receivables.csv \u00b7 t24b_credit_blocks_monthly.csv", "note": "All balances here are simulated, grocery included. Binzagr\u2019s real grocery ageing (SAR 3.82M book, SAR 591K past due) is on the Receivables screen."}, {"task": 25, "area": "Customers and finance", "title": "Claims, deductions and disputes", "question": "What have customers deducted, and how much can we win back?", "kpis": [{"label": "Open cases", "value": "227", "note": "SAR 54K held back", "tone": "warn", "basis": "Actual"}, {"label": "Recoverable", "value": "SAR 19K", "note": "expected from open cases", "tone": "good", "basis": "Predicted"}, {"label": "Median days to resolve", "value": "27", "note": "closed cases", "tone": "", "basis": "Actual"}], "chart": {"type": "bar", "horizontal": true, "labels": ["listing / display fee", "unidentified", "damaged goods", "shortage / OTIF penalty", "price difference", "promo claim offset", "promo claim above accrual"], "series": [{"name": "Deducted (SAR)", "data": [13919.03, 16612.02, 27739.6, 36339.8, 38667.06, 52897.27, 101979.91], "style": "actual", "color": null}], "yfmt": "sar"}, "table": {"cols": ["Case", "Customer", "Reason", "Amount", "Valid chance"], "rows": [["DD00988", "KA01", "promo claim above accr", "SAR 4K", "43%"], ["DD01018", "KA06", "promo claim above accr", "SAR 4K", "43%"], ["DD01025", "KA08", "promo claim above accr", "SAR 3K", "43%"], ["DD01052", "EC03", "promo claim above accr", "SAR 3K", "43%"], ["DD01003", "KA04", "promo claim above accr", "SAR 3K", "43%"], ["DD00965", "WS057", "price difference", "SAR 624", "46%"], ["DD00099", "KA01", "damaged goods", "SAR 571", "66%"], ["DD00921", "WS052", "promo claim offset", "SAR 564", "69%"]]}, "source": "t25_deductions_disputes.csv", "note": ""}, {"task": 26, "area": "Customers and finance", "title": "Key account escalations", "question": "Which customer relationships need the manager this month?", "kpis": [{"label": "Open escalations", "value": "8", "note": "1 past due date", "tone": "risk", "basis": "Actual"}, {"label": "Value at risk (open)", "value": "SAR 271K", "note": "", "tone": "", "basis": "Actual"}, {"label": "Accounts likely to escalate", "value": "10", "note": "above 30% in next 30 days", "tone": "warn", "basis": "Predicted"}], "chart": {"type": "bar", "horizontal": true, "labels": ["delisting threat", "listing / range review", "quality complaint", "credit block on orders", "price gap vs discounter", "deduction dispute", "service failure (OTIF)"], "series": [{"name": "Cases since March", "data": [6, 9, 10, 16, 23, 30, 61], "style": "actual", "color": null}], "yfmt": "num"}, "table": {"cols": ["Account", "Channel", "Chance (30d)", "Main driver"], "rows": [["Key account 01", "MT", "92%", "service (OTIF below target)"], ["Key account 06", "MT", "92%", "history"], ["Key account 02", "MT", "90%", "service (OTIF below target)"], ["Wholesaler 060", "WS", "88%", "service (OTIF below target)"], ["Key account 04", "MT", "68%", "overdue balance"], ["Platform C", "EC", "68%", "service (OTIF below target)"], ["Discounter 03", "DS", "67%", "overdue balance"], ["Key account 03", "MT", "64%", "history"]]}, "source": "t26_escalations.csv \u00b7 t26b_account_risk.csv", "note": ""}, {"task": 27, "area": "Team", "title": "Uncovered routes, absent merchandisers", "question": "Which routes and stores have nobody today?", "kpis": [{"label": "Uncovered routes / day", "value": "1.7", "note": "last 4 weeks", "tone": "warn", "basis": "Actual"}, {"label": "Merchandiser gaps / day", "value": "2.2", "note": "3 posts vacant", "tone": "risk", "basis": "Actual"}, {"label": "Next 3 weeks", "value": "41", "note": "route-days expected uncovered", "tone": "", "basis": "Predicted"}], "chart": {"type": "line", "labels": ["2026-08-20", "2026-08-22", "2026-08-23", "2026-08-24", "2026-08-25", "2026-08-26", "2026-08-27", "2026-08-29", "2026-08-30", "2026-08-31", "2026-09-01", "2026-09-02", "2026-09-03", "2026-09-05", "2026-09-06", "2026-09-07", "2026-09-08", "2026-09-09", "2026-09-10", "2026-09-12", "2026-09-13", "2026-09-14", "2026-09-15", "2026-09-16", "2026-09-17", "2026-09-19", "2026-09-20", "2026-09-21", "2026-09-22", "2026-09-23", "2026-09-24", "2026-09-26", "2026-09-27", "2026-09-28", "2026-09-29", "2026-09-30", "2026-10-01", "2026-10-03", "2026-10-04", "2026-10-05", "2026-10-06", "2026-10-07", "2026-10-08", "2026-10-10", "2026-10-11", "2026-10-12", "2026-10-13", "2026-10-14", "2026-10-15", "2026-10-17", "2026-10-18", "2026-10-19", "2026-10-20", "2026-10-21", "2026-10-22", "2026-10-24", "2026-10-25", "2026-10-26", "2026-10-27", "2026-10-28", "2026-10-29", "2026-10-31", "2026-11-01", "2026-11-02", "2026-11-03", "2026-11-04", "2026-11-05", "2026-11-07", "2026-11-08", "2026-11-09", "2026-11-10"], "series": [{"name": "Uncovered routes", "data": [1.0, 0.0, 0.0, 0.0, 2.0, 2.0, 2.0, 2.0, 2.0, 5.0, 4.0, 3.0, 3.0, 3.0, 6.0, 5.0, 2.0, 2.0, 2.0, 3.0, 2.0, 3.0, 2.0, 0.0, 2.0, 5.0, 3.0, 3.0, 2.0, 4.0, 1.0, 4.0, 1.0, 1.0, 2.0, 2.0, 1.0, 2.0, 3.0, 4.0, 2.0, 1.0, 2.0, 2.0, 2.0, 2.0, 3.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null], "style": "actual", "color": null}, {"name": "Forecast", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 1.75, 1.62, 2.75, 2.38, 2.88, 2.12, 1.75, 1.62, 2.75, 2.38, 2.88, 2.12, 1.75, 1.62, 2.75, 2.38, 2.88, 2.12], "style": "pred", "color": null}, {"name": "Uncovered merchandiser days", "data": [5.0, 4.0, 5.0, 3.0, 4.0, 6.0, 6.0, 2.0, 2.0, 3.0, 3.0, 2.0, 4.0, 1.0, 1.0, 1.0, 1.0, 0.0, 2.0, 3.0, 1.0, 2.0, 1.0, 4.0, 2.0, 1.0, 2.0, 2.0, 1.0, 2.0, 1.0, 3.0, 4.0, 4.0, 1.0, 1.0, 3.0, 5.0, 3.0, 1.0, 1.0, 5.0, 1.0, 3.0, 4.0, 0.0, 3.0, 1.0, 2.0, 2.0, 4.0, 1.0, 0.0, 2.62, 2.62, 2.5, 2.62, 1.75, 1.38, 2.62, 2.62, 2.5, 2.62, 1.75, 1.38, 2.62, 2.62, 2.5, 2.62, 1.75, 1.38], "style": "risk", "color": null}], "yfmt": "num1"}, "table": null, "source": "t27_coverage.csv", "note": "Vacancies from 1 Aug (3 merchandiser posts). Fridays excluded."}, {"task": 28, "area": "Team", "title": "KAM and supervisor meetings", "question": "Are the right meetings happening, and what do they win?", "kpis": [{"label": "Meetings, last 4 weeks", "value": "204", "note": "354 hours", "tone": "", "basis": "Actual"}, {"label": "Value negotiated", "value": "SAR 6.7M", "note": "promotion, range and plan meetings", "tone": "", "basis": "Actual"}, {"label": "Agreed", "value": "56%", "note": "of negotiations fully or partly agreed", "tone": "good", "basis": "Actual"}], "chart": {"type": "bar", "stacked": true, "labels": ["2026-07-05", "2026-07-12", "2026-07-19", "2026-07-26", "2026-08-02", "2026-08-09", "2026-08-16", "2026-08-23", "2026-08-30", "2026-09-06", "2026-09-13", "2026-09-20", "2026-09-27", "2026-10-04", "2026-10-11", "2026-10-18", "2026-10-25", "2026-11-01", "2026-11-08"], "series": [{"name": "Channel manager GR", "data": [1.5, 1.5, 0.0, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 0.0, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5], "style": "cat", "color": "#8E5BB5"}, {"name": "Channel manager MT/DS", "data": [1.5, 1.5, 0.0, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 0.0, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5], "style": "cat", "color": "#D9733B"}, {"name": "Channel manager WS/EC", "data": [1.5, 1.5, 0.0, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 0.0, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5, 1.5], "style": "cat", "color": "#2C9AB0"}, {"name": "Key account manager", "data": [25.0, 30.0, 31.0, 9.0, 24.0, 19.0, 27.0, 20.0, 23.0, 35.0, 29.0, 15.0, 23.0, 32.0, 38.0, 27.7, 27.7, 27.7, 27.7], "style": "cat", "color": "#1F4E8C"}, {"name": "Sales supervisor", "data": [57.0, 51.0, 10.0, 57.0, 60.0, 57.0, 57.0, 59.0, 48.0, 9.0, 58.0, 57.0, 57.0, 57.0, 57.0, 58.5, 58.5, 58.5, 58.5], "style": "cat", "color": "#2F8F6B"}], "yfmt": "num", "predafter": "2026-10-11"}, "table": {"cols": ["Type", "Meetings", "Value at stake"], "rows": [["team huddle", "48", "\u2014"], ["route ride-along", "48", "\u2014"], ["business review", "22", "\u2014"], ["escalation meeting", "22", "SAR 3.2M"], ["promotion negotiation", "20", "SAR 1.5M"], ["range / listing", "14", "SAR 1.6M"], ["collections call", "12", "\u2014"], ["weekly sales review", "12", "\u2014"]]}, "source": "t28_meetings.csv", "note": "Hours per week by role; weeks after 11 Oct are forecast."}, {"task": 29, "area": "Team", "title": "Action log and approvals", "question": "What is waiting on whom, and will it slip?", "kpis": [{"label": "Open actions", "value": "124", "note": "110 overdue \u00b7 raised in last 90 days", "tone": "risk", "basis": "Actual"}, {"label": "Median wait", "value": "48 days", "note": "90 items older than 30 days", "tone": "", "basis": "Actual"}, {"label": "Backlog end Nov", "value": "116", "note": "open items, 6 weeks out", "tone": "warn", "basis": "Predicted"}], "chart": {"type": "line", "labels": ["2026-06-07", "2026-06-14", "2026-06-21", "2026-06-28", "2026-07-05", "2026-07-12", "2026-07-19", "2026-07-26", "2026-08-02", "2026-08-09", "2026-08-16", "2026-08-23", "2026-08-30", "2026-09-06", "2026-09-13", "2026-09-20", "2026-09-27", "2026-10-04", "2026-10-11", "2026-10-18", "2026-10-25", "2026-11-01", "2026-11-08", "2026-11-15", "2026-11-22", "2026-11-29"], "series": [{"name": "Open backlog", "data": [151.0, 156.0, 161.0, 175.0, 162.0, 161.0, 180.0, 169.0, 177.0, 188.0, 173.0, 180.0, 168.0, 176.0, 177.0, 182.0, 159.0, 167.0, 144.0, null, null, null, null, null, null, null], "style": "actual", "color": null}, {"name": "Forecast", "data": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, 140.0, 136.0, 132.0, 128.0, 124.0, 120.0, 116.0], "style": "pred", "color": null}], "yfmt": "num"}, "table": {"cols": ["Action", "Type", "Owner", "Waiting", "Miss chance"], "rows": [["AC01614", "promotion approval", "KAM03", "90", "100%"], ["AC01623", "price below floor", "KAM08", "90", "100%"], ["AC01624", "promotion approval", "KAM05", "89", "100%"], ["AC01651", "uncovered route", "KAM03", "88", "100%"], ["AC01654", "promotion approval", "KAM02", "87", "100%"], ["AC01657", "raise route frequency", "SUP03", "87", "100%"], ["AC01686", "promotion approval", "KAM06", "86", "100%"], ["AC01690", "churn risk outlet", "SUP04", "85", "100%"]]}, "source": "t29_action_log_open.csv \u00b7 t29b_action_backlog.csv", "note": ""}, {"task": 30, "area": "Team", "title": "Where the manager spends time", "question": "Is the manager\u2019s week spent on customers and the field, or on reports?", "kpis": [{"label": "Hours per week", "value": "57", "note": "per channel manager", "tone": "", "basis": "Actual"}, {"label": "Customer + field time", "value": "31%", "note": "suggested 45%", "tone": "warn", "basis": "Actual"}, {"label": "Reports + admin", "value": "43%", "note": "suggested 30%", "tone": "risk", "basis": "Actual"}], "chart": {"type": "bar", "horizontal": true, "labels": ["planning & forecasting", "field visits", "approvals & escalations", "key account meetings", "admin / email", "internal reviews / reporting"], "series": [{"name": "Actual share", "data": [0.1027, 0.1278, 0.1557, 0.1806, 0.2013, 0.2318], "style": "actual", "color": null}, {"name": "Suggested", "data": [0.13, 0.2, 0.12, 0.25, 0.15, 0.15], "style": "target", "color": null}], "yfmt": "pct"}, "table": null, "source": "t30_manager_time.csv", "note": "From manager calendars (simulated). Suggested mix is our proposal, not Binzagr\u2019s."}]}