Marketing

OpenAI Operator: A Lead Enrichment Agent That Fills Your CRM From a LinkedIn URL

OpenAI Operator: A Lead Enrichment Agent That Fills Your CRM From a LinkedIn URL
Contents

It was 11:40 PM on a Tuesday when I finally closed my laptop. Twelve LinkedIn profiles opened in tabs, half a HubSpot record filled in for each, and a queue of 80 more waiting for the same treatment the next morning.

That was last month. This month, the same list finished itself at 2:00 AM while I slept. Twelve full CRM records, every field populated, every source linked, sitting in the pipeline ready for outreach. The only thing I touched was the prompt.

The difference: OpenAI Operator, OpenAI's browser-driving agent, doing the lead enrichment work that used to eat my evenings.

What Operator Actually Is

OpenAI launched Operator in late January 2025 as a research preview, then rolled it out wider through February. It is a ChatGPT feature that opens its own browser, navigates pages the way you would, and clicks, types, scrolls, and reads until the task is done. Under the hood it runs the Computer-Using Agent (CUA) model, a fine-tune of GPT-4o's vision trained with reinforcement learning on real web interactions.

The practical part: you give it a goal in plain English. It returns when the goal is met, or when it gets stuck and asks you a question. No API (Application Programming Interface) to wire, no code, no RPA (Robotic Process Automation) framework. It opens a Chromium window on OpenAI's servers, you can watch it work, and you can take over with one click if it goes off-track.

It is also a $200/month line item, since it lives inside ChatGPT Pro. So the question is not "is it cool." The question is "where does it pay for itself in the first month." Lead enrichment is one of those places.

