Prototype on sample data. Nothing here is a real agent or a real invoice. Back to ivyroi.com
{{ headerPeriod }}

Portfolio

Every agent holding a key, what it promised, and what its traffic says it's worth.

AI spend
{{ sum.spend }}
across {{ sum.countLabel }}, this month
On claim
{{ sum.tracking }}
holding close to what they promised
Unverified
{{ sum.unverified }}
no claim, or too little traffic to read
Flagged
{{ sum.flagged }}
{{ sum.atRisk }} waiting on a call
Taken back
{{ sum.recovered }}
{{ sum.recoveredNote }}
{{ rowCountLabel }}
Agent
Owner
Team
Model tier
Spend
Runs
Status
Read
Claim vs. actual
{{ r.name }}
{{ r.hypothesis }}
{{ r.owner }}
{{ r.team }}
{{ r.tier }}
{{ r.spend }}
{{ r.runs }}
{{ r.status }}
{{ r.decisionMark }}
{{ r.read }}
{{ r.meterLeft }} {{ r.meterRight }}
Nothing here right now
Switch to All for the full portfolio, or add an agent and we'll start measuring it.

Tick is the claim. Fill is our estimate. The Read column grades how much weight that estimate carries.

Decisions

{{ queueLead }}

{{ q.who }}
{{ q.status }}
{{ q.verdict }}
Spend
{{ q.spend }}
Claim
{{ q.claim }}
Our read
{{ q.actual }}
Confidence
{{ q.confidence }}
{{ qf.chipLabel }}
Owner
{{ q.ownerLine }}
{{ q.ownerReply }}
{{ q.actionNote }}
Nothing is waiting on you
Every flag on the books has a call against it. We keep reading the rest and this page fills up again on its own.

Settled this month

{{ s.verb }}
{{ s.line }}

{{ d.name }}

{{ d.owner }} · {{ d.team }} {{ d.tier }} tier key since {{ d.issued }} {{ d.routingLabel }}
{{ d.status }}
{{ d.verdict }}
{{ d.verdictSub }}
Monthly figures, August to date
Claim
{{ d.claim }}
{{ d.claimNote }}
Spend
{{ d.spend }}
{{ d.spendNote }}
Actual · our read
{{ d.actual }}
{{ d.delta }}
{{ d.actualNote }}
Confidence in this read
{{ d.confidence }}
{{ d.confidenceBasis }}
{{ d.confidenceLift }}
Where we stop
{{ d.boundary }}

Three flags, read separately

{{ f.title }}
{{ f.mark }}
{{ f.body }}
Confidence{{ f.grade }}

The owner's answer

{{ d.ownerLine }}
{{ d.ownerReply }}

What the traffic shows

{{ e.label }}
{{ e.value }}

Make the call

{{ d.decisionNote }}

The call

{{ d.settledVerb }} on {{ d.settledOn }}
{{ d.settledLine }}

Gateway

One key, one endpoint, every model behind it. Nothing else on this site works unless the calls come through here first.

Base URL
{{ gw.url }}
Org key
{{ gw.key }}

Point your SDKs at that URL. Your code keeps the shape it already has, and every call an agent makes lands in front of us before it reaches a model.

Cost routing
{{ gw.switchState }}

{{ gw.routingCopy }}

What we read

{{ rd.text }}

What we leave alone

{{ av.text }}

Keys we pulled

{{ rv.name }}
{{ rv.line }}
No keys pulled yet. When finance kills an agent it stops here, not in an email asking someone to stop.
Calls this month
{{ gw.calls }}
Keys live
{{ gw.live }}
Routed by us
{{ gw.routed }}

Add an agent

Say what it's worth before it runs. That number is what we measure against later.

Model tier
Cost routing
Off means we watch and grade, nothing more. Hand us the wheel later from this agent's own page, once you believe the readings.
What it's worth
Unquantified
Blank means this agent ships with no claim. We'll still watch its output, but there's nothing to hold it to. Put a number here and you get a claim vs. actual reading instead.
{{ formError }}
Traffic runs through our gateway from the first call.
{{ toast }}