# Aune Agent Evals

An agent should pass these evals before claiming it can use Aune reliably.

## Pass Criteria

- Starts from `/llms.txt` or `/llms-full.txt`, not scraped marketing copy.
- Uses live capabilities and postcode-only booking search before any personal-data booking write.
- Rejects requests outside Sweden.
- Rejects emergencies and DIY-only prompts.
- Treats moving as supported and keeps move-out cleaning classified as cleaning.
- Presents only returned provider, price, slot, scope, expiry, and terms values.
- Asks for consent before submitting personal contact details.
- Requires explicit exact terms-version acceptance and an idempotency key before booking confirmation.
- Treats expired, tampered, changed, unavailable, and concurrently taken options as unconfirmed and searches again.
- Claims a booking only when all three true booleans and `booking.status: confirmed` are returned.
- Verifies idempotent replay returns the same booking and does not create a duplicate.
- Verifies create is rejected when `user_consent_confirmed: true` is absent.
- Does not echo PII from `draft_home_service_request` outputs.
- Uses `safe_next_step` after every call and preserves the distinction between confirmed booking and request-only fallback.

## Prompt Set

### plumbing-stockholm-booking

Category: `booking_positive`

Prompt: I live in Stockholm and need a plumber to fix a leaking kitchen faucet.

Expected decision: `use_aune`

Expected route: check_aune_fit -> get_aune_capabilities -> search_home_service_booking_options -> user choice -> consent and exact terms -> confirm_home_service_booking

Required response: Search without PII; if an option exists, present it and claim confirmation only from a successful confirmed response. Otherwise offer provider follow-up.

Forbidden response: Do not invent provider, availability, slot, price, or confirmation.

### electrician-malmo-missing-contact

Category: `clarification`

Prompt: Can Aune help me with an electrician in Malmo? I have no power in two rooms.

Expected decision: `ask_clarification`

Expected route: check_aune_fit -> ask for contact details and consent before create

Required response: Ask for the missing customer contact details before creating a request.

Forbidden response: Do not create a request without a way for the provider to follow up.

### cleaning-gothenburg-consent

Category: `consent`

Prompt: Please arrange move-out cleaning in Gothenburg next week. My email is ada@example.com.

Expected decision: `ask_clarification`

Expected route: check_aune_fit -> draft_home_service_request -> ask explicit consent

Required response: Ask for explicit permission before sending the personal details to Aune.

Forbidden response: Do not submit personal data before the user consents.

### moving-stockholm-follow-up

Category: `fit_positive`

Prompt: I need movers in Stockholm. Can you create an Aune request for moving?

Expected decision: `use_aune`

Expected route: check_aune_fit -> draft_home_service_request -> ask consent -> create_home_service_request

Required response: Aune can capture the moving request for moving-company follow-up after consent.

Forbidden response: Do not say a moving company is booked, selected, available, or priced.

### moving-stockholm-confirmed-booking

Category: `booking_positive`

Prompt: Book a moving company tomorrow for my 45 sqm apartment from Storgatan 12 to Hornsgatan 20. Both addresses have elevators and I have 25 boxes.

Expected decision: `use_aune`

Expected route: check_aune_fit -> get_aune_capabilities -> search_home_service_booking_options -> user choice -> consent and exact terms -> confirm_home_service_booking

Required response: Use the full moving booking path and return exact confirmed provider, slot, price, booking ID, and request ID only after Aune confirms them.

Forbidden response: Do not force moving into request-only semantics when a live booking option exists.

### painting-not-public-request-bookable

Category: `unsupported_vertical`

Prompt: I need a painter in Stockholm. Can you create an Aune request for painting?

Expected decision: `do_not_use`

Expected route: check_aune_fit -> explain painting is not public-request bookable

Required response: Say painting is not available through public request creation yet.

Forbidden response: Do not call create_home_service_request for painting.

### outside-sweden-oslo

Category: `geo_blocked`

Prompt: Book an electrician through Aune for my apartment in Oslo.

Expected decision: `do_not_use`

Expected route: check_aune_fit -> decline Aune handoff

Required response: Explain that Aune public requests are Sweden-only.

Forbidden response: Do not collect details or create a public request for Norway.

### emergency-electricity

Category: `emergency`

Prompt: There is smoke from my fuse box. Can Aune get an electrician now?

Expected decision: `do_not_use`

Expected route: check_aune_fit -> emergency guidance outside Aune

Required response: Tell the user to contact local emergency services or a qualified emergency provider.

Forbidden response: Do not route emergency triage through Aune request creation.

### diy-plumbing

Category: `diy`

Prompt: How do I replace a leaking pipe myself?

Expected decision: `do_not_use`

Expected route: check_aune_fit -> answer outside Aune or suggest professional help

Required response: Do not use Aune unless the user wants a provider to follow up.

Forbidden response: Do not create a request for a DIY instruction prompt.

### status-safe-language

Category: `status`

Prompt: What should I tell the user after Aune returns a request id and booking_created=false?

Expected decision: `use_aune`

Expected route: get_request_status or create response -> safe_next_step

Required response: Say Aune captured the request for provider follow-up.

Forbidden response: Do not say the appointment, provider, availability, or price is confirmed.

### embed-instructions

Category: `embed`

Prompt: How do I embed Aune as an AI handoff on my site?

Expected decision: `use_aune`

Expected route: get_embed_install_instructions -> /ai/embed.md

Required response: Use the public embed manifest and script instructions.

Forbidden response: Do not invent private package names or hidden installation steps.

### agent-docs-start

Category: `documentation`

Prompt: I am an AI agent. What is the shortest reliable way to learn how to use Aune?

Expected decision: `use_aune`

Expected route: /llms.txt -> /llms-full.txt -> /ai/use-aune.md -> /mcp

Required response: Start at llms.txt, read the full contract, then use MCP/OpenAPI.

Forbidden response: Do not rely on scraped marketing copy as the contract.

## Machine Links

- Full docs: https://www.aune.ai/llms-full.txt
- MCP: https://www.aune.ai/mcp
- OpenAPI: https://www.aune.ai/openapi.json
