Assembled 2026-07-20 19:14 by orchestrator.py.
DRAFT: PENDING HUMAN SIGN-OFF
This pack was assembled automatically but is not approved for distribution. No step in this pipeline sends this document anywhere. Review this pack and
output/qa_report.mdin full, resolve anything flagged, and sign off below before this leaves your hands.
Narrative commentary: included below from the most recent successful generation, CARRIED OVER rather than regenerated: no live model credentials were configured for this run (see output/pipeline_log.md). The QA report still checks its figures against this run's reports. Point agents/narrative_agent.py at a Claude subscription, an API key, or an organization's internal model gateway and re-run it for a freshly generated version.
Generated by agents/variance_agent.py from data/eventco_monthly_cleaned.csv (the Data Ingestion Agent's output) and the internal business notes log data/business_notes.csv. This agent never reads data/ground_truth.md.
Variance = actual − budget, computed for every line item, BU and month (28 BU/line series across 30 months; full grain in output/variance_table.csv). Direction is F (favorable) or U (unfavorable): revenue above budget is favorable, cost above budget is unfavorable.
Materiality:
Root-cause discipline: this agent never invents a cause. Every material row carries exactly one of three explanation types, and the type is always visible:
data/analyst_commentary.csv after investigating with the business. Labeled as manual input so it can never be mistaken for machine-found evidence.Same magnitude rule as the ingestion agent (actual >4x or <0.25x budget is not a plausible business event). These rows are withheld from variance analysis and materiality testing entirely, pending correction at source. Explaining them as business variances would be inventing a story about a typo.
| Business Unit | Line item | Month | Actual | Budget |
|---|---|---|---|---|
| Brand Events | Revenue | 2025-11 | EUR52,243,584 | EUR5,238,445 |
Sorted by absolute EUR impact. Period spans of more than one month are sustained episodes; Actual/Budget/Variance are cumulative over the period. Evidence cites note IDs from data/business_notes.csv.
Corroborated by the business notes log: N11 (2025-04-14, Brand Events, Project Director): "Falcon product-launch event (Riyadh): client requested a major on-site scope expansion during build week. Overtime crews, additional staging and expedited freight all booked at premium rates. Expect a production cost overrun through the end of Q2 while the change-order negotiation with the client is still open." / N13 (2025-06-30, Brand Events, BU Controller): "Q2 close: Falcon launch cost overrun confirmed at roughly EUR2.0m above plan across April-June, concentrated in external production costs. Change order signed for partial recovery only; margin impact flagged to group controlling."
Evidence: N11, N13
Analyst input (FP&A Analyst, 2026-05-12): "An unplanned client project was won in late March and delivered inside April; external production was booked at short-notice premium rates. Together with the matching revenue line the net margin impact is slightly negative. Change-order discipline flagged to the project director." Written manually after follow-up; not derived from the business notes log.
Analyst input (FP&A Analyst, 2026-05-12): "Unbudgeted revenue from the same late-won April project; see the matching COGS variance. Recognized on delivery." Written manually after follow-up; not derived from the business notes log.
Analyst input (FP&A Analyst, 2024-12-10): "November events were delivered with in-house crew and staging stock instead of the subcontracting assumed in budget; Q4 freight was also renegotiated. Genuine savings, not a timing shift." Written manually after follow-up; not derived from the business notes log.
Analyst input (FP&A Analyst, 2025-08-11): "A client brought part of its September roadshow forward into July. Timing between months rather than new business; the September shortfall stayed within tolerance." Written manually after follow-up; not derived from the business notes log.
Analyst input (FP&A Analyst, 2025-02-10): "Two platform go-lives slipped from January into February on client-side content delays. Revenue is recognized on delivery, so January carries the gap; both projects were invoiced in February." Written manually after follow-up; not derived from the business notes log.
Analyst input (FP&A Analyst, 2024-11-08): "A brand activation sold for early 2025 was pulled into October at the client's request. The matching cost variance appears on the COGS line the same month." Written manually after follow-up; not derived from the business notes log.
Corroborated by the business notes log: N08 (2025-09-26, Digital/Influence, Account Manager): "NovaTech (US client) roadshow is invoiced in USD. The euro strengthened sharply against the dollar this month, so reported revenue on the contract translates materially lower in EUR. No change in delivered scope or client commitment; delivery costs are EUR-denominated and unaffected."
Evidence: N08
Analyst input (FP&A Analyst, 2025-02-10): "External development spend paused over the year-end delivery freeze and resumed in February. This recurs every holiday season; budget phasing to be corrected in the next cycle." Written manually after follow-up; not derived from the business notes log.
Analyst input (FP&A Analyst, 2025-09-09): "One retainer client commissioned an out-of-cycle campaign microsite in an otherwise quiet August." Written manually after follow-up; not derived from the business notes log.
Analyst input (FP&A Analyst, 2024-11-08): "Production costs of the pulled-forward October activation; see the matching revenue variance." Written manually after follow-up; not derived from the business notes log.
Analyst input (FP&A Analyst, 2024-11-08): "Two institutional clients pushed their October milestone invoicing into November after a budget-cycle approval delay on their side. Timing only." Written manually after follow-up; not derived from the business notes log.
Analyst input (FP&A Analyst, 2024-08-09): "Contractor spend deferred during the summer staffing gap on the delivery bench; caught up from September." Written manually after follow-up; not derived from the business notes log.
Analyst input (FP&A Analyst, 2025-07-10): "June delivery mix skewed toward license resale rather than custom build, which carries lower external cost." Written manually after follow-up; not derived from the business notes log.
Corroborated by the business notes log: N12 (2025-06-25, Corporate Events, Practice Lead): "Media buying and content creation move in-house from 1 July; both external agency retainers terminated end of June. Marketing spend expected to run 20-30% under budget for the rest of the year." / N16 (2025-09-15, Corporate Events, BU Controller): "In-housing of media buying is tracking ahead of plan - marketing spend well under budget again this month, and the underspend should persist through year-end."
Evidence: N12, N16
Analyst input (FP&A Analyst, 2024-07-09): "The June campaign reused spring creative assets instead of commissioning a new shoot." Written manually after follow-up; not derived from the business notes log.
No clear driver identified: no corroborating note found in the business log for this BU, line item and period, and the analyst has not yet returned commentary from follow-up. The variance is numerically material but unexplained. Recommend follow-up with the BU controller rather than attributing a cause.
No clear driver identified: no corroborating note found in the business log for this BU, line item and period, and the analyst has not yet returned commentary from follow-up. The variance is numerically material but unexplained. Recommend follow-up with the BU controller rather than attributing a cause.
Analyst input (FP&A Analyst, 2025-04-10): "Print and media rates increased at the main supplier from March; a rate-card renegotiation is underway." Written manually after follow-up; not derived from the business notes log.
Corroborated by the business notes log: N06 (2024-11-08, Government & Institutions, AV & Systems Manager): "On-site registration and AV control systems failed during a ministry summit engagement on 4 November; emergency replacement hardware and expedited vendor licenses procured outside the normal purchasing cycle. One-off cost; insurance claim filed with the provider."
Evidence: N06
All other BU/line/month combinations are within materiality tolerance and are not individually commented; the full variance grain is in output/variance_table.csv.
Generated by agents/forecast_agent.py from output/variance_table.csv (the Variance & Root-Cause Agent's output: cleaned actuals/budgets plus materiality flags and evidence). This agent never reads data/ground_truth.md. Last closed month: June 2026.
Forecast = seasonal base × median year-over-year growth, per BU and line item:
Normalization rules. A forecast is only as good as the history it extrapolates:
34 month-values normalized, 0 episode month-values deliberately kept.
one-off material variance, non-recurring by nature, must not be extrapolated
part of episode 2025-04..2025-06, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N11, N13
part of episode 2025-04..2025-06, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N11, N13
part of episode 2025-04..2025-06, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N11, N13
one-off material variance, non-recurring by nature, must not be extrapolated
one-off material variance, non-recurring by nature, must not be extrapolated
suspected data entry error (>4x/<0.25x budget), still uncorrected in the cleaned file
one-off material variance, non-recurring by nature, must not be extrapolated
one-off material variance, non-recurring by nature, must not be extrapolated
one-off material variance, non-recurring by nature, must not be extrapolated
one-off material variance, non-recurring by nature, must not be extrapolated
one-off material variance, non-recurring by nature, must not be extrapolated
part of episode 2025-04..2026-02, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N12, N16
part of episode 2025-04..2026-02, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N12, N16
part of episode 2025-04..2026-02, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N12, N16
part of episode 2025-04..2026-02, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N12, N16
part of episode 2025-04..2026-02, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N12, N16
part of episode 2025-04..2026-02, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N12, N16
part of episode 2025-04..2026-02, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N12, N16
part of episode 2025-04..2026-02, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N12, N16
part of episode 2025-04..2026-02, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N12, N16
part of episode 2025-04..2026-02, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N12, N16
part of episode 2025-04..2026-02, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
Evidence: N12, N16
one-off material variance, non-recurring by nature, must not be extrapolated
one-off material variance, non-recurring by nature, must not be extrapolated
part of episode 2024-12..2025-01, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
part of episode 2024-12..2025-01, concluded before the forecast cutoff. Its effect is over and must not be extrapolated
one-off material variance, non-recurring by nature, must not be extrapolated
one-off material variance, non-recurring by nature, must not be extrapolated
one-off material variance, non-recurring by nature, must not be extrapolated
one-off material variance, non-recurring by nature, must not be extrapolated
one-off material variance, non-recurring by nature, must not be extrapolated
Evidence: N08
one-off material variance, non-recurring by nature, must not be extrapolated
Evidence: N06
one-off material variance, non-recurring by nature, must not be extrapolated
Prior year (PY) is the normalized actual of the same month last year (the forecast base). Growth is the median YoY factor applied.
| Business Unit | Line item | Growth | Jul-26 | Aug-26 | Sep-26 | 3-mo total | PY 3-mo | vs PY |
|---|---|---|---|---|---|---|---|---|
| Brand Events | COGS | 1.05x | EUR1,989,496 | EUR1,282,924 | EUR2,146,572 | EUR5,418,993 | EUR5,176,626 | +4.7% |
| Brand Events | Opex - Facilities | 1.00x | EUR8,333 | EUR8,903 | EUR8,047 | EUR25,283 | EUR25,291 | -0.0% |
| Brand Events | Opex - IT | 0.89x | EUR2,460 | EUR3,212 | EUR2,682 | EUR8,354 | EUR9,336 | -10.5% |
| Brand Events | Opex - Marketing | 0.99x | EUR1,821 | EUR1,893 | EUR1,796 | EUR5,510 | EUR5,553 | -0.8% |
| Brand Events | Opex - Travel | 1.02x | EUR8,841 | EUR9,260 | EUR10,319 | EUR28,421 | EUR27,855 | +2.0% |
| Brand Events | Payroll | 1.03x | EUR281,389 | EUR279,935 | EUR274,229 | EUR835,553 | EUR814,591 | +2.6% |
| Brand Events | Revenue | 1.06x | EUR3,562,275 | EUR2,512,434 | EUR4,119,513 | EUR10,194,222 | EUR9,606,360 | +6.1% |
| Corporate Events | COGS | 1.04x | EUR536,089 | EUR421,627 | EUR648,944 | EUR1,606,659 | EUR1,542,181 | +4.2% |
| Corporate Events | Opex - Facilities | 1.02x | EUR4,168 | EUR4,348 | EUR4,198 | EUR12,714 | EUR12,504 | +1.7% |
| Corporate Events | Opex - IT | 1.00x | EUR2,641 | EUR2,256 | EUR2,635 | EUR7,531 | EUR7,522 | +0.1% |
| Corporate Events | Opex - Marketing | 1.02x | EUR40,869 | EUR37,660 | EUR42,153 | EUR120,682 | EUR118,599 | +1.8% |
| Corporate Events | Opex - Travel | 1.01x | EUR6,135 | EUR5,014 | EUR6,450 | EUR17,600 | EUR17,438 | +0.9% |
| Corporate Events | Payroll | 1.02x | EUR112,806 | EUR105,970 | EUR109,538 | EUR328,314 | EUR321,642 | +2.1% |
| Corporate Events | Revenue | 1.05x | EUR1,526,356 | EUR1,141,635 | EUR1,809,461 | EUR4,477,452 | EUR4,259,601 | +5.1% |
| Digital/Influence | COGS | 1.01x | EUR552,934 | EUR443,489 | EUR647,944 | EUR1,644,368 | EUR1,624,371 | +1.2% |
| Digital/Influence | Opex - Facilities | 1.00x | EUR6,196 | EUR5,985 | EUR6,127 | EUR18,307 | EUR18,289 | +0.1% |
| Digital/Influence | Opex - IT | 0.97x | EUR12,557 | EUR10,842 | EUR12,774 | EUR36,172 | EUR37,191 | -2.7% |
| Digital/Influence | Opex - Marketing | 1.01x | EUR4,999 | EUR3,978 | EUR5,412 | EUR14,388 | EUR14,273 | +0.8% |
| Digital/Influence | Opex - Travel | 0.95x | EUR3,871 | EUR3,093 | EUR3,458 | EUR10,422 | EUR10,966 | -5.0% |
| Digital/Influence | Payroll | 1.04x | EUR263,894 | EUR259,255 | EUR261,768 | EUR784,916 | EUR756,759 | +3.7% |
| Digital/Influence | Revenue | 1.05x | EUR1,983,926 | EUR1,404,061 | EUR2,230,375 | EUR5,618,362 | EUR5,372,867 | +4.6% |
| Government & Institutions | COGS | 1.10x | EUR81,693 | EUR61,333 | EUR106,708 | EUR249,734 | EUR226,577 | +10.2% |
| Government & Institutions | Opex - Facilities | 1.02x | EUR9,569 | EUR9,846 | EUR9,077 | EUR28,492 | EUR28,008 | +1.7% |
| Government & Institutions | Opex - IT | 1.06x | EUR17,147 | EUR14,670 | EUR16,636 | EUR48,452 | EUR45,877 | +5.6% |
| Government & Institutions | Opex - Marketing | 0.94x | EUR503 | EUR389 | EUR461 | EUR1,353 | EUR1,446 | -6.4% |
| Government & Institutions | Opex - Travel | 1.02x | EUR1,521 | EUR1,354 | EUR1,706 | EUR4,581 | EUR4,504 | +1.7% |
| Government & Institutions | Payroll | 1.03x | EUR178,230 | EUR170,120 | EUR177,750 | EUR526,100 | EUR510,433 | +3.1% |
| Government & Institutions | Revenue | 1.06x | EUR762,524 | EUR584,105 | EUR976,963 | EUR2,323,592 | EUR2,183,850 | +6.4% |
| Jul-26 | Aug-26 | Sep-26 | 3-mo total | |
|---|---|---|---|---|
| Revenue | EUR7,835,082 | EUR5,642,235 | EUR9,136,311 | EUR22,613,628 |
| Total costs | EUR4,128,163 | EUR3,147,354 | EUR4,507,382 | EUR11,782,899 |
| Net result | EUR3,706,919 | EUR2,494,882 | EUR4,628,929 | EUR10,830,729 |
Margin: 47.9% of revenue over the horizon.
No sustained programme was still active at the cutoff, so no episode effect is carried forward in this run. Had one been active (see the adjustment rules above), its months would appear as KEPT in the audit trail and flow into the base.
One page per business unit, for that BU's manager: FY2025 bridge, payroll and revenue driver splits, material variances with grounded explanations, follow-ups, and the Q3 2026 outlook. Each exists as Markdown and as a print-ready PDF:
output/bu_reports/brand_events.md / output/bu_reports/brand_events.pdfoutput/bu_reports/corporate_events.md / output/bu_reports/corporate_events.pdfoutput/bu_reports/digital_influence.md / output/bu_reports/digital_influence.pdfoutput/bu_reports/government_institutions.md / output/bu_reports/government_institutions.pdfThree stories dominate the variances over the 30 months under review: a EUR2.08 million cost overrun on a single client project, an unfavorable currency swing on an international contract, and a cost-savings programme that ran ahead of plan. Of the twenty variances large enough to warrant comment, four are corroborated by documented business notes, fourteen carry the FP&A analyst's own commentary after follow-up, and two remain open. The rolling forecast points to continued top-line growth into the third quarter of 2026, with the group margin holding at 47.9% over the forecast period.
Brand Events COGS, April to June 2025: EUR2.08 million over budget (+26.6%). The largest variance in the period, tied to the Falcon product-launch event in Riyadh. The client requested a major on-site scope expansion during the build week, and the resulting overtime crews, additional staging and expedited freight were all booked at premium rates. A change order was signed with the client, but it recovered only part of the overrun, and the margin impact has been flagged to group controlling.
Digital/Influence revenue, September 2025: roughly EUR197,000 under budget (-9.3%). This is a currency effect, not a shortfall in delivery. The NovaTech roadshow contract is invoiced in USD, and the euro strengthened sharply against the dollar during the month, translating the same contracted revenue into fewer euros. Delivered scope and client commitment were unchanged, and the associated delivery costs are euro-denominated and unaffected.
Corporate Events opex, April 2025 to February 2026: EUR81,464 under budget (-16.4%), favorable. Media buying and content creation moved in-house from July 2025, ending two external agency retainers, and the business unit controller confirmed in September that the savings were tracking ahead of plan. One caveat on the dates: the reported window is the full run of consecutive under-budget months grouped by the episode test, and it starts three months before the programme did. This is the only favorable variance in the period with a documented cause in the notes log.
Government & Institutions IT opex, November 2024: EUR24,116 over budget (+158.1%). The on-site registration and AV control systems failed during a ministry summit engagement, requiring expedited replacement hardware and vendor licenses outside the normal purchasing cycle. A one-off cost with an insurance claim filed against it, not the start of a trend.
Fourteen further material variances had no corroborating note in the business log, so they went to the FP&A analyst as follow-up items. The explanations below were entered manually by the analyst after investigating with the business units, and the variance report labels each one as analyst input rather than documented evidence. The largest:
Brand Events, April 2026. COGS ran roughly EUR407,000 over budget (+15.7%) while revenue ran roughly EUR389,000 above budget (+8.3%). Per the analyst's review, both trace to the same event: a client project won in late March and delivered inside April, with external production booked at short-notice premium rates. The net margin impact is slightly negative, and change-order discipline has been flagged to the project director.
Digital/Influence revenue, January 2025: roughly EUR225,000 under budget (-14.8%). The analyst attributes this to two platform go-lives slipping into February on client-side content delays; revenue is recognized on delivery, and both projects were invoiced in February.
Corporate Events, October 2024. Revenue came in roughly EUR216,000 above budget (+10.5%) with costs roughly EUR126,000 over (+17.4%): a brand activation sold for early 2025 was pulled into October at the client's request, carrying its production costs with it.
The remaining analyst-explained items are mostly timing shifts between months and delivery-mix effects, each documented row by row in the variance report.
Two material variances have no documented driver and no analyst input yet: Corporate Events COGS in December 2025 (roughly EUR71,000 over budget, +10.3%) and Digital/Influence COGS in March 2025 (EUR66,500 over budget, +11.3%). Both remain unexplained and stay on the follow-up list with the relevant BU controllers rather than being assigned a cause here.
Separately, a data entry issue was identified in Brand Events' November 2025 revenue figure and has been excluded from this analysis pending correction at source.
For July to September 2026, the group is forecast to generate roughly EUR22.6 million in revenue against roughly EUR11.78 million in costs, for a net result of about EUR10.83 million, a 47.9% margin. Revenue growth versus the same quarter last year varies by business unit: Government & Institutions +6.4%, Brand Events +6.1%, Corporate Events +5.1%, and Digital/Influence +4.6%.
The forecast is built from each business unit's own results in the same quarter last year, adjusted for its typical year-over-year growth rate, rather than from budget. One-off events, including the Falcon cost overrun and the Government & Institutions IT incident above, are deliberately excluded from that base so they are not projected forward as if they were normal, recurring activity. The Corporate Events savings programme is treated the same way: it had already concluded before the forecast cutoff of June 2026, the last closed month, so its effect is not carried into the outlook.
No cost-saving or overrun programme was still running at the June 2026 cutoff, so this quarter's outlook reflects normal seasonal business growth with no special adjustment carried forward. The two still-open variances above are the main follow-up going into the next close.
Generated by agents/qa_agent.py. This agent never reads data/ground_truth.md. Every check below cross-references the pipeline's own outputs against each other, the same way a reviewer would on a real, unseen monthly close with no answer key.
8 passed, 0 failed, 0 skipped.
Human sign-off required. This report, and the assembled pack it accompanies, are drafts. Nothing in this pipeline is sent to anyone automatically. A human reviewer must read this report and the pack, and explicitly approve before either is distributed.
Confirms the project's core control principle: only the Narrative Agent may call an external AI provider, and only with already-aggregated summary data, never the raw dataset, never client-identifying transaction detail.
This pack is not final until a human reviewer completes the line below.