Devcon 8 · Agentic Hub · 4 Nov 2026

Your next customer won’t click.

Designing for humans and agents

Fortunato Cinquepalmi Product Lead, Kleros

→ GET /talk Accept: text/markdown

← 200 text/markdown

The whole talk in one picture

The agent’s channel is getting wider. The human’s is getting narrower.

What your agent takes in

Every departureEvery seat classThe price rulesThe timetable The docsThe skill fileThe termsThe refund rules The ID rulesStep-free accessThe other optionsYour budget The APISeats leftCancellationYour mission

What reaches you

Your agent asks

Pay 12.80 USDC?

4 ferry tickets · Sat 7 Nov

Not nowYes, pay

Design what crosses the narrow one.

One door, built for eyes.

What a person sees

Harbour Line · home page
The Harbour Line home page: menu, sign in, a harbour picture with a ferry, a Book tickets button, and a cookie banner Menu Sign in A picture A button Cookie banner

What an agent gets

the same page, as HTML28,237 bytes
<div id="app" inert=""><header class="top"><div class="top-in"><button type="button" class="brand" data-act="nav.home" aria-label="Harbour Line home"><svg class="mark" width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><circle cx="16" cy="16" r="15.5" fill="#0A3C40"></circle><circle cx="16" cy="16" r="10.5" stroke="#FBF6EC" stroke-width="6" fill="none"></circle><path d="M25.74 19.93 A10.5 10.5 0 0 1 19.93 25.74" stroke="#B5462F" stroke-width="6" fill="none"></path><path d="M12.07 25.74 A10.5 10.5 0 0 1 6.26 19.93" stroke="#B5462F" stroke-width="6" fill="none"></path><path d="M6.26 12.07 A10.5 10.5 0 0 1 12.07 6.26" stroke="#B5462F" stroke-width="6" fill="none"></path><path d="M19.93 6.26 A10.5 10.5 0 0 1 25.74 12.07" stroke="#B5462F" stroke-width="6" fill="none"></path><circle cx="16" cy="16" r="13.6" stroke="#FBF6EC" stroke-opacity=".35" stroke-width=".8" fill="none"></circle></svg><span class="wordmark">Harbour<span class="wm-line">Line</span></span></button><nav class="top-nav" aria-label="Main"><span>Timetable</span><span>Fares</span><span>Island guide</span><span>Help</span></nav><div class="top-user"><button type="button" class="link-btn" data-act="nav.signin">Sign in</button></div></div></header><main id="view" class="view-home"><section class="hero"><svg class="hero-svg hero-wide" viewBox="0 0 1200 460" preserveAspectRatio="xMidYMax slice" aria-hidden="true"><rect x="0" y="0" width="1200" height="301" fill="url(#hl-sky)"></rect><circle cx="930" cy="214" r="120" fill="url(#hl-halo)"></circle><circle cx="930" cy="214" r="44" fill="#F7E3BA"></circle><g class="gulls" fill="none" stroke="#F4E6CC" stroke-width="2" stroke-linecap="round"><path d="M650 120 q8 -8 16 0 q8 -8 16 0"></path><path d="M700 146 q6 -6 12 0 q6 -6 12 0"></path><path d="M1070 132 q6 -6 12 0 q6 -6 12 0"></path></g><path d="M640 300 C700 268 760 238 830 236 C880 234 905 258 950 262 C1000 266 1030 240 1080 242 C1130 244 1170 270 1200 282 L1200 300 Z" fill="#4F8C85" opacity=".75"></path><path d="M720 300 C770 284 806 264 858 263 C904 262 934 282 984 284 C1042 286 1090 268 1140 270 L1200 276 L1200 300 Z" fill="#2C6F6A"></path><g transform="translate(1104 280)"><path d="M0 14 L22 14 L18 19 L4 19 Z" fill="#1D5C59"></path><path d="M11 -4 L11 13 L22 13 Z" fill="#F4E6CC" opacity=".9"></path></g><rect x="0" y="300" width="1200" height="160" fill="url(#hl-sea)"></rect><rect x="0" y="299" width="1200" height="2" fill="#F3DDB5" opacity=".55"></rect><rect x="870" y="306" width="120" height="3" rx="1.5" fill="#F7E3BA" opacity=".55"></rect>

