← All AI Engineer talks

Browser Agents Don't Need Better Models. They Need Better Eyes. - Kushan Raj, ARK

Kushan Raj· ARK4:25

Read the talk

Better Browser Agents Start with Better Page Representations

Kushan Raj argues that compact browser state and explicit action feedback can help agents act faster, diagnose failures, and plan longer sequences without relying on a more expensive model.

From a talk by Kushan Raj

At a glance

Ideas worth remembering

  • Raj’s central hypothesis is that browser infrastructure can unlock more of an existing model’s capability by supplying useful page context, supporting long sequences, and making failures understandable.

  • The representation trades a little more context than one screenshot for broader page coverage: the example estimates are 1,800 tokens for Markdown, 1,100 for a screenshot, and 20,000 for the full DOM.

  • Feedback about appearing elements, disappearing elements, removed obstructions, and unsuccessful clicks gives the agent evidence about execution outcomes rather than merely recording attempted actions.

  • The demonstrations report faster behavior with a cheaper model, but do not establish a controlled speedup or aggregate reliability. The trekking example specifically supports successful date entry, not completion of a booking.

The cost of one click

Kushan Raj begins with a gap between the appeal of browser agents and his own experience: he finds the idea compelling, but does not use them much. To explain why, he introduces a browser challenge involving a long sequence of tasks. Such a challenge tests whether an agent can keep making progress across many interactions, beyond recognizing a single button.

The first problem is latency before meaningful progress. Raj reports that the demonstrated agent takes roughly 10–20 seconds just to click Start. It then reaches step one of a 30-step challenge. Even without a final completion time, the example exposes a practical concern: slow individual interactions make a long workflow cumbersome before the agent encounters its harder decisions.

0:000:06
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:00 · section reference included

An environment that helps the model execute

Raj next presents his own agent on the same website. He describes an interface that lets the user follow what the agent is thinking, alongside execution that he says is substantially faster despite using a cheaper model. His hypothesis is that model capability is already sufficient for more useful behavior, while the infrastructure around the model prevents it from acting effectively. The comparison is a demonstration; he does not identify the models or provide a controlled measurement here.

His diagnosis centers on an agent trying to click something without understanding what is happening on the page. A useful environment should let it plan a long sequence, identify where execution failed, and choose the next click correctly. Raj introduces a compressed page representation as the foundation: the model receives a view of the entire page in relatively few tokens. The intended benefit is enough context to connect an action to the surrounding page state and reason about what should happen next.

0:420:44
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:42 · section reference included

When seeing a button does not produce progress

The first concrete workflow is downloading Raj’s Aadhaar. He expects the initial interaction to be straightforward: take a screenshot, recognize the visible button, and click it. In the Claude demonstration, however, he reports that the agent gets stuck. From 46 seconds into that example video, it takes a screenshot, scrolls, and takes another screenshot; Raj says the process lasts two minutes. Repeated observation is not enough to move the task forward.

Raj then presents his agent starting and reaching what he describes as completion almost immediately, again emphasizing that it uses a cheap model. This illustrates his intended user experience: a browser task should resolve quickly enough to feel convenient. He supplies no exact runtime for his agent or detailed account of the downloaded result, so the example supports his reported contrast in behavior without establishing a measured speedup or a general success rate.

1:261:28
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

1:26 · section reference included

Getting through a date-selection interaction

The second example comes from planning a Sunday trek with friends. Raj describes difficulty navigating a website whose language he is not fluent in, then asks Claude to make the booking. The specific failure is date selection: the agent cannot pick a date and becomes stuck. This gives the comparison a concrete interaction to examine rather than treating the whole booking request as one undifferentiated task.

In his agent’s demonstration, Raj describes it making the selection and entering the date. That is the supported outcome of this example. Although the original request was to book the trek, the account does not establish a completed reservation or payment. Its narrower lesson is that successfully operating a troublesome date control can remove a point where another agent stops progressing.

2:032:06
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

2:03 · section reference included

From commands to a URL-and-intent API

Raj considers open-sourcing the project because he does not see the code itself as especially defensible. His proposed product could expose the commands used in the demonstrations through an API: a caller supplies a URL and an intent, and the service executes the task and returns a result. He also mentions a website or plugin as possible interfaces. These remain proposed directions; the common goal is to make browser agents faster, cheaper, and more reliable so that people use them routinely.

2:432:45
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

