{
 "meta": {
  "company": "Quelvora Sistemas, Lda (fictional demonstration company)",
  "fictional": true,
  "jurisdiction": "Portugal",
  "industry": "IT services",
  "currency": "EUR",
  "last_actual_month": "2026-08-31",
  "scenario": "Base",
  "generated": "2026-09-23",
  "source_workbook": "Quelvora_IT_Services_Finance_Pack_Aug26_FICTIONAL.xlsx",
  "model_status": "OK",
  "formula_errors": 0,
  "formulas": 29738,
  "integrity_checks_passed": 50,
  "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",
   "rate4": "exchange rate, units per EUR",
   "rate5": "exchange rate, units per EUR"
  },
  "notice": "Fictional demonstration prepared by BriQs Group. Every company, person, client, supplier, invoice and number is invented."
 },
 "scenarios": {
  "snapshot_run_date": "23-Sep-2026",
  "selected": "Base",
  "metrics": [
   {
    "key": "fy26_rev",
    "label": "FY2026 revenue (outlook)",
    "unit": "EUR",
    "base": 7532111.1807,
    "downside": 7245282.7847,
    "upside": 7707989.1607,
    "live_selected": 7532111.1807,
    "check": 0
   },
   {
    "key": "fy27_rev",
    "label": "FY2027 revenue",
    "unit": "EUR",
    "base": 8204438.4955,
    "downside": 6995470.3781,
    "upside": 8915038.8811,
    "live_selected": 8204438.4955,
    "check": 0
   },
   {
    "key": "fy27_g",
    "label": "FY2027 revenue growth",
    "unit": "%",
    "base": 0.0893,
    "downside": -0.0345,
    "upside": 0.1566,
    "live_selected": 0.0893,
    "check": 0
   },
   {
    "key": "mrr_dec27",
    "label": "Managed service fees (MRR) in Dec-27",
    "unit": "EUR",
    "base": 269292.494,
    "downside": 227998.2147,
    "upside": 287722.5039,
    "live_selected": 269292.494,
    "check": 0
   },
   {
    "key": "nrr_dec27",
    "label": "Net revenue retention at Dec-27",
    "unit": "%",
    "base": 1.0277,
    "downside": 0.9197,
    "upside": 1.0601,
    "live_selected": 1.0277,
    "check": 0
   },
   {
    "key": "util27",
    "label": "FY2027 service desk utilisation",
    "unit": "%",
    "base": 0.8142,
    "downside": 0.7812,
    "upside": 0.8534,
    "live_selected": 0.8142,
    "check": 0
   },
   {
    "key": "credit27",
    "label": "FY2027 SLA credits",
    "unit": "EUR",
    "base": 4196.2001,
    "downside": 3362.5808,
    "upside": 21714.0797,
    "live_selected": 4196.2001,
    "check": 0
   },
   {
    "key": "fy26_gpm",
    "label": "FY2026 gross margin %",
    "unit": "%",
    "base": 0.273,
    "downside": 0.2626,
    "upside": 0.2784,
    "live_selected": 0.273,
    "check": 0
   },
   {
    "key": "fy27_gpm",
    "label": "FY2027 gross margin %",
    "unit": "%",
    "base": 0.2848,
    "downside": 0.2401,
    "upside": 0.31,
    "live_selected": 0.2848,
    "check": 0
   },
   {
    "key": "fy26_ebitda",
    "label": "FY2026 EBITDA",
    "unit": "EUR",
    "base": 863221.5886,
    "downside": 715709.2303,
    "upside": 951583.7906,
    "live_selected": 863221.5886,
    "check": 0
   },
   {
    "key": "fy27_ebitda",
    "label": "FY2027 EBITDA",
    "unit": "EUR",
    "base": 1058621.2472,
    "downside": 443381.6515,
    "upside": 1478356.9908,
    "live_selected": 1058621.2472,
    "check": 0
   },
   {
    "key": "fy27_np",
    "label": "FY2027 net profit",
    "unit": "EUR",
    "base": 724774.1832,
    "downside": 228351.6732,
    "upside": 1064680.6653,
    "live_selected": 724774.1832,
    "check": 0
   },
   {
    "key": "pj_gm27",
    "label": "FY2027 project gross margin",
    "unit": "EUR",
    "base": 337759.9292,
    "downside": 95834.6951,
    "upside": 545763.1223,
    "live_selected": 337759.9292,
    "check": 0
   },
   {
    "key": "cash_dec26",
    "label": "Cash at 31-Dec-26",
    "unit": "EUR",
    "base": 704225.5232,
    "downside": 221531.9938,
    "upside": 745697.6212,
    "live_selected": 704225.5232,
    "check": 0
   },
   {
    "key": "cash_dec27",
    "label": "Cash at 31-Dec-27",
    "unit": "EUR",
    "base": 1204217.4696,
    "downside": 236172.2048,
    "upside": 1330212.1501,
    "live_selected": 1204217.4696,
    "check": 0
   },
   {
    "key": "cash_min",
    "label": "Lowest month-end cash, Sep-26 to Dec-27",
    "unit": "EUR",
    "base": 689023.0115,
    "downside": 208464.7586,
    "upside": 696587.1026,
    "live_selected": 689023.0115,
    "check": 0
   },
   {
    "key": "cash_min_m",
    "label": "Month of the lowest cash",
    "unit": "month",
    "base": "2026-11-30",
    "downside": "2027-02-28",
    "upside": "2026-11-30",
    "live_selected": "2026-11-30",
    "check": 0
   },
   {
    "key": "fund_need",
    "label": "Headroom at the lowest point over the board buffer (negative = below)",
    "unit": "EUR",
    "base": 289023.0115,
    "downside": -191535.2414,
    "upside": 296587.1026,
    "live_selected": 289023.0115,
    "check": 0
   },
   {
    "key": "ndeb26",
    "label": "Net debt / EBITDA at Dec-26 (covenant at most 2.5x)",
    "unit": "x",
    "base": 0.2268,
    "downside": 0.948,
    "upside": 0.1622,
    "live_selected": 0.2268,
    "check": 0
   },
   {
    "key": "dscr26",
    "label": "Debt service cover at Dec-26 (covenant at least 1.2x)",
    "unit": "x",
    "base": 1.0883,
    "downside": 0.7653,
    "upside": 1.2865,
    "live_selected": 1.0883,
    "check": 0
   },
   {
    "key": "dscr27",
    "label": "Debt service cover at Dec-27",
    "unit": "x",
    "base": 2.2311,
    "downside": 0.9617,
    "upside": 3.1325,
    "live_selected": 2.2311,
    "check": 0
   },
   {
    "key": "div27",
    "label": "Dividend paid in May 2027, net of IRS",
    "unit": "EUR",
    "base": 0,
    "downside": 0,
    "upside": 201879.2839,
    "live_selected": 0,
    "check": 0
   },
   {
    "key": "hc_dec27",
    "label": "Headcount at Dec-27",
    "unit": "number",
    "base": 78.369,
    "downside": 73.6892,
    "upside": 78.369,
    "live_selected": 78.369,
    "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,
    "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.05,
    "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 + net profit - dividends declared",
    "proves": "Equity roll-forward to Dec-27",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Opening balance sheet at 31-Dec-25 balances",
    "proves": "FY2025 closing balances on Inputs_Actuals",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "P&L revenue equals the revenue schedule, every month",
    "proves": "Link integrity",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Register counts and prices reproduce the Dec-25 fees in History",
    "proves": "Contract_Register agrees with the FY2025 billing",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Onboarding fees deferred equal the contract schedule, every month",
    "proves": "IFRS 15.B48 to B51 over the 36-month term",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Annual licences billed ahead equal the billing schedule, every month",
    "proves": "Twelve months of recognition per billing",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Prepaid licence cost equals the licence liability x (1 - margin), every month",
    "proves": "Vendor cost follows the revenue",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "SLA credits due equal the credits of the month, every month",
    "proves": "Credited on the next invoice",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Project positions: change in contract liabilities less assets equals billing less revenue",
    "proves": "Every project, every month",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Opening project contract balances agree with the Project_Register at 31-Dec-25",
    "proves": "Billed less revenue to date",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Rebates receivable equal the accruals of quarters not yet paid, every month",
    "proves": "Quarterly tiers and payment timing",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Gross margin by service line reconciles to the P&L gross profit, every month",
    "proves": "Revenue and cost of revenue fully allocated",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Contract contributions + onboarding + SLA credits equal the managed services margin (FY2026)",
    "proves": "Allocation by desk hours, endpoints, users and devices is complete",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Remuneration equals net pay plus employee social security and IRS, every month",
    "proves": "Payroll journal integrity",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Social security payable at each forecast month end equals the month due",
    "proves": "Paid by the 20th of the following month",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "IRS withheld payable at each forecast month end equals the month due",
    "proves": "Paid by the 20th of the following month",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Christmas allowance accrual is nil at each December",
    "proves": "Paid with the November payroll, trued up in December",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Opening holiday accrual equals two months of Dec-25 pay by band, incl. TSU",
    "proves": "22 days and the holiday allowance vested on 1 January",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Every band salary is at or above the national minimum wage",
    "proves": "EUR 920 from January 2026",
    "value": 230,
    "tolerance": 0,
    "status": "OK"
   },
   {
    "check": "VAT payable equals the returns not yet paid, every month",
    "proves": "Monthly regime, payment in the second month",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "IRC payable at Dec-26 equals FY2026 tax less its payments on account",
    "proves": "Tax roll-forward",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "IRC payable at Dec-27 equals FY2027 tax less its payments on account (FY2026 settled)",
    "proves": "Balance and refund of FY2026 in 2027",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "FY2026 and FY2027 tax = SME rate to EUR 50,000 + general rate + derrama on taxable profit",
    "proves": "IRC arithmetic",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Payments on account: September 2026 = 95% x FY2025 IRC / 3; FY2027 = 95% x FY2026 IRC",
    "proves": "CIRC art. 104 and 105",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "IRC withheld on rent payable at each forecast month end equals 25% of the month rent",
    "proves": "Paid by the 20th of the following month",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AR aging: customers in Portugal tie 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: customers in Spain tie 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: Hardware distributors tie to the Payables schedule",
    "proves": null,
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AP aging: Licence distributor tie to the Payables schedule",
    "proves": null,
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AP aging: Tooling vendor (USD) tie to the Payables schedule",
    "proves": null,
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "AP aging: Other suppliers tie to the Payables schedule",
    "proves": null,
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Forecast receivables equal the collection rule every month",
    "proves": "Receipts never collect an invoice twice when the days change",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "USD payable at each month end equals the month invoice at the month rate",
    "proves": "Exchange differences taken on settlement (IAS 21)",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Loan balance at Dec-27 = opening less principal repaid",
    "proves": "Loan roll-forward",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Dividends and the IRS withheld on them are fully paid by each year end",
    "proves": "Declared, paid, withholding paid to the State",
    "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 revenue causes reconcile (YTD and FY)",
    "proves": "Contract groups and revenue streams explain the full variance",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "EBITDA walk from budget to actual reconciles",
    "proves": "Variances explain the full EBITDA gap",
    "value": 0,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Customer receivables never negative",
    "proves": null,
    "value": 151155.2324,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Trade payables never negative",
    "proves": null,
    "value": 19237.6251,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Users, devices and fees never negative (every contract, every month)",
    "proves": null,
    "value": 0,
    "tolerance": 0.001,
    "status": "OK"
   },
   {
    "check": "Project hours and provisions never negative",
    "proves": null,
    "value": 0,
    "tolerance": 0.001,
    "status": "OK"
   },
   {
    "check": "Contract liabilities, prepaid licences and stock never negative",
    "proves": null,
    "value": 7468.75,
    "tolerance": 0.5,
    "status": "OK"
   },
   {
    "check": "Headcount never negative",
    "proves": null,
    "value": 0.9752,
    "tolerance": 0,
    "status": "OK"
   },
   {
    "check": "Fixed assets, customer relationships and the loan never negative",
    "proves": null,
    "value": 86188.9521,
    "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": "Board buffer: Assumptions",
    "value": 689023.0115
   },
   {
    "item": "Headroom over the buffer at the lowest point",
    "note": "Negative = below the board buffer",
    "value": 289023.0115
   },
   {
    "item": "Lowest 13-week closing cash",
    "note": null,
    "value": 742457.4405
   },
   {
    "item": "Debt service cover at the December 2026 test",
    "note": "Covenant at least 1.2x; a breach also blocks the 2027 dividend",
    "value": 1.0883
   },
   {
    "item": "Net debt / EBITDA at the December 2026 test",
    "note": "Covenant at most 2.5x",
    "value": 0.2268
   },
   {
    "item": "Highest forecast service desk utilisation",
    "note": "Above the knee on Assumptions SLA credits start",
    "value": 0.9505
   },
   {
    "item": "Net revenue retention at Dec-27",
    "note": "Below 100% the contract base shrinks without new sales",
    "value": 1.0277
   },
   {
    "item": "Largest contract share of FY2026 managed services revenue",
    "note": "Above 10% is a concentration risk",
    "value": 0.1002
   },
   {
    "item": "Disputed J11 milestone open at the last actual month (EUR)",
    "note": "Month and credit share are scenario drivers",
    "value": 21600
   },
   {
    "item": "Onerous project provision at the last actual month (EUR)",
    "note": "J01 ERP migration",
    "value": 2507.14
   },
   {
    "item": "Distributor rebate tier expected for Q3-26",
    "note": "2.5% budgeted",
    "value": 0.015
   }
  ]
 },
 "bva": {
  "rows": [
   {
    "key": "rev_ms",
    "label": "Managed services: fees",
    "ytd_actual": 1835015.91,
    "ytd_budget": 1876478.93,
    "ytd_variance": -41463.02,
    "ytd_variance_pct": -0.0221,
    "fy_outlook": 2813869.8407,
    "fy_budget": 2893810.65,
    "fy_variance": -79940.8093,
    "fy_variance_pct": -0.0276,
    "commentary": "Traslovia Transportes lost at its April renewal; three new contracts from March against four budgeted."
   },
   {
    "key": "rev_sla",
    "label": "Managed services: SLA credits (variable consideration)",
    "ytd_actual": -37653.01,
    "ytd_budget": -7505.91,
    "ytd_variance": -30147.1,
    "ytd_variance_pct": -4.0164,
    "fy_outlook": -56251.0392,
    "fy_budget": -11575.24,
    "fy_variance": -44675.7992,
    "fy_variance_pct": -3.8596,
    "commentary": "Desk short of staff after four leavers; utilisation 98% in July."
   },
   {
    "key": "rev_onb",
    "label": "Managed services: onboarding fees recognised",
    "ytd_actual": 3550,
    "ytd_budget": 3700,
    "ytd_variance": -150,
    "ytd_variance_pct": -0.0405,
    "fy_outlook": 6655,
    "fy_budget": 6675,
    "fy_variance": -20,
    "fy_variance_pct": -0.003,
    "commentary": null
   },
   {
    "key": "rev_licb",
    "label": "Licences bundled in managed contracts (principal)",
    "ytd_actual": 538291.89,
    "ytd_budget": 550086.25,
    "ytd_variance": -11794.36,
    "ytd_variance_pct": -0.0214,
    "fy_outlook": 822656.6186,
    "fy_budget": 844203.58,
    "fy_variance": -21546.9614,
    "fy_variance_pct": -0.0255,
    "commentary": null
   },
   {
    "key": "rev_lica",
    "label": "Annual security and backup licences (principal, over 12 months)",
    "ytd_actual": 271275,
    "ytd_budget": 267825,
    "ytd_variance": 3450,
    "ytd_variance_pct": 0.0129,
    "fy_outlook": 408415,
    "fy_budget": 403149.99,
    "fy_variance": 5265.01,
    "fy_variance_pct": 0.0131,
    "commentary": null
   },
   {
    "key": "rev_licg",
    "label": "Licences resold as agent: commission and vendor incentive (net)",
    "ytd_actual": 61998.9,
    "ytd_budget": 64829.9,
    "ytd_variance": -2831.0,
    "ytd_variance_pct": -0.0437,
    "fy_outlook": 100390.7988,
    "fy_budget": 108993.5,
    "fy_variance": -8602.7013,
    "fy_variance_pct": -0.0789,
    "commentary": null
   },
   {
    "key": "rev_hw",
    "label": "Hardware (principal)",
    "ytd_actual": 1575000,
    "ytd_budget": 1708135.41,
    "ytd_variance": -133135.41,
    "ytd_variance_pct": -0.0779,
    "fy_outlook": 2513080,
    "fy_budget": 2750000.02,
    "fy_variance": -236920.02,
    "fy_variance_pct": -0.0862,
    "commentary": "No refresh cycle this year; demand below the 2025 base."
   },
   {
    "key": "rev_prj",
    "label": "Projects",
    "ytd_actual": 535313.17,
    "ytd_budget": 775635.76,
    "ytd_variance": -240322.59,
    "ytd_variance_pct": -0.3098,
    "fy_outlook": 923294.9619,
    "fy_budget": 1220000,
    "fy_variance": -296705.0381,
    "fy_variance_pct": -0.2432,
    "commentary": "J01 catch-up in June and a slower pipeline."
   },
   {
    "key": "T_rev",
    "label": "REVENUE",
    "ytd_actual": 4782791.86,
    "ytd_budget": 5239185.34,
    "ytd_variance": -456393.48,
    "ytd_variance_pct": -0.0871,
    "fy_outlook": 7532111.1807,
    "fy_budget": 8215257.5,
    "fy_variance": -683146.3193,
    "fy_variance_pct": -0.0832,
    "commentary": "Revenue by cause: see the table below."
   },
   {
    "key": "c_hw",
    "label": "Hardware cost net of distributor rebates",
    "ytd_actual": -1353288.88,
    "ytd_budget": -1443929.55,
    "ytd_variance": 90640.67,
    "ytd_variance_pct": 0.0628,
    "fy_outlook": -2158611.5905,
    "fy_budget": -2324643.75,
    "fy_variance": 166032.1595,
    "fy_variance_pct": 0.0714,
    "commentary": "Lower volume; distributor rebate at tier 1 against tier 2 budgeted."
   },
   {
    "key": "c_lic",
    "label": "Licence cost net of vendor incentives",
    "ytd_actual": -638635.33,
    "ytd_budget": -646322.41,
    "ytd_variance": 7687.08,
    "ytd_variance_pct": 0.0119,
    "fy_outlook": -973883.8474,
    "fy_budget": -988157.99,
    "fy_variance": 14274.1426,
    "fy_variance_pct": 0.0144,
    "commentary": null
   },
   {
    "key": "c_tool",
    "label": "Service tooling (USD platforms)",
    "ytd_actual": -158368.2269,
    "ytd_budget": -162936.69,
    "ytd_variance": 4568.4631,
    "ytd_variance_pct": 0.028,
    "fy_outlook": -242255.6273,
    "fy_budget": -248941.21,
    "fy_variance": 6685.5827,
    "fy_variance_pct": 0.0269,
    "commentary": null
   },
   {
    "key": "c_coloc",
    "label": "Colocation and backup storage",
    "ytd_actual": -71026.5,
    "ytd_budget": -71217.34,
    "ytd_variance": 190.84,
    "ytd_variance_pct": 0.0027,
    "fy_outlook": -106759.7858,
    "fy_budget": -107123.16,
    "fy_variance": 363.3742,
    "fy_variance_pct": 0.0034,
    "commentary": null
   },
   {
    "key": "c_veh",
    "label": "Field vans",
    "ytd_actual": -41767.47,
    "ytd_budget": -44240,
    "ytd_variance": 2472.53,
    "ytd_variance_pct": 0.0559,
    "fy_outlook": -63505.4938,
    "fy_budget": -66360,
    "fy_variance": 2854.5062,
    "fy_variance_pct": 0.043,
    "commentary": null
   },
   {
    "key": "c_sub",
    "label": "Subcontractors (specialists and cabling)",
    "ytd_actual": -92360,
    "ytd_budget": -24300,
    "ytd_variance": -68060,
    "ytd_variance_pct": -2.8008,
    "fy_outlook": -148995.3331,
    "fy_budget": -30300,
    "fy_variance": -118695.3331,
    "fy_variance_pct": -3.9173,
    "commentary": "J01 data migration specialist subcontractor."
   },
   {
    "key": "c_prov",
    "label": "Onerous project provision: movement (IAS 37)",
    "ytd_actual": -2507.14,
    "ytd_budget": 0,
    "ytd_variance": -2507.14,
    "ytd_variance_pct": 0,
    "fy_outlook": 0,
    "fy_budget": 0,
    "fy_variance": 0,
    "fy_variance_pct": 0,
    "commentary": "J01 onerous contract provision (IAS 37)."
   },
   {
    "key": "c_pay_svc",
    "label": "Service delivery payroll",
    "ytd_actual": -806140.535,
    "ytd_budget": -888419,
    "ytd_variance": 82278.465,
    "ytd_variance_pct": 0.0926,
    "fy_outlook": -1239115.2935,
    "fy_budget": -1363624.62,
    "fy_variance": 124509.3265,
    "fy_variance_pct": 0.0913,
    "commentary": "Four leavers, two replaced; budgeted desk hires not made."
   },
   {
    "key": "c_pay_prj",
    "label": "Project team payroll",
    "ytd_actual": -358370.8912,
    "ytd_budget": -358370.85,
    "ytd_variance": -0.0413,
    "ytd_variance_pct": -0.0,
    "fy_outlook": -543010.1652,
    "fy_budget": -543603.71,
    "fy_variance": 593.5448,
    "fy_variance_pct": 0.0011,
    "commentary": null
   },
   {
    "key": "T_cor",
    "label": "TOTAL COST OF REVENUE",
    "ytd_actual": -3522464.9731,
    "ytd_budget": -3639735.84,
    "ytd_variance": 117270.8669,
    "ytd_variance_pct": 0.0322,
    "fy_outlook": -5476137.1366,
    "fy_budget": -5672754.44,
    "fy_variance": 196617.3034,
    "fy_variance_pct": 0.0347,
    "commentary": null
   },
   {
    "key": "gp",
    "label": "GROSS PROFIT",
    "ytd_actual": 1260326.8869,
    "ytd_budget": 1599449.5,
    "ytd_variance": -339122.6131,
    "ytd_variance_pct": -0.212,
    "fy_outlook": 2055974.044,
    "fy_budget": 2542503.06,
    "fy_variance": -486529.016,
    "fy_variance_pct": -0.1914,
    "commentary": null
   },
   {
    "key": "gpm",
    "label": "Gross margin %",
    "ytd_actual": 0.2635,
    "ytd_budget": 0.3053,
    "ytd_variance": -0.0418,
    "ytd_variance_pct": null,
    "fy_outlook": 0.273,
    "fy_budget": 0.3095,
    "fy_variance": -0.0365,
    "fy_variance_pct": null,
    "commentary": null
   },
   {
    "key": "pay_sm",
    "label": "Sales and marketing payroll incl. commissions",
    "ytd_actual": -199641.2001,
    "ytd_budget": -200796.12,
    "ytd_variance": 1154.9199,
    "ytd_variance_pct": 0.0058,
    "fy_outlook": -306227.9953,
    "fy_budget": -309144.78,
    "fy_variance": 2916.7847,
    "fy_variance_pct": 0.0094,
    "commentary": null
   },
   {
    "key": "pay_ga",
    "label": "General and administrative payroll",
    "ytd_actual": -263561.5525,
    "ytd_budget": -263561.5,
    "ytd_variance": -0.0525,
    "ytd_variance_pct": -0.0,
    "fy_outlook": -398839.3892,
    "fy_budget": -398479.93,
    "fy_variance": -359.4592,
    "fy_variance_pct": -0.0009,
    "commentary": null
   },
   {
    "key": "ox_rent",
    "label": "Office rent, Porto",
    "ytd_actual": -84000,
    "ytd_budget": -84000,
    "ytd_variance": 0,
    "ytd_variance_pct": 0,
    "fy_outlook": -126000,
    "fy_budget": -126000,
    "fy_variance": 0,
    "fy_variance_pct": 0,
    "commentary": null
   },
   {
    "key": "ox_prof",
    "label": "Statutory audit, legal and tax advisers",
    "ytd_actual": -41074.99,
    "ytd_budget": -40752,
    "ytd_variance": -322.99,
    "ytd_variance_pct": -0.0079,
    "fy_outlook": -57778.99,
    "fy_budget": -57456,
    "fy_variance": -322.99,
    "fy_variance_pct": -0.0056,
    "commentary": null
   },
   {
    "key": "ox_ins",
    "label": "Insurance",
    "ytd_actual": -15200,
    "ytd_budget": -15200,
    "ytd_variance": 0,
    "ytd_variance_pct": 0,
    "fy_outlook": -22800,
    "fy_budget": -22800,
    "fy_variance": 0,
    "fy_variance_pct": 0,
    "commentary": null
   },
   {
    "key": "ox_mkt",
    "label": "Marketing and events",
    "ytd_actual": -51333.87,
    "ytd_budget": -51220,
    "ytd_variance": -113.87,
    "ytd_variance_pct": -0.0022,
    "fy_outlook": -81168.87,
    "fy_budget": -81055,
    "fy_variance": -113.87,
    "fy_variance_pct": -0.0014,
    "commentary": null
   },
   {
    "key": "ox_train",
    "label": "Training and certifications",
    "ytd_actual": -30255.42,
    "ytd_budget": -30400,
    "ytd_variance": 144.58,
    "ytd_variance_pct": 0.0048,
    "fy_outlook": -45455.42,
    "fy_budget": -45600,
    "fy_variance": 144.58,
    "fy_variance_pct": 0.0032,
    "commentary": null
   },
   {
    "key": "ox_recruit",
    "label": "Recruitment",
    "ytd_actual": -11883.07,
    "ytd_budget": -16400,
    "ytd_variance": 4516.93,
    "ytd_variance_pct": 0.2754,
    "fy_outlook": -27528.171,
    "fy_budget": -18000,
    "fy_variance": -9528.171,
    "fy_variance_pct": -0.5293,
    "commentary": "Recruitment follows the hires."
   },
   {
    "key": "ox_travel",
    "label": "Travel",
    "ytd_actual": -25740.99,
    "ytd_budget": -25600,
    "ytd_variance": -140.99,
    "ytd_variance_pct": -0.0055,
    "fy_outlook": -38540.99,
    "fy_budget": -38400,
    "fy_variance": -140.99,
    "fy_variance_pct": -0.0037,
    "commentary": null
   },
   {
    "key": "ox_telco",
    "label": "Telecoms and internal IT",
    "ytd_actual": -33552.73,
    "ytd_budget": -33600,
    "ytd_variance": 47.27,
    "ytd_variance_pct": 0.0014,
    "fy_outlook": -50352.73,
    "fy_budget": -50400,
    "fy_variance": 47.27,
    "fy_variance_pct": 0.0009,
    "commentary": null
   },
   {
    "key": "ox_office",
    "label": "Office services and utilities",
    "ytd_actual": -21921.74,
    "ytd_budget": -21600,
    "ytd_variance": -321.74,
    "ytd_variance_pct": -0.0149,
    "fy_outlook": -32721.74,
    "fy_budget": -32400,
    "fy_variance": -321.74,
    "fy_variance_pct": -0.0099,
    "commentary": null
   },
   {
    "key": "ox_ohs",
    "label": "Occupational health and safety",
    "ytd_actual": -3538.16,
    "ytd_budget": -3600,
    "ytd_variance": 61.84,
    "ytd_variance_pct": 0.0172,
    "fy_outlook": -5338.16,
    "fy_budget": -5400,
    "fy_variance": 61.84,
    "fy_variance_pct": 0.0115,
    "commentary": null
   },
   {
    "key": "T_opex",
    "label": "TOTAL OPERATING EXPENSES",
    "ytd_actual": -781703.7226,
    "ytd_budget": -786729.62,
    "ytd_variance": 5025.8974,
    "ytd_variance_pct": 0.0064,
    "fy_outlook": -1192752.4555,
    "fy_budget": -1185135.71,
    "fy_variance": -7616.7455,
    "fy_variance_pct": -0.0064,
    "commentary": null
   },
   {
    "key": "ebitda",
    "label": "EBITDA",
    "ytd_actual": 478623.1642,
    "ytd_budget": 812719.88,
    "ytd_variance": -334096.7158,
    "ytd_variance_pct": -0.4111,
    "fy_outlook": 863221.5886,
    "fy_budget": 1357367.35,
    "fy_variance": -494145.7614,
    "fy_variance_pct": -0.364,
    "commentary": "EUR 334k behind budget YTD; EUR 494k behind on the full-year outlook."
   },
   {
    "key": "ebitdap",
    "label": "EBITDA % of revenue",
    "ytd_actual": 0.1001,
    "ytd_budget": 0.1551,
    "ytd_variance": -0.0551,
    "ytd_variance_pct": null,
    "fy_outlook": 0.1146,
    "fy_budget": 0.1652,
    "fy_variance": -0.0506,
    "fy_variance_pct": null,
    "commentary": null
   },
   {
    "key": "da",
    "label": "Depreciation and amortisation",
    "ytd_actual": -77400.0267,
    "ytd_budget": -77633.36,
    "ytd_variance": 233.3333,
    "ytd_variance_pct": 0.003,
    "fy_outlook": -118347.3895,
    "fy_budget": -119450.04,
    "fy_variance": 1102.6505,
    "fy_variance_pct": 0.0092,
    "commentary": null
   },
   {
    "key": "int",
    "label": "Interest on the bank loan",
    "ytd_actual": -36914.25,
    "ytd_budget": -35105.56,
    "ytd_variance": -1808.69,
    "ytd_variance_pct": -0.0515,
    "fy_outlook": -53303.1394,
    "fy_budget": -49691.66,
    "fy_variance": -3611.4794,
    "fy_variance_pct": -0.0727,
    "commentary": null
   },
   {
    "key": "fxd",
    "label": "Exchange differences",
    "ytd_actual": -89.6361,
    "ytd_budget": 0,
    "ytd_variance": -89.6361,
    "ytd_variance_pct": 0,
    "fy_outlook": -426.5202,
    "fy_budget": 0,
    "fy_variance": -426.5202,
    "fy_variance_pct": 0,
    "commentary": null
   },
   {
    "key": "tax",
    "label": "Corporate income tax (IRC) and derrama",
    "ytd_actual": -72664.9465,
    "ytd_budget": -142317.9,
    "ytd_variance": 69652.9535,
    "ytd_variance_pct": 0.4894,
    "fy_outlook": -139684.6306,
    "fy_budget": -241586.25,
    "fy_variance": 101901.6194,
    "fy_variance_pct": 0.4218,
    "commentary": "Lower profit; FY2026 rates 19% and 15% on the first EUR 50,000."
   },
   {
    "key": "np",
    "label": "NET PROFIT",
    "ytd_actual": 291554.3049,
    "ytd_budget": 557663.06,
    "ytd_variance": -266108.7551,
    "ytd_variance_pct": -0.4772,
    "fy_outlook": 551459.9088,
    "fy_budget": 946639.4,
    "fy_variance": -395179.4912,
    "fy_variance_pct": -0.4175,
    "commentary": null
   },
   {
    "key": "b_users",
    "label": "Managed users",
    "ytd_actual": 3951,
    "ytd_budget": 4109.37,
    "ytd_variance": -158.37,
    "ytd_variance_pct": -0.0385,
    "fy_outlook": 4207.0633,
    "fy_budget": 4232.04,
    "fy_variance": -24.9767,
    "fy_variance_pct": -0.0059,
    "commentary": null
   },
   {
    "key": "b_mrr",
    "label": "Managed service fees (MRR) in the month",
    "ytd_actual": 236994.81,
    "ytd_budget": 246681,
    "ytd_variance": -9686.19,
    "ytd_variance_pct": -0.0393,
    "fy_outlook": 251930.2371,
    "fy_budget": 255419.05,
    "fy_variance": -3488.8129,
    "fy_variance_pct": -0.0137,
    "commentary": null
   },
   {
    "key": "b_ncon",
    "label": "Contracts billing",
    "ytd_actual": 32,
    "ytd_budget": 33,
    "ytd_variance": -1,
    "ytd_variance_pct": -0.0303,
    "fy_outlook": 33,
    "fy_budget": 34,
    "fy_variance": -1,
    "fy_variance_pct": -0.0294,
    "commentary": null
   },
   {
    "key": "b_util",
    "label": "Service desk utilisation",
    "ytd_actual": 0.8925,
    "ytd_budget": 0.81,
    "ytd_variance": 0.0825,
    "ytd_variance_pct": 0.1019,
    "fy_outlook": 0.8913,
    "fy_budget": 0.815,
    "fy_variance": 0.0763,
    "fy_variance_pct": 0.0936,
    "commentary": null
   },
   {
    "key": "b_rb",
    "label": "Distributor rebate earned, % of purchases",
    "ytd_actual": 0.015,
    "ytd_budget": 0.03,
    "ytd_variance": -0.015,
    "ytd_variance_pct": -0.5,
    "fy_outlook": 0.015,
    "fy_budget": 0.03,
    "fy_variance": -0.015,
    "fy_variance_pct": -0.5,
    "commentary": null
   },
   {
    "key": "b_desk",
    "label": "Service desk FTE",
    "ytd_actual": 37,
    "ytd_budget": 43,
    "ytd_variance": -6,
    "ytd_variance_pct": -0.1395,
    "fy_outlook": 41.0637,
    "fy_budget": 43,
    "fy_variance": -1.9363,
    "fy_variance_pct": -0.045,
    "commentary": null
   },
   {
    "key": "b_hc",
    "label": "Headcount",
    "ytd_actual": 68,
    "ytd_budget": 74,
    "ytd_variance": -6,
    "ytd_variance_pct": -0.0811,
    "fy_outlook": 71.5452,
    "fy_budget": 74,
    "fy_variance": -2.4548,
    "fy_variance_pct": -0.0332,
    "commentary": null
   },
   {
    "key": "b_cash",
    "label": "Cash at bank",
    "ytd_actual": 842052.8828,
    "ytd_budget": 877953.28,
    "ytd_variance": -35900.3972,
    "ytd_variance_pct": -0.0409,
    "fy_outlook": 704225.5232,
    "fy_budget": 1112926.52,
    "fy_variance": -408700.9968,
    "fy_variance_pct": -0.3672,
    "commentary": null
   },
   {
    "key": "b_nd",
    "label": "Net debt",
    "ytd_actual": 191280.4772,
    "ytd_budget": 155380.08,
    "ytd_variance": 35900.3972,
    "ytd_variance_pct": 0.231,
    "fy_outlook": 195774.5168,
    "fy_budget": -212926.48,
    "fy_variance": 408700.9968,
    "fy_variance_pct": 1.9194,
    "commentary": null
   }
  ],
  "revenue_variance_by_cause": {
   "columns": [
    "Cause",
    "YTD actual",
    "YTD budget",
    "YTD variance",
    "Revenue effect YTD",
    "FY26 outlook",
    "FY26 budget",
    "FY26 variance",
    "Revenue effect FY26"
   ],
   "rows": [
    [
     "Traslovia Transportes not renewed at its April term end",
     33078,
     67117.12,
     -34039.12,
     -34039.12,
     33078,
     101280.26,
     -68202.26,
     -68202.26
    ],
    [
     "New contracts: three won from March, May and July (and pipeline) against four budgeted",
     61667,
     69840,
     -8173,
     -8173,
     155121.8759,
     162960,
     -7838.1241,
     -7838.1241
    ],
    [
     "Existing contracts: users, devices and price reviews",
     1740270.91,
     1739521.81,
     749.1,
     749.1,
     2625669.9647,
     2629570.39,
     -3900.4253,
     -3900.4253
    ],
    [
     "SLA credits (service desk capacity)",
     -37653.01,
     -7505.91,
     -30147.1,
     -30147.1,
     -56251.0392,
     -11575.24,
     -44675.7992,
     -44675.7992
    ],
    [
     "Onboarding fees recognised",
     3550,
     3700,
     -150,
     -150,
     6655,
     6675,
     -20,
     -20
    ],
    [
     "Bundled licences",
     538291.89,
     550086.25,
     -11794.36,
     -11794.36,
     822656.6186,
     844203.58,
     -21546.9614,
     -21546.9614
    ],
    [
     "Annual licences",
     271275,
     267825,
     3450,
     3450,
     408415,
     403149.99,
     5265.01,
     5265.01
    ],
    [
     "Licences resold as agent",
     61998.9,
     64829.9,
     -2831.0,
     -2831.0,
     100390.7988,
     108993.5,
     -8602.7013,
     -8602.7013
    ],
    [
     "Hardware",
     1575000,
     1708135.41,
     -133135.41,
     -133135.41,
     2513080,
     2750000.02,
     -236920.02,
     -236920.02
    ],
    [
     "Projects",
     535313.17,
     775635.76,
     -240322.59,
     -240322.59,
     923294.9619,
     1220000,
     -296705.0381,
     -296705.0381
    ],
    [
     "TOTAL REVENUE VARIANCE",
     null,
     null,
     null,
     -456393.48,
     null,
     null,
     null,
     -683146.3193
    ]
   ]
  },
  "ebitda_walk_ytd": [
   {
    "step": "Budget EBITDA YTD",
    "value": 812719.88
   },
   {
    "step": "Managed services revenue (fees, SLA credits, onboarding, bundled licences)",
    "value": -83554.48
   },
   {
    "step": "Licence resale revenue",
    "value": 619.0
   },
   {
    "step": "Hardware revenue",
    "value": -133135.41
   },
   {
    "step": "Project revenue",
    "value": -240322.59
   },
   {
    "step": "Hardware cost net of rebates",
    "value": 90640.67
   },
   {
    "step": "Licence cost net of incentives",
    "value": 7687.08
   },
   {
    "step": "Tooling, colocation and field vans",
    "value": 7231.8331
   },
   {
    "step": "Subcontractors",
    "value": -68060
   },
   {
    "step": "Onerous project provision",
    "value": -2507.14
   },
   {
    "step": "Service delivery payroll",
    "value": 82278.465
   },
   {
    "step": "Project team payroll",
    "value": -0.0413
   },
   {
    "step": "Sales and marketing payroll incl. commissions",
    "value": 1154.9199
   },
   {
    "step": "General and administrative payroll",
    "value": -0.0525
   },
   {
    "step": "Overheads",
    "value": 3871.03
   },
   {
    "step": "Actual EBITDA YTD",
    "value": 478623.1642
   }
  ]
 },
 "cash_13w_control": {
  "low": 742457.4405,
  "lowwk": "2026-12-04",
  "short": 342457.4405,
  "fac": 300000,
  "fachead": 300000,
  "taxwk": 456729.9597
 },
 "contract_register": {
  "columns": [
   "Code",
   "Customer (fictional)",
   "Country",
   "Sector",
   "VAT on invoices",
   "First contract start (month)",
   "Start month no.",
   "Status",
   "Users at 31-Dec-25 (live) or at signature",
   "Devices at 31-Dec-25 or at signature",
   "Price per user a month (31-Dec-25 or signature)",
   "Price per device a month",
   "User growth a month",
   "Payment terms (days)",
   "SLA tier",
   "Probability Base (renewal or win)",
   "Probability Downside",
   "Probability Upside",
   "Probability selected",
   "Effective start month no.",
   "Anniversary month",
   "Next renewal after the last actual month",
   "Onboarding fee (starts from Jan-25)",
   "Expected onboarding fee (pipeline x win probability)",
   "Users at the last actual month",
   "Devices at the last actual month",
   "Fees at the last actual month",
   "Managed services revenue FY2026 (fees and licences)",
   "Managed services revenue FY2027",
   "Share of FY2026 managed services revenue",
   "Delivery cost allocated FY2026 (desk hours, tooling, licences)",
   "Contribution FY2026",
   "Contribution % FY2026",
   "Contract note (fictional)"
  ],
  "rows": [
   [
    "C01",
    "Brevanor T\u00eaxteis, S.A.",
    "PT",
    "Textiles",
    0.23,
    "2021-03-31",
    -57,
    "Live",
    420,
    95,
    38.5,
    64,
    0.002,
    45,
    "Premium",
    0.9,
    0.5,
    0.95,
    0.9,
    -57,
    "March",
    "2027-03-31",
    0,
    0,
    425,
    96,
    23091.67,
    364385.7218,
    350650.3305,
    0.1002,
    229550.9581,
    134834.7637,
    0.37,
    "Largest contract: 420 users across two plants and the head office. Renews in March 2027; a regional competitor has approached the IT director. ERP infrastructure project J01 overran (Projects)."
   ],
   [
    "C02",
    "Cl\u00ednicas Almedra, Lda",
    "PT",
    "Healthcare",
    0.23,
    "2022-04-30",
    -44,
    "Live",
    260,
    70,
    44,
    58,
    0.004,
    30,
    "Premium",
    0.94,
    0.85,
    0.97,
    0.94,
    -44,
    "April",
    "2028-04-30",
    0,
    0,
    269,
    70,
    16309.3,
    249144.1509,
    268038.0661,
    0.0685,
    150152.4758,
    98991.6752,
    0.3973,
    null
   ],
   [
    "C03",
    "Solvinha Cal\u00e7ado, Lda",
    "PT",
    "Footwear",
    0.23,
    "2023-10-31",
    -26,
    "Live",
    150,
    38,
    40,
    55,
    0.001,
    45,
    "Standard",
    0.92,
    0.8,
    0.95,
    0.92,
    -26,
    "October",
    "2026-10-31",
    0,
    0,
    153,
    38,
    8210,
    128282.1914,
    125562.5941,
    0.0353,
    82924.426,
    45357.7654,
    0.3536,
    null
   ],
   [
    "C04",
    "Valcorra Advogados",
    "PT",
    "Legal services",
    0.23,
    "2020-03-31",
    -69,
    "Live",
    95,
    22,
    52,
    72,
    0.002,
    30,
    "Premium",
    0.95,
    0.88,
    0.97,
    0.95,
    -69,
    "March",
    "2029-03-31",
    0,
    0,
    96,
    22,
    6746.98,
    100573.3262,
    105654.2653,
    0.0277,
    52045.8219,
    48527.5043,
    0.4825,
    null
   ],
   [
    "C05",
    "Col\u00e9gios Maravel",
    "PT",
    "Education",
    0.23,
    "2021-08-31",
    -52,
    "Live",
    310,
    85,
    29,
    48,
    0.002,
    30,
    "Standard",
    0.93,
    0.85,
    0.96,
    0.93,
    -52,
    "August",
    "2027-08-31",
    0,
    0,
    314,
    87,
    13627.33,
    225949.2054,
    230547.3139,
    0.0621,
    178662.2923,
    47286.9131,
    0.2093,
    null
   ],
   [
    "C06",
    "Metal\u00fargica Vaurinho, Lda",
    "PT",
    "Metalworking",
    0.23,
    "2023-01-31",
    -35,
    "Live",
    120,
    40,
    41,
    60,
    0.001,
    45,
    "Standard",
    0.93,
    0.85,
    0.96,
    0.93,
    -35,
    "January",
    "2029-01-31",
    0,
    0,
    122,
    40,
    7594.45,
    116557.6351,
    121250.0755,
    0.0321,
    73372.516,
    43185.1191,
    0.3705,
    null
   ],
   [
    "C07",
    "Quintas Delvara, S.A.",
    "PT",
    "Wine exports",
    0.23,
    "2024-02-29",
    -22,
    "Live",
    85,
    30,
    45,
    62,
    0.003,
    30,
    "Standard",
    0.93,
    0.85,
    0.96,
    0.93,
    -22,
    "February",
    "2027-02-28",
    0,
    0,
    88,
    31,
    6034.93,
    90111.2027,
    89784.8531,
    0.0248,
    53888.5647,
    36222.638,
    0.402,
    null
   ],
   [
    "C08",
    "Farm\u00e1cias Oliveda",
    "PT",
    "Pharmacy retail",
    0.23,
    "2022-01-31",
    -47,
    "Live",
    180,
    90,
    39,
    45,
    0.003,
    30,
    "Standard",
    0.94,
    0.86,
    0.97,
    0.94,
    -47,
    "January",
    "2028-01-31",
    0,
    0,
    185,
    91,
    11604.06,
    177372.525,
    188298.5616,
    0.0488,
    129145.5664,
    48226.9586,
    0.2719,
    null
   ],
   [
    "C09",
    "Moldivel Pl\u00e1sticos, S.A.",
    "PT",
    "Plastics",
    0.23,
    "2023-07-31",
    -29,
    "Live",
    140,
    45,
    40,
    63,
    0.002,
    60,
    "Standard",
    0.93,
    0.85,
    0.96,
    0.93,
    -29,
    "July",
    "2029-07-31",
    0,
    0,
    143,
    45,
    8777.43,
    133238.889,
    140260.3406,
    0.0366,
    84545.1382,
    48693.7508,
    0.3655,
    null
   ],
   [
    "C10",
    "Pravel Contabilidade, Lda",
    "PT",
    "Accounting",
    0.23,
    "2024-10-31",
    -14,
    "Live",
    60,
    12,
    50,
    70,
    0.002,
    30,
    "Standard",
    0.95,
    0.88,
    0.97,
    0.95,
    -14,
    "October",
    "2027-10-31",
    0,
    0,
    61,
    12,
    3890,
    59544.5296,
    61972.0766,
    0.0164,
    31802.3423,
    27742.1873,
    0.4659,
    null
   ],
   [
    "C11",
    "Hot\u00e9is Alvenosa",
    "PT",
    "Hotels",
    0.23,
    "2022-08-31",
    -40,
    "Live",
    130,
    60,
    37,
    52,
    0.002,
    30,
    "Standard",
    0.93,
    0.85,
    0.96,
    0.93,
    -40,
    "August",
    "2028-08-31",
    0,
    0,
    132,
    60,
    8212.1,
    124440.9767,
    130519.5369,
    0.0342,
    89296.0871,
    35144.8895,
    0.2824,
    null
   ],
   [
    "C12",
    "Cer\u00e2micas Lovredo, S.A.",
    "PT",
    "Ceramics",
    0.23,
    "2023-11-30",
    -25,
    "Live",
    110,
    36,
    41,
    61,
    0.001,
    45,
    "Standard",
    0.93,
    0.84,
    0.96,
    0.93,
    -25,
    "November",
    "2026-11-30",
    0,
    0,
    111,
    36,
    6747,
    103181.5601,
    101100.9972,
    0.0284,
    65699.5797,
    37481.9804,
    0.3633,
    null
   ],
   [
    "C13",
    "Castelvi Imobili\u00e1ria",
    "PT",
    "Real estate",
    0.23,
    "2025-03-31",
    -9,
    "Live",
    70,
    15,
    47,
    66,
    0.003,
    30,
    "Standard",
    0.94,
    0.86,
    0.97,
    0.94,
    -9,
    "March",
    "2028-03-31",
    3150,
    3150,
    71,
    15,
    4439.5,
    67860.4896,
    71936.6829,
    0.0187,
    37757.5678,
    30102.9219,
    0.4436,
    null
   ],
   [
    "C14",
    "Agr\u00edcola Vinhedal",
    "PT",
    "Agrifood",
    0.23,
    "2023-05-31",
    -31,
    "Live",
    90,
    28,
    39,
    58,
    0.002,
    45,
    "Standard",
    0.93,
    0.85,
    0.96,
    0.93,
    -31,
    "May",
    "2029-05-31",
    0,
    0,
    92,
    28,
    5347.51,
    82711.395,
    86864.4622,
    0.0227,
    53980.2745,
    28731.1204,
    0.3474,
    null
   ],
   [
    "C15",
    "Engenharia Morvelo, Lda",
    "PT",
    "Engineering",
    0.23,
    "2024-05-31",
    -19,
    "Live",
    75,
    20,
    49,
    70,
    0.003,
    30,
    "Premium",
    0.94,
    0.86,
    0.97,
    0.94,
    -19,
    "May",
    "2027-05-31",
    0,
    0,
    78,
    20,
    5357.77,
    79510.7143,
    81304.2368,
    0.0219,
    43329.4461,
    36181.2682,
    0.455,
    null
   ],
   [
    "C16",
    "Cooperativa Leiteira Bravanha",
    "PT",
    "Dairy",
    0.23,
    "2020-10-31",
    -62,
    "Live",
    160,
    52,
    36,
    57,
    0.001,
    60,
    "Standard",
    0.92,
    0.8,
    0.95,
    0.92,
    -62,
    "October",
    "2026-10-31",
    0,
    0,
    162,
    52,
    8796,
    136941.0342,
    134096.1423,
    0.0377,
    94632.9653,
    42308.069,
    0.309,
    null
   ],
   [
    "C17",
    "Laborat\u00f3rios Cendral, Lda",
    "PT",
    "Clinical laboratories",
    0.23,
    "2024-08-31",
    -16,
    "Live",
    115,
    42,
    46,
    68,
    0.004,
    30,
    "Premium",
    0.95,
    0.88,
    0.97,
    0.95,
    -16,
    "August",
    "2027-08-31",
    0,
    0,
    119,
    43,
    8616.35,
    126288.6669,
    132246.2795,
    0.0347,
    73717.915,
    52570.7519,
    0.4163,
    null
   ],
   [
    "C18",
    "Mediavir Seguros",
    "PT",
    "Insurance broking",
    0.23,
    "2025-06-30",
    -6,
    "Live",
    55,
    10,
    48,
    65,
    0.003,
    30,
    "Standard",
    0.94,
    0.86,
    0.97,
    0.94,
    -6,
    "June",
    "2028-06-30",
    2475,
    2475,
    56,
    10,
    3424.79,
    52171.8099,
    55475.7282,
    0.0143,
    28594.5345,
    23577.2753,
    0.4519,
    null
   ],
   [
    "C19",
    "Construtora Arvedo, S.A.",
    "PT",
    "Construction",
    0.23,
    "2023-02-28",
    -34,
    "Live",
    145,
    38,
    38,
    60,
    0.002,
    60,
    "Standard",
    0.92,
    0.82,
    0.95,
    0.92,
    -34,
    "February",
    "2029-02-28",
    0,
    0,
    147,
    38,
    8070.52,
    127015.8887,
    133647.9879,
    0.0349,
    82146.9834,
    44868.9053,
    0.3533,
    null
   ],
   [
    "C20",
    "Distribuidora Pellano, Lda",
    "PT",
    "Wholesale",
    0.23,
    "2024-01-31",
    -23,
    "Live",
    125,
    40,
    39,
    58,
    0.002,
    45,
    "Standard",
    0.93,
    0.84,
    0.96,
    0.93,
    -23,
    "January",
    "2027-01-31",
    0,
    0,
    128,
    40,
    7502.11,
    116394.7667,
    113955.8427,
    0.032,
    75625.0649,
    40769.7019,
    0.3503,
    null
   ],
   [
    "C21",
    "Gr\u00e1fica Tornavel, Lda",
    "PT",
    "Printing",
    0.23,
    "2022-07-31",
    -41,
    "Live",
    65,
    24,
    42,
    60,
    0,
    45,
    "Standard",
    0.92,
    0.82,
    0.95,
    0.92,
    -41,
    "July",
    "2028-07-31",
    0,
    0,
    65,
    24,
    4278.42,
    64286.0316,
    66110.4006,
    0.0177,
    40727.4759,
    23558.5557,
    0.3665,
    null
   ],
   [
    "C22",
    "\u00d3ticas Lumarel",
    "PT",
    "Optical retail",
    0.23,
    "2024-11-30",
    -13,
    "Live",
    95,
    50,
    37,
    44,
    0.003,
    30,
    "Standard",
    0.94,
    0.86,
    0.97,
    0.94,
    -13,
    "November",
    "2027-11-30",
    0,
    0,
    97,
    51,
    5833,
    90273.2117,
    94900.3792,
    0.0248,
    69565.352,
    20707.8598,
    0.2294,
    null
   ],
   [
    "C23",
    "Salmeira Arquitetos",
    "PT",
    "Architecture",
    0.23,
    "2025-09-30",
    -3,
    "Live",
    40,
    9,
    52,
    72,
    0.003,
    30,
    "Standard",
    0.94,
    0.86,
    0.97,
    0.94,
    -3,
    "September",
    "2028-09-30",
    1800,
    1800,
    41,
    9,
    2780,
    42158.5468,
    44801.4135,
    0.0116,
    21963.3513,
    20195.1955,
    0.479,
    null
   ],
   [
    "C24",
    "Traslovia Transportes, Lda",
    "PT",
    "Logistics",
    0.23,
    "2023-05-31",
    -31,
    "Not renewed Apr-26",
    150,
    40,
    39,
    60,
    0.001,
    45,
    "Standard",
    0,
    0,
    0,
    0,
    -31,
    "May",
    "2029-05-31",
    0,
    0,
    0,
    0,
    0,
    43570.9461,
    0,
    0.012,
    28327.6558,
    15243.2904,
    0.3498,
    "Not renewed at the April 2026 term end: moved to a competitor offering a lower price per user with a remote-only service desk."
   ],
   [
    "C25",
    "Conservas Brelmar, S.L.",
    "ES",
    "Seafood canning",
    0,
    "2024-04-30",
    -20,
    "Live",
    140,
    45,
    43,
    64,
    0.002,
    60,
    "Premium",
    0.93,
    0.85,
    0.96,
    0.93,
    -20,
    "April",
    "2027-04-30",
    0,
    0,
    143,
    47,
    9395.08,
    140895.2568,
    140902.6746,
    0.0387,
    85445.4245,
    55449.8324,
    0.3936,
    null
   ],
   [
    "C26",
    "Talleres Bra\u00f1oso, S.L.",
    "ES",
    "Industrial engineering",
    0,
    "2023-08-31",
    -28,
    "Live",
    90,
    34,
    44,
    66,
    0.002,
    60,
    "Standard",
    0.93,
    0.85,
    0.96,
    0.93,
    -28,
    "August",
    "2029-08-31",
    0,
    0,
    92,
    34,
    6455.59,
    95088.9399,
    100042.305,
    0.0261,
    57404.7272,
    37684.2127,
    0.3963,
    "Final milestone of project J11 (ERP hosting move) invoiced in June and disputed pending the performance acceptance test."
   ],
   [
    "C27",
    "Cl\u00ednica Veigadal, S.L.",
    "ES",
    "Healthcare",
    0,
    "2025-02-28",
    -10,
    "Live",
    70,
    18,
    47,
    64,
    0.003,
    45,
    "Standard",
    0.94,
    0.86,
    0.97,
    0.94,
    -10,
    "February",
    "2028-02-29",
    3150,
    3150,
    73,
    18,
    4702.16,
    70887.7096,
    75825.8281,
    0.0195,
    40030.3121,
    30857.3975,
    0.4353,
    null
   ],
   [
    "C28",
    "Maderas Ouri\u00f1al, S.L.",
    "ES",
    "Timber",
    0,
    "2022-10-31",
    -38,
    "Live",
    80,
    30,
    41,
    59,
    0.001,
    60,
    "Standard",
    0.92,
    0.82,
    0.95,
    0.92,
    -38,
    "October",
    "2028-10-31",
    0,
    0,
    80,
    30,
    5050,
    78136.3591,
    80846.7929,
    0.0215,
    50605.8769,
    27530.4821,
    0.3523,
    null
   ],
   [
    "C29",
    "Pesqueras Morazal, S.L.",
    "ES",
    "Fishing",
    0,
    "2023-12-31",
    -24,
    "Live",
    95,
    36,
    42,
    60,
    0.001,
    60,
    "Standard",
    0.88,
    0.75,
    0.93,
    0.88,
    -24,
    "December",
    "2026-12-31",
    0,
    0,
    95,
    36,
    6150,
    92901.2131,
    85838.8042,
    0.0255,
    59481.7285,
    33419.4846,
    0.3597,
    "Renews December 2026; the owner has asked for a price reduction after two SLA breaches in the summer."
   ],
   [
    "C30",
    "Bodegas Quenlla, S.L.",
    "ES",
    "Winery",
    0,
    "2024-07-31",
    -17,
    "Live",
    55,
    20,
    45,
    62,
    0.002,
    45,
    "Standard",
    0.93,
    0.85,
    0.96,
    0.93,
    -17,
    "July",
    "2027-07-31",
    0,
    0,
    56,
    20,
    3857.76,
    57378.8658,
    57999.3159,
    0.0158,
    34663.522,
    22715.3438,
    0.3959,
    null
   ],
   [
    "C31",
    "Ferroval Automa\u00e7\u00e3o, Lda",
    "PT",
    "Industrial automation",
    0.23,
    "2026-03-31",
    3,
    "Won in 2026",
    80,
    28,
    44,
    62,
    0.004,
    30,
    "Standard",
    0.95,
    0.88,
    0.97,
    0.95,
    3,
    "March",
    "2029-03-31",
    3600,
    3600,
    81,
    29,
    5362,
    67541.419,
    86502.1273,
    0.0186,
    41663.2694,
    25878.1496,
    0.3831,
    null
   ],
   [
    "C32",
    "Cl\u00ednica Dent\u00e1ria Rosmel",
    "PT",
    "Dental clinics",
    0.23,
    "2026-05-31",
    5,
    "Won in 2026",
    66,
    20,
    46,
    60,
    0.004,
    30,
    "Standard",
    0.95,
    0.88,
    0.97,
    0.95,
    5,
    "May",
    "2029-05-31",
    2970,
    2970,
    67,
    20,
    4282,
    43666.4186,
    69398.4511,
    0.012,
    26140.0555,
    17526.3631,
    0.4014,
    null
   ],
   [
    "C33",
    "Mobili\u00e1rio Tarvela, Lda",
    "PT",
    "Furniture",
    0.23,
    "2026-07-31",
    7,
    "Won in 2026",
    108,
    33,
    41,
    60,
    0.003,
    45,
    "Standard",
    0.95,
    0.88,
    0.97,
    0.95,
    7,
    "July",
    "2029-07-31",
    4860,
    4860,
    109,
    33,
    6449,
    50256.2686,
    104910.1171,
    0.0138,
    32082.1162,
    18174.1525,
    0.3616,
    null
   ],
   [
    "P01",
    "Grupo Hospitalar Venara",
    "PT",
    "Hospitals",
    0.23,
    "2026-11-30",
    11,
    "Pipeline",
    480,
    140,
    36,
    62,
    0.003,
    60,
    "Premium",
    0.55,
    0.35,
    0.7,
    0.55,
    11,
    "November",
    "2026-11-30",
    21600,
    11880,
    0,
    0,
    0,
    37808.5932,
    233619.1833,
    0.0104,
    25559.6288,
    12248.9644,
    0.324,
    "Hospital group tender: shortlisted with two competitors; decision expected in October for a November start."
   ],
   [
    "P02",
    "Exportadora Linhelo, S.A.",
    "PT",
    "Food exports",
    0.23,
    "2027-01-31",
    13,
    "Pipeline",
    120,
    40,
    42,
    60,
    0.003,
    45,
    "Standard",
    0.5,
    0.3,
    0.65,
    0.5,
    13,
    "January",
    "2027-01-31",
    5400,
    2700,
    0,
    0,
    0,
    0,
    58401.1254,
    0,
    0,
    0,
    0,
    null
   ],
   [
    "P03",
    "Log\u00edstica Crastova, Lda",
    "PT",
    "Logistics",
    0.23,
    "2027-02-28",
    14,
    "Pipeline",
    140,
    55,
    40,
    55,
    0.002,
    45,
    "Standard",
    0.45,
    0.25,
    0.6,
    0.45,
    14,
    "February",
    "2027-02-28",
    6300,
    2835,
    0,
    0,
    0,
    0,
    55610.6316,
    0,
    0,
    0,
    0,
    null
   ],
   [
    "P04",
    "Conservas Galmira, S.L.",
    "ES",
    "Seafood canning",
    0,
    "2027-04-30",
    16,
    "Pipeline",
    100,
    35,
    43,
    62,
    0.002,
    60,
    "Standard",
    0.4,
    0.25,
    0.55,
    0.4,
    16,
    "April",
    "2027-04-30",
    4500,
    1800,
    0,
    0,
    0,
    0,
    29960.8621,
    0,
    0,
    0,
    0,
    null
   ],
   [
    "TOTAL",
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    3775,
    1174,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    59805,
    41220,
    3951,
    1225,
    236994.81,
    3636526.4592,
    4108836.7856,
    1,
    2324531.016,
    1311995.4433,
    0.3608,
    null
   ]
  ]
 },
 "project_register": {
  "columns": [
   "Code",
   "Contract",
   "Customer (fictional)",
   "Project",
   "Type",
   "Fee (fixed fee) or rate per hour (T&M)",
   "Start",
   "Planned completion",
   "Start no.",
   "End no.",
   "Own hours at completion (estimate)",
   "Subcontract hours at completion",
   "Own hours to 31-Dec-25",
   "Subcontract hours to 31-Dec-25",
   "Revenue to 31-Dec-25",
   "Billed to 31-Dec-25",
   "Downside overrun applies (1)",
   "Country",
   "Own hours to the last actual month",
   "Subcontract hours to the last actual month",
   "Own hours at completion, forecast (incl. scenario overrun)",
   "Subcontract hours at completion, forecast",
   "Progress at the last actual month",
   "Revenue FY2026",
   "Billed FY2026",
   "Billed less revenue at the last actual month (+ ahead)",
   "Onerous provision at the last actual month",
   "Cost at completion (standard)",
   "Margin at completion (standard cost)",
   "Margin %",
   "Note (fictional)"
  ],
  "rows": [
   [
    "J01",
    "C01",
    "Brevanor T\u00eaxteis, S.A.",
    "ERP infrastructure and cloud migration",
    "FF",
    158000,
    "2025-11-30",
    "2026-11-30",
    -1,
    11,
    2150,
    1350,
    175,
    0,
    13487.8,
    47400,
    1,
    "PT",
    1415,
    980,
    2150,
    1350,
    0.6843,
    144512.2,
    110600,
    2482.86,
    2507.14,
    175200,
    -17200,
    -0.1089,
    "Estimate at completion raised in June from 1,900 own + 150 subcontract hours to 2,150 + 1,350: the ERP data migration needed a specialist subcontractor. Loss-making at completion: provision under IAS 37."
   ],
   [
    "J02",
    "C02",
    "Cl\u00ednicas Almedra, Lda",
    "Clinic network and Wi-Fi refresh",
    "FF",
    64000,
    "2026-01-31",
    "2026-04-30",
    1,
    4,
    780,
    0,
    0,
    0,
    0,
    0,
    0,
    "PT",
    780,
    0,
    780,
    0,
    1,
    64000,
    64000,
    0,
    0,
    23400,
    40600,
    0.6344,
    null
   ],
   [
    "J03",
    "C12",
    "Cer\u00e2micas Lovredo, S.A.",
    "Server virtualisation",
    "FF",
    52000,
    "2026-03-31",
    "2026-07-31",
    3,
    7,
    640,
    0,
    0,
    0,
    0,
    0,
    0,
    "PT",
    640,
    0,
    640,
    0,
    1,
    52000,
    52000,
    0,
    0,
    19200,
    32800,
    0.6308,
    null
   ],
   [
    "J04",
    "C25",
    "Conservas Brelmar, S.L.",
    "Security hardening and SOC onboarding",
    "TM",
    68,
    "2026-02-28",
    "2026-09-30",
    2,
    9,
    880,
    0,
    0,
    0,
    0,
    0,
    0,
    "ES",
    727,
    0,
    880,
    0,
    0.8261,
    59840,
    59840,
    0,
    0,
    26400,
    33440,
    0.5588,
    null
   ],
   [
    "J05",
    "C19",
    "Construtora Arvedo, S.A.",
    "Construction site connectivity",
    "TM",
    60,
    "2026-01-31",
    "2026-12-31",
    1,
    12,
    1680,
    0,
    0,
    0,
    0,
    0,
    0,
    "PT",
    1074,
    0,
    1680,
    0,
    0.6393,
    100800,
    100800,
    0,
    0,
    50400,
    50400,
    0.5,
    null
   ],
   [
    "J06",
    "C31",
    "Ferroval Automa\u00e7\u00e3o, Lda",
    "Onboarding and migration",
    "FF",
    32000,
    "2026-03-31",
    "2026-05-31",
    3,
    5,
    400,
    0,
    0,
    0,
    0,
    0,
    0,
    "PT",
    410,
    0,
    400,
    0,
    1,
    32000,
    32000,
    0,
    0,
    12000,
    20000,
    0.625,
    null
   ],
   [
    "J07",
    "C07",
    "Quintas Delvara, S.A.",
    "Productivity suite tenant migration",
    "FF",
    38000,
    "2026-06-30",
    "2026-09-30",
    6,
    9,
    470,
    0,
    0,
    0,
    0,
    0,
    0,
    "PT",
    310,
    0,
    470,
    0,
    0.6596,
    38000,
    38000,
    1536.17,
    0,
    14100,
    23900,
    0.6289,
    null
   ],
   [
    "J08",
    "C08",
    "Farm\u00e1cias Oliveda",
    "Store network upgrade (signed Aug-26)",
    "FF",
    88000,
    "2026-09-30",
    "2027-01-31",
    9,
    13,
    1100,
    0,
    0,
    0,
    0,
    0,
    0,
    "PT",
    0,
    0,
    1100,
    0,
    0,
    70400,
    61600,
    0,
    0,
    33000,
    55000,
    0.625,
    "Signed in August; starts in September."
   ],
   [
    "J09",
    "C17",
    "Laborat\u00f3rios Cendral, Lda",
    "Backup and disaster recovery",
    "TM",
    64,
    "2026-01-31",
    "2026-12-31",
    1,
    12,
    960,
    0,
    0,
    0,
    0,
    0,
    0,
    "PT",
    621,
    0,
    960,
    0,
    0.6469,
    61440,
    61440,
    0,
    0,
    28800,
    32640,
    0.5312,
    null
   ],
   [
    "J10",
    "C33",
    "Mobili\u00e1rio Tarvela, Lda",
    "Onboarding and migration",
    "FF",
    36000,
    "2026-07-31",
    "2026-09-30",
    7,
    9,
    450,
    0,
    0,
    0,
    0,
    0,
    0,
    "PT",
    225,
    0,
    450,
    0,
    0.5,
    36000,
    36000,
    7200,
    0,
    13500,
    22500,
    0.625,
    null
   ],
   [
    "J11",
    "C26",
    "Talleres Bra\u00f1oso, S.L.",
    "ERP hosting move",
    "FF",
    72000,
    "2026-01-31",
    "2026-06-30",
    1,
    6,
    880,
    0,
    0,
    0,
    0,
    0,
    0,
    "ES",
    880,
    0,
    880,
    0,
    1,
    72000,
    72000,
    0,
    0,
    26400,
    45600,
    0.6333,
    "Final milestone invoiced in June and disputed pending the performance acceptance test."
   ],
   [
    "J12",
    "C32",
    "Cl\u00ednica Dent\u00e1ria Rosmel",
    "Onboarding and migration",
    "FF",
    24000,
    "2026-05-31",
    "2026-07-31",
    5,
    7,
    300,
    0,
    0,
    0,
    0,
    0,
    0,
    "PT",
    305,
    0,
    300,
    0,
    1,
    24000,
    24000,
    0,
    0,
    9000,
    15000,
    0.625,
    null
   ],
   [
    "TOTAL",
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    175,
    0,
    13487.8,
    47400,
    null,
    null,
    7387,
    980,
    null,
    null,
    null,
    754992.2,
    712280,
    11219.03,
    2507.14,
    null,
    null,
    null,
    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 4,783k, down 10.6% on the same months of 2025 and 8.7% below budget, with EBITDA of EUR 479k against EUR 813k budgeted. Four things explain it. Hardware and projects are EUR 133k and EUR 240k of revenue below budget, after a strong 2025. Traslovia Transportes left at its April renewal (EUR 34k). Four people left the service desk between March and June and only two were replaced, so utilisation hit 98% in July and SLA credits cost EUR 38k against EUR 8k budgeted. And the J01 ERP migration needed a specialist subcontractor: subcontractors cost EUR 68k more than budgeted and the project turned loss-making in June.",
     "Full-year outlook (Base): revenue EUR 7,532k, 8.3% below budget and down 10.2% on FY2025; EBITDA EUR 863k against EUR 1,357k budgeted and EUR 1,340k in FY2025. Managed service fees are EUR 237k a month at Aug-26 and EUR 252k by December, with the Venara hospital group tender included at its 55% win probability. Recurring revenue (managed services and annual licences) is 53% of FY2026 revenue.",
     "Cash is EUR 842k at Aug-26 (EUR 36k less than budgeted) and the 13-week low is EUR 742k in the week ending 4 December, EUR 342k above the EUR 400k buffer. The pressure point is the loan covenant, not liquidity. At the December test, debt service cover is 1.09x if the December IRC payment on account is paid in full, against a 1.20x minimum, because 2026 pays both the FY2025 IRC balance and payments on account set on the strong FY2025 profit. The July and September payments already exceed the FY2026 IRC now expected, so CIRC art. 107 lets the company limit the December payment: cover then rises to 1.25x, inside the covenant, and EUR 73k stays in the bank.",
     "Three decisions for this quarter: elect to limit the 15 December payment on account (EUR 73k) and brief the bank before the test; confirm the 5 service desk hires for October and November and phase the Venara onboarding over two months; and agree the renewal terms for Brevanor T\u00eaxteis, 10.0% of managed services revenue, which renews in March 2027 while a competitor is courting its IT director."
    ],
    "rows": []
   },
   {
    "title": "2. WHAT HAPPENED YEAR TO DATE (BvA: revenue by cause and the EBITDA walk)",
    "paragraphs": [
     "Revenue against budget by cause: Traslovia Transportes cost EUR 34k; the three contracts won in March, May and July, against four budgeted, cost EUR 8k; the contracts live at the start of the year added EUR 1k (users, devices and price reviews on plan); SLA credits cost EUR 30k; bundled licences cost EUR 12k; annual licences added EUR 3k; licences resold as agent cost EUR 3k; hardware cost EUR 133k; projects cost EUR 240k.",
     "EBITDA is EUR 334k behind budget. Hardware revenue is EUR 133k lower and its cost EUR 91k lower, a net EUR 42k that includes the distributor rebate at tier 1 (1.5%) instead of the 2.5% budgeted. Projects are EUR 240k lower in revenue with subcontractors EUR 68k higher, almost all on J01. The service delivery payroll is EUR 82k under budget because the leavers were not replaced and the budgeted desk hires were not made (37 desk FTE at Aug-26 against 43 budgeted): that saving produced the SLA credits and two summer breaches at Pesqueras Morazal, which renews in December."
    ],
    "rows": []
   },
   {
    "title": "3. MANAGED SERVICES: CONTRACTS, RENEWALS AND RETENTION (Contracts, Contract_Register)",
    "paragraphs": [
     "The contract base bills EUR 237k a month at Aug-26 across 32 contracts, 3,951 users and 1,225 devices, EUR 59.98 a month per user with devices included. Net revenue retention over the last twelve months is 100.9% and gross retention 96.2%: price reviews of 2.6% at the anniversaries and user growth made up for Traslovia Transportes, which moved to a remote-only competitor at a lower price per user. Ferroval Automa\u00e7\u00e3o, Cl\u00ednica Dent\u00e1ria Rosmel and Mobili\u00e1rio Tarvela started in March, May and July and bill EUR 16k a month.",
     "Renewals are the exposure: EUR 1,304k of annual fees reach their 36-month renewal in the next twelve months. They include Pesqueras Morazal in December (renewal probability 88% in this case, after two SLA breaches and a request for a lower price) and Brevanor T\u00eaxteis in March 2027 (EUR 277k a year, 90%), where a regional competitor has approached the IT director while the J01 migration runs over. This case expects EUR 103k of those annual fees to be lost at renewal; net revenue retention is 102.8% at December 2027.",
     "Pipeline: the Venara hospital group (480 users and 140 devices, EUR 312k of first-year fees at full value) decides in October for a November start and is in this case at 55%; three smaller opportunities follow in the first half of 2027. New contracts pay an onboarding fee of EUR 45 per user, recognised over the 36-month term (EUR 16k deferred at Aug-26). The 6% sales commission on each new contract is capitalised with its social security and amortised over the same term (EUR 13k on the balance sheet)."
    ],
    "rows": []
   },
   {
    "title": "4. SERVICE DESK CAPACITY AND SLA PERFORMANCE (Service_Desk, People)",
    "paragraphs": [
     "Utilisation reached 98% in July against about 81% budgeted. Above 80% utilisation, SLA attainment falls: it was 86.4% in July against the 96% target, and SLA credits cost EUR 38k to Aug-26, 2.1% of managed service fees. At Aug-26 the desk has 37 FTE against about 44 needed to bring utilisation back to 80%.",
     "The plan adds 5 service desk hires in October and November and 5 more in 2027 (12 hires across the company). A service desk analyst costs about EUR 24k a year with social security, meal card and insurance; in this case SLA credits fall to EUR 4k in FY2027 at 81% utilisation. The pinch point is November 2026, when the Venara hospital group would start: its onboarding adds about 528 expected hours and utilisation reaches 95%. Phasing the onboarding over two months, or two contract engineers for the month, keeps the desk close to its SLA."
    ],
    "rows": []
   },
   {
    "title": "5. PROJECTS (Projects, Project_Register)",
    "paragraphs": [
     "J01, the ERP infrastructure and cloud migration for Brevanor T\u00eaxteis (fixed fee EUR 158k), needed a specialist data migration subcontractor. In June the estimate at completion rose from 2,050 to 3,500 hours, and the cumulative catch-up turned J01 revenue for the month into a reversal of EUR 30k (IFRS 15.88). At completion the project loses EUR 17k at standard cost; the loss still ahead is provided under IAS 37 (EUR 2,507 at Aug-26). This case completes it on the revised estimate in November.",
     "The J11 ERP hosting move for Talleres Bra\u00f1oso is complete, but the customer is withholding the final milestone (EUR 21,600) until the performance acceptance test is signed off; the rerun is booked for September. This case collects it in October in full.",
     "Project revenue was EUR 535k to Aug-26 against EUR 776k budgeted, and the utilisation of the project team averaged 61% of its productive hours. Signed backlog is EUR 237k at Aug-26, mostly J08 (the store network upgrade signed in August) and the J01 remainder. From October this case tops signed work up to EUR 90k a month on the FY2025 seasonal profile, against EUR 103k a month in FY2025. That assumption carries the FY2027 project margin (EUR 338k): each EUR 10k a month of project revenue is worth about EUR 106k a year of margin, because the project team is already on the payroll."
    ],
    "rows": []
   },
   {
    "title": "6. HARDWARE, LICENCES AND REBATES (Hardware, Licences, Rebates)",
    "paragraphs": [
     "Hardware: EUR 1,575k to Aug-26 against EUR 1,708k budgeted; 2025 was lifted by a desktop refresh cycle that has not repeated. The margin before rebates is 12.8% (13.3% budgeted). The distributor rebate is tiered on quarterly purchases and applies to the whole quarter: the first and second quarters reached only tier 1 (1.5%) against the 2.5% budgeted, and the third is on course for tier 1 with EUR 497k of purchases. The fourth quarter is forecast at EUR 584k, EUR 66k short of tier 2: bringing confirmed January orders into December would lift the whole quarter to 2.5% and add about EUR 7k of rebate.",
     "Licences: bundled per-user subscriptions and the annual security and backup subscriptions are sold as principal, because the company integrates, provisions and supports them; standard licences the manufacturer delivers directly are sold as agent, so EUR 438k billed to customers to Aug-26 produced EUR 62k of revenue. Annual subscriptions are billed a year ahead: EUR 149k of revenue sits in contract liabilities at Aug-26, matched by EUR 113k of prepaid vendor cost. January is the heavy month (EUR 244k billed in January 2026)."
    ],
    "rows": []
   },
   {
    "title": "7. MARGINS BY SERVICE LINE AND CONTRACT (Margins, Contract_Register)",
    "paragraphs": [
     "Gross margin by service line, FY2026: managed services 35%, hardware after rebates 14%, licence resale 41%, projects 25%. Managed services earn 61% of gross profit on 48% of revenue; hardware brings 33% of revenue but 17% of gross profit. In FY2027 the lines move to 35%, 14%, 40% and 31%.",
     "By contract, FY2026 contribution after the service desk, tooling, licences, colocation and vans runs from 21% (Col\u00e9gios Maravel) to 48% (Valcorra Advogados). Contribution follows price: the desk hours a user needs do not fall with the price per user, so the contracts priced lowest earn the least and are the first to reprice at renewal. Brevanor T\u00eaxteis is the largest contract at 10.0% of managed services revenue with a contribution of 37%."
    ],
    "rows": []
   },
   {
    "title": "8. CASH, TAX, THE LOAN AND THE 13 WEEKS (Cash_13W, VAT, Tax, Financing)",
    "paragraphs": [
     "The 13 weeks from 12 September: opening cash EUR 957k, receipts EUR 2,397k, payments EUR 2,523k, closing EUR 830k on 11 December. The low point is EUR 742k in the week ending 4 December, EUR 342k above the EUR 400k buffer, with the EUR 300k credit line undrawn. September pays two VAT returns on the 25th (June and July, EUR 87k) and the second IRC payment on account on the 30th (EUR 73k); November pays the Christmas allowance with the payroll (net pay EUR 196k against EUR 97k in October) and its social security falls on 21 December.",
     "Tax: the FY2025 IRC balance of EUR 106k was paid on 19 June under the extended Modelo 22 deadline. FY2026 IRC is EUR 129k plus EUR 10k of derrama (19%, 15% on the first EUR 50,000, Porto 1.5%), against payments on account of EUR 219k in this case; any overpayment comes back around September 2027. VAT is monthly, with June and July both paid in September. From 1 January 2027 PDF invoices need a qualified electronic signature and social security moves to the new payment window from the 1st to the 25th: both changes must be live in the billing and payroll systems before January.",
     "The bank loan is EUR 1,033k at Aug-26 and falls to EUR 500k by December 2027; net debt is 0.23x EBITDA at December, well inside 2.5x, so debt service cover is the covenant that binds. Dividends may go out only when both covenants are met at the December test: this case pays no dividend in 2027 because the December test fails."
    ],
    "rows": []
   },
   {
    "title": "9. SCENARIOS (Scenarios sheet; snapshot values from three full model runs)",
    "paragraphs": [
     "Base: FY2027 revenue EUR 8,204k (8.9% growth), EBITDA EUR 1,059k, cash EUR 1,204k at December 2027, debt service cover 1.09x at December 2026 with the December payment on account paid in full. Downside (hardware demand x0.85 with the margin at 11.5%, projects at EUR 65k a month, price reviews of 1.5% and 5% off at renewal, renewals at lower probabilities including a 50% chance of losing Brevanor T\u00eaxteis, the pipeline 2 months later, J01 20% over its remaining hours, customers 15 days slower, the dollar at 1.08; response: a quarter of the hiring plan and of replacements held back): revenue EUR 6,995k, EBITDA EUR 443k, lowest cash EUR 208k in Feb-27 (EUR 192k below the EUR 400k buffer), debt service cover 0.77x at December 2026 and 0.96x at December 2027. Upside: revenue EUR 8,915k, EBITDA EUR 1,478k, cash EUR 1,330k, a dividend of EUR 202k in 2027.",
     "The Downside breaks the debt service covenant at both December tests and its lowest cash is EUR 192k below the EUR 400k buffer, so the waiver conversation with the bank starts before the December test. Triggers, reviewed monthly: service desk utilisation above 90% for two months; SLA credits above 2% of fees; a renewal lost among the ten largest contracts; hardware purchases in a quarter below EUR 450k (the rebate falls to nil); project revenue below EUR 70k in a month outside August; headroom over the buffer below EUR 200k on the 13-week forecast."
    ],
    "rows": []
   },
   {
    "title": "10. RISK REGISTER (scored 1 to 5; score = likelihood x impact)",
    "paragraphs": [],
    "rows": [
     [
      "Covenant: debt service cover at the December test is 1.09x with the December payment on account paid in full and 1.25x if it is limited, against 1.20x; a breach lets the bank call the loan and blocks the 2027 dividend",
      4,
      4,
      16,
      "Election under CIRC art. 107 with the tax adviser; bank briefed before the test; waiver request drafted for the Downside; CEO and BriQs CFO"
     ],
     [
      "Renewal of Brevanor T\u00eaxteis in March 2027: 10.0% of managed services revenue, EUR 277k a year, approached by a competitor during the J01 overrun",
      3,
      5,
      15,
      "J01 closed on the revised estimate; executive sponsor meetings monthly; renewal proposal by November; CEO and account manager"
     ],
     [
      "Service desk capacity: utilisation 98% in July, SLA credits EUR 38k year to date; Pesqueras Morazal renews in December after two breaches",
      4,
      3,
      12,
      "October and November hires; Venara onboarding phased over two months; SLA recovery plan for Pesqueras Morazal; Service delivery director"
     ],
     [
      "Project delivery: J01 lost EUR 17k at standard cost; estimates at completion are reviewed monthly, not weekly",
      3,
      3,
      9,
      "Weekly estimate review on fixed-fee projects above EUR 50k; subcontractor caps in the statement of work; Project director"
     ],
     [
      "Project pipeline: this case needs EUR 90k a month of project revenue against EUR 67k a month so far this year",
      3,
      3,
      9,
      "Pipeline review every two weeks; presales capacity on the three largest renewals; Sales director"
     ],
     [
      "Hardware and rebates: demand below 2025 and the distributor rebate at tier 1 all year (EUR 66k short of tier 2 in the fourth quarter)",
      3,
      2,
      6,
      "Quarterly purchasing plan against the tiers; consolidated January orders; Procurement lead"
     ],
     [
      "Collections: Spanish customers pay at about 55 days and the J11 milestone is disputed",
      2,
      2,
      4,
      "Direct debit mandates on renewal; acceptance criteria signed before the final milestone; Finance lead"
     ],
     [
      "Key people: service desk attrition of 14% a year in a tight Porto market",
      4,
      3,
      12,
      "Retention review for engineers; certification path; salary benchmark before the January pay review; Directors"
     ],
     [
      "Regulation from January 2027: qualified electronic signature on PDF invoices and the new social security payment window",
      2,
      2,
      4,
      "System changes tested in November; Finance lead"
     ],
     [
      "USD tooling cost: platforms billed in dollars (a 10% stronger dollar costs about EUR 26k a year)",
      2,
      1,
      2,
      "Budget at a prudent rate; review the vendor contract currency at renewal; Finance lead"
     ]
    ],
    "columns": [
     "Risk",
     "Likelihood",
     "Impact",
     "Score",
     "Mitigation and owner"
    ]
   },
   {
    "title": "11. ACTIONS (owner, due date, status)",
    "paragraphs": [],
    "rows": [
     [
      "Elect to limit the 15 December IRC payment on account under CIRC art. 107 (EUR 73k), with the tax adviser confirming the FY2026 estimate",
      "Finance lead with the tax adviser",
      "2026-11-30",
      "Open",
      "Payment of 15 December limited; December covenant test met"
     ],
     [
      "Brief the bank on the December covenant test, with this forecast and the Downside waiver request ready",
      "CEO and BriQs CFO",
      "2026-10-31",
      "Open",
      "Meeting held; bank position in writing"
     ],
     [
      "Service desk hiring: three hires in October, two in November; the Venara onboarding phased over two months if the tender is won",
      "Service delivery director",
      "2026-10-15",
      "In progress",
      "Offers accepted; onboarding plan signed off"
     ],
     [
      "Brevanor T\u00eaxteis renewal plan: J01 close-out, service review and renewal proposal",
      "CEO and account manager",
      "2026-11-30",
      "Open",
      "Proposal presented; renewal signed by February"
     ],
     [
      "Pesqueras Morazal: SLA recovery report and renewal price position",
      "Account manager",
      "2026-10-31",
      "Open",
      "Recovery report sent; renewal signed before December"
     ],
     [
      "J01: weekly estimate at completion review and a cap on the data migration subcontractor",
      "Project director",
      "2026-10-15",
      "In progress",
      "Weekly review minuted; subcontractor hours capped"
     ],
     [
      "J11: acceptance test rerun and collection of the final milestone",
      "Project manager and Finance lead",
      "2026-10-31",
      "In progress",
      "Acceptance signed; final milestone received"
     ],
     [
      "Fourth-quarter hardware purchasing plan against the distributor tiers",
      "Procurement lead and Finance lead",
      "2026-10-31",
      "Open",
      "Plan agreed; tier position reviewed monthly"
     ],
     [
      "Qualified electronic signature on invoices and the social security payment window from January 2027",
      "Finance lead",
      "2026-11-30",
      "Open",
      "Test invoices signed; payroll calendar updated"
     ],
     [
      "Monthly contract margin review from the Contract_Register, with a repricing list for the 2027 renewals",
      "BriQs CFO",
      "2026-10-15",
      "Open",
      "Repricing list approved by the directors"
     ]
    ],
    "columns": [
     "Action",
     "Owner",
     "Due",
     "Status",
     "Measure of done"
    ]
   },
   {
    "title": "12. INFORMATION NEEDED BEFORE THE SEPTEMBER CLOSE",
    "paragraphs": [
     "The September billing, RMM counts of users and devices by contract, the PSA export (tickets and SLA attainment) and credit notes.",
     "Timesheets and subcontractor invoices by project, the J01 estimate at completion review and the J11 acceptance test outcome.",
     "Distributor and vendor statements for September: purchases, the third-quarter rebate tier and licence incentives.",
     "The September payroll journal, the status of the October hires and the Venara tender decision date.",
     "The tax adviser view on limiting the December payment on account, and the covenant definitions in the loan agreement.",
     "The renewal positions of Pesqueras Morazal and Brevanor T\u00eaxteis.",
     "Prepared by BriQs Group for the board of Quelvora Sistemas, Lda (fictional demonstration company). Model status at the time of preparation: OK."
    ],
    "rows": []
   }
  ]
 },
 "headline_series": {
  "T_rev": {
   "key": "T_rev",
   "label": "REVENUE",
   "basis": "",
   "section": "REVENUE (IFRS 15)",
   "format": "int",
   "kind": "calc",
   "bold": true,
   "values": [
    565487.86,
    596889.5867,
    653538.0567,
    633432.8067,
    632143.3767,
    602238.1,
    602404.58,
    496657.4933,
    677209.0095,
    720170.6033,
    682827.8793,
    669111.8286,
    643317.3306,
    660913.1196,
    696378.4564,
    674790.0495,
    681706.1412,
    719723.0808,
    663122.5151,
    563079.6702,
    729981.9191,
    762517.1185,
    715172.6931,
    693736.4013
   ],
   "fy2026": 7532111.1807,
   "fy2027": 8204438.4955,
   "total_rule": "sum"
  },
  "sl_ms": {
   "key": "sl_ms",
   "label": "Revenue: managed services",
   "basis": "",
   "section": "SERVICE LINE AND FUNCTIONAL VIEW (memo)",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    288374.83,
    289887.79,
    294708.93,
    294421.49,
    289342.7,
    291699.94,
    293395.62,
    297373.49,
    298832.2706,
    306059.8809,
    317110.5565,
    325722.922,
    332958.0099,
    338105.1818,
    338550.0176,
    342524.3198,
    343265.9364,
    344080.259,
    345149.2772,
    343608.2004,
    345818.7055,
    347036.1295,
    348083.5037,
    348972.2947
   ],
   "fy2026": 3586930.42,
   "fy2027": 4118151.8355,
   "total_rule": "sum"
  },
  "sl_lic": {
   "key": "sl_lic",
   "label": "Revenue: licence resale",
   "basis": "",
   "section": "SERVICE LINE AND FUNCTIONAL VIEW (memo)",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    40560.95,
    41360.3667,
    43158.9667,
    41960.0167,
    42151.5667,
    42684.55,
    41885.25,
    39512.2333,
    42854.947,
    43470.7224,
    44157.3228,
    45048.9066,
    41819.3208,
    42347.9377,
    44028.4387,
    42865.7297,
    43140.2048,
    43682.8218,
    42913.2379,
    40671.4699,
    44223.2137,
    44840.989,
    45529.1894,
    46424.1066
   ],
   "fy2026": 508805.7988,
   "fy2027": 522486.66,
   "total_rule": "sum"
  },
  "sl_hw": {
   "key": "sl_hw",
   "label": "Revenue: hardware",
   "basis": "",
   "section": "SERVICE LINE AND FUNCTIONAL VIEW (memo)",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    186000,
    197000,
    224000,
    201000,
    212000,
    238000,
    196000,
    121000,
    245440,
    266240,
    222560,
    203840,
    183040,
    191360,
    218400,
    197600,
    208000,
    232960,
    191360,
    124800,
    245440,
    266240,
    222560,
    203840
   ],
   "fy2026": 2513080,
   "fy2027": 2485600,
   "total_rule": "sum"
  },
  "sl_prj": {
   "key": "sl_prj",
   "label": "Revenue: projects",
   "basis": "",
   "section": "SERVICE LINE AND FUNCTIONAL VIEW (memo)",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    50552.08,
    68641.43,
    91670.16,
    96051.3,
    88649.11,
    29853.61,
    71123.71,
    38771.77,
    90081.7919,
    104400,
    99000,
    94500,
    85500,
    89100,
    95400,
    91800,
    87300,
    99000,
    83700,
    54000,
    94500,
    104400,
    99000,
    94500
   ],
   "fy2026": 923294.9619,
   "fy2027": 1078200,
   "total_rule": "sum"
  },
  "gp": {
   "key": "gp",
   "label": "GROSS PROFIT",
   "basis": "revenue - cost of revenue",
   "section": "COST OF REVENUE",
   "format": "int",
   "kind": "calc",
   "bold": true,
   "values": [
    141215.8111,
    154221.1149,
    185472.2808,
    185947.4321,
    173194.4143,
    113382.7683,
    167597.0772,
    139295.9882,
    195862.7896,
    204212.5922,
    192657.015,
    202914.7604,
    182945.9647,
    185867.6758,
    195942.7553,
    194494.6613,
    188522.9457,
    205579.7487,
    193296.3495,
    166104.8176,
    204885.4706,
    212850.5955,
    201719.2551,
    204500.1177
   ],
   "fy2026": 2055974.044,
   "fy2027": 2336710.3574,
   "total_rule": "sum"
  },
  "gpm": {
   "key": "gpm",
   "label": "Gross margin % of revenue",
   "basis": "",
   "section": "COST OF REVENUE",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    0.2497,
    0.2584,
    0.2838,
    0.2936,
    0.274,
    0.1883,
    0.2782,
    0.2805,
    0.2892,
    0.2836,
    0.2821,
    0.3033,
    0.2844,
    0.2812,
    0.2814,
    0.2882,
    0.2765,
    0.2856,
    0.2915,
    0.295,
    0.2807,
    0.2791,
    0.2821,
    0.2948
   ],
   "fy2026": 0.273,
   "fy2027": 0.2848,
   "total_rule": "ratio"
  },
  "ebitda": {
   "key": "ebitda",
   "label": "EBITDA",
   "basis": "",
   "section": "OPERATING EXPENSES",
   "format": "int",
   "kind": "calc",
   "bold": true,
   "values": [
    45992.7496,
    56946.4873,
    76787.6968,
    90078.0713,
    69717.8865,
    14666.2618,
    71880.7739,
    52553.2371,
    99203.2087,
    94200.7741,
    88323.3367,
    102871.1048,
    68305.4718,
    80414.2273,
    80675.4069,
    88817.3124,
    77606.4581,
    99710.3891,
    92455.8436,
    72696.5536,
    100575.3144,
    101051.5779,
    95393.1611,
    100919.5311
   ],
   "fy2026": 863221.5886,
   "fy2027": 1058621.2472,
   "total_rule": "sum"
  },
  "ebitdap": {
   "key": "ebitdap",
   "label": "EBITDA % of revenue",
   "basis": "",
   "section": "OPERATING EXPENSES",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    0.0813,
    0.0954,
    0.1175,
    0.1422,
    0.1103,
    0.0244,
    0.1193,
    0.1058,
    0.1465,
    0.1308,
    0.1293,
    0.1537,
    0.1062,
    0.1217,
    0.1158,
    0.1316,
    0.1138,
    0.1385,
    0.1394,
    0.1291,
    0.1378,
    0.1325,
    0.1334,
    0.1455
   ],
   "fy2026": 0.1146,
   "fy2027": 0.129,
   "total_rule": "ratio"
  },
  "np": {
   "key": "np",
   "label": "NET PROFIT",
   "basis": "",
   "section": "BELOW EBITDA",
   "format": "int",
   "kind": "calc",
   "bold": true,
   "values": [
    26689.6056,
    35012.9482,
    49600.8615,
    60020.4696,
    43848.3482,
    295.9929,
    45750.1155,
    30335.9634,
    67159.5586,
    63521.1127,
    58833.0916,
    70391.841,
    45003.4853,
    53185.5017,
    53445.8259,
    60021.0824,
    51016.0909,
    68858.5852,
    63038.1116,
    47180.0526,
    69751.1321,
    72597.366,
    68090.1862,
    72586.7635
   ],
   "fy2026": 551459.9088,
   "fy2027": 724774.1832,
   "total_rule": "sum"
  },
  "mrr": {
   "key": "mrr",
   "label": "Managed service fees (MRR)",
   "basis": "Contracts",
   "section": "GROWTH AND RECURRING REVENUE",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    222281.28,
    223268.81,
    229851.35,
    231117.86,
    227787.83,
    228319.33,
    235394.64,
    236994.81,
    237538.7029,
    237376.5695,
    252008.4211,
    251930.2371,
    256413.069,
    260935.5666,
    260253.7181,
    263462.6812,
    264109.049,
    264741.5994,
    265700.2716,
    265901.387,
    266521.3256,
    267612.6968,
    268586.5992,
    269292.494
   ],
   "fy2026": 2813869.8407,
   "fy2027": 3173530.4576,
   "total_rule": "sum"
  },
  "arr": {
   "key": "arr",
   "label": "Annualised fees (MRR x 12)",
   "basis": "Contracts",
   "section": "GROWTH AND RECURRING REVENUE",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    2667375.36,
    2679225.72,
    2758216.2,
    2773414.32,
    2733453.96,
    2739831.96,
    2824735.68,
    2843937.72,
    2850464.4349,
    2848518.8343,
    3024101.0533,
    3023162.8453,
    3076956.8281,
    3131226.799,
    3123044.617,
    3161552.1744,
    3169308.5883,
    3176899.193,
    3188403.2598,
    3190816.6437,
    3198255.9076,
    3211352.3619,
    3223039.191,
    3231509.9275
   ],
   "fy2026": 3023162.8453,
   "fy2027": 3231509.9275,
   "total_rule": "last"
  },
  "users": {
   "key": "users",
   "label": "Managed users",
   "basis": "Contracts",
   "section": "GROWTH AND RECURRING REVENUE",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    3781,
    3794,
    3882,
    3893,
    3815,
    3824,
    3938,
    3951,
    3959.919,
    3943.6114,
    4208.7595,
    4207.0633,
    4267.7778,
    4334.4589,
    4301.4472,
    4341.304,
    4346.611,
    4356.7388,
    4362.887,
    4344.3065,
    4354.4388,
    4361.4622,
    4365.5558,
    4375.7463
   ],
   "fy2026": 4207.0633,
   "fy2027": 4375.7463,
   "total_rule": "last"
  },
  "devices": {
   "key": "devs",
   "label": "Managed devices",
   "basis": "Contracts",
   "section": "GROWTH AND RECURRING REVENUE",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    1174,
    1174,
    1204,
    1206,
    1189,
    1190,
    1223,
    1225,
    1226.386,
    1220.5667,
    1296.429,
    1293.6026,
    1312.2906,
    1336.3824,
    1328.2698,
    1340.5007,
    1340.8446,
    1342.405,
    1342.552,
    1335.7496,
    1337.3043,
    1338.2528,
    1336.6816,
    1338.2374
   ],
   "fy2026": 1293.6026,
   "fy2027": 1338.2374,
   "total_rule": "last"
  },
  "contracts_billing": {
   "key": "n_live",
   "label": "Contracts billing",
   "basis": "Contracts",
   "section": "GROWTH AND RECURRING REVENUE",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    30,
    30,
    31,
    31,
    31,
    31,
    32,
    32,
    32,
    32,
    33,
    33,
    34,
    35,
    35,
    36,
    36,
    36,
    36,
    36,
    36,
    36,
    36,
    36
   ],
   "fy2026": 33,
   "fy2027": 36,
   "total_rule": "last"
  },
  "fees_per_user": {
   "key": "arpu",
   "label": "Fees per user a month (devices included)",
   "basis": "Contracts",
   "section": "GROWTH AND RECURRING REVENUE",
   "format": "eur2",
   "kind": "calc",
   "bold": false,
   "values": [
    58.789,
    58.8479,
    59.2095,
    59.3675,
    59.7085,
    59.7069,
    59.7752,
    59.9835,
    59.9857,
    60.1927,
    59.8771,
    59.8827,
    60.0812,
    60.2003,
    60.5038,
    60.6875,
    60.7621,
    60.766,
    60.9001,
    61.2069,
    61.2068,
    61.3585,
    61.524,
    61.5421
   ],
   "fy2026": 59.6105,
   "fy2027": 60.8949,
   "total_rule": "avg"
  },
  "net_revenue_retention": {
   "key": "nrr",
   "label": "Net revenue retention, trailing 12 months",
   "basis": "Contracts",
   "section": "GROWTH AND RECURRING REVENUE",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    1.0472,
    1.0478,
    1.0477,
    1.0481,
    1.0076,
    1.0078,
    1.0077,
    1.0092,
    1.0105,
    1.0051,
    1.0026,
    0.9998,
    0.9988,
    0.9968,
    0.9887,
    0.9856,
    1.0219,
    1.0219,
    1.0231,
    1.0168,
    1.0169,
    1.0219,
    1.0246,
    1.0277
   ],
   "fy2026": 0.9998,
   "fy2027": 1.0277,
   "total_rule": "last"
  },
  "gross_revenue_retention": {
   "key": "grr",
   "label": "Gross revenue retention, trailing 12 months",
   "basis": "Contracts",
   "section": "GROWTH AND RECURRING REVENUE",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    1,
    1,
    1,
    1,
    0.9608,
    0.9615,
    0.9616,
    0.9618,
    0.9625,
    0.9596,
    0.9588,
    0.9563,
    0.9558,
    0.9558,
    0.9515,
    0.9508,
    0.9866,
    0.9864,
    0.9864,
    0.985,
    0.985,
    0.988,
    0.9895,
    0.9915
   ],
   "fy2026": 0.9563,
   "fy2027": 0.9915,
   "total_rule": "last"
  },
  "fees_lost_at_renewal": {
   "key": "churn",
   "label": "Fees lost at renewal (a month)",
   "basis": "Contracts",
   "section": "GROWTH AND RECURRING REVENUE",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    0,
    0,
    0,
    0,
    8250,
    0,
    0,
    0,
    0,
    1361.6383,
    473.0812,
    739.8268,
    528.692,
    427.7753,
    2333.2052,
    665.3923,
    328.2123,
    0,
    274.5903,
    1418.5181,
    0,
    205.0341,
    372.9197,
    0
   ],
   "fy2026": 10824.5464,
   "fy2027": 6554.3392,
   "total_rule": "sum"
  },
  "recurring_revenue_share": {
   "key": "recur_sh",
   "label": "Recurring revenue share (managed services and annual licences)",
   "basis": "Revenue",
   "section": "GROWTH AND RECURRING REVENUE",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    0.5694,
    0.5422,
    0.5027,
    0.5183,
    0.5114,
    0.5409,
    0.5436,
    0.6675,
    0.4918,
    0.4725,
    0.5146,
    0.5382,
    0.5723,
    0.5649,
    0.5368,
    0.56,
    0.5554,
    0.5273,
    0.574,
    0.6733,
    0.5225,
    0.5018,
    0.5366,
    0.5546
   ],
   "fy2026": 0.5304,
   "fy2027": 0.5538,
   "total_rule": "ratio"
  },
  "tickets": {
   "key": "tick",
   "label": "Tickets",
   "basis": "Service_Desk",
   "section": "SERVICE DESK AND SLA",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    1903,
    1831,
    1874,
    1844,
    1788,
    1748,
    1792,
    1601,
    2021.3837,
    1957.0038,
    2047.7141,
    1867.6663,
    2136.4895,
    2088.6109,
    2032.4137,
    1989.6958,
    2012.4498,
    1975.7176,
    1957.6141,
    1805.4838,
    2220.7025,
    2162.2829,
    2122.5924,
    1941.395
   ],
   "fy2026": 22274.7678,
   "fy2027": 24445.448,
   "total_rule": "sum"
  },
  "service_desk_utilisation": {
   "key": "util",
   "label": "Service desk utilisation",
   "basis": "Service_Desk",
   "section": "SERVICE DESK AND SLA",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    0.8145,
    0.807,
    0.8835,
    0.8952,
    0.9078,
    0.8905,
    0.9846,
    0.957,
    0.9462,
    0.8468,
    0.9505,
    0.844,
    0.8513,
    0.8587,
    0.8026,
    0.8234,
    0.7925,
    0.7892,
    0.8221,
    0.8548,
    0.8257,
    0.7954,
    0.782,
    0.7832
   ],
   "fy2026": 0.8913,
   "fy2027": 0.8142,
   "total_rule": "ratio"
  },
  "sla_attainment": {
   "key": "att",
   "label": "SLA attainment",
   "basis": "Service_Desk",
   "section": "SERVICE DESK AND SLA",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    0.9734,
    0.9803,
    0.9318,
    0.9181,
    0.9122,
    0.9265,
    0.8639,
    0.884,
    0.89,
    0.9546,
    0.8872,
    0.9564,
    0.9517,
    0.9468,
    0.9833,
    0.9698,
    0.985,
    0.985,
    0.9707,
    0.9494,
    0.9683,
    0.985,
    0.985,
    0.985
   ],
   "fy2026": 0.9232,
   "fy2027": 0.9721,
   "total_rule": "avg"
  },
  "sla_credits": {
   "key": "credit",
   "label": "SLA credits",
   "basis": "Service_Desk",
   "section": "SERVICE DESK AND SLA",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    0,
    0,
    3235.73,
    4841.71,
    5441.04,
    3820.12,
    11314.01,
    9000.4,
    8319.2709,
    645.3668,
    9176.7481,
    456.6435,
    1068.3183,
    1719.1687,
    0,
    0,
    0,
    0,
    0,
    1408.7132,
    0,
    0,
    0,
    0
   ],
   "fy2026": 56251.0392,
   "fy2027": 4196.2001,
   "total_rule": "sum"
  },
  "service_desk_fte": {
   "key": "fte",
   "label": "Service desk FTE",
   "basis": "Service_Desk",
   "section": "SERVICE DESK AND SLA",
   "format": "num1",
   "kind": "calc",
   "bold": false,
   "values": [
    39,
    39,
    38,
    37,
    36,
    36,
    37,
    37,
    36.5683,
    39.1417,
    41.1167,
    41.0637,
    43.0412,
    43.0188,
    43.996,
    44.9848,
    44.9619,
    45.9506,
    45.9394,
    45.928,
    45.9282,
    45.9283,
    45.9283,
    45.9283
   ],
   "fy2026": 41.0637,
   "fy2027": 45.9283,
   "total_rule": "last"
  },
  "gross_margin_managed_services": {
   "key": "ms_gmp",
   "label": "Gross margin %: managed services",
   "basis": "Margins",
   "section": "MARGINS AND SERVICE LINES",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    0.3142,
    0.3215,
    0.336,
    0.3546,
    0.3481,
    0.3647,
    0.37,
    0.3998,
    0.3654,
    0.3528,
    0.3388,
    0.3561,
    0.3365,
    0.3459,
    0.3426,
    0.3514,
    0.3436,
    0.346,
    0.3633,
    0.3864,
    0.3466,
    0.3392,
    0.338,
    0.3544
   ],
   "fy2026": 0.3519,
   "fy2027": 0.3495,
   "total_rule": "ratio"
  },
  "gross_margin_hardware": {
   "key": "hw_gmp",
   "label": "Gross margin %: hardware (after rebates)",
   "basis": "Margins",
   "section": "MARGINS AND SERVICE LINES",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    0.1422,
    0.1422,
    0.1421,
    0.1397,
    0.1416,
    0.14,
    0.1399,
    0.137,
    0.144,
    0.1414,
    0.1401,
    0.1403,
    0.1404,
    0.142,
    0.1413,
    0.1407,
    0.1412,
    0.1419,
    0.1396,
    0.1379,
    0.1442,
    0.1414,
    0.1401,
    0.1403
   ],
   "fy2026": 0.141,
   "fy2027": 0.1411,
   "total_rule": "ratio"
  },
  "gross_margin_licence_resale": {
   "key": "lr_gmp",
   "label": "Gross margin %: licence resale",
   "basis": "Margins",
   "section": "MARGINS AND SERVICE LINES",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    0.5068,
    0.3877,
    0.4147,
    0.3942,
    0.3932,
    0.403,
    0.3876,
    0.3472,
    0.4055,
    0.4093,
    0.4162,
    0.4331,
    0.4985,
    0.375,
    0.401,
    0.3815,
    0.382,
    0.3928,
    0.3781,
    0.3404,
    0.4009,
    0.4044,
    0.4111,
    0.4279
   ],
   "fy2026": 0.4084,
   "fy2027": 0.3998,
   "total_rule": "ratio"
  },
  "gross_margin_projects": {
   "key": "pj_gmp",
   "label": "Gross margin %: projects",
   "basis": "Margins",
   "section": "MARGINS AND SERVICE LINES",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    0.0712,
    0.2472,
    0.4005,
    0.3844,
    0.292,
    -1.4579,
    0.2166,
    -0.2552,
    0.377,
    0.3907,
    0.3601,
    0.4106,
    0.2851,
    0.2904,
    0.3296,
    0.3265,
    0.2834,
    0.3667,
    0.2984,
    0.0419,
    0.3378,
    0.377,
    0.3453,
    0.3423
   ],
   "fy2026": 0.2505,
   "fy2027": 0.3133,
   "total_rule": "ratio"
  },
  "distributor_rebate_rate": {
   "key": "rb_rate",
   "label": "Distributor rebate, % of purchases",
   "basis": "Rebates",
   "section": "MARGINS AND SERVICE LINES",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015,
    0.015
   ],
   "fy2026": 0.015,
   "fy2027": 0.015,
   "total_rule": "ratio"
  },
  "project_team_utilisation": {
   "key": "pj_util",
   "label": "Project team utilisation",
   "basis": "Projects",
   "section": "MARGINS AND SERVICE LINES",
   "format": "pct",
   "kind": "calc",
   "bold": false,
   "values": [
    0.4556,
    0.5682,
    0.7306,
    0.7543,
    0.6599,
    0.6626,
    0.6546,
    0.4014,
    0.8327,
    0.942,
    0.8853,
    0.8785,
    0.6721,
    0.7168,
    0.768,
    0.7732,
    0.7106,
    0.8338,
    0.7482,
    0.5353,
    0.7868,
    0.8404,
    0.7882,
    0.7959
   ],
   "fy2026": 0.7021,
   "fy2027": 0.7474,
   "total_rule": "avg"
  },
  "project_backlog": {
   "key": "backlog",
   "label": "Signed project backlog",
   "basis": "Projects",
   "section": "MARGINS AND SERVICE LINES",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    722040.12,
    653398.69,
    561728.53,
    465677.23,
    377028.12,
    347174.51,
    276050.8,
    237279.03,
    147197.2381,
    98455.619,
    49714,
    17600,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0
   ],
   "fy2026": 17600,
   "fy2027": 0,
   "total_rule": "last"
  },
  "cash": {
   "key": "cash",
   "label": "Cash at bank",
   "basis": "CF",
   "section": "ASSETS",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    1081285.7015,
    1191256.1735,
    1285102.2266,
    1255629.5897,
    1151241.0654,
    880479.6874,
    719668.2707,
    842052.8828,
    805903.2175,
    747498.1932,
    689023.0115,
    704225.5232,
    774924.957,
    843337.6067,
    973624.4029,
    1013620.0447,
    1122811.4059,
    1067687.9955,
    997915.306,
    1190957.8757,
    1267478.3334,
    1207475.5981,
    1198311.3367,
    1204217.4696
   ],
   "fy2026": 704225.5232,
   "fy2027": 1204217.4696,
   "total_rule": "last"
  },
  "buffer": {
   "key": "floor",
   "label": "Minimum cash buffer (board policy)",
   "basis": "Assumptions",
   "section": "CASH, DEBT AND PEOPLE",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000,
    400000
   ],
   "fy2026": 400000,
   "fy2027": 400000,
   "total_rule": "last"
  },
  "bank_loan": {
   "key": "loan",
   "label": "Bank loan",
   "basis": "Financing",
   "section": "CASH, DEBT AND PEOPLE",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    1266666.67,
    1233333.34,
    1200000.01,
    1166666.68,
    1133333.35,
    1100000.02,
    1066666.69,
    1033333.36,
    1000000.03,
    966666.7,
    933333.37,
    900000.04,
    866666.71,
    833333.38,
    800000.05,
    766666.72,
    733333.39,
    700000.06,
    666666.73,
    633333.4,
    600000.07,
    566666.74,
    533333.41,
    500000.08
   ],
   "fy2026": 900000.04,
   "fy2027": 500000.08,
   "total_rule": "last"
  },
  "net_debt_to_ebitda": {
   "key": "nd_eb",
   "label": "Net debt / EBITDA, last twelve months",
   "basis": "Financing",
   "section": "CASH, DEBT AND PEOPLE",
   "format": "x",
   "kind": "calc",
   "bold": false,
   "values": [
    0.1418,
    0.033,
    -0.0681,
    -0.0722,
    -0.0149,
    0.2019,
    0.3313,
    0.1871,
    0.1964,
    0.2322,
    0.2718,
    0.2268,
    0.1036,
    -0.011,
    -0.1902,
    -0.2709,
    -0.4236,
    -0.366,
    -0.3231,
    -0.5335,
    -0.6377,
    -0.6083,
    -0.627,
    -0.6652
   ],
   "fy2026": 0.2268,
   "fy2027": -0.6652,
   "total_rule": "last"
  },
  "debt_service_cover": {
   "key": "dscr",
   "label": "Debt service cover, last twelve months",
   "basis": "Financing",
   "section": "CASH, DEBT AND PEOPLE",
   "format": "x",
   "kind": "calc",
   "bold": false,
   "values": [
    2.3887,
    2.3276,
    2.2567,
    2.2245,
    2.2213,
    1.7387,
    1.5985,
    1.5492,
    1.4238,
    1.3224,
    1.2209,
    1.0883,
    1.1265,
    1.1818,
    1.2133,
    1.209,
    1.2283,
    1.6583,
    1.7834,
    1.8331,
    2.0941,
    2.1242,
    2.154,
    2.2311
   ],
   "fy2026": 1.0883,
   "fy2027": 2.2311,
   "total_rule": "last"
  },
  "debtor_days": {
   "key": "dso",
   "label": "Debtor days",
   "basis": "Receivables",
   "section": "CASH, DEBT AND PEOPLE",
   "format": "num1",
   "kind": "calc",
   "bold": false,
   "values": [
    40.8929,
    36.4222,
    37.7171,
    41.7719,
    39.2766,
    40.1042,
    40.964,
    37.2791,
    44.5695,
    45.328,
    42.3074,
    39.6909,
    43.6909,
    38.4531,
    36.9076,
    39.5207,
    40.2427,
    41.4961,
    40.0696,
    36.36,
    43.5442,
    45.3329,
    39.7976,
    39.8644
   ],
   "fy2026": 39.6909,
   "fy2027": 39.8644,
   "total_rule": "last"
  },
  "free_cash_flow": {
   "key": "fcf",
   "label": "Free cash flow (before financing)",
   "basis": "CF",
   "section": "CASH, DEBT AND PEOPLE",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    164619.0315,
    143303.802,
    127179.3831,
    3860.6931,
    188144.8056,
    -136628.0479,
    -127478.0867,
    155717.9421,
    -2816.3354,
    -25071.6943,
    -25141.8517,
    48535.8417,
    104032.7639,
    101745.9797,
    163620.1262,
    73328.9718,
    142524.6912,
    -21790.0804,
    -36439.3595,
    226375.8997,
    109853.7878,
    -26669.4053,
    24169.0685,
    39239.463
   ],
   "fy2026": 514225.4832,
   "fy2027": 899991.9065,
   "total_rule": "sum"
  },
  "headcount": {
   "key": "hc",
   "label": "TOTAL HEADCOUNT",
   "basis": "",
   "section": "HEADCOUNT BY BAND (A: payroll; F: prior + planned hires x scenario factor - leavers + leavers replaced two months later)",
   "format": "num1",
   "kind": "calc",
   "bold": true,
   "values": [
    68,
    69,
    69,
    68,
    67,
    67,
    68,
    68,
    67.3042,
    69.6159,
    71.5958,
    71.5452,
    75.5227,
    75.4794,
    76.436,
    77.4253,
    77.4026,
    78.3913,
    78.38,
    78.3686,
    78.3689,
    78.369,
    78.369,
    78.369
   ],
   "fy2026": 71.5452,
   "fy2027": 78.369,
   "total_rule": "last"
  },
  "revenue_per_fte": {
   "key": "rev_fte",
   "label": "Revenue per employee, annualised",
   "basis": "",
   "section": "CASH, DEBT AND PEOPLE",
   "format": "int",
   "kind": "calc",
   "bold": false,
   "values": [
    99791.9753,
    103806.8846,
    113658.7925,
    111782.26,
    113219.7093,
    107863.5403,
    106306.6906,
    87645.44,
    120743.0166,
    124139.0517,
    114447.0783,
    112227.555,
    102218.3876,
    105074.4857,
    109327.3462,
    104584.4563,
    105687.3807,
    110173.947,
    101524.2274,
    86220.1864,
    111776.3046,
    116757.9663,
    109508.5108,
    106226.1498
   ],
   "fy2026": 112227.555,
   "fy2027": 106226.1498,
   "total_rule": "last"
  }
 }
}