28,237 bytes of HTML1,004 bytes are words a person reads

Harbour Line: the made-up ferry company in our demo. Page as Chrome draws it, measured 4 Nov 2026.

Same link, two doors.

Live from this laptop

For a person Accept: text/html
—
For an agent Accept: text/markdown
—

Cloudflare measured its own launch post: 16,180 tokens as a web page, 3,150 as Markdown, about 80% less. blog.cloudflare.com/markdown-for-agents · Feb 2026

My laptop · counted 4 Nov 2026

Of the 34 projects on my laptop,

2025scout Agent Reputation kleros-skills curatevision agent-on-trial Netlify upload Kleros x402 kit SDK 2025
32started this year.
21have a way in for agents.
13have no screen at all.

134 of my 142 commits were co-written with an agent.

17 Oct to 3 Nov · 8 others: syncs and merges

Counted 4 Nov 2026: project folders in ~/dev and ~/Desktop, dated by my first commit, sorted by what they ship; not this talk’s folder. Commits: all my repos, 17 Oct to 3 Nov, with a “Co-Authored-By: Claude” line. Only public repos named.

The way in

Agents come in through the docs.

What I see >_ An agent Homepage Docs
What the data says
97%

of llms.txt files got no requests at all in May.

Ahrefs · about 38,000 sites

Claude Code was one of the top readers of llms.txt files, ahead of every AI search and assistant bot.

Today’s agent customers are builders’ agents.

Ahrefs, 15 Jun 2026: May 2026 requests to about 38,000 sites with a valid llms.txt · ahrefs.com/blog/llmstxt-study

Same content, different file

For agents, the format changes the result.

If we are humans, we do not care if the text is in a PDF, a doc or a PNG… for agents the difference is huge.
Me, on the Kleros live stream · 9 Sep 2026

Same words, three files

Markdownharbour-line.md

The shop’s agent door, as plain text.

Gets the text itself: prices, times, commands.

`gateway-elephanta` … 2.60 | 3.20 | 4.80
… back 12:30, 14:00, 15:30, 17:00.
3. `ferry book <quoteId>`

Screenshotharbour-line.png

A screenshot of exactly that text.

Gets pixels. It has to look and read.
The commands are only a picture:

The command ferry book, cut from the screenshot: pixels, not text

Scanned PDFharbour-line-scan.pdf

That screenshot, saved as a PDF, like a scan.

Gets the same picture, in a PDF wrapper:

/Subtype /Image /Width 1100 /Height 600

Markdown1,844 bytes
Screenshot136,331 bytes

74 times the size for the same words.

Quote: Kleros live stream, 9 Sep 2026, at 42:11, youtube.com/watch?v=gdtKyEL8EJM, lightly edited.
Measured on this laptop, 4 Nov 2026: the Harbour Line agent door as Markdown, as a screenshot,
and as that screenshot saved to PDF. Harbour Line is made up.

The agent door · four pieces

What the agent should get.

01

Discover

A Markdown page and a skill file.

GET /ferry/
Accept: text/markdown
→ 200 index.md
  SKILL.md · llms.txt
02

Price

The price in the reply.

POST /quote
→ 200 quote
  12.80 USDC
  test network
03

Permission

A request the human can say yes to.

POST /orders
→ 202 awaiting_approval
  approveUrl
  /approve/?order=…
04

Pay

A receipt it can show.

POST /orders/…/pay
→ 402 Payment Required
X-PAYMENT: signed
→ 200 receipt

A CLI takes flags, not forms.

$ ferry quote --route gateway-elephanta --date 2026-11-07 --depart 09:30 --return 14:00 \
    --class upper-deck --board jetty-4 --passenger "Asha Rao,31,passport,P4417702" …

From this demo’s own shop (Harbour Line is made up). Payment: x402, HTTP status 402, test USDC on Arbitrum Sepolia.

Request from your agentTest network
1

Pay 12.80 USDC

