← Agents

DIVA — PL Capital Customer Support

AI agent handling PL Capital customer support via WhatsApp using approved knowledge and tools. · v6

Live

In one line

Every agent is the same kind of thing: a goal (what a good answer is — the job it is for), a NOP (one document, how it works) that is also a workflow (the boxes it runs), and evals. The agent that takes the client's emails can call other agents with @name. End-to-end evals prove the whole answer; agent evals prove each agent alone. The company rules sit over everything.

Who owns what

Company rules — locked rules + settings (margins, approvals) · over every agent · Company rules page
Customers     — one profile each · Rates & customers
Agents        — every agent alike · Agents page
 ├─ Goal      — the job it is for: outcome + "done well" (J-1 …) · read by every AI step
 ├─ NOP       — one document: Steps · Rules · Templates  ⇄  its workflow (boxes)
 ├─ @names    — @tool (amber: fixed platform function) · @agent (pink: another agent)
 └─ Evals     — end to end (the agent that takes the emails) · this agent alone
A called agent only answers: it never sends, never asks a person, never calls others
  • NOP vs workflow: the same agent seen two ways. The NOP is what you write — what to do and how, in plain words. The workflow is the boxes that do it: tools, AI steps, called sub-agents, the Human check. Change either; saving one updates the other.
  • Changing an agent runs its own agent evals and the end-to-end evals of every agent that calls it (must-never cases 3 times, all must pass).
  • Rules and evals: tier A rules (money, safety, identity) must have an eval; tier B (judgement) should; tier C (wording) is optional. A new tier-A rule without an eval asks before saving.
  • Release = workflow + NOP version + company rules version + AI models + platform version. An email always finishes on the release it started on.

Changing the NOP

  • Open the agent (Agents page): it opens to read. Press Edit to change the document — or tell the chat box what to change and press Use this on its proposal.
  • Type @ in a step to use a tool or another agent, e.g. “for cargo over 30 t, ask @heavy-lift-check”.
  • Save & run evals: the AI changes the workflow as little as needed (a new step → a new box in the right place; a new @agent → a Call agent box), shows what it changed, and the evals run on both together.
  • A change to a rule or a template needs no new box — every AI box already reads the NOP's rules and templates.
  • The safety boxes always stay: find the customer by address, the platform's pricing, the Human check, Send.

Changing the workflow

  • Open the agent's Workflow view and change the boxes on the canvas. Each box has Follows NOP step.
  • On save, the NOP is updated to match: a new box gets its step written, a removed box loses its step. Both go into one draft.

What one email goes through

  1. Find the customer — by the sender's address only. That decides whose profile applies.
  2. Each AI box gets: the agent's goal · the company rules · its NOP step · the NOP's rules and templates · the customer's profile.
  3. A Call agent box runs a helper agent on the same email and hands its answer — and any flags — to the writing and checking steps.
  4. Tool boxes (rates, pricing maths) use the company settings and the customer's margin rule directly.
  5. Every AI decision cites the rule it followed (see AI decisions). A person approves before anything leaves.

Which rule wins? Company rules always. Otherwise the customer's profile beats the NOP default.

Evals before anything goes live

  • Every save is a draft. The must-never evals run 3 times each (every attempt must pass), plus every eval that tests a rule you changed.
  • Then: Publish when all pass, Publish anyway with a reason, or Throw away.
  • Every eval also checks the path: the right boxes ran, in the right order, and nothing was sent before a person approved.
  • It learns from your edits: when you edit a draft before approving, the AI may suggest one NOP change; it waits on the NOP tab — Accept and test runs its evals first.