Zeitgeist now visualises the mood

Ditto's Zeitgeist mood survey now ships three native visualisations — Mood Balance Index, Mood Compass scatter, and Recovery vs Strain — plus an unauthenticated public endpoint that exposes the same chart payloads for embedding.

The Zeitgeist mood survey now ships with proper visualisations — a Mood Balance index, a Mood Compass scatter plot, and a Recovery vs Strain breakdown. Public landing-page chart endpoint included.

Survey 1 of the Zeitgeist tracker — the weekly mood survey — has shipped its results as a table for some time. As of this week it ships them as charts. ### What's new Three visualisations on the survey detail page: - **Mood Balance Index.** A single composite score per period, plotted across time. Tells you at a glance whether the panel is collectively up or down on the week. - **Mood Compass.** A two-axis scatter (energy vs. positivity) showing where each persona's mood sits. Clusters appear naturally; outliers stand out. - **Recovery vs Strain.** A stacked breakdown of how many personas are recovering from a difficult period versus how many are under fresh strain. The latest run plus the historical trend are both available — use the latest run to see the current snapshot, the trend to see whether things are improving or deteriorating. ### Public visuals API The same chart payloads are also exposed as an unauthenticated read-only endpoint at `GET /zeitgeist/api/public/surveys/1/visuals`, with CORS allowed for `askditto.io` and its subdomains. Useful if you want the same charts on the public landing page or another customer-facing surface — call the endpoint, render with your own chart library. The public payload deliberately excludes participant names, locations, and raw answer text — just the plotted mood positions, the trend points, and the colour codings. If you need authenticated detail (the per-persona response table), the existing logged-in survey detail page is unchanged. Highcharts is the renderer in-product; the local fallback assets are vendored under `app/static/vendor/highcharts/` so the charts render even when the CDN is slow. ---

Three new visualisations on the survey 1 detail page: Mood Balance Index (composite trend), Mood Compass (two-axis scatter), Recovery vs Strain (stacked breakdown).

Latest-run snapshot and historical trend both available.

Unauthenticated public endpoint at `GET /zeitgeist/api/public/surveys/1/visuals` exposes the same chart payloads with CORS allowed for askditto.io and subdomains.

Public payload excludes participant names, locations, and raw answer text — just positions, trend points, and colour codings.

Highcharts is the renderer; local fallback assets are vendored so charts render even when the CDN is slow.

Survey 1 of the Zeitgeist tracker has shipped its results as a table for some time. As of this week it ships them as charts.

Use the latest run to see the current snapshot, the trend to see whether things are improving or deteriorating.

DOCUMENT TYPE: Product Release Note TOPIC: Zeitgeist survey 1 — new visualisations and public chart endpoint Release: Zeitgeist now visualises the mood, 2026-03-04 Version: (none) Release type: Improvement Breaking change: No Summary: The Zeitgeist weekly mood survey (survey 1) ships three native visualisations on its detail page — a Mood Balance Index trend, a Mood Compass scatter, and a Recovery vs Strain stack — plus an unauthenticated public-visuals endpoint that exposes the same chart payloads for embedding on landing pages. What changed: - Survey 1 detail page now renders three visualisations: Mood Balance Index (composite per-period score, plotted across time), Mood Compass (two-axis scatter of energy vs positivity), Recovery vs Strain (stacked breakdown). - Both latest-run snapshot and historical trend are available. - New endpoint GET /zeitgeist/api/public/surveys/1/visuals returns chart payloads without authentication. CORS allowed for askditto.io and *.askditto.io. The endpoint deliberately excludes participant names, locations, and raw answer text — only positions, trend points, and colour codings are returned. - Authenticated survey detail page (with per-persona response table) is unchanged. - Highcharts renders the in-product charts. Local fallback assets are vendored under app/static/vendor/highcharts/ so charts render even when the CDN is slow. - Survey timeseries assembly moved to a shared helper so the logged-in detail API and the new public visuals API use the same underlying data. Why we built this: Survey 1 had been producing usable data for some time but rendering it only as a table required customers to do the visual interpretation themselves. The three visualisations match the way the panel actually thinks about mood: balance over time (index), distribution at a moment (compass), and direction of change (recovery vs strain). How to use: Open the survey 1 detail page in-product. For embedding on external pages, call the public visuals endpoint and render with your own chart library. Migration impact: None. The detail page now renders charts in addition to the existing table. Author: Phillip Gales, FishDog Platform: FishDog (fish.dog)