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. The failure mode is just as predictable: the report that lands every Monday and that nobody opens.
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.
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.
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
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.