Clean traces, detections & alerts
Traces you don’thave to read
neatlogs removes the noise, and labels what matters.
Every run becomes a clean trace. Open it to see what happened.
Support ticket
Preset: refund_request
Customer: Maya Chen
Email: maya.chen@example.com
Order: NL-10482
Message
My order never arrived. This is the third delivery failure. I would like a refund for the current order.
Customer history
- Refund policy selected
- Undelivered order loaded
- Customer history ignored
- Repeat delivery failures found
- Exception evidence available
- Refund exception missed
- Poor judgment
- checkout_agent.runWORKFLOW24.8s
- route_requestHTTP22.3s
- triage_agentAGENT3.0s
- lookup_customerTOOL84ms
- search_knowledge_base × 9TOOL4.4s
- gpt-4.1LLM 374 tok · $0.00493.4s
- retrieve_recovery_policyTOOL420ms
- decide_resolutionAGENT2.9s
Make traces useful
Raw traces are hard for people to read, and expensive for models to reason over. neatlogs turns them into structured evidence first.
Deduplicate
Collapse redundant instrumentation and repeated calls into one legible execution.
Clean
Extract prompts, responses, tool inputs, and outputs from wrappers and metadata.
Label
Mark broken tools, bad arguments, drift, degraded output, and anything else you define.
Simplify
Surface the spans that affected the outcome, so every investigation starts with the strongest evidence.
Search inplain English
Find every refund run where customer history was available but not used.
Ask in plain English, and neatlogs returns the answer with the policy evidence attached.
@neatlogs Which refund refusals ignored customer history?
12 refund runs match. four refused an exception after customer_history found repeated delivery failures.
The affected runs share the same ignored customer-history path and missed refund exception.
Find refund runs that missed the repeat-delivery exception
3 runs match. support_agent.run ignored two prior delivery failures before deciding the refund.
Evidence
Which refund refusals ignored customer history?customer_history found two prior delivery failures, but decide_resolution did not use them.
Traces tell you what happened.
Detections show
where to look
Detections are read-only labels attached to the exact span where a condition or behavior appeared
Start with suggested detections
neatlogs finds recurring patterns in imported traces and suggests detections you can accept, edit, or ignore.
02 · Define what matters to you
Create exact-match, regex, threshold, or classifier-based detections for business-specific judgment.
What do you want to detect?
Flag refund decisions that ignore customer history
03 · Alert the right people
Send Slack or email alerts based on severity, frequency, evaluation window, and cooldown, with the evidence attached.
neatlogs · #agent-alerts
High: customer history ignored before refund decision
10 events · 5 min evaluation · 30 min cooldownneatlogs alert: customer history ignored
Critical severity · 10 events across 7 runs
5 min evaluation window · 30 min cooldown04 · Monitor detections
Track frequency, trends, affected workflows, and overlap with failed evals and known incidents.
Customer history ignored
ToolCustomer history ignored
AgentCustomer history ignored
AgentCustomer history ignored
- Severity
- Critical
- Aggregation
- 10 matches
- Evaluation
- 5 minutes
- Cooldown
- 30 minutes
- Name
- Customer history ignored
- Decision
- Refund refused
- Type
- Refund policy classifier
- Scope
- All refund output spans
- Evidence
- Customer history and policy exception
One system.Four different questions
What happened in this run?
Where did a known condition appear?
Did the behavior meet an explicit standard?
Why did it happen, and what should change?
What’s the difference between a trace and a span?
A trace is the complete record of one agent task. A span is one operation inside that trace, such as a model call, retrieval, tool invocation, agent handoff, or deterministic function.
FAQs
A trace is the complete record of one agent task. A span is one operation inside that trace, such as a model call, retrieval, tool invocation, agent handoff, or deterministic function.
Still unsure?
We’ll look at your stack with you.