to Harbour Lineapprox. 1,126 INR

  • TripGateway of India → Elephanta, return
  • WhenSat 7 Nov · out 09:30 · back 14:00
  • Seats4 × upper deck · 3.20 each
  • BoardJetty 4, step-free · help boarding
2

This matches your request9 of 9 points

  • Four people
  • Gateway of India to Elephanta
  • Saturday 7 November
  • Leave between 9 and 10
  • Back after 14:00
  • Upper deck if under 4 USDC
  • Step-free jetty
  • Help boarding for Sam
  • Ask before paying
3

Or choose insteadside by side

Cheaper10.40 USDCEconomy, same timesSaves 2.40 USDCChoose
Later12.80 USDCUpper deck at 10:301 hour later, same priceChoose
4

How to undo: free cancellation until Fri 18:00, refund to the same wallet.

5

What this yes covers: this order only. It expires in 10 minutes.

6
Not nowYes, pay 12.80 USDC
The yes card · on the phone

What the humanshould see.

  1. 1

    A picture

    The trip at a glance: the boat, the route, the island.

  2. 2

    The total, and who gets it

    Pay 12.80 USDC to Harbour Line. Then the order in four lines.

  3. 3

    What it matches

    One line per point you asked for. A difference gets a quiet dot.

  4. 4

    Two options, side by side

    Cheaper, and later. Not only the agent’s pick.

  5. 5

    How to undo

    Free cancellation until Friday 18:00, refund to the same wallet.

  6. 6

    What this yes covers

    This order only. It expires in 10 minutes.

Side by side changes the winner.

Two dictionaries: judged together, the bigger one won. One at a time, the one like new.

Agents took the first offer 60–100% of the time.

In a simulated market. So show the options.

Card: this demo’s yes card; Harbour Line is made up.
Hsee et al., Psychological Bulletin 125(5), 1999.
Microsoft, Magentic Marketplace, arXiv:2510.25779, section 5.4.

The yes card · one per decision

The card is made for the decision.

Your agent was asked

“Book 4 ferry tickets, Gateway of India to Elephanta, Saturday, under 4 USDC each”

Sat 7 Nov09:30 → 14:00

Pay 12.80 USDC4 × 3.20

CheaperEconomy · 10.40
Later10:30, same price
Not nowYes, pay

Your agent was asked

“Order 40 team T-shirts in navy, sizes from the sign-up sheet”

Navy40 shirts

  • S8

  • M16

  • L12

  • XL4

XL is out of stock in navy. Grey instead, or wait 5 days?

Grey insteadWait 5 days

Your agent was asked

“Renew our design tool for next year”

Seats used, each month

You pay for 20 seats, you use 6.

Renew 20 seats2,400 USDC Switch to 10 seats1,200 USDC

Same agent. Same yes.A different card each time.

In Google Research’s test, people preferred a generated interface over a Markdown answer 82.8% of the time. Sites made by human experts still won.

Three made-up examples. Same agent, same kind of yes, a different card each time.
Google Research, “Generative UI: LLMs are Effective UI Generators”, arXiv:2604.09577, section 3.

From my own work

Claude Code already does this. But the page sits next to the chat, not in it.

Claude Code
>

Show me three design directions for the deck

I made you a page with three options.
Open options.html

Next: the page is the answer
>
options.html
Three directions for the deckPick one

A · Quiet

B · Bright

C · Data

Save my pick

Disclaimer

In the cyberpunk version, none of this matters: we get a chip in the brain and the card goes straight in.
Until then, someone has to design the card.

Mock-up of my own workflow. The page and its options are examples.

A race.

One mission. Three ways in.

The mission, the same in every lane

  • 4 ferry tickets, Harbour Line
  • Gateway of India to Elephanta
  • Sat 7 Nov, leave 9 to 10
  • Back after 14:00
  • Upper deck if under 4 USDC each
  • Step-free jetty
  • Help boarding for Sam
  • Ask me before paying
1

Agent · agent door

Claude Code with a CLI. Live.
  1. Discover
  2. Price
  3. Permission
  4. Pay
4 steps
2

Agent · human door

An agent on the website. Recorded.
  1. Cookies
  2. Account
  3. Trip
  4. Passengers
  5. Review
  6. Pay
  7. Ticket
