Observability
What's working, how much is going out, and what the agent did - three distinct questions, three distinct tools.
Rilo separates outcome analysis, send volume, and the audit trail. Picking the right tool matters because each one deliberately refuses the others' questions.
| Question | Tool |
|---|---|
| Which angle / sequence / segment is actually working? | analyze_outreach |
| What can I slice by right now? | list_analysis_fields |
| How much are we sending? Are we ramping? | get_outreach_volume |
| What did the agent do, and did it succeed? | list_agent_activity → get_activity_event |
| How is one small/new campaign doing? | get_sequence with include_stats |
Outcome analysis
analyze_outreach slices an outcome rate - acceptance, reply, or positive_reply -
by any dimension (angle, sequence, sender, seniority, industry, company size, custom
enrichment fields via person_attr:<path> / company_attr:<path>, …) and compares each
slice against the rest of the cohort. Omit fields to sweep every dimension ranked
winners-first; multiple fields slice independently, never as a cross-tab.
The evidence tiers keep it honest:
- significant - n ≥ 50 and p < 0.05 (n ≥ 100 adds
strength: strong) - early_signal - n of 20–49; explicitly not strong enough to act on
- under 20 - no rate shown at all (named in
field_noteswith counts)
Two counting caveats: stopped enrollments are censored out of every denominator, and
acceptance is approximate (LinkedIn never signals declines). positive_reply derives
from conversation tags and undercounts while replies are untagged - lead with reply
when tagging discipline is unknown, and check the reply_tags block.
Statistical suppression is not absence of data - for a raw status readout of a small or
new campaign, use get_sequence include_stats=true (per-step funnel + by_angle).
Call list_analysis_fields first when unsure which dimensions the data supports: it
reports live coverage per dimension, custom fields discovered in person/company
attributes (these vary per lead group), and which conversation tags are actually in use.
Send volume
get_outreach_volume counts outbound happened events - connection invites
(li_connect), cold messages (li_outreach), follow-ups (li_message), thread replies
(li_reply) - per day or week bucket, the same rows the send-cap gates count. Zeros are
shown: an empty bucket means nothing was sent. Volume, not outcomes.
Audit trail
list_agent_activity is the feed of past tool calls for the workspace, newest first -
who ran what, when, and whether it succeeded, filterable by user, operation, outcome, or
time range. Each row carries a short input preview; get_activity_event lazily loads
one event's full input and output. Tool calls ≠ sends - volume questions belong to
get_outreach_volume.