{
 "meta": {
  "company": "Tarnlea Build & Retrofit Ltd (fictional demonstration company)",
  "fictional": true,
  "jurisdiction": "Ireland",
  "currency": "EUR",
  "last_actual_month": "2026-08-31",
  "scenario": "Base",
  "generated": "2026-09-13",
  "source_workbook": "Tarnlea_Build_Retrofit_Construction_Finance_Pack_Aug26_FICTIONAL.xlsx",
  "model_status": "OK",
  "formula_errors": 0,
  "integrity_checks_passed": 37,
  "integrity_checks_failed": [],
  "formats": {
   "eur": "EUR, whole units",
   "eur2": "EUR, two decimals",
   "pct": "ratio (0.25 = 25%)",
   "int": "count",
   "num1": "number, one decimal",
   "num2": "number, two decimals",
   "num3": "number, three decimals",
   "x": "multiple",
   "date": "ISO date",
   "month": "month end, ISO date"
  }
 },
 "scenarios": {
  "snapshot_run_date": "13-Sep-2026",
  "selected": "Base",
  "metrics": [
   {
    "key": "fy26_rev",
    "label": "FY2026 revenue (outlook)",
    "unit": "EUR",
    "base": 9197434.2432,
    "downside": 8568111.1722,
    "upside": 9257328.1866,
    "live_selected": 9197434.2432,
    "check": 0
   },
   {
    "key": "fy27_rev",
    "label": "FY2027 revenue",
    "unit": "EUR",
    "base": 9703425.5229,
    "downside": 7971780.8255,
    "upside": 10898085.6245,
    "live_selected": 9703425.5229,
    "check": 0
   },
   {
    "key": "fy26_gm",
    "label": "FY2026 gross margin %",
    "unit": "%",
    "base": 0.1827,
    "downside": 0.1644,
    "upside": 0.1902,
    "live_selected": 0.1827,
    "check": 0
   },
   {
    "key": "fy26_cfgm",
    "label": "FY2026 commercial fit-out gross margin %",
    "unit": "%",
    "base": 0.1349,
    "downside": 0.0989,
    "upside": 0.1473,
    "live_selected": 0.1349,
    "check": 0
   },
   {
    "key": "fy26_ebitda",
    "label": "FY2026 EBITDA",
    "unit": "EUR",
    "base": 424278.3155,
    "downside": 163434.0198,
    "upside": 511888.1113,
    "live_selected": 424278.3155,
    "check": 0
   },
   {
    "key": "fy26_ebitdap",
    "label": "FY2026 EBITDA %",
    "unit": "%",
    "base": 0.0461,
    "downside": 0.0191,
    "upside": 0.0553,
    "live_selected": 0.0461,
    "check": 0
   },
   {
    "key": "fy26_np",
    "label": "FY2026 net profit",
    "unit": "EUR",
    "base": 241159.5945,
    "downside": 12920.8358,
    "upside": 317818.1659,
    "live_selected": 241159.5945,
    "check": 0
   },
   {
    "key": "fy27_gm",
    "label": "FY2027 gross margin %",
    "unit": "%",
    "base": 0.1862,
    "downside": 0.1533,
    "upside": 0.1951,
    "live_selected": 0.1862,
    "check": 0
   },
   {
    "key": "fy27_ebitda",
    "label": "FY2027 EBITDA",
    "unit": "EUR",
    "base": 263955.8684,
    "downside": -181433.9905,
    "upside": 735043.0992,
    "live_selected": 263955.8684,
    "check": 0
   },
   {
    "key": "fy27_ebitdap",
    "label": "FY2027 EBITDA %",
    "unit": "%",
    "base": 0.0272,
    "downside": -0.0228,
    "upside": 0.0674,
    "live_selected": 0.0272,
    "check": 0
   },
   {
    "key": "fy27_np",
    "label": "FY2027 net profit",
    "unit": "EUR",
    "base": 88245.6937,
    "downside": -344537.6376,
    "upside": 500447.0207,
    "live_selected": 88245.6937,
    "check": 0
   },
   {
    "key": "cash_dec26",
    "label": "Cash at 31-Dec-26",
    "unit": "EUR",
    "base": 632766.8777,
    "downside": 40385.257,
    "upside": 776221.4926,
    "live_selected": 632766.8777,
    "check": 0
   },
   {
    "key": "cash_dec27",
    "label": "Cash at 31-Dec-27",
    "unit": "EUR",
    "base": 1114521.6169,
    "downside": 111554.2729,
    "upside": 1633476.7296,
    "live_selected": 1114521.6169,
    "check": 0
   },
   {
    "key": "cash_min",
    "label": "Lowest month-end cash, Sep-26 to Dec-27",
    "unit": "EUR",
    "base": 418470.3684,
    "downside": -26677.3565,
    "upside": 543229.3388,
    "live_selected": 418470.3684,
    "check": 0
   },
   {
    "key": "cash_min_m",
    "label": "Month of the lowest cash",
    "unit": "month",
    "base": "2026-10-31",
    "downside": "2026-11-30",
    "upside": "2026-10-31",
    "live_selected": "2026-10-31",
    "check": 0
   },
   {
    "key": "fund_need",
    "label": "Headroom at the lowest point vs the cash buffer (negative = shortfall)",
    "unit": "EUR",
    "base": 218470.3684,
    "downside": -226677.3565,
    "upside": 343229.3388,
    "live_selected": 218470.3684,
    "check": 0
   },
   {
    "key": "secured_dec26",
    "label": "Secured work in hand at 31-Dec-26",
    "unit": "EUR",
    "base": 2859805.7283,
    "downside": 3295961.3341,
    "upside": 2873087.9372,
    "live_selected": 2859805.7283,
    "check": 0
   },
   {
    "key": "pipe_dec26",
    "label": "Weighted pipeline at 31-Dec-26",
    "unit": "EUR",
    "base": 3106562.5,
    "downside": 2022000,
    "upside": 4081937.5,
    "live_selected": 3106562.5,
    "check": 0
   },
   {
    "key": "wc_dec26",
    "label": "Working capital tied up in contracts at 31-Dec-26",
    "unit": "EUR",
    "base": 970968.4202,
    "downside": 1267652.027,
    "upside": 915330.7096,
    "live_selected": 970968.4202,
    "check": 0
   },
   {
    "key": "bond_peak",
    "label": "Peak bond facility utilisation",
    "unit": "%",
    "base": 0.8827,
    "downside": 0.8307,
    "upside": 0.8896,
    "live_selected": 0.8827,
    "check": 0
   },
   {
    "key": "util_fy27",
    "label": "FY2027 site utilisation",
    "unit": "%",
    "base": 0.8055,
    "downside": 0.7925,
    "upside": 0.8781,
    "live_selected": 0.8055,
    "check": 0
   },
   {
    "key": "labvar_fy27",
    "label": "FY2027 labour recovery variance",
    "unit": "EUR",
    "base": -80877.756,
    "downside": -96783.623,
    "upside": 71610.2346,
    "live_selected": -80877.756,
    "check": 0
   },
   {
    "key": "vo_final",
    "label": "Pending variations: expected final value",
    "unit": "EUR",
    "base": 109460,
    "downside": 58940,
    "upside": 143140,
    "live_selected": 109460,
    "check": 0
   }
  ]
 },
 "checks": {
  "overall_status": "OK",
  "checks": [
   {
    "check": "Balance sheet balances in every month",
    "proves": "Total assets less liabilities and equity, all 24 months",
    "value": 0.24,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Cash flow: indirect method equals direct method every month",
    "proves": "P&L and balance sheet movements equal the sum of the schedule cash lines",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Closing cash on the cash flow equals balance sheet cash",
    "proves": "Link integrity",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Retained earnings roll: closing = opening + profit - dividends",
    "proves": "Equity roll-forward to Dec-27",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "EBITDA on the cash flow equals EBITDA on the P&L",
    "proves": "Add-backs complete",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Opening balance sheet at 31-Dec-25 balances",
    "proves": "FY2025 closing balances on Inputs_Actuals and Project_Register",
    "value": 0.0065,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Revenue recognised in actual months equals % complete x contract revenue",
    "proves": "Ledger revenue agrees with the cost-to-cost method, every contract, every actual month",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Forecast cost spread equals cost to complete, contracts finishing within the horizon",
    "proves": "S-curve phasing neither loses nor adds cost",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Variations in contract value at the last actual month agree with the register",
    "proves": "WIP engine and Variations register apply the same policy",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Percentage complete stays between 0% and 100%",
    "proves": "No over-recognition",
    "value": 0,
    "tolerance": 0.0001,
    "status": "OK"
   },
   {
    "check": "Retrofit revenue shares sum to 100%",
    "proves": "Every job is fully earned",
    "value": 0,
    "tolerance": 0.0,
    "status": "OK"
   },
   {
    "check": "Renovation revenue shares sum to 100%",
    "proves": null,
    "value": 0,
    "tolerance": 0.0,
    "status": "OK"
   },
   {
    "check": "Retrofit homeowner stage invoices sum to 100%",
    "proves": "Homeowner portion fully invoiced",
    "value": 0,
    "tolerance": 0.0,
    "status": "OK"
   },
   {
    "check": "Renovation billing (deposit + progress + snag) sums to 100%",
    "proves": "Contract value fully invoiced",
    "value": 0,
    "tolerance": 0.0,
    "status": "OK"
   },
   {
    "check": "Programme cost mixes sum to 100%",
    "proves": null,
    "value": 0,
    "tolerance": 0.0,
    "status": "OK"
   },
   {
    "check": "Named contract cost mixes: preliminaries share not negative (minimum)",
    "proves": "Mix shares on Project_Register are complete",
    "value": 0.05,
    "tolerance": 0,
    "status": "OK"
   },
   {
    "check": "Cost to complete covers every remaining commitment (minimum uncommitted balance)",
    "proves": "No contract has more on order than its cost to complete",
    "value": 94307.6,
    "tolerance": 0,
    "status": "OK"
   },
   {
    "check": "Project profitability: allocated net contributions equal EBITDA",
    "proves": "Labour variance, fleet and overheads are fully allocated",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AR aging: commercial ties to the ledger",
    "proves": "Item listing agrees with the balance at the last actual month",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AR aging: council ties to the ledger",
    "proves": "Item listing agrees with the balance at the last actual month",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AR aging: homeowners ties to the ledger",
    "proves": "Item listing agrees with the balance at the last actual month",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AR aging: seai grants ties to the ledger",
    "proves": "Item listing agrees with the balance at the last actual month",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AR aging: other ties to the ledger",
    "proves": "Item listing agrees with the balance at the last actual month",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AP aging: subcontractors ties to the Payables schedule",
    "proves": null,
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AP aging: materials ties to the Payables schedule",
    "proves": null,
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AP aging: plant and site services ties to the Payables schedule",
    "proves": null,
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AP aging: overheads ties to the Payables schedule",
    "proves": null,
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "13-week cash forecast reconciles to the monthly balance sheet at 31-Dec-26",
    "proves": "Weekly phasing distributes exactly the monthly cash lines",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Scenario snapshots are current for the selected scenario",
    "proves": "Live column equals the stored snapshot",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Budget vs actual gross profit bridge reconciles to the P&L variance",
    "proves": "Volume plus margin effects equal the gross profit variance",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Trade receivables never negative",
    "proves": null,
    "value": 277981.8962,
    "tolerance": 0,
    "status": "OK"
   },
   {
    "check": "SEAI grant receivable never negative",
    "proves": null,
    "value": 108387.05,
    "tolerance": 0,
    "status": "OK"
   },
   {
    "check": "Retentions receivable never negative",
    "proves": null,
    "value": 116889.7435,
    "tolerance": 0,
    "status": "OK"
   },
   {
    "check": "Trade payables never negative",
    "proves": null,
    "value": 430174.3928,
    "tolerance": 0,
    "status": "OK"
   },
   {
    "check": "Fixed asset net book value never negative",
    "proves": null,
    "value": 168589.9167,
    "tolerance": 0,
    "status": "OK"
   },
   {
    "check": "Hire purchase balance never negative",
    "proves": null,
    "value": 112831.25,
    "tolerance": 0,
    "status": "OK"
   },
   {
    "check": "Timeline: months flagged actual equal the last actual month number",
    "proves": null,
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   }
  ],
  "business_warnings": [
   {
    "item": "Lowest month-end cash in the forecast (selected scenario)",
    "note": "Below the buffer means a facility draw or action",
    "value": 418470.3684
   },
   {
    "item": "Lowest 13-week closing cash",
    "note": null,
    "value": 230046.3917
   },
   {
    "item": "Peak bond facility utilisation",
    "note": "Above 100% means new contracts cannot be bonded",
    "value": 0.8827
   },
   {
    "item": "Lowest forecast site utilisation",
    "note": "Below 75% signals idle labour",
    "value": 0.6162
   },
   {
    "item": "Largest onerous contract provision in the forecast",
    "note": "A loss-making contract",
    "value": 0
   },
   {
    "item": "Variations raised and undecided at the last actual month (claimed)",
    "note": "Revenue at risk if not agreed",
    "value": 168400
   }
  ]
 },
 "bva": {
  "rows": [
   {
    "key": "v_RR",
    "label": "Retrofit homes started",
    "ytd_actual": 22,
    "ytd_budget": 28.35,
    "ytd_variance": -6.35,
    "ytd_variance_pct": -0.224,
    "fy_outlook": 35.4789,
    "fy_budget": 42,
    "fy_variance": -6.5211,
    "fy_variance_pct": -0.1553,
    "commentary": "Coordinator vacancy Mar to May delayed surveys and grant applications; starts back to 4 in the last actual month."
   },
   {
    "key": "v_RX",
    "label": "Renovation jobs started",
    "ytd_actual": 11,
    "ytd_budget": 12.14,
    "ytd_variance": -1.14,
    "ytd_variance_pct": -0.0939,
    "fy_outlook": 16.4108,
    "fy_budget": 17.99,
    "fy_variance": -1.5792,
    "fy_variance_pct": -0.0878,
    "commentary": null
   },
   {
    "key": "rev_RR",
    "label": "Revenue: residential deep retrofit (seai one stop shop)",
    "ytd_actual": 1247322.85,
    "ytd_budget": 1647190,
    "ytd_variance": -399867.15,
    "ytd_variance_pct": -0.2428,
    "fy_outlook": 2132818.9817,
    "fy_budget": 2525498,
    "fy_variance": -392679.0183,
    "fy_variance_pct": -0.1555,
    "commentary": null
   },
   {
    "key": "rev_RX",
    "label": "Revenue: residential renovation and extensions",
    "ytd_actual": 1276311.62,
    "ytd_budget": 1263625,
    "ytd_variance": 12686.62,
    "ytd_variance_pct": 0.01,
    "fy_outlook": 1982039.2699,
    "fy_budget": 2007754,
    "fy_variance": -25714.7301,
    "fy_variance_pct": -0.0128,
    "commentary": null
   },
   {
    "key": "rev_CF",
    "label": "Revenue: commercial fit-out",
    "ytd_actual": 1559275.96,
    "ytd_budget": 2059884,
    "ytd_variance": -500608.04,
    "ytd_variance_pct": -0.243,
    "fy_outlook": 3290084.0536,
    "fy_budget": 3649153,
    "fy_variance": -359068.9464,
    "fy_variance_pct": -0.0984,
    "commentary": "CF-2602 and CF-2603 started two months after the budget dates; CF-2601 on programme."
   },
   {
    "key": "rev_PS",
    "label": "Revenue: public sector retrofit (council)",
    "ytd_actual": 1044493.57,
    "ytd_budget": 1395360,
    "ytd_variance": -350866.43,
    "ytd_variance_pct": -0.2515,
    "fy_outlook": 1792491.938,
    "fy_budget": 1860000,
    "fy_variance": -67508.062,
    "fy_variance_pct": -0.0363,
    "commentary": "PS-2601 started in May against a March budget start."
   },
   {
    "key": "T_rev",
    "label": "NET REVENUE",
    "ytd_actual": 5127404,
    "ytd_budget": 6366059,
    "ytd_variance": -1238655,
    "ytd_variance_pct": -0.1946,
    "fy_outlook": 9197434.2432,
    "fy_budget": 10042405,
    "fy_variance": -844970.7568,
    "fy_variance_pct": -0.0841,
    "commentary": "Volume effect on gross profit EUR -214k, margin effect EUR -53k (bridge below)."
   },
   {
    "key": "gp_RR",
    "label": "Gross profit: residential deep retrofit (seai one stop shop)",
    "ytd_actual": 273319.13,
    "ytd_budget": 403561.55,
    "ytd_variance": -130242.42,
    "ytd_variance_pct": -0.3227,
    "fy_outlook": 481410.7209,
    "fy_budget": 618747.01,
    "fy_variance": -137336.2891,
    "fy_variance_pct": -0.222,
    "commentary": null
   },
   {
    "key": "gp_RX",
    "label": "Gross profit: residential renovation and extensions",
    "ytd_actual": 323607.23,
    "ytd_budget": 322224.375,
    "ytd_variance": 1382.855,
    "ytd_variance_pct": 0.0043,
    "fy_outlook": 492981.866,
    "fy_budget": 511977.27,
    "fy_variance": -18995.404,
    "fy_variance_pct": -0.0371,
    "commentary": null
   },
   {
    "key": "gp_CF",
    "label": "Gross profit: commercial fit-out",
    "ytd_actual": 186515.87,
    "ytd_budget": 304862.832,
    "ytd_variance": -118346.962,
    "ytd_variance_pct": -0.3882,
    "fy_outlook": 443935.5432,
    "fy_budget": 540074.644,
    "fy_variance": -96139.1008,
    "fy_variance_pct": -0.178,
    "commentary": null
   },
   {
    "key": "gp_PS",
    "label": "Gross profit: public sector retrofit (council)",
    "ytd_actual": 161136.4,
    "ytd_budget": 181396.8,
    "ytd_variance": -20260.4,
    "ytd_variance_pct": -0.1117,
    "fy_outlook": 262315.0238,
    "fy_budget": 241800,
    "fy_variance": 20515.0238,
    "fy_variance_pct": 0.0848,
    "commentary": null
   },
   {
    "key": "T_gp",
    "label": "GROSS PROFIT",
    "ytd_actual": 944578.63,
    "ytd_budget": 1212045.557,
    "ytd_variance": -267466.927,
    "ytd_variance_pct": -0.2207,
    "fy_outlook": 1680643.1539,
    "fy_budget": 1912598.924,
    "fy_variance": -231955.7701,
    "fy_variance_pct": -0.1213,
    "commentary": null
   },
   {
    "key": "gm_RR",
    "label": "Gross margin %: residential deep retrofit (seai one stop shop)",
    "ytd_actual": 0.2191,
    "ytd_budget": 0.245,
    "ytd_variance": -0.0259,
    "ytd_variance_pct": null,
    "fy_outlook": 0.2257,
    "fy_budget": 0.245,
    "fy_variance": -0.0193,
    "fy_variance_pct": null,
    "commentary": null
   },
   {
    "key": "gm_RX",
    "label": "Gross margin %: residential renovation and extensions",
    "ytd_actual": 0.2535,
    "ytd_budget": 0.255,
    "ytd_variance": -0.0015,
    "ytd_variance_pct": null,
    "fy_outlook": 0.2487,
    "fy_budget": 0.255,
    "fy_variance": -0.0063,
    "fy_variance_pct": null,
    "commentary": null
   },
   {
    "key": "gm_CF",
    "label": "Gross margin %: commercial fit-out",
    "ytd_actual": 0.1196,
    "ytd_budget": 0.148,
    "ytd_variance": -0.0284,
    "ytd_variance_pct": null,
    "fy_outlook": 0.1349,
    "fy_budget": 0.148,
    "fy_variance": -0.0131,
    "fy_variance_pct": null,
    "commentary": "CF-2601 cost at completion EUR 172k over tender (M&E subcontractor replaced, design changes)."
   },
   {
    "key": "gm_PS",
    "label": "Gross margin %: public sector retrofit (council)",
    "ytd_actual": 0.1543,
    "ytd_budget": 0.13,
    "ytd_variance": 0.0243,
    "ytd_variance_pct": null,
    "fy_outlook": 0.1463,
    "fy_budget": 0.13,
    "fy_variance": 0.0163,
    "fy_variance_pct": null,
    "commentary": null
   },
   {
    "key": "gm",
    "label": "Gross margin %",
    "ytd_actual": 0.1842,
    "ytd_budget": 0.1904,
    "ytd_variance": -0.0062,
    "ytd_variance_pct": null,
    "fy_outlook": 0.1827,
    "fy_budget": 0.1905,
    "fy_variance": -0.0077,
    "fy_variance_pct": null,
    "commentary": null
   },
   {
    "key": "lab_var",
    "label": "Labour recovery variance",
    "ytd_actual": -76910.8575,
    "ytd_budget": -24000,
    "ytd_variance": -52910.8575,
    "ytd_variance_pct": -2.2046,
    "fy_outlook": 87.7116,
    "fy_budget": -36000,
    "fy_variance": 36087.7116,
    "fy_variance_pct": 1.0024,
    "commentary": "Site team under-used Feb to Apr while named work ran down; fully used from July with agency support."
   },
   {
    "key": "fleet",
    "label": "Fleet running costs and small tools",
    "ytd_actual": -111934,
    "ytd_budget": -104000,
    "ytd_variance": -7934,
    "ytd_variance_pct": -0.0763,
    "fy_outlook": -170254,
    "fy_budget": -156000,
    "fy_variance": -14254,
    "fy_variance_pct": -0.0914,
    "commentary": null
   },
   {
    "key": "contrib",
    "label": "CONTRIBUTION AFTER SITE RESOURCES",
    "ytd_actual": 755733.7725,
    "ytd_budget": 1084045.557,
    "ytd_variance": -328311.7845,
    "ytd_variance_pct": -0.3029,
    "fy_outlook": 1510476.8655,
    "fy_budget": 1720598.924,
    "fy_variance": -210122.0585,
    "fy_variance_pct": -0.1221,
    "commentary": null
   },
   {
    "key": "ox_payroll",
    "label": "Office payroll",
    "ytd_actual": -389958.3,
    "ytd_budget": -438960,
    "ytd_variance": 49001.7,
    "ytd_variance_pct": 0.1116,
    "fy_outlook": -603137.55,
    "fy_budget": -658440,
    "fy_variance": 55302.45,
    "fy_variance_pct": 0.084,
    "commentary": "Retrofit coordinator vacancy March to May."
   },
   {
    "key": "ox_rent",
    "label": "Rent: office and yard",
    "ytd_actual": -57312,
    "ytd_budget": -59200,
    "ytd_variance": 1888,
    "ytd_variance_pct": 0.0319,
    "fy_outlook": -86912,
    "fy_budget": -88800,
    "fy_variance": 1888,
    "fy_variance_pct": 0.0213,
    "commentary": null
   },
   {
    "key": "ox_insurance",
    "label": "Insurance (public, employer and contractors all risks)",
    "ytd_actual": -75131,
    "ytd_budget": -76800,
    "ytd_variance": 1669,
    "ytd_variance_pct": 0.0217,
    "fy_outlook": -113931,
    "fy_budget": -115200,
    "fy_variance": 1269,
    "fy_variance_pct": 0.011,
    "commentary": null
   },
   {
    "key": "ox_it",
    "label": "IT, software and estimating tools",
    "ytd_actual": -31234,
    "ytd_budget": -29600,
    "ytd_variance": -1634,
    "ytd_variance_pct": -0.0552,
    "fy_outlook": -46834,
    "fy_budget": -44400,
    "fy_variance": -2434,
    "fy_variance_pct": -0.0548,
    "commentary": null
   },
   {
    "key": "ox_marketing",
    "label": "Marketing and lead generation (residential)",
    "ytd_actual": -52476,
    "ytd_budget": -52000,
    "ytd_variance": -476,
    "ytd_variance_pct": -0.0092,
    "fy_outlook": -79676,
    "fy_budget": -78000,
    "fy_variance": -1676,
    "fy_variance_pct": -0.0215,
    "commentary": null
   },
   {
    "key": "ox_profees",
    "label": "Professional fees (audit, legal, tax)",
    "ytd_actual": -32840,
    "ytd_budget": -32000,
    "ytd_variance": -840,
    "ytd_variance_pct": -0.0262,
    "fy_outlook": -49640,
    "fy_budget": -48000,
    "fy_variance": -1640,
    "fy_variance_pct": -0.0342,
    "commentary": null
   },
   {
    "key": "ox_training",
    "label": "Training, health and safety, PPE",
    "ytd_actual": -20728,
    "ytd_budget": -20800,
    "ytd_variance": 72,
    "ytd_variance_pct": 0.0035,
    "fy_outlook": -31928,
    "fy_budget": -31200,
    "fy_variance": -728,
    "fy_variance_pct": -0.0233,
    "commentary": null
   },
   {
    "key": "ox_office",
    "label": "Office and administration",
    "ytd_actual": -17868,
    "ytd_budget": -16800,
    "ytd_variance": -1068,
    "ytd_variance_pct": -0.0636,
    "fy_outlook": -26868,
    "fy_budget": -25200,
    "fy_variance": -1668,
    "fy_variance_pct": -0.0662,
    "commentary": null
   },
   {
    "key": "ox_motor",
    "label": "Motor (non-site vehicles)",
    "ytd_actual": -13345,
    "ytd_budget": -13600,
    "ytd_variance": 255,
    "ytd_variance_pct": 0.0187,
    "fy_outlook": -20345,
    "fy_budget": -20400,
    "fy_variance": 55,
    "fy_variance_pct": 0.0027,
    "commentary": null
   },
   {
    "key": "ox_subs",
    "label": "Subscriptions and memberships",
    "ytd_actual": -6843,
    "ytd_budget": -6800,
    "ytd_variance": -43,
    "ytd_variance_pct": -0.0063,
    "fy_outlook": -10283,
    "fy_budget": -10200,
    "fy_variance": -83,
    "fy_variance_pct": -0.0081,
    "commentary": null
   },
   {
    "key": "ox_bond",
    "label": "Bond commission",
    "ytd_actual": -3874.6667,
    "ytd_budget": -4160,
    "ytd_variance": 285.3333,
    "ytd_variance_pct": 0.0686,
    "fy_outlook": -7144,
    "fy_budget": -6240,
    "fy_variance": -904,
    "fy_variance_pct": -0.1449,
    "commentary": null
   },
   {
    "key": "ox_bad",
    "label": "Bad debts and specific provisions",
    "ytd_actual": -9500,
    "ytd_budget": 0,
    "ytd_variance": -9500,
    "ytd_variance_pct": 0,
    "fy_outlook": -9500,
    "fy_budget": 0,
    "fy_variance": -9500,
    "fy_variance_pct": 0,
    "commentary": "Specific provision on the disputed CF-2311 legacy retention."
   },
   {
    "key": "T_ovh",
    "label": "TOTAL OVERHEADS",
    "ytd_actual": -711109.9667,
    "ytd_budget": -750720,
    "ytd_variance": 39610.0333,
    "ytd_variance_pct": 0.0528,
    "fy_outlook": -1086198.55,
    "fy_budget": -1126080,
    "fy_variance": 39881.45,
    "fy_variance_pct": 0.0354,
    "commentary": null
   },
   {
    "key": "ebitda",
    "label": "EBITDA",
    "ytd_actual": 44623.8058,
    "ytd_budget": 333325.557,
    "ytd_variance": -288701.7512,
    "ytd_variance_pct": -0.8661,
    "fy_outlook": 424278.3155,
    "fy_budget": 594518.924,
    "fy_variance": -170240.6085,
    "fy_variance_pct": -0.2864,
    "commentary": "EUR 289k behind budget YTD; EUR 170k on the full-year outlook."
   },
   {
    "key": "ebitdapct",
    "label": "EBITDA %",
    "ytd_actual": 0.0087,
    "ytd_budget": 0.0524,
    "ytd_variance": -0.0437,
    "ytd_variance_pct": null,
    "fy_outlook": 0.0461,
    "fy_budget": 0.0592,
    "fy_variance": -0.0131,
    "fy_variance_pct": null,
    "commentary": null
   },
   {
    "key": "np",
    "label": "NET PROFIT",
    "ytd_actual": -53414.5061,
    "ytd_budget": 232470.0031,
    "ytd_variance": -285884.5093,
    "ytd_variance_pct": -1.2298,
    "fy_outlook": 241159.5945,
    "fy_budget": 432917.9493,
    "fy_variance": -191758.3548,
    "fy_variance_pct": -0.4429,
    "commentary": null
   },
   {
    "key": "b_cash",
    "label": "Cash at bank",
    "ytd_actual": 634504.3727,
    "ytd_budget": 560000,
    "ytd_variance": 74504.3727,
    "ytd_variance_pct": 0.133,
    "fy_outlook": 632766.8777,
    "fy_budget": 610000,
    "fy_variance": 22766.8777,
    "fy_variance_pct": 0.0373,
    "commentary": null
   },
   {
    "key": "b_ar",
    "label": "Trade receivables and SEAI grants",
    "ytd_actual": 747826.1631,
    "ytd_budget": 740000,
    "ytd_variance": 7826.1631,
    "ytd_variance_pct": 0.0106,
    "fy_outlook": 1081534.3129,
    "fy_budget": 720000,
    "fy_variance": 361534.3129,
    "fy_variance_pct": 0.5021,
    "commentary": null
   },
   {
    "key": "b_wip",
    "label": "Contract assets less contract liabilities",
    "ytd_actual": 705601.0603,
    "ytd_budget": 490000,
    "ytd_variance": 215601.0603,
    "ytd_variance_pct": 0.44,
    "fy_outlook": 690014.7996,
    "fy_budget": 450000,
    "fy_variance": 240014.7996,
    "fy_variance_pct": 0.5334,
    "commentary": "Certification lags progress on CF-2601 and PS-2601; valuations should be submitted with the cost report each month."
   },
   {
    "key": "b_ret",
    "label": "Retentions receivable",
    "ytd_actual": 154454.4872,
    "ytd_budget": 185000,
    "ytd_variance": -30545.5128,
    "ytd_variance_pct": -0.1651,
    "fy_outlook": 186751.8001,
    "fy_budget": 195000,
    "fy_variance": -8248.1999,
    "fy_variance_pct": -0.0423,
    "commentary": null
   }
  ],
  "gross_profit_bridge_ytd": {
   "columns": [
    "Segment",
    "Actual revenue YTD",
    "Budget revenue YTD",
    "Actual margin",
    "Budget margin",
    "Volume effect",
    "Margin effect",
    "Total variance",
    "Check vs P&L variance"
   ],
   "rows": [
    [
     "Residential deep retrofit (SEAI One Stop Shop)",
     1247322.85,
     1647190,
     0.2191,
     0.245,
     -97967.4517,
     -32274.9683,
     -130242.42,
     0
    ],
    [
     "Residential renovation and extensions",
     1276311.62,
     1263625,
     0.2535,
     0.255,
     3235.0881,
     -1852.2331,
     1382.855,
     0
    ],
    [
     "Commercial fit-out",
     1559275.96,
     2059884,
     0.1196,
     0.148,
     -74089.9899,
     -44256.9721,
     -118346.962,
     0
    ],
    [
     "Public sector retrofit (council)",
     1044493.57,
     1395360,
     0.1543,
     0.13,
     -45612.6359,
     25352.2359,
     -20260.4,
     0
    ],
    [
     "TOTAL",
     5127404,
     6366059,
     null,
     null,
     -214434.9895,
     -53031.9375,
     -267466.927,
     0
    ]
   ]
  }
 },
 "cash_13w_control": {
  "low": 230046.3917,
  "lowwk": "2026-11-27",
  "short": 30046.3917,
  "fac": 250000,
  "fachead": 250000,
  "taxwk": 320184.5507
 },
 "project_profitability": {
  "columns": [
   "Contract or programme",
   "Segment",
   "Status",
   "Revenue YTD",
   "Gross profit YTD",
   "Margin YTD",
   "Revenue FY2026",
   "Direct costs FY2026",
   "Gross profit FY2026",
   "Margin FY2026",
   "Own labour charged FY2026",
   "Share of labour recovery variance",
   "Share of fleet costs",
   "Overhead absorption",
   "Net contribution FY2026",
   "Net margin",
   "Tender margin",
   "Forecast final margin",
   "Margin movement vs tender",
   "Pending variations (claimed)",
   "Contract position at last actual (+ asset / - liability)",
   "Receivable at last actual",
   "Retention held at last actual",
   "Cash collected less cost to date (ex VAT)"
  ],
  "rows": [
   [
    "CF-2501",
    "CF",
    "Completed",
    363553.44,
    81199.46,
    0.2233,
    363553.44,
    -282353.98,
    81199.46,
    0.2233,
    46241.49,
    2.5681,
    -4984.7987,
    -42934.9326,
    33282.2968,
    0.0915,
    0.1408,
    0.1846,
    0.0438,
    0,
    0,
    0.0014,
    26092.5,
    166607.4987
   ],
   [
    "PS-2502",
    "PS",
    "Completed",
    583692.68,
    99859.05,
    0.1711,
    583692.68,
    -483833.63,
    99859.05,
    0.1711,
    62064.74,
    3.4468,
    -6690.5334,
    -68932.9356,
    24239.0278,
    0.0415,
    0.1222,
    0.1515,
    0.0293,
    0,
    0,
    0.0035,
    27725,
    140274.9865
   ],
   [
    "CF-2601",
    "CF",
    "In progress",
    909074.82,
    58603.88,
    0.0645,
    1289700,
    -1190000,
    99700.0,
    0.0773,
    190556.2896,
    10.5828,
    -20541.828,
    -152310.9851,
    -73142.2304,
    -0.0567,
    0.1373,
    0.0773,
    -0.06,
    118000,
    202464.01,
    234156.1059,
    35330.5405,
    -385495.6096
   ],
   [
    "CF-2602",
    "CF",
    "In progress",
    247330.09,
    40283.05,
    0.1629,
    855363.1136,
    -713911.7179,
    141451.3957,
    0.1654,
    115625.2485,
    6.4214,
    -12464.3169,
    -101016.6693,
    27976.8309,
    0.0327,
    0.1362,
    0.1654,
    0.0292,
    19500,
    126492.45,
    115446.5098,
    3625.1292,
    -191549.5158
   ],
   [
    "CF-2603",
    "CF",
    "In progress",
    39317.61,
    6429.48,
    0.1635,
    400530,
    -333000,
    67530,
    0.1686,
    53553.1692,
    2.9741,
    -5772.9923,
    -47301.7902,
    14458.1916,
    0.0361,
    0.1564,
    0.1686,
    0.0122,
    16200,
    39317.61,
    0,
    0,
    -32888.13
   ],
   [
    "PS-2601",
    "PS",
    "In progress",
    460800.89,
    61277.35,
    0.133,
    1208799.258,
    -1046343.2842,
    162455.9738,
    0.1344,
    135866.0467,
    7.5455,
    -14646.26,
    -142756.7696,
    5060.4896,
    0.0042,
    0.1227,
    0.1344,
    0.0117,
    14700,
    177174.54,
    147462.0825,
    14181.3175,
    -277540.59
   ],
   [
    "CF-2604",
    "CF",
    "Contracted",
    0,
    0,
    0,
    320000,
    -274500,
    45500,
    0.1422,
    43920,
    2.4391,
    -4734.5437,
    -37791.3586,
    2976.5368,
    0.0093,
    0.1422,
    0.1422,
    0,
    0,
    0,
    0,
    0,
    0
   ],
   [
    "PS-2602",
    "PS",
    "Contracted",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.1205,
    0.1205,
    0,
    0,
    0,
    0,
    0,
    0
   ],
   [
    "CF-P01",
    "CF",
    "Pipeline",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.1351,
    0.1351,
    0,
    0,
    0,
    0,
    0,
    0
   ],
   [
    "CF-P02",
    "CF",
    "Pipeline",
    0,
    0,
    0,
    60937.5,
    -52382.8125,
    8554.6875,
    0.1404,
    8381.25,
    0.4655,
    -903.4926,
    -7196.5966,
    455.0638,
    0.0075,
    0.1404,
    0.1404,
    0,
    0,
    0,
    0,
    0,
    0
   ],
   [
    "CF-P03",
    "CF",
    "Pipeline",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.1359,
    0.1359,
    0,
    0,
    0,
    0,
    0,
    0
   ],
   [
    "PS-P01",
    "PS",
    "Pipeline",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.1197,
    0.1197,
    0,
    0,
    0,
    0,
    0,
    0
   ],
   [
    "CF-P04",
    "CF",
    "Pipeline",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.1361,
    0.1361,
    0,
    0,
    0,
    0,
    0,
    0
   ],
   [
    "CF-P05",
    "CF",
    "Pipeline",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.1354,
    0.1354,
    0,
    0,
    0,
    0,
    0,
    0
   ],
   [
    "CF-P06",
    "CF",
    "Pipeline",
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0.1343,
    0.1343,
    0,
    0,
    0,
    0,
    0,
    0
   ],
   [
    "Deep retrofit programme (SEAI One Stop Shop)",
    "RR",
    "Programme",
    1247322.85,
    273319.13,
    0.2191,
    2132818.9817,
    -1651408.2607,
    481410.7209,
    0.2257,
    522239.093,
    29.0031,
    -56296.9906,
    -251881.647,
    173261.0865,
    0.0812,
    "n/a",
    0.235,
    "n/a",
    0,
    176176.5439,
    173671.6,
    0,
    "n/a"
   ],
   [
    "Renovation and extensions programme",
    "RX",
    "Programme",
    1276311.62,
    323607.23,
    0.2535,
    1982039.2699,
    -1489057.4039,
    492981.866,
    0.2487,
    400914.0838,
    22.2652,
    -43218.2437,
    -234074.8652,
    215711.0222,
    0.1088,
    "n/a",
    0.24,
    "n/a",
    0,
    -16024.0936,
    77089.86,
    0,
    "n/a"
   ],
   [
    "TOTAL",
    null,
    null,
    5127404,
    944578.63,
    0.1842,
    9197434.2432,
    -7516791.0893,
    1680643.1539,
    0.1827,
    1579361.4108,
    87.7116,
    -170254,
    -1086198.55,
    424278.3155,
    0.0461,
    null,
    null,
    null,
    168400,
    705601.0603,
    747826.1631,
    106954.4872,
    null
   ]
  ]
 },
 "cfo_report": {
  "reporting_line": "Reporting month: Aug-26 actuals, Base scenario for the outlook. Amounts in EUR. Every figure is a live link to the model; the narrative recalculates with the inputs.",
  "sections": [
   {
    "title": "1. HEADLINE",
    "paragraphs": [
     "Year to date revenue is EUR 5,127k, 19.5% below budget, and EBITDA is EUR 45k against EUR 333k budgeted. Three causes account for it: volume (three contracts started two months later than budgeted and retrofit starts ran 22% behind), margin fade on the CF-2601 office fit-out, and idle site labour in the first half (EUR 77k of site payroll not recovered on jobs).",
     "Full-year outlook (Base): revenue EUR 9,197k (-8.4% vs budget), gross margin 18.3%, EBITDA EUR 424k (4.6%). It needs EUR 4,070k of revenue in the last four months, EUR 1,018k a month against EUR 641k a month so far: the four live contracts peak together and the site team runs at full utilisation with agency support.",
     "Cash is EUR 635k at Aug-26. The 13-week low is EUR 230k in the week ending 27-Nov, when PAYE, RCT, VAT and the FY2026 preliminary tax fall due in the same week as the subcontractor payment run: EUR 30k above the EUR 200k buffer, with the overdraft undrawn. In the Downside case cash goes EUR 27k overdrawn in Nov-26, a EUR 227k shortfall against the buffer that the EUR 250k overdraft only just covers.",
     "FY2027 Base: revenue EUR 9,703k and EBITDA EUR 264k (2.7%), down from FY2026 because overheads rise EUR 194k (two office hires and inflation) and the planned site hires land in a first-quarter trough, with utilisation at 62%. Hiring should follow secured work, not precede it."
    ],
    "rows": []
   },
   {
    "title": "2. WHAT HAPPENED YEAR TO DATE (BvA, Residential, Resources)",
    "paragraphs": [
     "The gross profit shortfall of EUR 267k splits into EUR 214k of volume and EUR 53k of margin. Retrofit is the largest volume gap: 22 homes started against 28 budgeted (the retrofit coordinator post was vacant from March to May, so surveys and grant applications backed up), worth EUR 98k of gross profit. Commercial fit-out and council revenue are behind because CF-2602, CF-2603 and PS-2601 started later than the budget assumed.",
     "Margins: commercial fit-out earned 12.0% against 14.8% budgeted (EUR 44k of margin, almost all CF-2601); council retrofit earned 15.4% against 13.0% (PS-2502 closed out below budget cost); retrofit 21.9% against 24.5%, where the vacancy months also carried lower margins; renovation held its budget margin.",
     "Site labour: own labour charged to jobs fell short of site payroll by EUR 77k year to date. Utilisation was 61% to 65% from February to April while named work ran down, then 100% from July with agency operatives. Overheads are EUR 40k better than budget, mostly the coordinator vacancy, after a EUR 9,500 specific provision against the disputed CF-2311 retention."
    ],
    "rows": []
   },
   {
    "title": "3. CONTRACTS: MARGINS, VARIATIONS AND COST TO COMPLETE (WIP, Variations, Commitments, Project_Profitability)",
    "paragraphs": [
     "CF-2601 (office fit-out, Dublin 4) is the contract to manage. Tender margin 13.7%; estimated cost at completion is now EUR 1,190k, EUR 172k above the tender budget, after the mechanical and electrical subcontractor was replaced in May and the client changed the design twice. EUR 118k of variations are claimed and undecided; policy recognises half. Forecast final margin is 7.7% in the Base case, and EUR 385k of the cost incurred has not yet come back in cash (work not yet certified, unpaid certificates and retention).",
     "Across all contracts EUR 168k of variations are undecided. The policy constraint recognises EUR 84k; the Base case expects EUR 109k to be agreed, a EUR 25k upside to revenue when the decisions land. The scenario range is EUR 84k of revenue between Upside and Downside, almost all of it profit.",
     "Cost to complete is under control on paper: EUR 4,118k remains on live and signed contracts, of which EUR 1,531k is already committed on orders (37%; 67% on CF-2601). No contract has more on order than its cost to complete, so the forecasts carry every known commitment. The uncommitted EUR 112k on CF-2601 is where further fade would come from: it should be bought before October.",
     "Allocated profitability (FY2026 outlook, after labour variance, fleet and overhead absorption): CF-2601 contributes EUR -73k, the retrofit programme EUR 173k and the renovation programme EUR 216k. The residential programmes earn 92% of EBITDA on 45% of revenue."
    ],
    "rows": []
   },
   {
    "title": "4. CASH, WORKING CAPITAL AND THE 13 WEEKS (BS, Receivables, Retentions, Cash_13W)",
    "paragraphs": [
     "Working capital tied up in contracts is EUR 580k at Aug-26: contract assets EUR 722k (work done, not yet certified: CF-2601 EUR 202k and PS-2601 EUR 177k), trade receivables EUR 639k (28 days), retentions EUR 154k and SEAI grant claims EUR 108k (60 days). It is funded by EUR 967k of payables, with materials suppliers carried at about 46 days.",
     "The 13 weeks from 12-Sep: opening cash EUR 704k, receipts EUR 2,976k, payments EUR 3,174k, closing EUR 507k on 11-Dec. EUR 320k of tax leaves in the three weeks containing the 23rd (PAYE, RCT, VAT, corporation tax), which is why the 23-Sep and 23-Nov weeks are the pinch points. The forecast reconciles to the December balance sheet to the euro.",
     "Retentions: EUR 107k is held by current clients and releases on practical completion and after the defects periods; the legacy CF-2311 retention of EUR 38k has been overdue since the defects period ended in March 2025. A EUR 9,500 provision is held; the Base case settles it in Nov-26 at 75% recovery."
    ],
    "rows": []
   },
   {
    "title": "5. ORDER BOOK, CAPACITY AND BONDS (Pipeline, Resources, Debt)",
    "paragraphs": [
     "Secured work in hand is EUR 5,341k at Aug-26, 6.5 months of revenue, falling to EUR 2,860k by December as the live contracts finish. FY2027 revenue therefore leans on the pipeline: EUR 2,286k (24%) of the Base FY2027 revenue comes from contracts not yet won, probability-weighted.",
     "Capacity: own labour demand exceeds the site team from July to November, costing EUR 98k of agency labour in FY2026, then falls away in the first quarter of 2027 while five hires join, taking utilisation to 62% and the FY2027 labour recovery variance to EUR -81k. Performance bonds use 83% of the EUR 750k surety facility now and peak at 88%: the facility, not the pipeline, becomes the constraint on new commercial awards."
    ],
    "rows": []
   },
   {
    "title": "6. SCENARIOS (Scenarios sheet; snapshot values from three full model runs)",
    "paragraphs": [
     "Base: FY2027 revenue EUR 9,703k, EBITDA EUR 264k, lowest cash EUR 418k. Downside (fewer retrofit starts, two-month delays, 5% overrun on cost to complete, variations agreed at 35%, slower payment): FY2027 revenue EUR 7,972k, EBITDA EUR -181k, lowest cash EUR -27k. Upside: FY2027 revenue EUR 10,898k, EBITDA EUR 735k, lowest cash EUR 543k.",
     "The Downside is survivable only with the overdraft in place and the hiring plan frozen: it turns FY2027 EBITDA negative and takes cash below zero in Nov-26. The triggers to act on are monthly: retrofit starts below 2.8 a month for two months, any contract margin fade above 2 points in a cost review, or SEAI days above 75."
    ],
    "rows": []
   },
   {
    "title": "7. RISK REGISTER (scored 1 to 5; score = likelihood x impact)",
    "paragraphs": [],
    "rows": [
     [
      "Cash pinch points: tax payments cluster on the 23rd and the subcontractor run on the 25th; the Downside breaches the buffer by EUR 227k",
      3,
      4,
      12,
      "Confirm the EUR 250k overdraft is committed and draw it for the tax weeks if needed; weekly 13-week review; Finance Manager"
     ],
     [
      "CF-2601 margin: cost at completion EUR 172k over tender; EUR 118k of variations undecided",
      4,
      3,
      12,
      "Weekly commercial review; submit fully substantiated variation claims; buy the uncommitted packages before October; Commercial Manager"
     ],
     [
      "Order book cliff: secured work falls to EUR 2,860k by Dec-26; FY2027 depends on pipeline conversion",
      3,
      4,
      12,
      "Bid pipeline review every two weeks with win-probability discipline; target two commercial awards by Q1-27; Managing Director"
     ],
     [
      "Site capacity: 100% utilisation Jul to Nov then 62% in Q1-27 as hires join",
      4,
      3,
      12,
      "Tie each site hire to a secured contract start; use agency for peaks; Contracts Manager"
     ],
     [
      "Bond capacity: surety facility peaks at 88% utilised; new awards need 10% bonds",
      3,
      3,
      9,
      "Open talks with the surety for a EUR 1m facility before the CF-P01 award; seek bond reduction at practical completion; Finance Manager"
     ],
     [
      "SEAI grant claims: EUR 108k outstanding at 60 days; inspection queries delay payment",
      3,
      3,
      9,
      "Claim the week the post-works BER publishes; pre-inspection checklist on airtightness and ventilation; Retrofit Coordinator"
     ],
     [
      "Subcontractor tax compliance: one decorator is at the 35% RCT rate; paying without a deduction authorisation carries penalties and exposure to 35% tax",
      2,
      3,
      6,
      "No payment released without a deduction authorisation; quarterly review of subcontractor rates; Finance Manager"
     ],
     [
      "Disputed legacy retention CF-2311: EUR 38k overdue since March 2025",
      3,
      2,
      6,
      "Mediation with the client; release against a defects inspection; write off the provided share if not settled by year end; Managing Director"
     ],
     [
      "Council concentration: one council framework is the only public sector client and the largest single customer",
      2,
      4,
      8,
      "Qualify for a second local authority framework and an approved housing body panel in FY2027; Managing Director"
     ],
     [
      "Supplier credit: materials suppliers carried at about 46 days; a tightening of credit limits would absorb cash quickly",
      3,
      3,
      9,
      "Agree account limits with the two main merchants; keep materials terms at 30 days end of month; Finance Manager"
     ]
    ],
    "columns": [
     "Risk",
     "Likelihood",
     "Impact",
     "Score",
     "Mitigation and owner"
    ]
   },
   {
    "title": "8. ACTIONS (owner, due date, status)",
    "paragraphs": [],
    "rows": [
     [
      "Submit substantiated claims for V-CF2601-02, -03 and -04 and agree them at the October valuation meeting; buy the uncommitted CF-2601 packages",
      "Commercial Manager",
      "2026-10-09",
      "Open",
      "Variations agreed in writing; CF-2601 cost to complete fully committed"
     ],
     [
      "Confirm the EUR 250k overdraft is committed through Q1-27 and pre-agree drawings for the weeks of 23-Sep and 23-Nov",
      "Finance Manager",
      "2026-09-18",
      "Open",
      "Facility letter on file; 13-week headroom never below the buffer"
     ],
     [
      "Re-phase the site hiring plan: retrofit installers to start with the second coordinator and the Q1-27 craft and general operative hires to follow CF-P01 and CF-P02 awards",
      "Managing Director",
      "2026-10-15",
      "Open",
      "Q1-27 utilisation forecast above 80%"
     ],
     [
      "Bid plan for FY2027: two commercial awards by Q1-27, framework call-off for PS-P01 confirmed, win-probability review every two weeks",
      "Managing Director",
      "2026-10-31",
      "Open",
      "Secured work in hand of at least six months of revenue at every month end"
     ],
     [
      "Increase the surety facility to EUR 1m and request bond reduction to 5% at practical completion on CF-2601 and PS-2601",
      "Finance Manager",
      "2026-11-30",
      "Open",
      "Bond utilisation below 70% with the pipeline awarded"
     ],
     [
      "SEAI claims lodged within five working days of BER publication; resolve the queried July claim",
      "Retrofit Coordinator",
      "2026-09-30",
      "In progress",
      "SEAI days below 60"
     ],
     [
      "Collect the CF-2601 July short payment and the Rathgar snag retention; settle CF-2311 through mediation",
      "Commercial Manager",
      "2026-10-31",
      "Open",
      "Items off the aging; CF-2311 settled"
     ],
     [
      "Monthly cost-to-complete review signed by the project manager and quantity surveyor for every live contract, with margin movement explained",
      "Commercial Manager",
      "2026-09-30",
      "In progress",
      "Signed cost reports on file before each close"
     ],
     [
      "Downside contingency plan with triggers (retrofit starts, margin fade, SEAI days, cash headroom) and the levers on Cash_13W in order",
      "BriQs CFO",
      "2026-10-15",
      "Open",
      "Plan approved by the Managing Director and attached to the October pack"
     ]
    ],
    "columns": [
     "Action",
     "Owner",
     "Due",
     "Status",
     "Measure of done"
    ]
   },
   {
    "title": "9. INFORMATION NEEDED BEFORE THE SEPTEMBER CLOSE",
    "paragraphs": [
     "Signed September cost reports for CF-2601, CF-2602, CF-2603 and PS-2601, with cost to complete by package.",
     "The client quantity surveyor position on V-CF2601-02 to -04 and on the July short payment, in writing.",
     "The ROS deduction summary for September and the current deduction authorisation for every subcontractor paid in the month.",
     "SEAI claim listing with BER publication and inspection dates, including the outcome of the queried July claim.",
     "The overdraft facility letter and the surety facility terms, to confirm limits and renewal dates.",
     "The FY2026 corporation tax computation from the tax adviser, to confirm the preliminary tax payment due on 23 November.",
     "Prepared by BriQs Group for the directors of Tarnlea Build & Retrofit Ltd (fictional demonstration company). Model status at the time of preparation: OK."
    ],
    "rows": []
   }
  ]
 },
 "headline_series": {
  "T_rev": {
   "key": "T_rev",
   "label": "NET REVENUE",
   "basis": "",
   "section": "REVENUE",
   "format": "int",
   "kind": "calc",
   "bold": true,
   "values": [
    664034.2,
    566098.91,
    490939.1,
    453372.76,
    476711.55,
    646422.85,
    880782.99,
    949041.64,
    1074285.2096,
    1074569.1442,
    1008230.9892,
    912944.9002,
    822468.0859,
    673862.1744,
    581675.8012,
    676204.412,
    851315.566,
    969743.5884,
    1010443.7122,
    972765.6925,
    878268.8397,
    803854.7397,
    756126.7258,
    706696.1853
   ],
   "fy2026": 9197434.2432,
   "fy2027": 9703425.5229,
   "total_rule": "sum"
  },
  "T_gp": {
   "key": "T_gp",
   "label": "GROSS PROFIT",
   "basis": "",
   "section": "GROSS PROFIT BY SEGMENT",
   "format": "int",
   "kind": "calc",
   "bold": true,
   "values": [
    127199.1,
    128652.9,
    112188.94,
    107045.7,
    63176,
    90956.2,
    152138.73,
    163221.06,
    183277.5255,
    193629.5588,
    186952.846,
    172204.5935,
    150284.0425,
    126415.0524,
    113015.9833,
    127925.7089,
    155057.354,
    174005.8103,
    180920.2061,
    175947.4126,
    163661.8853,
    154141.173,
    147267.5807,
    137828.0231
   ],
   "fy2026": 1680643.1539,
   "fy2027": 1806470.2324,
   "total_rule": "sum"
  },
  "contrib": {
   "key": "contrib",
   "label": "CONTRIBUTION AFTER SITE RESOURCES",
   "basis": "",
   "section": "SITE RESOURCE COSTS NOT CHARGED TO JOBS",
   "format": "int",
   "kind": "calc",
   "bold": true,
   "values": [
    104360.5675,
    88248.4675,
    63263.9475,
    60933.7375,
    34081.075,
    70828.245,
    151835.925,
    182181.8075,
    185755.7676,
    196731.6134,
    196588.9174,
    175666.7945,
    135766.1719,
    87078.1381,
    59008.4083,
    82465.5203,
    136096.174,
    173317.854,
    186708.5522,
    176623.0523,
    152239.9446,
    133510.0306,
    120183.9015,
    101511.1284
   ],
   "fy2026": 1510476.8655,
   "fy2027": 1544508.8764,
   "total_rule": "sum"
  },
  "ebitda": {
   "key": "ebitda",
   "label": "EBITDA",
   "basis": "",
   "section": "OVERHEADS",
   "format": "int",
   "kind": "calc",
   "bold": true,
   "values": [
    16970.3758,
    1462.055,
    -23103.8525,
    -26620.5583,
    -53248.4042,
    -28006.4217,
    61987.5583,
    95183.0533,
    94463.8509,
    105374.1468,
    100290.6508,
    79525.8612,
    28781.9712,
    -19906.0626,
    -47726.459,
    -24132.0137,
    29474.64,
    66696.32,
    80035.8182,
    69907.1183,
    45410.4106,
    26818.8299,
    13516.7008,
    -4921.4056
   ],
   "fy2026": 424278.3155,
   "fy2027": 263955.8684,
   "total_rule": "sum"
  },
  "np": {
   "key": "np",
   "label": "NET PROFIT",
   "basis": "",
   "section": "BELOW EBITDA",
   "format": "int",
   "kind": "calc",
   "bold": true,
   "values": [
    4644.8775,
    -9513.9105,
    -34887.6136,
    -39042.3111,
    -65846.9694,
    -40642.9945,
    49352.5613,
    82521.8543,
    78255.5125,
    81126.5869,
    76679.9067,
    58512.0946,
    13820.1374,
    -30918.5849,
    -62012.5859,
    -38821.0898,
    14794.6741,
    52025.4642,
    63591.3116,
    48347.6725,
    28836.3024,
    12656.849,
    1025.4574,
    -15099.9143
   ],
   "fy2026": 241159.5945,
   "fy2027": 88245.6937,
   "total_rule": "sum"
  },
  "cash": {
   "key": "cash",
   "label": "Cash at bank",
   "basis": "CF",
   "section": "ASSETS",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    499752.2155,
    561106.3231,
    643340.8883,
    716245.6465,
    775741.1707,
    768659.8843,
    613881.9196,
    634504.3727,
    531875.8317,
    418470.3684,
    446648.1805,
    632766.8777,
    708530.0195,
    813835.8582,
    861509.0219,
    1004245.7449,
    980842.7312,
    894873.0139,
    832481.0993,
    863046.2299,
    912832.725,
    1048223.5762,
    1076823.2571,
    1114521.6169
   ],
   "fy2026": 632766.8777,
   "fy2027": 1114521.6169,
   "total_rule": "last"
  },
  "secured": {
   "key": "secured",
   "label": "SECURED WORK IN HAND",
   "basis": "",
   "section": "ORDER BOOK AND COVER",
   "format": "int",
   "kind": "calc",
   "bold": true,
   "values": [
    712548.03,
    1693908.01,
    1689957.66,
    2833344.6,
    3714487.05,
    3426439.2,
    3463790.21,
    5341427.57,
    4685945.1388,
    4025273.4391,
    3391635.8625,
    2859805.7283,
    2450143.3138,
    2280982.9948,
    2242096.2463,
    2153627.79,
    1975395.6124,
    1725366.2592,
    1430218.0961,
    1135015.6665,
    912352.6667,
    745008.0969,
    649338.991,
    580729.5475
   ],
   "fy2026": 2859805.7283,
   "fy2027": 580729.5475,
   "total_rule": "last"
  },
  "util": {
   "key": "util",
   "label": "Utilisation of productive hours",
   "basis": "",
   "section": "UTILISATION AND RECOVERY",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    0.7791,
    0.6484,
    0.6131,
    0.6221,
    0.7446,
    0.8183,
    1,
    1,
    1,
    1,
    1,
    0.9526,
    0.8436,
    0.6993,
    0.6162,
    0.6784,
    0.8231,
    0.9229,
    0.9583,
    0.9303,
    0.8643,
    0.814,
    0.7788,
    0.7284
   ],
   "fy2026": 0.8563,
   "fy2027": 0.8055,
   "total_rule": "ratio"
  }
 }
}