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.…

National AI Competition
Wave 2
AI / Agentic Software Engineer Career Ladder
Estimated Time:
40 minutes
Difficulty:Intermediate
Status:Not started
Start this challenge

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.

MetricWeek 1Week 8Change
Emails processed / week2,8004,100+46%
Drafts accepted by broker with no edit64%41%−23 pts
Median tool calls per email3.17.4+139%
p50 end-to-end latency4.2s11.9s+183%
p95 end-to-end latency12s74s+517%
Median input tokens per email9,40038,600+311%
Cost per processed email$0.031$0.147+374%
Loop hit the 12-iteration cap0.4%9.6%+9.2 pts
Extraction field accuracy (200-case holdout)91%88%−3 pts
Emails escalated to the ops queue4.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

Diagnostic Rigor Agent Systems & Eval Design Engineering Judgment & Prioritization Video Walkthrough & Communication AI Fluency

What to Submit

File 1 — Diagnosis and Three-Week Plan

Document · 2 pages maxinimumRequired

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

DocumentRequired

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

Video · 5–6 minutesRequired

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