DEV Community

Cover image for Cheaper Than Perplexity, but Local — and Works With Any Agent: Agent Browser Workspace
Konstantin Kolomeitsev
Konstantin Kolomeitsev

Posted on

Cheaper Than Perplexity, but Local — and Works With Any Agent: Agent Browser Workspace

If you've used Perplexity Deep Research, you probably know two feelings at once:

1) "Wow, it really digs deep."
2) "Too bad I can't see what's happening inside, intervene, restart a step, or expand the search — it's a black box."

Agent Browser Workspace is not a "one-button SaaS". It's a local toolkit that gives any AI agent (Cursor, your own agent, an LLM orchestrator) a real browser for research.

It runs on your machine, through your Chrome, but in a separate profile. No Docker, no exotic environments.

TL;DR

  • Cheaper than Perplexity: on DeepResearch Bench we scored 44.37 (RACE overall) on Claude Haiku 4.5 — a model significantly cheaper than typical "frontier" stacks.
  • Local and transparent: a real Chrome right in front of you — you can stop it, log in, close a banner, restart a step, expand the search, refine the query. As many iterations as you need.
  • Not just deep research: also a tool for browser automation + content, form, and HTML data extraction.
  • Extensible: new sites are added as profiles in scripts/sites/*.json — selectors and controls live separately from code and prompts.

What's Inside?

Agent Browser Workspace is a repository with two layers:

1) Low Level (utils/)

  • utils/browserUse.js — control a real Chrome via Playwright: navigation, clicks, input, scrolling (including infinite scroll), screenshots, file and image downloads, JS execution on the page, tabs, CDP.
  • utils/getDataFromText.js — parse raw HTML without a browser: finds navigation, main content, forms, and converts content to Markdown.

2) High Level (scripts/)

Ready-made building blocks for a research pipeline:

  • getContent — save a page as Markdown + download images and rewrite links to local files.
  • getForms — find forms, classify them (search/auth/filter/contact/subscribe), and build ready-to-use CSS selectors for filling.
  • getAll — content + forms in one pass (single HTML snapshot).
  • googleSearch — step-by-step Google search: query → organic links → open → extract → close tab → pagination.

How This Beats a Typical Deep Research SaaS

1) You Keep Control

With SaaS deep research, you usually see a progress bar and a final result. Here it's different:

  • The browser is real — not a "virtual screenshot black box".
  • You can intervene: close a cookie banner, log in, confirm age, adjust a filter.
  • You can restart a specific step: open the next link, re-extract content, change the wait strategy (SPA/JS rendering), scroll through infinite scroll before extraction.
  • You can expand endlessly: "add 10 more sources", "double-check the numbers", "add a comparison table", "collect a list of alternatives", "follow the snowball of links".

Research becomes iterative. One failed step doesn't kill the whole process.

2) Artifacts and Reproducibility

Deep research isn't just the final text. It's also the evidence base:

  • links.json — a stable snapshot of Google results across all queries (you can continue later without re-running searches).
  • Downloaded pages in Markdown + images/ — sources stay on disk.
  • insights.md — a cumulative draft (in the RESEARCH.md methodology, this is part of the process).

3) Local, No Extra Infrastructure

No containers, no remote browsers, no special platforms:

  • npm install
  • npx playwright install chrome
  • npm run chrome (starts Chrome with CDP on port 9222)

Three commands — done. Details in INSTALLATION.md.

Extensibility: Site Profiles Instead of Hardcoding

A common pain point in browser agents — selectors break. Sites change their markup, and the agent starts guessing.

Here it's different — through site profiles:

  • scripts/sites/*.json stores selectors and "controls" (which elements matter, what to do with them).
  • Scripts return a site field, and the agent uses ready-made selectors without guessing.

Need to support a new site? Add a JSON profile. Google changed its markup? Edit scripts/sites/google-search.json instead of rewriting code.

DeepResearch Bench: Why Numbers Matter

When everyone claims "we have the best deep research", you need an external benchmark.
That benchmark is DeepResearch Bench (DRB) — 100 "PhD-level" tasks, two metrics (RACE/FACT), and a public evaluation methodology.

Links:

Numbers You Can Verify

On the official DRB page in the Main Results section for the "Deep Research Agent" category (RACE overall):

  • Gemini-2.5-Pro Deep Research: 48.88
  • OpenAI Deep Research: 46.98
  • Perplexity Deep Research: 42.25

And here's Agent Browser Workspace's result:

44.37 (RACE overall)above Perplexity Deep Research, closer to OpenAI/Gemini, and running on Claude Haiku 4.5 (a model significantly cheaper than "frontier" stacks).

Results have been submitted to the leaderboard and are under review.

Why "44.37 on Haiku" Is More Than Just a Number

Most comparisons forget about cost and controllability.
Here you win on three fronts at once:

1) Quality close to the top (DRB overall near OpenAI/Gemini).
2) Lower cost (Haiku-class models).
3) Control and reproducibility — on your machine, with real artifacts (links.json + downloaded sources).

Try It in 5 Minutes

1) Install

npm install
npx playwright install chrome
Enter fullscreen mode Exit fullscreen mode

2) Start a Local Chrome for the Agent

npm run chrome
Enter fullscreen mode Exit fullscreen mode

3) Save Any Page as Markdown (with Images)

node scripts/getContent.js --url https://example.com --dir ./output --name page.md
Enter fullscreen mode Exit fullscreen mode

4) Deep Research: Google → Open → Save Source

# Stable snapshot of search results (links.json)
node scripts/googleSearch.js "best AI newsletters 2026" --links --dir ./archive/my-research

# Open result 0 and save content
node scripts/googleSearch.js "best AI newsletters 2026" --open 0 --dir ./archive/my-research --name source-0.md
Enter fullscreen mode Exit fullscreen mode

PDFs are supported too: if a .pdf shows up in the results, getContent/googleSearch automatically extract the text.

When a Site Looks "Empty" (SPA, JS Rendering, Lazy-Load)

The classic failure of "fast" web scrapers: the HTML arrives, but there's no content.

The project has an escalation path (details in AGENTS.md):

  • gotoAndWaitForContent() — wait for the DOM to stabilize after JS rendering
  • evaluate(() => document.body.innerText) — pull visible text directly
  • scroll({ times: N }) — load lazy content or a feed
  • screenshot({ fullPage: true }) — if text isn't accessible programmatically

The logic is simple: the page matters — don't skip it — escalate the extraction level.

Not Just Deep Research: Where Else It Helps

1) Product and Marketing Research

You can collect search results, lock down links.json, save 30–60 sources as Markdown, then ask the agent to "expand / compare / double-check / build a table" using local artifacts.

2) Web Routine Automation

Log in, click, download, fill out forms, take screenshots, save evidence — it's all here.

3) Form Discovery and Ready-Made Selectors

getForms finds forms and fields, returns ready-to-use CSS selectors.
From there, the agent calls browser.fill() or browser.fillForm() without guessing.

Why "Local + Observable" Is a Big Deal

Closed deep research products work well when you need a quick answer.
But if you're working with research, business decisions, sources, verification, and iterations — you need a different mode:

  • observe,
  • pause,
  • fix obstacles,
  • restart steps,
  • add depth,
  • refine the report,
  • keep going until the result is right.

That's what Agent Browser Workspace is about.

Where to Read More

  • GitHub: k-kolomeitsev/agent-browser-workspace
  • Tool overview and working rules: AGENTS.md
  • Installation and QOL instructions (profiles/shortcuts/checks): INSTALLATION.md
  • Deep research methodology: RESEARCH.md

If you'd like to contribute to the open source project — here are the most impactful areas:

  • new and improved site profiles in scripts/sites/
  • better content extraction on tricky sites (SPA, paywall overlays, lazy rendering)
  • smarter form and field detection rules

Made it this far? Star the repo — it's the best way to help the project grow.

Top comments (0)