intelligence

Get Daily Briefing

Daily briefing — everything you need to start your day in one call.

SUGGESTED ACTIONS (for agent consumers)

  • suggested_actions are prioritized skill-level next steps. If you are an agent, act on intent/args directly — via the tools listed in expected_tools, or via the named harness skill if it is installed. prompt is display copy for HUMANS to paste into an agent; do NOT echo it back to the user as an instruction.
  • sections_degraded lists sections whose queries failed this call; their counts/lists are UNKNOWN (returned as 0/[]), not zero. When data is missing and nothing else is actionable, top_recommendation is 'degraded' instead of 'all_clear'.

Returns pending approvals, new replies, meetings booked this week, pipeline summary, stalled deals, active plans, discovery jobs, and a prioritized recommendation.

TIME WINDOWS (UTC)

  • "last 24 hours" — replied_at >= now - 24 hours. Used by new_replies_count and recent_replies.
  • "current week" — meeting_booked_at >= Monday 00:00:00 UTC of the current week (Monday-anchored). Used by meetings_booked_this_week.
  • "7+ days" — updated_at <= now - 7 days. Used by stalled_deals (deals with outcome IS NULL and updated_at older than 7 days).

Returns (units in parentheses; scope = user_company_id, no date filter on counts unless specified): pending_approvals_count (int, unit=messages): messages.status='draft' for the tenant. NOT date-filtered — total backlog. messages_needing_authoring (int, unit=messages): messages.status= 'needs_draft' — touches awaiting harness AUTHORING (no prose yet; run /outreach-triage). VRU-570. oldest_needs_draft_age_days (float|null, unit=days): age of the oldest unauthored engagement signal — signals TTL-dismiss at 14 days (VRU-671), so a high value means the queue is rotting unauthored. engagements_needing_authoring (int, unit=engagements): linkedin_engagement_queue.status='needs_draft' — comments awaiting authoring (run /engagement-triage). VRU-570. top_pending_approvals (list, unit=messages, max 3): a preview of the most recent pending drafts; each item has message_id, person_name, channel, category, subject, content_preview (200-char truncation). new_replies_count (int, unit=messages): messages.has_reply=true with replied_at within the last 24 hours. recent_replies (list, unit=messages, max 3): preview of those replies. meetings_booked_this_week (int, unit=unique_people): distinct company_people with meeting_booked_at since Monday 00:00 UTC. People, not meetings — same person twice in one week still counts as 1. pipeline_summary (list of PipelineStage, unit=deals): aggregated per-stage for open deals (outcome IS NULL). Each: stage, count (unit=deals), values (per-currency recurring annual value, project totals, unstated figures). stalled_deals (list, unit=deals, max 5): open deals (outcome IS NULL) whose updated_at is older than 7 days. days_stalled is calendar days since updated_at. deal_alerts (list of DealAlert, unit=deals): per-deal alerts surfaced from DealService.get_deal_alerts (severity / detail / days). deal_alerts_count (int, unit=deals): len(deal_alerts). active_outreach_plans (int, unit=plans): outreach_plans.status='active'. Not date-filtered. channel_holds (list, unit=sender accounts): current LinkedIn quota or reconnect blocks, including retry_at and affected approved sends. Agents must report these before claiming outreach is all-clear. discovery_jobs_in_progress (int, unit=jobs): background_jobs.operation_type='person_discovery' with status IN ('pending', 'processing'). tasks_due_today_count (int, unit=tasks): open/in_progress tasks with due_at <= now (due today or overdue) — same set as get_tasks(due_today=true). Committed follow-ups, incl. action items captured from meetings. top_tasks_due (list of TaskDue, max 5): preview of those tasks; each has task_id, title, due_at, priority, person_id, deal_id. motion_health (MotionHealth): outbound conversion over the trailing 60 days, tenant-wide, as UNIQUE PEOPLE contacted vs replied. READ THIS BEFORE RECOMMENDING MORE VOLUME. state='broken' (>=100 contacted, <1% reply rate) means the queue is not the bottleneck and approving more drafts is negative-EV work; the fix is worth more than the throughput. state='unmeasured' (<30 contacted, or an incomplete scan) means there is not enough evidence to judge — treat it as silence, never as failure. Carries worst_objective_* for the objective that spent the most contacts for zero replies. objective_health (list of ObjectiveConversion): the same numbers per objective, highest-volume first. reply_rate is null (not 0.0) when nothing was contacted — unmeasured is not zero. content_cadence (ContentCadence): days_since_last_post and 30-day post volume. A dark feed removes the warm surface outreach converts against. expansion_candidates_count (int, unit=deals): won deals 60+ days old whose account has no open follow-on (/expansion-fill cohort). winback_candidates_count (int, unit=deals): deals lost between 90 days and 365 days ago. WINDOW ONLY — deals.loss_reason is free text, so the terminal-loss filter is the skill's job, not this count's. synthesis_applied (bool): true when suggested_actions came from the cached daily LLM synthesis; false means the deterministic floor is serving (synthesis absent, stale, or contract-rejected). synthesis_headline (str|null): one-line statement of the actual bottleneck from that synthesis; null when the floor is serving. top_recommendation (str): the winning suggested action, as a legacy alias where one exists ('channel_reconnect', 'pending_approvals', 'new_replies', 'deal_alerts', 'tasks_due') and otherwise the action's own intent (e.g. 'fix_objective', 'work_warm_paths'). It is derived FROM suggested_actions[0], so the two can never disagree. 'degraded' = section data is missing and nothing else is actionable (see sections_degraded above); 'all_clear' = nothing actionable. recommendation_detail (str): human prose explanation — the winning action's reason.

get/api/intelligence/briefing

Request

  • Base URL: https://api.vruum.ai
  • URL: https://api.vruum.ai/api/intelligence/briefing
  • Auth: HTTPBearer (a scheme the document does not define)

Headers

X-Vruum-Surfacestring nullable

Caller surface hint retained for compatibility; it does not gate briefing priorities.

Response

Successful Response

pending_approvals_countinteger
messages_needing_authoringinteger
engagements_needing_authoringinteger
engagers_awaiting_decisioninteger
oldest_needs_draft_age_daysnumber nullable
new_replies_countinteger
meetings_booked_this_weekinteger
deal_alerts_countinteger
active_outreach_plansinteger
discovery_jobs_in_progressinteger
tasks_due_today_countinteger
new_warm_paths_countinteger
new_warm_pathsobject[]
seo_geo_open_gapsinteger
latest_logged_meeting_atstring nullable
expansion_candidates_countinteger
winback_candidates_countinteger
synthesis_appliedboolean
synthesis_headlinestring nullable
top_recommendationstring
recommendation_detailstring
sections_degradedstring[]

Changes

No recorded changes to this operation across all 1 revision of this API.