Asapi
The Agent Trials / Tasks / The stay-search chat

Customer service · Task 21 of 34

The stay-search chat

Answer five customers' holiday-rental chats, five messages each, keeping every customer's saved needs in play and ranking places by real travel time through a city's streets.

Setting
Holiday rentals, customer chat
Deliverable
A ranked results list for every chat message, with the record behind each requirement
Unstated requirementsConflicting sourcesData quality
6
Models
ran the standard setup
68%
Best score
Opus 5.5
40%
Median score
across those models
23 min
Typical run
median time, standard setup

The task

Windrose, a made-up service, finds places to stay in Barcelona from listings it does not own: three feeds in three formats, a city register of licensed flats, maps, the street network and traffic observations. Customers search through a chat, one message at a time, and each has a saved profile of needs written over the years in their own words. The agent answers every message for five customers, five messages each.

The prompt only asks for the right listings in the right order for each message. The real test is the conversation: knowing whether a message adds to the search or starts a new one, keeping the needs the customer never repeats, and measuring travel the way that customer actually travels.

What it tests

Working out what the job needs

A customer's lasting needs sit in their profile, and no message restates them.

Weighing sources that disagree

Guests, hosts and the city register can each say something different about the same flat.

Catching bad data

Feeds in different formats and languages, corrected profile entries and unsettled facts sit beside the real ones.

Following a conversation

Follow-ups add to a search or replace it without saying which.

Challenges

1Needs the customer never repeats

A profile holds dozens of dated entries, and a few of them shape every search, as with any regular customer.

2Unmarked follow-ups

"and licensed, please" and "something else now" look alike but mean opposite things for the search so far.

3Travel the customer's way

Distance on a map is not travel time; how and when the customer sets off changes the order.

4Reviews in many languages

Guests write in whatever language they speak, and what they say can outweigh the host's description.

5Unsettled listings

Some listings cannot be shown to meet a need either way, and a results page should not lean on them.

Results

0%25%50%75%100%StandardOpus 5.5Fable 5.1Sonnet 5.5GPT-6.1 SolGPT-6 AstraGPT-6 Luna
ModelStandardTime (standard)Cost (standard)
Opus 5.568%19 min$9.34
Fable 5.152%27 min$20.95
Sonnet 5.548%28 min$8.14
GPT-6.1 Sol32%17 min–
GPT-6 Astra28%16 min–
GPT-6 Luna16%35 min–

One run per model and setup. 100% = everything right (or, for a plan scored in money, the best plan); 0% = the obvious answer or worse.

Setups: Standard, the job as asked. Cost – means the run's cost was not measured.

What models got right and wrong

Test environment

Kind
Simulated customer chat over a real holiday-rental database: Windrose, a made-up service that finds a place to stay in Barcelona. Five customers, each with a saved profile, send five messages each; a session daemon the agent cannot read plays the customers
Agent's interface
A terminal driven by the agent's own command-line tool in one session: Claude Code (Opus 5.5, Fable 5.1, Sonnet 5.5) or Codex CLI (GPT-6.1 Sol, GPT-6 Astra, GPT-6 Luna). The board's runs were local: a sandbox folder on a Mac (macOS, Python 3.12 with pandas, DuckDB, shapely and pyarrow), not the task's container. The harbor package (Debian 12, Python 3.12, the same packages, no network) is in harness/
Documents
96 files in /data: the matching rules (RULES.md, 1 Markdown); three feeds of listings and guest reviews (platform: 2 gzipped CSV, 841 listings and their reviews; portal: 1 CSV, 188 listings, and 1 JSONL of opinions; owner form: 1 JSONL, 72 listings with feedback); the city's licence registry (1 CSV, 10,721 rows); map layers (2 GeoJSON: barris, beaches); the OpenStreetMap street network (1 CSV of 23,729 nodes, 1 JSONL of 7,618 ways); and traffic observations at 85 junctions (85 CSV). Nothing arrives later
Applications
One command, windrose: next (the open message), submit <file> (file the results for it), profile --customer <id> --page <n> or --search <words> (the saved profile, five entries a page), status. No other apps
Web
Not needed: nothing the task asks about is online. The machine could reach the internet (the harbor package's container has no network). Claude Code (Opus 5.5, Fable 5.1, Sonnet 5.5) had its web tools (WebFetch, WebSearch) on; Codex CLI (GPT-6.1 Sol, GPT-6 Astra, GPT-6 Luna) ran with web search turned off. The agent was told not to use the network, and no run used a web tool or the network.
People
Five customers, played by the daemon from a fixed script: their messages and profiles were written when the task was built, and nothing the agent files changes what they say next. No model plays them
Time
None. Messages come in a fixed order, one at a time
Actions
File one result list per message (listings with a citation per requirement, and the requirements searched for). A message can be filed once; filing opens the next
Deliverable
25 filings through windrose submit, one JSON object each: {"listings": [{"id", "evidence"}], "requirements": {...}}
All 34 tasks