The Lead Enrichment Problem (And Why It's Worth $200/Month To Fix)

Most B2B (business-to-business) lead lists you buy, scrape, or generate look like this when they hit your CRM (Customer Relationship Management — the database where you store contact and deal information):

  • Name: "Sarah Chen"
  • Company: "Acme Logistics"
  • Title: (blank)
  • Email: (blank)
  • Phone: (blank)
  • Company size: (blank)
  • Industry: (blank)
  • LinkedIn URL: linkedin.com/in/sarahchen-acme

That is enough to start a conversation in theory. In practice, sales reps skip half these records, the marketing team can't segment properly, and the data decays inside six months because job titles change.

The standard fix is a paid enrichment tool: Apollo, ZoomInfo, Lusha, Clearbit, Clay. They each cost $50–$500/month per seat, they each have gaps in coverage, and they each add another vendor to your stack. For a freelancer or a small marketing team, that line item is the one that gets cut when budgets tighten.

Operator gives you a different path: pay the $200 once, run enrichment as an in-house agent, and own the workflow end-to-end. The trade-off is speed per record (Operator takes 60–90 seconds per profile where Apollo returns instantly), but the data quality and the customization are yours.

The 5-Step Workflow

Here is the workflow I run. Total time: about 90 seconds per lead, batched in groups of 10, with me reviewing every 5th record for quality control.

Step 1 — Prepare the Source List

I keep a Google Sheet with three columns: name, company, LinkedIn URL. The LinkedIn URL is the only column that has to be accurate — Operator will use it as the starting page.

Format the prompt so Operator knows what to do with each row. Something like:

"For each row in this sheet, treat the LinkedIn URL as the source of truth. Open the profile, extract current title, current company, location, and any listed email or website. Then open the company website, find the company size (or 'About' / 'Team' page), the industry, and a generic contact email. Append all of this to the same row. Do not invent values — if a field is missing, write 'not found'."

Drop the sheet into the Operator task. It will read the rows, open a browser, and start.

Step 2 — Let Operator Drive the Browser

This is the part that still feels like science fiction. You watch a Chromium window navigate to a LinkedIn profile, scroll past the "Sign in to view" prompts Operator handles on its own account, and start reading. It clicks "Experience" to expand roles, opens the company link in a new tab, navigates to /about, and reads the team size.

Two things to know about this stage:

  • It is not magic. Operator fails on CAPTCHAs, gets rate-limited on LinkedIn after about 50 profiles in a session, and occasionally misreads dense layouts. That is fine — the workflow is designed for review.
  • It asks for permission at key moments. Before submitting a form, before sending a message, before any action that affects the world outside the browser, Operator pauses and shows you a confirmation. Enrichment is read-only, so it usually does not trigger these. But you stay in control.

Step 3 — Standardize the Output

Raw extraction is messy. "Sr. Marketing Manager" comes back as "Senior Marketing Manager", "Marketing Mgr", and "Sr. Mktg Manager" across three records for the same person. The fix: tell Operator the output schema upfront, in the original prompt.

I use a schema like this:

Name: 
Title: 
Company: 
Location: 
Email:  pattern guess > generic>
Company size: 
Industry: 
Notes: 

The "pick from" list for industry is the secret. It eliminates 80% of the segmentation cleanup you would otherwise do downstream.

Step 4 — Push Into the CRM

Two ways to handle this.

The first is to have Operator do it directly. You give it your CRM URL, your login session, and the navigation steps: "Click Contacts, click Create, fill in the fields from the row, click Save." It works for HubSpot, Pipedrive, Notion-as-CRM, and Airtable. It does not work well for Salesforce Lightning, which has too much state for a vision-based agent to handle reliably.

The second — and the one I prefer for batch work — is to have Operator write the enriched rows back to the original Google Sheet, then run a Make (formerly Integromat) or Zapier automation that reads the sheet and pushes new rows into the CRM. This splits the vision-driven task (Operator) from the API-driven task (Make), and each part is doing what it does best.

If you are not on a paid automation platform, you can have Operator paste the rows into a CSV and import manually. Less elegant, still works.

Step 5 — Review and Hand Off

Operator is not a replacement for judgment. It will sometimes confidently fill in a field that is wrong. The review pass is non-negotiable.

My review rule: read every 5th record in full, skim the rest for obviously broken values (titles in all caps, locations that do not exist, company sizes that are wildly off), then push to outreach. A 20-record batch takes about 10 minutes to review. Compare that to 3+ hours of manual enrichment, and the math is obvious.

What It Can't Do (Yet)

I want to be honest about the limits, because this is the part other posts skip.

  • LinkedIn's rate limits are real. I get through 40–50 profiles per Operator session before LinkedIn throws captchas or soft-blocks. A 200-lead list is 4 sessions, spread across days.
  • Email finding is hit-or-miss. Operator reads the LinkedIn profile and the company site. If the email is not publicly listed, you are back to Hunter.io or a manual guess. Treat Operator's email output as a starting point, not a deliverability guarantee.
  • The $200 Pro subscription is the price of entry. If you only enrich leads once a quarter, the math does not work. This is a daily-use tool, not a one-off.
  • Compliance is on you. Scraping LinkedIn profiles and adding them to a CRM has legal implications depending on your jurisdiction. Operator does not handle GDPR (General Data Protection Regulation — the EU's data privacy law), CCPA (California Consumer Privacy Act), or consent tracking. You do.

The Bigger Pattern

Lead enrichment is the example. The pattern is: any repetitive, browser-based, multi-step workflow that you have been paying a SaaS (Software as a Service) vendor to handle is now a prompt away from being in-house.

By the end of February I had also used Operator to:

  • Pull weekly ad-spend screenshots from 6 client Meta Ads accounts and drop them into a Slack channel
  • Audit 30 competitor landing pages for the same 7-element checklist
  • Fill out 4 affiliate program applications that I had been putting off for months

Each one replaced a $30–$300/month tool, or a task I had outsourced at $15–$25/hour. Operator is not cheap, but it is flexible in a way purpose-built SaaS never will be.

The day I closed the laptop at 11:40 PM and realized there were 80 profiles left to enrich was the day I knew I had been renting the wrong tool. The $200 pays for itself the first time Operator finishes your backlog while you sleep.