/* ============================================================ Finance — Slides. Same two-pane shell as the Model page, but the source file is a PRESENTATION and its items are SLIDES. Rebuilt to mirror the real deck: Slides/CFO_Board_Presentation_Deck.pptx (5 slides). Each slide renders off a Finance data product. ============================================================ */ (function () { const DECK = 'CFO_Board_Presentation_Deck.pptx'; const POR = '#B7B0A8', LEB = '#1F3B2C', BAR = '#1F3B2C'; const SLIDES = [ { title: 'FY2026 Interim Review & Three-Year Outlook', built: 'Executive Summary · Three-Statement Model', cover: true, meta: ['Cascade Ridge Foods · Board of Directors · July 2026', 'Prepared by the Chief Financial Officer · Actuals through June 2026'], kpis: [['FY2026E Revenue', '$160.0M', '+12.7% vs FY2025'], ['FY2026E EBITDA', '$16.3M', '10.2% margin'], ['FY2026E Net Income', '$9.2M', 'vs $2.9M in FY2025'], ['FY2026E Ending Cash', '$19.2M', '0.9x net leverage']], data: [['FY2026E revenue', '$160.0M'], ['FY2026E EBITDA', '$16.3M'], ['FY2026E net income', '$9.2M']] }, { title: 'Revenue Performance & Growth Outlook', built: 'P&L & Margin Bridge · Three-Statement Model', chart: { unit: 'Revenue, $ millions', bars: [['FY2024', 128.0], ['FY2025', 142.0], ['FY2026E', 160.0], ['FY2027E', 176.0], ['FY2028E', 191.8]] }, notes: [['H1-2026 revenue $78.0M, +13.4%', 'June the strongest month on record at $16.4M'], ['Forecast +12% through H2', 'then +10% FY2027 and +9% FY2028 on committed line volume'], ['Mix holds ~84% turnkey', 'tolling grows in line with the book']], data: [['FY2026E revenue', '$160.0M'], ['H1-2026', '$78.0M (+13.4%)'], ['FY2028E', '$191.8M']] }, { title: 'Margin Recovery & Profitability', built: 'P&L & Margin Bridge', chart: { unit: 'EBITDA, $ millions', bars: [['FY2024', 12.0, '9.4%'], ['FY2025', 8.2, '5.8%'], ['FY2026E', 16.3, '10.2%'], ['FY2027E', 17.9, '10.2%'], ['FY2028E', 19.6, '10.2%']] }, notes: [['FY2025 gross margin 18.2%', 'compressed by ingredient inflation + a $1.8M bad-debt write-off'], ['H1-2026 gross margin 20.9%', 'pricing actions and freight recovery holding'], ['Forecast GM 21.2% (FY26E–28E)', 'no repeat write-off; DSO tightened to 48 days']], data: [['FY2025 EBITDA', '$8.2M (5.8%)'], ['FY2026E EBITDA', '$16.3M (10.2%)'], ['FY2025 gross margin', '18.2%']] }, { title: 'Cash Flow, Debt & Distributions', built: 'Three-Statement Model', chart: { unit: 'Ending cash, year-end $ millions', bars: [['FY24', 7.6], ['FY25', 9.5], ['FY26E', 19.2], ['FY27E', 25.3], ['FY28E', 32.7]] }, notes: [['Term debt $15.2M → $11.6M', 'FY2025 → FY2028E · net leverage 0.6x by FY2028E'], ['Principal $1.2M/yr · Capex $3.5M/yr', 'owner distributions $2.0M/yr from FY2027'], ['All uses funded from operations', 'no new borrowing assumed through FY2028']], data: [['FY2026E ending cash', '$19.2M'], ['FY2028E ending cash', '$32.7M'], ['Term debt FY28E', '$11.6M']] }, { title: 'Capacity & Utilization', built: 'Capacity & Utilization', chart: { unit: 'FY2026E utilization by line', pct: true, byPlant: true, bars: [['POR-L1', 78, POR], ['POR-L2', 71, POR], ['POR-L3', 75, POR], ['POR-L4', 69, POR], ['LEB-L1', 88, LEB], ['LEB-L2', 87, LEB], ['LEB-L3', 86, LEB], ['LEB-L4', 90, LEB], ['LEB-L5', 83, LEB]] }, notes: [['Network utilization 76% → 93%', '88.7M units FY2026E on 106.0M practical capacity'], ['LEB-L5 upgrade landed April', '+20% line capacity (~2.7M units/yr), within the $3.5M capex'], ['Expansion case due H1-FY2027', 'Lebanon reaches 96–100% by FY2028; Portland holds low-80s headroom']], data: [['Network util FY2026E', '~85%'], ['Units / capacity', '88.7M / 106.0M'], ['LEB-L5 add', '+20%']] }, ]; function Bars({ chart }) { const bars = chart.bars, pct = chart.pct; const W = 660, H = 196, padT = 22, padB = 30; const max = pct ? 100 : Math.max.apply(null, bars.map((b) => b[1])) * 1.15; const plotH = H - padT - padB, band = W / bars.length, bw = Math.min(58, band * 0.5); const yOf = (v) => padT + plotH - (v / max) * plotH; const fmt = (v) => pct ? v + '%' : v.toFixed(v >= 100 ? 0 : 1); return ( ); } function SlideSurface({ s }) { const green = '#1F3B2C'; // Slide typography scales with the canvas width (cqw = 1% of the // .mdl__canvas container) and caps at the original desktop sizes, so the // fixed 16:9 surface never clips its content on tablet/phone panes. const fs = (px) => `clamp(${Math.max(6, Math.round(px * 0.55))}px, ${(px / 7).toFixed(2)}cqw, ${px}px)`; return (
In sync with {DECK} · rebuilt from the model at the Jul-2026 close
{s.built}
Every figure pulls from a data product — change the model and the slide updates. Nothing is typed by hand.
Slide {sel + 1} of the CFO board deck — a presentation view that renders off the Finance model.
{s.built}
The deck is an artifact of the model, not a separate document. Same data as the hub — presented for the board.