A structured analytical report
A report is a scheduled or static analysis artefact: a fixed view of data for a defined period, produced on a cadence and sent to the people who needNeedUserA user need, pain, desire, or constraintView reference → it. Its purpose is to answer a settled question well, repeatedly.
Reporting predates dashboardsDashboardData & AnalyticsAn analytics dashboardView reference → by decades, rooted in the periodic management report assembled by hand for a board or a department. The defining trait carried through: a report is a snapshot. Improvado frames the static report as the one that answers "What was our performance last quarter?", showing historical data fixed at the moment of generation.
The sharpest distinction the field drew is push versus pull. As FineReport puts it, reporting follows a push model: it is generated on a schedule and delivered to expected recipients. Analytics follows a pull model, where an analyst goes and fetches what they need to answer a fresh question. A report pushes a known answer; a dashboard waits to be pulled.
As self-serve BI spread, the open question became how much to curate. A curated report is authored, with a narrative and a point of view; a self-serve environment hands people the tools to build their own. Most mature teams run both, and the received guidance is to reach for a report when you need a historical snapshot for stakeholdersStakeholderTeam & OrganisationA person with influence over the productView reference → or compliance, and a dashboard when you need live monitoring.
Rasiel's account of McKinsey's reporting practice captures a similar principle: the effective report leads with the conclusion and organises supporting evidenceEvidenceValidationData supporting or refuting a hypothesisView reference → behind it, a structure that makes a curated report more useful to a time-pressed stakeholder than a table of raw numbers.
A subscriptionSubscriptionSales & RevenueA recurring subscriptionView reference → business sends a weekly revenue report every Monday at 7am: new MRR, churned MRR, net movement, plus a short written read on the largest swings. It goes to twelve people across finance and leadership. The report is static by design; it freezes Sunday-night numbers so two people quoting "last week" cannot disagree.
Six months in, open rates show four of the twelve never open it. Rather than keep pushing, the team interviews them. Those four wanted to slice revenue by plan tier on demand, a pull need a static report cannot serve. They move to a self-serve dashboard; the remaining eight keep the curated Monday narrative they actually read. The report gets shorter and more-read, and the self-serve users stop asking the analyst for one-off cuts.
Knaflic's argument in Storytelling with Data runs in the same direction: the choices a report author makes — what to include, what to cut, which comparison to draw — are what make data legible to a specific audience; a report that foregrounds everything foregrounds nothing.
In the Unified Product Graph, a report sits in the data and analytics region as a consumable analysis artefact. A DashboardcontainsReporthierarchy edge captures the case where a curated report is embedded inside a monitoring surface, and dashboard_contains_reportReportdistributed toTeamcross-domain records who receives it. Modelling distribution as an explicit edge is what makes the report-nobody-reads problem queryable: a report connected to a team but to no metric, or pushed to recipients who never engage, is visible as a structural fact rather than a hunch.report_distributed_to_team
Worked example: Trellis
The week-1 activation report reads progress against the 28-to-40-percent goal, counting how many workspaces reached their first approved agent change within their first seven days. It pulls from the activation dashboardDashboardData & AnalyticsAn analytics dashboardView reference → and the glossary termGlossary TermData & AnalyticsA defined term for shared understandingView reference → definition of activated workspace, so every stakeholderStakeholderTeam & OrganisationA person with influence over the productView reference → from Nora to Marcus is looking at the same number computed the same way.
Type-specific fields on BaseNode
report_typestringClassification of the report (e.g. "weekly metrics", "ad hoc")
schedulestringHow often the report is generated
toolstringTool used to generate the report
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
4 phases, initial: draft · template: PUBLISHING
2 edge types connected to this entity.
dashboard_contains_reportreport_distributed_to_team1 framework use this entity type.