The Agent Got Slower and Dumber
Deskmate is an agent now. It has four tools — searchrateguidance, lookupshipperhistory, checkcarriercapacity, createloaddraft — and it runs a loop until it can produce a quote draft for a broker to approve. It shipped eight weeks ago.…
Create a free account to upload your work. Your progress saves as a draft until you submit.
What You'll Be Doing
Deskmate is an agent now. It has four tools — search_rate_guidance, lookup_shipper_history, check_carrier_capacity, create_load_draft — and it runs a loop until it can produce a quote draft for a broker to approve.
It shipped eight weeks ago. Here is the data.
| Metric | Week 1 | Week 8 | Change |
| Emails processed / week | 2,800 | 4,100 | +46% |
| Drafts accepted by broker with no edit | 64% | 41% | −23 pts |
| Median tool calls per email | 3.1 | 7.4 | +139% |
| p50 end-to-end latency | 4.2s | 11.9s | +183% |
| p95 end-to-end latency | 12s | 74s | +517% |
| Median input tokens per email | 9,400 | 38,600 | +311% |
| Cost per processed email | $0.031 | $0.147 | +374% |
| Loop hit the 12-iteration cap | 0.4% | 9.6% | +9.2 pts |
| Extraction field accuracy (200-case holdout) | 91% | 88% | −3 pts |
| Emails escalated to the ops queue | 4.1% | 14.8% | +10.7 pts |
| Dry-run charges attributed to Deskmate | $1,700/mo | $9,400/mo | +453% |
Two changes shipped during the window, both by engineers no longer on the team:
- Week 5: retrieval for search_rate_guidance changed from top-3 chunks to top-10 “for better recall.” No eval was run.
- Week 6: a new tool, lookup_shipper_history, was added. It returns the shipper’s last 50 loads as raw JSON.
Here is the loop.
# halcyon/deskmate/agent.py
MAX_ITERS = 12
def run(email_body: str, broker_id: str) -> dict:
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": email_body},
]
for i in range(MAX_ITERS):
resp = client.chat.completions.create(
model="gpt-4o", messages=messages, tools=TOOL_SCHEMAS
)
msg = resp.choices[0].message
messages.append(msg)
if not msg.tool_calls:
return {"draft": msg.content, "iters": i}
for call in msg.tool_calls:
result = TOOLS[call.function.name](**json.loads(call.function.arguments))
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps(result), # raw, untruncated
})
log.warning("deskmate hit iteration cap for %s", broker_id)
return {"draft": None, "iters": MAX_ITERS}
Usage is up. Everything else is down. Diagnose it and say what you would do.
Constraints to consider
- You cannot change the model or the vendor, and there is still no ML engineer at Halcyon.
- search_rate_guidance calls a service owned by the pricing team. It returns in ~400ms at p50 and you cannot change it or its response shape.
- One engineer for the next three weeks. The rest of the team is on the carrier-portal migration and will not be pulled off it.
- Finance has capped Deskmate at $0.05 per processed email by end of quarter. That number is fixed and is not being renegotiated.
- If you roll back the week-5 retrieval change, you must state specifically what capability is lost.
- No new instrumentation can ship in under two weeks. If your diagnosis depends on data you do not have, say so and say what you would do meanwhile.
AI Usage Guidance
We expect you to use AI tools. We evaluate how you use them — not whether you use them. Evidence of iteration, redirection, and critical evaluation scores higher than a polished output with no process documentation.
The single highest-signal indicator: your video answer to the mandatory AI question. If you cannot name a specific moment where you redirected AI output, evaluators will assume you did not.
Mandatory AI question for your video: Walk me through one moment where you disagreed with, pushed back on, or redirected what the AI gave you — and what you did instead. Name the specific moment. Explain what the AI produced that didn’t meet the bar, what you did differently, and why.
Speak naturally. Communication is assessed on clarity of technical ideas and logical structure — not verbal polish, accent, or filler words.
What You'll Accomplish
Diagnose a degrading agent system from combined production metrics and source code
Trace a cost and latency regression to specific mechanisms in a tool-calling loop
Design a regression gate that would have blocked a bad retrieval change before it shipped
Prioritize three weeks of one engineer against a fixed unit-cost target
Communicate a technical diagnosis and plan to a skeptical audience without overclaiming
How Your Work Will Be Scored
What to Submit
File 1 — Diagnosis and Three-Week Plan
Format: .pdf, .doc, .docx, .rtf, .txt, .md
What is actually happening, ranked by contribution to the cost and quality decline, and exactly what the one engineer does for three weeks. Include the specific code changes you would make, as a diff sketch or a precise description.
Sign in to upload files
File 2 — README Document
Format: .pdf, .doc, .docx, .rtf, .txt, .md
Three required sections:
- Section A — Written analysis: your causal argument. Which metric movements are causes, which are downstream symptoms, and what the data cannot separate. Show the cost arithmetic — how your changes get from $0.147 to under $0.05, or why they cannot. 350–450 words.
- Section B — Edge cases and the eval that should have existed. Two parts.
- B1 — Edge-case reasoning (complete this part without AI assistance). List at least five specific email or tool-response conditions that would make this loop behave badly, and one line each on what happens. At least two must be things the metrics table would not reveal. Write these from your own reasoning and note at the top of the block that it was written unaided.
- B2 — The regression gate: design the evaluation that would have blocked the week-5 retrieval change. Specify the case set and roughly how big, what each case checks, the pass criterion per case, which checks are automated and which need a human, and the gate: the threshold, on which measure, against which baseline, that would have turned the change red. Include at least one non-quality gate — cost or latency — and say why.
- Section C — AI Usage Log (Mandatory): This is not a trick. We want to see how you work with AI — not whether you used it. In a short section of your README, document your AI collaboration process. For each significant interaction with an AI tool, briefly note: what you asked the AI to help with / what it gave you / what you kept, changed, or rejected — and why. Three interactions documented is sufficient. The log does not need to be exhaustive.
Sign in to upload files
File 3 — Video Walkthrough
Format: .mp4, .mov, .webm
Record as MP4 or MOV and upload directly on the Provn platform as a separate file. Cover: (1) your diagnosis in one sentence, ~30 sec; (2) the mechanism — walk the code and connect it to the numbers, ~90 sec; (3) the regression gate and the threshold, ~90 sec; (4) the mandatory AI question, ~60 sec; (5) what you are least sure about, ~45 sec. Speak naturally — we assess reasoning, not verbal polish.
Sign in to upload files
Create a free account to upload your work. Your progress saves as a draft until you submit.
On this page