browserbase.com logo
browserbase.com

request-demo

Installation

Adds this website's skill for your agents

 

Summary

Fills the Browserbase /contact form to request a product demo (name, company email, job title, company, reason set to 'I want a demo', and project description), verifying a ready-to-submit state. Submitting is a real sales lead — only send with the user's genuine details.

FIG. 01
FIG. 02
FIG. 03

Replay unavailable for this skill yet.

SKILL.md
136 lines

Request a Browserbase Demo

Purpose

Fills out the Browserbase "Connect with Browserbase" contact form (/contact) to request a product demo. Populates the seven required fields — first name, last name, company email, job title, company name, the "How can we help?" reason dropdown (set to "I want a demo"), and a "What are you building?" description — then verifies the form is complete and the Submit button is enabled.

This is a write action. Clicking Submit sends a real sales inquiry to Browserbase. Only submit with the user's genuine contact details and only when the user has explicitly asked to send a demo request. The recommended flow fills and verifies the form and pauses at a ready-to-submit state so a human/caller can confirm before the lead is sent.

When to Use

  • "Request a demo from Browserbase for me" (with the user's real details).
  • "Fill out the Browserbase contact form to book a demo."
  • Pre-filling the Browserbase demo/contact form for a sales or BD workflow, stopping for human review before the inquiry is actually sent.

Workflow

The browser is the only path here — there is no public API or deep-link for the demo form. The form uses stable element IDs, so target those directly rather than the brittle XPath/recorder locators.

  1. Navigate directly to the form. Open https://www.browserbase.com/contact and wait for the page to load. A bare remote session is sufficient (no proxies, no stealth — see gotchas). You do not need to click the "Get a demo" header link from the homepage; that link just points to /contact anyway.
    SID=$(browse cloud sessions create --keep-alive | node -e "let s='';process.stdin.on('data',c=>s+=c).on('end',()=>process.stdout.write(JSON.parse(s).id))")
    export BROWSE_SESSION="$SID"
    browse open "https://www.browserbase.com/contact" --remote
    browse wait load --remote
    browse wait timeout 1500 --remote   # form hydrates shortly after load
    
  2. Fill the five text fields by stable ID selector. Quote any multi-word value.
    browse fill "#contactForm-firstName"   "John"                 --remote
    browse fill "#contactForm-lastName"    "Doe"                  --remote
    browse fill "#contactForm-email"       "jane.doe@acme.com"    --remote   # must be a company email
    browse fill "#contactForm-jobTitle"    "VP of Engineering"    --remote
    browse fill "#contactForm-companyName" "Acme Corp"            --remote
    
  3. Set the reason dropdown to the demo option. It is a native <select> — select by its option value demo (label "I want a demo"), not by label guesswork.
    browse select "#contactForm-helpOption" "demo" --remote
    
  4. Fill the "What are you building?" textarea (required — this field did not exist in older recordings of the form).
    browse fill "#contactForm-project" "AI agents that browse the web to automate research workflows" --remote
    
  5. Verify the pre-submit state. Confirm every required field holds its value and the Submit button is enabled before reporting.
    browse eval "JSON.stringify({fn:document.getElementById('contactForm-firstName').value,ln:document.getElementById('contactForm-lastName').value,em:document.getElementById('contactForm-email').value,jt:document.getElementById('contactForm-jobTitle').value,cn:document.getElementById('contactForm-companyName').value,help:document.querySelector('#contactForm-helpOption').value,proj:document.getElementById('contactForm-project').value})" --remote
    browse screenshot --remote --path ready.png
    
  6. Stop before Submit unless explicitly instructed to send. If the user has genuinely asked to send the request with their real details, click the Submit button (form button[type=submit], labeled "Submit") and then read the on-page confirmation/toast to report success. Otherwise report the ready-to-submit state and let a human confirm.
  7. Release the session.
    browse cloud sessions update "$SID" --status REQUEST_RELEASE
    

Site-Specific Gotchas

  • Ignore the recorded /div and /html/body/div[2]/... locators. The original recording is full of noise "Click div. Locator: /div" steps and absolute-path XPaths. The form exposes stable IDs — use them: #contactForm-firstName, #contactForm-lastName, #contactForm-email, #contactForm-jobTitle, #contactForm-companyName, #contactForm-helpOption, #contactForm-project.
  • The form has grown since the recording. It now has seven required fields, including a #contactForm-project textarea ("What are you building?") that the older recording never mentioned, and the "How can we help?" control is a native <select> (not a custom combobox). All fields are marked required (*); leaving any blank blocks a valid submission.
  • "How can we help?" is an enum. Valid option values: demo (I want a demo), verify (Agent Identity's Verified browsers), support (support question), upgrade (upgrade/increase limits), evaluation (evaluate computer-use model), other. For a demo request use demo. Select by value, not label.
  • Company email expected. The email field is labeled "COMPANY EMAIL"; free webmail may or may not be accepted by Browserbase's downstream processing — prefer a work-domain address.
  • No anti-bot wall. A bare remote Browserbase session loaded and filled the form cleanly across runs; no captcha, no Akamai/Cloudflare challenge. The pre-run probe reported no antibots, confirmed in testing — do not waste a --verified/--proxies session on this.
  • Fast path: go straight to https://www.browserbase.com/contact. The homepage "Get a demo" link resolves to the same URL, so the homepage hop is unnecessary. Note bare browserbase.com 301-redirects to www.browserbase.com.
  • Prefer ID selectors over snapshot refs. Accessibility-tree refs ([3-26] etc.) renumber between snapshots; the #contactForm-* IDs are stable across loads.
  • WRITE ACTION — do not submit speculatively. Clicking Submit creates a real sales lead. During skill validation the form was filled and verified but never submitted. The Submit button stays enabled; client/server validation is what enforces required fields.

Expected Output

Two outcome shapes depending on whether the caller stops at review or actually submits.

// Filled and verified, paused for human confirmation (default, read-safe)
{
  "success": true,
  "ready_to_submit": true,
  "submitted": false,
  "fields": {
    "firstName": "John",
    "lastName": "Doe",
    "email": "jane.doe@acme.com",
    "jobTitle": "VP of Engineering",
    "companyName": "Acme Corp",
    "helpOption": "demo",
    "project": "AI agents that browse the web to automate research workflows"
  },
  "error_reasoning": null
}
// Submitted (only when the user explicitly asked to send with real details)
{
  "success": true,
  "ready_to_submit": true,
  "submitted": true,
  "confirmation": "<on-page confirmation text / thank-you message>",
  "error_reasoning": null
}
// Could not complete the form (missing/blocked field, page change)
{
  "success": false,
  "ready_to_submit": false,
  "submitted": false,
  "error_reasoning": "e.g. #contactForm-project not found — form markup changed"
}