2:43 · section reference included

Compact Markdown and feedback about what changed

The closing technical explanation makes the representation concrete: Raj uses Markdown to represent a particular browser page. For one example, he estimates roughly 20,000 tokens for the full DOM, about 1,100 tokens for a screenshot, and about 1,800 tokens for his Markdown. The Markdown therefore costs more tokens than that individual screenshot, but he says it covers the entire page, whereas the screenshot shows only one portion. Against the full DOM, its advantage is substantial compression. These are estimates for one example, with no extraction algorithm or account of omitted information given.

The runtime also tells the agent how the page changes. Its feedback identifies newly appearing content, content that has disappeared, and obstructions that have been removed from something the agent wanted to click. It can report that an attempted click did not happen. These observations distinguish issuing an action from successfully carrying it out: the agent receives information about the result and the conditions that may now permit another attempt.

Raj attributes this feedback to tracking the browser page throughout execution. He closes by combining the pieces: the compact representation can accompany a screenshot, giving the model both the compressed page description and visual information. His claim is that this relatively inexpensive context helps the model reason well enough to construct long sequences of tasks. The explanation establishes the role of page representation and action feedback, but leaves the details of compression and failure detection unspecified.

3:243:25
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

3:24 · section reference included

Read the complete timestamped transcript
  1. 0:00

    Okay, everyone. I am Kushan.

  2. 0:02

    I worked at Seraphim as a founding

  3. 0:03

    engineer for 2 years. Let's talk about

  4. 0:05

    what I'm interested in right now, and

  5. 0:06

    that is browser agents.

  6. 0:07

    Browser agents as an idea are so cool,

  7. 0:09

    right? The browser agent should go

  8. 0:11

    crazy, right? I personally have not seen

  9. 0:12

    that adoption, and me myself, I don't

  10. 0:14

    use browser agents that much. I've been

  11. 0:15

    exploring that for some time. I've been

  12. 0:17

    trying to understand why that is. So, on

  13. 0:19

    my screen right now, we have the browser

  14. 0:20

    challenge.

  15. 0:21

    But, this is a very interesting

  16. 0:23

    benchmark for browser agents because

  17. 0:25

    there are so many things that you have

  18. 0:26

    to do, long rising sequencing of your

  19. 0:28

    tasks. And this actually reveals, you

  20. 0:30

    know, why browser agents suck. If you

  21. 0:31

    saw at the beginning of the video,

  22. 0:33

    the browser this agent took like maybe

  23. 0:35

    10-20 seconds just to click the start

  24. 0:37

    button. And now, we're on step one.

  25. 0:38

    There are 30 steps, and it has taken so

  26. 0:40

    long just to click one button.

  27. 0:42

    Um so, enough of this. I want to show

  28. 0:44

    you what I've been building. So, same

  29. 0:45

    website.

  30. 0:47

    Um I've tried to sort of replicate the

  31. 0:48

    feeling of seeing what's happening, you

  32. 0:50

    know, you can see what the browser agent

  33. 0:51

    is thinking. But as you can see, it is

  34. 0:53

    so much faster and so much quicker, and

  35. 0:54

    I'm using a much cheaper model, right?

  36. 0:56

    The hypothesis here is models are pretty

  37. 0:58

    smart, but it's the infra around them

  38. 0:59

    that sucks. If you noticed in the video

  39. 1:01

    earlier, maybe I'll put a screenshot,

  40. 1:03

    the agent is trying to debug what's

  41. 1:05

    going on. It's trying to click

  42. 1:06

    something, but it doesn't understand

  43. 1:07

    what's going on. So, my core thesis here

  44. 1:09

    has been

  45. 1:10

    give a nice environment for the agent to

  46. 1:12

    use, right? So, where it can plan long

  47. 1:13

    sequences, it can figure out where it

  48. 1:15

    failed, what is going on, and it can

  49. 1:17

    plan the click correctly. I figured out

  50. 1:18

    is a cool representation which

  51. 1:20

    compresses the website and lets the

  52. 1:22

    agent see the entire page in very few

  53. 1:24

    few tokens. Now, I want to show you some

  54. 1:26

    actual examples. Let's say I want to

  55. 1:28

    download my Aadhaar. Um so, this is

  56. 1:30

    Claude trying to do it. So, I'd assume

  57. 1:32

    that this is very simple for a browser

  58. 1:33

    agent. I take a screenshot, you see the

  59. 1:34

    button right there, click it. Uh but

  60. 1:36

    then, what's interesting is that it got

  61. 1:38

    stuck after this point. So, from 46

  62. 1:40

    seconds until the end of this video, it

  63. 1:42

    took a screenshot, it scrolled for some

  64. 1:43

    reason, it took a screenshot.

  65. 1:45

    Basically, this entire process took 2

  66. 1:47

    minutes, whereas

  67. 1:49

    in my case, in our video,

  68. 1:55

    so, it just boots, and

  69. 1:57

    boom, done.

  70. 1:58

    And that's the beauty of a browser

  71. 2:00

    agent. Just how quick was that? And I'm

  72. 2:02

    using such a cheap model for this.

  73. 2:03

    Another interesting example is So, my

  74. 2:06

    friends and I are going trekking on

  75. 2:08

    on Sunday. I was wondering, you know

  76. 2:10

    what? Because this this site is in

  77. 2:12

    Canada and I am not very fluent in

  78. 2:13

    Canada.

  79. 2:14

    Like it took me some time to figure out

  80. 2:16

    this website. So, I asked Claude like,

  81. 2:17

    "Hey, can you book this for me?" And by

  82. 2:19

    the end of it, it's unable to pick a

  83. 2:20

    date and it just stuck. This is the

  84. 2:22

    video of my agent.

  85. 2:34

    You can see it selects it and

  86. 2:39

    puts in the date and boom, done. Right?

  87. 2:41

    It's so simple and convenient to use in

  88. 2:43

    theory. So, what's next, right? What am

  89. 2:45

    I planning on doing? I'm thinking of

  90. 2:46

    open sourcing this project because again

  91. 2:48

    my this code is not super defensible.

  92. 2:50

    The product that I want to give is again

  93. 2:52

    maybe an API that as you can see we were

  94. 2:55

    running these commands. Maybe I just

  95. 2:57

    want to expose this command as an API.

  96. 2:59

    Give me a URL, give me your intent and I

  97. 3:01

    will execute it for you and give it back

  98. 3:02

    to you and or maybe open this as a

  99. 3:04

    website

  100. 3:05

    or expose this as a plugin. But yeah, so

  101. 3:08

    bottom line is I want to make browser

  102. 3:10

    agents faster, cheaper and more reliable

  103. 3:13

    and just make sure everybody in the

  104. 3:14

    world is using them because they can

  105. 3:15

    just do so much for you.

  106. 3:17

    So yeah, that's the broad idea here.

  107. 3:19

    Thank you for watching.

  108. 3:24

    This

  109. 3:25

    entire

  110. 3:26

    markdown

  111. 3:28

    presents the website, that particular

  112. 3:30

    page. And let's actually do this

  113. 3:31

    interesting comparison, right? Let's go

  114. 3:33

    to AIS. The full DOM for this would be

  115. 3:35

    around 20,000 tokens. But so, let's say

  116. 3:37

    we have this screenshot.

  117. 3:38

    All right, this screenshot's about 1,100

  118. 3:40

    tokens.

  119. 3:41

    My markdown's about 1,800 tokens and

  120. 3:43

    instead in one screenshot where you

  121. 3:44

    could see only one particular snippet,

  122. 3:46

    you can see the entire

  123. 3:48

    website, right? A couple of other things

  124. 3:50

    that it's important to give feedback,

  125. 3:51

    right? So, we say that okay, hey, these

  126. 3:53

    are the new things that have popped up

  127. 3:54

    on the page. This is now gone, right?

  128. 3:56

    And similarly, we can say that you know,

  129. 3:57

    this thing that was blocking up things

  130. 4:00

    that you wanted to click has now been

  131. 4:01

    removed. You know, we give it feedback

  132. 4:02

    that you tried to click this, but that

  133. 4:03

    didn't happen because you know, we're

  134. 4:04

    keeping track of the entire end-to-end

  135. 4:06

    browser

  136. 4:07

    page.

  137. 4:08

    Right? So, all of this together, what I

  138. 4:10

    built is a very clean representation

  139. 4:12

    that that basically compresses the

  140. 4:13

    website, and you can give this along

  141. 4:14

    with the screenshot. It's pretty cheap

  142. 4:16

    token-wise. Um so, the model can reason

  143. 4:18

    really well, and then it can construct

  144. 4:19

    this long sequence of tasks to execute.