Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Statistics

The Statistics view summarises what's happening across every account Patera tracks. Two cards on the strip across the top (tweets analysed, AI summaries). The Attention Treemap below ranks accounts by recent attention. The Activity Heatmap at the bottom is the headline panel; that's what this page covers.

Activity Heatmap

A grid: seven rows for the days of the week (Monday at the top, Sunday at the bottom), twelve columns for two-hour windows of the day (00, 02, 04, … 22). Each cell is the count of profile changes that landed in that day-of-week and hour-of-day slot across the active window.

The colour scale is adaptive. The fiftieth, eightieth, ninety-fifth percentiles of the non-zero cells set the boundaries between calm (teal), warm (green), hot (orange), peak (red). A quiet week and a noisy week both read clearly.

7d vs 30d window

The window toggle sits next to the title:

  • 7d asks for the past week of events. Each cell counts the single occurrence of that weekday-hour slot in the last seven days. Useful for "what happened this past week."
  • 30d asks for thirty days. The same cell now sums across roughly four occurrences (four Mondays at 14:00, for example) for a typical-activity view.

Click either button and the cells fade to a shimmer skeleton; the new request fires immediately. Clicking the active button again forces a fresh fetch even if the value hasn't changed.

Click a cell for the breakdown

Hover any cell to preview its contents in the side panel; click to pin. The panel shows:

  • The weekday and the local hour range (e.g. Saturday 14:00–15:59 Europe/London).
  • The cell's total event count, in the dashboard's accent colour.
  • A per-field breakdown: Followers, Following, Bio, Avatar, Location, Verified. Each row carries the count, the percentage of the slot's total, a bar sized to the field's share of the cell's largest field.

The pinned selection survives a window switch, so you can compare Saturday 14:00 this past week against Saturday 14:00 over the past month in two clicks.

Times are in your timezone

The pill in the top-right of the heatmap reads your IANA timezone (e.g. Europe/London, America/New_York). The grid is bucketed in that timezone client-side, which makes daylight-saving transitions correct even across the spring and autumn shift weeks. The server returns UTC; the client redistributes the buckets per browser timezone using Intl.DateTimeFormat.

If your computer's timezone changes while the page is open you'll see the old timezone label until the next page load. Reload to resync.

Skeleton on load

A sweeping shimmer cascades across the cells whenever the heatmap is fetching. The animation staggers by sixty milliseconds per cell so the row reads as progress, not a frozen pulse. The side panel uses the same shimmer for its skeleton rows.

You'll see the skeleton on first open, on every window-toggle click, briefly during the once-per-minute background refresh if you happen to glance at it.

Where the data comes from

The heatmap is computed from twitter_profile_temporal, the same append-only log that drives the Profile Trail. The endpoint groups events by (weekday, hour, field) in UTC and caches the result for sixty seconds per window value. The cache is keyed by the window length, so 7d and 30d are independent buckets and one never invalidates the other.