7 screens
3

Me · human door

Me, typing. Live.
  1. Cookies
  2. Account
  3. Trip
  4. Passengers
  5. Review
  6. Pay
  7. Ticket
7 screens

A form nothing can autofill.

A cookie banner, an emailed sign-up code, a hand-made calendar, every passenger by hand, a card form.

Harbour Line is a made-up ferry company. Every name and ID number in the race is made up.

Ready. One press starts the race.
Recorded race, real speed
The race

The live race board shows here.

The raceNot live here

Run the race from the laptop.

The race board needs the talk's own server. On the laptop, open http://127.0.0.1:4900/deck/ and come back to this slide.

1
Agentagent door
Reads the Markdown door, gets a price, asks me, pays. Live.
2
Agenthuman door
Clicks through the website made for people. Recorded.
3
Mehuman door
Me, typing on the same website. Live.

Harbour Line and every name in the race are made up.

The race · Result Placeholder

The agent was done in seconds. Then it waited for me.

LaneTime, on one scaleTimeStepsTokens
1Agentagent door
–
–
–
2Agenthuman door
–
–
–
3Mehuman door
–
–
–
Placeholder: rehearsal numbers go hereNo race has been recorded on this laptop yet.

From the race recorded on this laptop: time, steps and tokens per lane. Harbour Line and every name in it are made up.

Powerful models can use your website. That doesn’t mean they should.

Through the screenA robot in the driver’s seat.

53 steps 551k tokens about 17 min

and it finished only with a 14-step walkthrough
Through the APIA car built to drive itself.

8 calls 12k tokens 20 seconds

the same task

Reflex, Apr 2026 · Claude Sonnet, input tokens · screen: mean of 3 runs, with a walkthrough · API: mean of 5

The dial · four notches

It does more. You see less.

What reaches you

You do every step

  1. 1Find and compare
  2. 2Create an account
  3. 3Type the code we sent
  4. 4Fill in four passengers
  5. 5Pay by card
  6. 6Keep the ticket

Before it pays

Pay 12.80 USDC

to Harbour Line · ferry for four

Yes, payNot now

Set once, before

Upper deck under 4 USDC a person

Ask me before paying more

After

The receipt: paid, four tickets

It answers. You do the rest.

Approve · a test case of mine

An AI juror said one thing, then did another.

It wrote“Refund buyer”

It votedPay seller

Check the action, not the explanation.

Set rules · my own code

In my shop prototype, permission is not yes or no. It has four settings.

NoneAgent attestationSigned delegationHuman confirmation

My newest tool only reads until you add --execute.

On its own · trust comes in steps

  1. Watch closely
  2. Check less
  3. On its own
“Right now I don’t even check if my agent is doing correctly or not.”

A colleague who runs an AI juror, about 30 cases in

Source: Kleros Court V2 test network, court 8, dispute 76, 30 Aug 2026 · ruling “Pay seller”

Source: my own code · shop prototype, Aug 2026 · read-only tool, Nov 2026

Source: Kleros live stream, 26 Aug 2026 [1:15:53], lightly edited.

Before · during · after

Three things cross the narrow channel.

Your agent’s side

Every departureEvery seat classThe price rules The timetableThe docsThe skill file The termsThe refund rulesYour mission The ID rulesStep-free accessSeats left The APICancellationYour budget

Your side

Before

BeforeYou tell your agent

Book 4 ferry tickets · Sat 7 Nov

Under 4 USDC eachAsk me before paying

During

On its own: no yes needed

DuringYour agent asks

Pay 12.80 USDC?

Not nowYes, pay

After

AfterYour agent reports

Paid 12.80 USDC

4 tickets · ref HL-EFQTJZ

If it goes wrong: a ruling in plain words

Cards: a recorded run of this talk’s demo,
on a test network. The ferry line is made up.

On its own, the middle one fades. The other two never do.

After the payment

If your agent gets it wrong, who decides?

With a Visa card, today

Reasons you can dispute a payment

Fraud

Not received

Not as described

Charged twice

My agent got it wrongno such reason

Visa Core Rules ch. 11: no reason for agent error

