Curriculum / Application Developer & Ontology Engineering
Embed analytics: Quiver dashboards in the app
Introduction
Scenario: Operators in the supply-chain Command Center can triage disruptions object-by-object, but leadership wants the at-a-glance picture: a late-shipment trend and the dollar exposure tied up in at-risk inventory. You will build a Quiver analysis over the risk object sets and embed it as a live dashboard in the app.
Unit 7 adds the analytics surface to the command-center app you have been assembling. The Workshop module from Unit 6 is built for operating on one object at a time — open a DisruptionEvent, read its risk, fire the triageDisruption action. What it does not give leadership is the aggregate view: how late-shipment volume is trending over time and how much capital is exposed across at-risk inventory. Quiver is Foundry's point-and-click analysis tool for exactly this. It works directly on object and time-series data from the Ontology, and because the links between objects are natively represented, you avoid hand-writing joins to follow a DisruptionEvent to the Shipments it affects or a Shipment to its InventoryItem stock. You will build a Quiver analysis on the Shipment and DisruptionEvent object sets, then embed the resulting dashboard back into the Command Center so the analytics live where operators already work.
There is an important honesty constraint baked into how this unit is checked. A Quiver analysis and the act of embedding it into Workshop or an Object View are authoring artifacts that are not exposed by the Foundry read API — there is no endpoint that returns 'this dashboard exists' or 'this dashboard is embedded in module X'. So those two steps are self-attested, and the unit instead verifies the underlying data the dashboard must reflect. The mechanism is the Aggregate Objects endpoint, the same v2 read-API aggregation Quiver itself runs under the hood. You will reproduce the dashboard's two headline numbers independently — a count of late shipments and a sum of inventory exposure — so that a passing aggregation is the machine-checkable proxy for a dashboard that surfaces the same figures. If your Quiver headline disagrees with the aggregation, one of them is wrong.
By the end you will have a Quiver dashboard combining a late-shipment trend with exposure metrics, embedded into the Command Center app, and you will have proven the two headline metrics reconcile against the Ontology via aggregation. This completes the read/analyze half of the operator loop: Unit 5 gave you the function-backed action that edits the Ontology, Unit 6 gave you the operating surface, and Unit 7 gives leadership the aggregate signal that tells them whether the disruption response is working.
Capability focus: Quiver object/time-series analyses; embedding dashboards into Workshop/Object Views; aggregation as the machine-checkable proxy. · Artifact: A Quiver dashboard embedded into the Command Center app.
Key concepts
- Quiver: Foundry's point-and-click interface for analysis on object and time-series data drawn from the Ontology. Because links between objects are natively represented, you traverse from one object type to a related one without writing joins, and you can chart trends over a timestamp property (e.g., late shipments per week) or roll up a numeric property across an object set.
- Embedding Quiver dashboards: A Quiver dashboard can be embedded into a Workshop module or an Object View, so the same analysis operators already use for triage also shows the aggregate trend and exposure picture in-app. The embed is an authoring/configuration relationship — it is not introspectable through the Foundry read API.
- Aggregate Objects (the machine-checkable proxy): A v2 read-API endpoint that computes aggregations (count, sum, avg, min, max, and groupings) over an object set, optionally filtered by property. It is the same kind of aggregation Quiver runs, so reproducing a dashboard's headline figure via Aggregate Objects confirms the number the dashboard must display, even though the dashboard itself is not API-exposed.
- Object View: A per-object detail page in Foundry where you can compose widgets — including an embedded Quiver dashboard — scoped to a single object's context. It is one of the two supported surfaces (alongside Workshop) for embedding Quiver analytics.
- Function-backed variables vs. aggregation: Workshop and Quiver can drive metrics either through function-backed variables (a published TypeScript-v2 or Python query function supplying the value) or through native object-set aggregations. For this unit the dashboard's headline metrics are simple object-set aggregations, which is why Aggregate Objects can reproduce them directly without executing a query function.
- Query functions are read-only; edit functions are not queries: A query function (annotated @Query) is the read-only subset exposed through the API gateway and runnable via Execute Query — it cannot modify the Ontology. The Ontology-edit function behind the triageDisruption action from Unit 5 has side effects, so it is NOT a query: it never appears in List Query Types and cannot be run via Execute Query. Its effect is confirmed only through the action it backs and the resulting object state, never through the query surface.
- Interfaces are not a Workshop/Quiver concept: The RiskEntity interface from Unit 2 is supported in Ontology Manager, TypeScript-v2 Functions, and the OSDK, but NOT in Workshop, and Quiver analyses are built on concrete object sets (Shipment, DisruptionEvent, InventoryItem). Build the dashboard against object types, not the interface.
Companion video
Deep Dive: Data Analysis in Quiver · open on YouTube
Hands-on activity
each step validates · the unit completes when all steps pass- 1
Build the Quiver object/time-series analysis
Open Quiver and build an analysis on the risk object sets that feed the Command Center. Start from the Shipment and DisruptionEvent object types and use Quiver's native link traversal — no manual joins — to bring in the related objects you need (for example, following Shipment to its InventoryItem stock for exposure context). Create at least two visualizations: a late-shipment trend charted over a timestamp property (shipments with status 'late' bucketed over time) and an exposure metric (the total dollar value tied up in at-risk inventory). Build these against the concrete object types, not the RiskEntity interface, since Quiver analyses operate on object sets and the interface is not a Quiver/Workshop concept. This step is self-attested: the Quiver analysis is authoring content that the Foundry read API does not expose, so no automated check can confirm the chart exists — the checks in the next two steps instead verify the data the dashboard must reflect.
not startedself-attestedSelf-attested: a Quiver analysis is built on the Shipment/DisruptionEvent object sets (content is not read-API-exposed).
- 2
Reproduce the dashboard's headline metric via aggregation
Reproduce the dashboard's headline late-shipment count independently using the Aggregate Objects read-API endpoint — the same aggregation Quiver runs internally. Run a count aggregation over the Shipment object set filtered to status equal to 'late'. The result must equal the figure your Quiver headline shows; for the seeded scenario that count is 3. This aggregation is the machine-checkable proxy for the dashboard: a Quiver chart is not introspectable, but the number it must display is. If your Quiver headline and this aggregation disagree, fix the analysis (typically a wrong filter or the wrong status value) before moving on — the dashboard and the Ontology must report the same late-shipment volume.
not startedinstance checkConfirms the dashboard's headline late-shipment count reproduces via an aggregation.
- 3
Reproduce the exposure metric via aggregation
Reproduce the dashboard's exposure metric the same way: run a sum aggregation over the InventoryItem object set on the exposureUsd property via Aggregate Objects. The total must match the exposure figure your Quiver dashboard surfaces; for the seeded data the sum is 300000 (total exposure in dollars). As with the late-shipment count, the dashboard's own configuration is not API-introspectable, so this sum aggregation stands in as the verifiable backbone of the exposure metric. Confirm the property name and units in the Ontology match what your chart aggregates, since a dashboard that sums the wrong field or mixes units will silently disagree with this check.
not startedinstance checkConfirms the exposure metric reproduces via a sum aggregation over InventoryItem.
- 4
Embed the dashboard in the app
Embed the Quiver dashboard into the Command Center so the analytics live where operators already work. Add it to the Workshop module (Quiver dashboards can be embedded in Workshop) and/or to a relevant Object View, the two supported embedding surfaces. Place the late-shipment trend and exposure metrics where leadership and operators will see them alongside the existing risk list and triage action from Unit 6. This step is self-attested: the embed relationship between a Quiver dashboard and a Workshop module or Object View is authoring configuration that the Foundry read API does not expose, so no automated check can confirm it — capture the embedded view in your walkthrough evidence so a reviewer can judge placement and that the in-app figures match the aggregations you just verified.
not startedself-attestedSelf-attested: the Quiver dashboard is embedded into the Workshop module / Object View.

