Product pages

Daily report

Hidden Daily Report agent: dashboard card controls, schedule, toolboxes, editable instructions, memory directives, Expand in Chat, and edit-builder quirks.

What it is

HumanBehavior ships a Daily Report — a hidden, undeletable system agent that writes a 7-day product analytics briefing (compared with the prior 7 days). It reuses the normal agent stack (run loop, toolboxes, agent_runs conversations, chat UI) instead of a parallel report pipeline.

Identity flag: agentConfig.system.builtInDailyReport === true
Display name: Daily Report
It is excluded from the Manage Agents list API so it does not clutter /agents.

Where you interact with it

Dashboard card

On Dashboard, the Daily Report card (when the SDK is connected):

ControlBehavior
TitleDaily Report
Summary teaserShort prose rewrite of the latest completed report (~3-line clamp in UI)
Generated timestampRelative / preferred date formatting
Failed indicatorRed-dot tooltip Failed
Refresh summaryPOST /api/projects/:id/reports with { force: true } — kicks a new run; spinner while pending/streaming
Report settingsNavigates to /agents/edit/:agentId?builtin=report
Expand in ChatReveals the hidden conversation (POST …/conversations/:id/reveal) and opens /home?c=:conversationId

The card stays collapsed/hidden until the first summary exists (except failed status, which can surface without teaser text). First report is bootstrapped on SDK connect via POST /reports if none exists; afterward a global hourly cron fans out to each project at the project owner’s local midnight.

Soft timeout for a run: 15 minutes (spinner failsafe).

Builder (Report settings)

Same create/edit builder with report-specific chrome:

  • Back label: Back to dashboard
  • Name locked (helper: built-in name can’t be changed)
  • Automations / preview / delete suppressed — schedule is external
  • Instructions remain editable (re-provisioning does not overwrite a user’s edited prompt)

What the report covers (default instructions)

Default seeded instructions ask for a full weekly briefing with evidence from analytics, Issues, and session replays:

  1. Headline — most important change and likely driver
  2. Traffic & engagement — users, sessions, pageviews, WoW, charts
  3. Pages & paths — top / rising / falling routes
  4. Conversion / funnels — drop-offs and shifts
  5. Revenue & monetization — only if Stripe is connected; otherwise omit
  6. Issues & errors — spikes, routes, impact
  7. Session replay evidence — watch real sessions; attach inline replays
  8. What to watch next — prioritized follow-ups

Per-run trigger message is simply: write today’s report following saved instructions. Runtime time/timezone come from the shared runner.

Toolboxes on the agent

Fixed set (kept on re-provision):

  • product_analytics
  • watch_replays
  • issues
  • conversation_memory

Model id: claude-sonnet-5 (registry id used for scheduled runs).

Memory directives (seeded once)

On first creation, binding agent-scoped memory directives are seeded (user-editable/deletable afterward; not re-seeded every run), including:

  • Ground claims in queried data; never fabricate
  • Prefer charts/tables; never chart a single scalar
  • Never use emojis
  • Never name tools/tables/internal systems in user-visible text
  • Follow-ups: investigate with read-only tools and cite evidence

Visible under the agent’s Memory tab in the builder/run UI.

Card teaser vs full report

  • Full report: Sonnet run with charts/tables/replay embeds in the conversation
  • Card teaser: Haiku rewrite to plain prose (~650 char soft target); UI ellipsizes overflow
  • Expand in Chat is where the full briefing and follow-up Q&A live

Thread titles look like Daily Report · <Mon D> in the owner’s timezone.

Status values you may see

From GET /api/projects/:id/reports: pending · streaming · complete · failed (plus passthrough strings). While regenerating, the API can keep showing the last good summary as content with the newest run’s in-flight status.

Beginner gotchas

  1. You will not find Daily Report under Manage Agents — use the Dashboard card.
  2. Until Expand in Chat, report threads stay out of the sidebar Chats list.
  3. Editing instructions in Report settings changes future runs; the system will not reset them on cron.
  4. No Stripe → no revenue section (by design).
  5. Refresh enqueues work; expect tens of seconds to minutes, not an instant rewrite.