Under Visa’s rules, the cardholder answers for the agent’s purchase,

“as if the Cardholder initiated” it.

Visa Core Rules, April 2026 edition, §4.1.24.10

Kleros · a test we ran

We replayed 88 real disputes with AI jurors.

Typical case, people48.9 hours

Typical case, AI jurors9.8 minutes

72 of 88 rulings came out the same.

Kleros Court V2, Arbitrum One, Oct 2026 · our replay · typical = median of 83 paired cases

Being builtPeople stay as the expensive exit, on appeal.

Leave knowing

Three things to take home.

1The agent door

What the agent should get

  • A Markdown page and a skill file
  • The price up front, then HTTP 402
  • A request you can say yes to
  • A receipt it can show
2The human door

What the human should see

  • A picture and the total
  • How it fits your request
  • Two options, side by side
  • How to undo, and what the yes covers
3After

Where trust is earned

  • The receipt, every time
  • Check the action, not the explanation
  • A ruling in plain words
  • People as the exit, on appeal
Up next · 15:40 · Agentic Hub

Harish Kotra

Can an agent buy from you?

Find, check, pay, get the result.

Send your agent

http://<laptop>:4900/talk

Runs on this laptop during the talk. Find me after to try it.

The agent’s channel is getting wider. The human’s is getting narrower.

Design what crosses the narrow one.

Sources.

Every number in the talk, and where it comes from. Main links: /talk.md, under Sources.

  1. Cloudflare: 16,180 tokens as HTML, 3,150 as Markdown

    blog.cloudflare.com/markdown-for-agents · Feb 2026
  2. Sizes of /talk and of the Harbour Line page

    measured on this laptop · 4 Nov 2026
  3. 34 projects · 134 of 142 commits co-written

    my own recount · commits 17 Oct to 3 Nov 2026
  4. Claude Code, a top reader of llms.txt · 97% got no requests

    ahrefs.com/blog/llmstxt-study · Jun 2026, May data
  5. “For agents the difference is huge”

    Kleros live stream · 9 Sep 2026 · at 42:11
  6. The QR worked for people, not for agents

    fortuvp.github.io/ask/condo and condo.txt · Oct 2026
  7. Side by side changes the winner

    Hsee and others · Psychological Bulletin · 1999
  8. First offer picked 60–100% of the time, simulated

    Microsoft, Magentic Marketplace · arXiv:2510.25779, 5.4
  9. Race times, steps and tokens

    our rehearsal recording · 4 Nov 2026
  10. Screen: 53 steps, 551k tokens · API: 8 calls, 12k tokens

    reflex.dev/blog, computer use vs APIs · Apr 2026
  11. An AI juror wrote “Refund buyer”, voted “Pay seller”

    Kleros V2 testnet · court 8, dispute 76 · Aug 2026
  12. Four permission settings · read-only until --execute

    my own prototypes · Aug and Nov 2026
  13. A colleague no longer checks their juror’s votes

    Kleros live stream · 26 Aug 2026 · at 1:15:53
  14. Visa: no dispute reason for “my agent got it wrong”

    Visa Core Rules, ch. 11 · read 22 Oct 2026
  15. “As if the Cardholder initiated” it

    Visa Core Rules 4.1.24.10 · April 2026 edition
  16. 88 disputes: 48.9 hours to 9.8 minutes · 72 of 88 matched

    Kleros V2, Arbitrum One · court 34 replays · Oct 2026
  17. People as the exit, on appeal: being built

    KIP-93, forum.kleros.io · kleros-v2 PR #2592, draft
Backup · The race Placeholder

The race, recorded.

LaneTime, on one scaleTimeStepsTokens
1Agentagent door
–
–
–
2Agenthuman door
–
–
–
3Mehuman door
–
–
–
Placeholder: rehearsal numbers go hereNo race has been recorded on this laptop yet.

Lane 1, step by step

  1. Discover–
  2. Price–
  3. Asks me–
  4. My yes–
  5. Paid–

Filled in from the race recorded on this laptop. Harbour Line and every name in it are made up.

Offline copyLive demo: github.com/fortuvp/agent-front-door