Aviary AI · 0→1 Product · 2026

A voice AI can hit its goal and stilldeliver a terrible call.

Every dashboard counted that as a success. I designed the monitoring layer that made call-experience health visible, and built the scoring model underneath it. Validated against human reviewers, it reached about 90 to 95% agreement.

RoleLead designer, solo. Plus scoring logic.
ScopeDiscovery to beta rollout
Now used byAbout 20 enterprise clients
Problem
Tail risk hidden in averages
Research
Live walkthroughs with 5 credit unions
Solution
Three-level discovery flow
Validation
Human review led to a new metric
Impact
~20 clients now use it
01 · The insight Problem framing

Why a successful call can be the most dangerous one

Outcome measures whether the agent hit its goal. Experience measures whether the call was any good. They don't move together. The trap is the call that reaches its goal through a bad interaction.

Blend the two into one score and that call reads as a clean win. A call that hallucinated or talked over the member the whole way, but still booked the appointment, looks identical to a genuinely good one. The call most likely to damage the brand becomes the one you can't see. Try it:

Outcome: success
Outcome: fail
Experience quality
Goal met, good experience✓ healthy
Goal missed, good experience✕ flagged
Goal met, bad experience?
Goal missed, bad experience✕ flagged
If it were blended: outcome and experience would average into one "success" reading, and this call's bad experience disappears. This is the risk the two-score design exists to avoid, not how the product actually works.
The call I made
Two scores, never one

I kept outcome and experience as separate signals, so a good outcome could never hide a bad experience. A combined metric would have concealed exactly the calls a quality-sensitive client is most afraid of: the ones that succeed on paper while leaving a member with a bad impression of the brand.

02 · Grounding Research

I didn't ask how they worked. I watched.

I worked with five credit unions, and instead of interviewing people about their process, I had them open the live dashboard and do their real monitoring job while I watched. That's where the Excel workaround showed up, something nobody had mentioned when I'd asked about their process directly.

What watching revealed
They left the product to do the core job

Users downloaded spreadsheets and worked the central "which calls are bad?" question in Excel, because the dashboard couldn't answer it. When people quietly route around your product to do the main task by hand, the product has already failed at its main job. I only saw it because I watched the whole path.

I built the script around the decisions these operators actually make: how they judge a call, what makes them escalate, when they diagnose something themselves versus hand it back to us. Watching them rate calls in these sessions also gave me the human benchmark I later validated the scoring model against.

03 · The product Solution / IA

Three levels: detect, understand, act

The operator's three real questions, in order, became three levels of the interface. "Should I worry?" leads to "how bad, and is it getting worse?" leads to "which calls, and why?" Walk it the way a user would:

Aviary monitoring dashboard
DetectEvery campaign, worst experience score first. Outcome success and experience score sit in separate columns, the two-score decision made literal. You can answer "should I worry?" in one glance.
04 · The rigor Solution / logic

A call can be fine on every metric and still be bad

I collapsed a granular 1 to 5 score into three buckets: ignore, review, or stop and look now. That's the actual decision operators make on every call. The rule that matters most is subtler: two moderate issues compound into a critical one. Build a call and watch where it lands:

2.5
1
1
1
1
Good
WhyAll scores in the healthy range.
The call I held
Compounding friction, kept against simplicity pressure

Two moderate issues promote a call to Critical, even when nothing on its own is severe. This complicated the interface, since one call could now belong to several buckets. I kept it anyway, because it was the rule that made the system's grades line up with what human reviewers said. Drop it and the score stops matching human judgment, and matching human judgment was the whole point.

05 · AI-native framing Design rationale

Designing for trust in an AI product

A quality-sensitive client won't act on a grade they can't understand or override, so every decision in this system exists to answer one question: why should they trust it? Three principles shaped how it earns that trust. Tap a card for why I applied it this way and not the obvious alternative.

Principle

Make it traceable

A client can follow any grade back to the calls behind it.
why, and not an alert +
The three-level drill-down lets a client walk from "this campaign scored 68" down to "because these two calls hit compliance flags." An alert would just say something is wrong. Tracing the grade back to its evidence is what makes it trustworthy.
Principle

Show the reasoning

The system explains why it graded a call the way it did.
why it matters +
The Critical card lists the specific triggers behind a grade rather than just the verdict: a compliance flag, illogical patterns, a silent agent. A client can only trust the score if they can audit the reasoning behind it, so the Critical card always shows its work.
Principle

Keep the human in control

The system informs a decision. It never makes one automatically.
why, and not automation +
It never auto-pauses a campaign. In a low-trust setting, one false positive that halts a live campaign would break confidence for good, so the system informs the operator's judgment. Automation can come later, once it's earned that trust.
The two-score separation from earlier is still the center of the design. It's a measurement decision, and it decides whether a bad call is visible at all, before any of these interaction principles even come into play.
06 · The turn Validation / testing

When validation disagreed with me, I built a new metric

To validate the model, I exported its grades, had the client grade the same calls independently, and compared the two. The first pass agreed 80% of the time. Rather than accept that, I went through the 20% where we disagreed to see what the system was missing.

System-vs-human agreement80%
agreed with human review missed (smooth but wrong)

The disagreements clustered: calls that flowed smoothly but were wrong at the content level. They sounded coherent but were subtly off-track, and the flow-based score couldn't see them.

The call I made
Illogical Conversation, a feature born from being wrong

The original illogical score caught calls that broke down in how they flowed: loops, dead silence, word salad. It missed calls that sounded smooth but were wrong in what they actually said. I designed a new metric to grade whether the conversation made sense at the content level, tested it, and agreement rose to about 90 to 95% across both client and internal review.

07 · Where it landed Impact

From listening at random to going straight to the calls that matter

~20
enterprise clients using it in their day-to-day workflow
80 to 95%
agreement with human reviewers after the new metric
~80%*
faster to triage which calls to review
*early Mixpanel funnel data, verifying exact figure

The hardest part of this project was the measurement design underneath the interface, and holding V1 to a narrow scope while a steady stream of reasonable requests (benchmarks, remediation, a learning loop) pushed to expand it. Deciding what to leave out mattered as much as deciding what to build.