Structure RevOps by headcount, not by ambition: one generalist first, a systems owner second, then split by job. This guide gives the ladder, then shows how to check it against real peer companies with the LeadOcean API.
TL;DR
- Hire in this order: one RevOps generalist, then a systems admin, then an analyst, then a lead who owns all three.
- Benchmarking takes about 20 minutes. Sizing is free. The peer sample spends about 26 records, well inside the 1,000 on the Free plan.
- Count first, search second. A count costs nothing, so you can test five role definitions before you spend one record.
Prerequisites
- A LeadOcean API key in
$LEADOCEAN_API_KEY(Free plan, no card, at app.leadocean.io). curlandjq.- A rough idea of your company size band and your sales headcount.
Step 1: Pick the structure that fits your size
The structure that works is the one that matches how many revenue people you support. Use this ladder as a starting point. The thresholds are our rule of thumb, not survey data.
| Revenue headcount | Structure | Who owns what |
|---|---|---|
| Under 25 | 1 generalist | Process, CRM, reporting, all of it |
| 25 to 75 | Generalist + systems admin | Admin owns CRM and tooling. Generalist owns process and reports |
| 75 to 200 | Add an analyst | Analyst owns forecasting, pipeline reporting, territory math |
| 200 and up | Lead plus three pods | Lead owns strategy. Pods: systems, analytics, enablement |
Two rules hold at every size. RevOps reports to one revenue leader, not to sales and marketing separately. And the first hire is a doer, not a director.
Write the ladder down as config, so the rest of this guide can check it.
{
"stage": "51-200 employees",
"revenue_headcount": 60,
"planned_revops_roles": ["Revenue Operations Manager", "Sales Operations Analyst", "Marketing Operations Manager"]
}Step 2: Size the market of peer RevOps roles (free)
Count how many people hold a RevOps title at companies your size. The count endpoint is free, so run it as often as you like.
curl -s -G "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
--data-urlencode "count=true" \
--data-urlencode "limit=1" \
--data-urlencode "title=Revenue Operations" \
--data-urlencode "country=US" \
--data-urlencode "employeeRange=51-200" \
| jq '.meta'The same count through the free MCP tool leadocean_count_leads also returns a breakdown by seniority and industry. That breakdown is the useful part: it shows how senior RevOps is at companies of your size.
Step 3: Pull a peer sample
Search the same filters and read job titles. Titles tell you how peers actually name and level the roles.
curl -s -X POST "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{
"title": ["Revenue Operations", "RevOps"],
"country": ["US"],
"employeeRange": ["51-200"],
"limit": 25
}' | jq '.data[].contact_data.contact_current_experiences'This spends 25 records (one per person returned). Each row carries the current role in contact_data.contact_current_experiences and its id at meta.source_ids.person_id. Group the titles by hand. You are looking for the ratio of managers to directors, and whether analyst roles appear at all.
Step 4: Read one career path with enrich
To see how a RevOps leader got there (sales ops, finance, consulting), enrich one profile from your sample. Person enrich returns resume_data: past roles with title, company name and dates, plus education and certifications, each when held.
curl -s -X POST "https://api.leadocean.io/v1/people/enrich" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{"person_id": "PERSON_ID_FROM_STEP_3"}' \
| jq '.resume_data'This costs 1 record. Past employers carry no company ID yet, so match them by name. Read three or four paths and you will see whether your market hires RevOps leads from sales, finance or consulting.
Step 5: Turn the sample into a hiring list
Once your structure is set, export the candidate pool for the one role you need next. Exports take up to 50,000 rows a request. Bulk CSV export is not on Free. On Free, use the search from Step 3 with limit and cursor. On Solo and above, call POST /v1/exports or use the Exports page in the app.
curl -s -X POST "https://api.leadocean.io/v1/people/search" \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "content-type: application/json" \
-d '{"title": ["Sales Operations Analyst"], "country": ["US"], "limit": 100}'Follow meta.nextCursor for the next page. One search pages to 10,000 rows; narrow the filters instead of walking further.
What you get
Free count run on 2026-10-21 through leadocean_count_leads. Filters: title "Revenue Operations" or "RevOps", country US, company size 51-200. The total counts people with a mailable email (verified, catch_all_valid or catch_all), not everyone matching.
total: 1,240 (mailable)
totalAll: 2,759 (no email condition)
distinctCompanies: 1,006
seniority: manager 490 | director 412 | vp 147 | entry 133 | senior 26
industry: Software Development 434 | Technology; Information and Internet 121 | Financial Services 72Read it plainly: at 51 to 200 employees, RevOps is mostly manager and director level, and only 133 people sit at entry level. That supports the ladder in Step 1. Do not open with a junior hire unless you already have a lead.
A second count on 2026-10-21 used the titles "Head of Revenue Operations", "VP Revenue Operations" and "Director of Revenue Operations", country US, any company size. It returned 1,358 mailable people across 1,232 companies (2,467 without the email condition).
The record-level response from Step 3 follows this shape (response shape from the API reference, placeholder values):
{
"success": true,
"data": [
{
"profile_data": { "...": "Jane Doe, headline, location" },
"contact_data": {
"has_email": true,
"has_phone": false,
"email_status": "verified",
"email_type": "work",
"contact_current_experiences": [ { "...": "Revenue Operations Manager at Acme" } ]
},
"meta": { "source_ids": { "person_id": "<person_id>" } }
}
],
"meta": { "count": 25, "nextCursor": "<opaque cursor>" }
}Troubleshooting
| Error | Cause | Fix |
|---|---|---|
| 401 | Missing or wrong x-api-key | Check $LEADOCEAN_API_KEY is exported and sent as the x-api-key header |
| 429 | Above the plan's rate limit (5 a second on Free, 200 on Agency) | Honor Retry-After, or slow the loop |
| 402 | The 1,000 Free records are spent | Count instead of search, or move to Solo at $97 a month |
| Empty results | A bad enum value, such as employeeRange written 51 to 200 | Use exact strings. List them with GET /v1/enums |
| Count looks too small | The MCP count defaults to mailable emails only | Compare with totalAll, or pass an emailStatus filter yourself |
| Export refused | Over 50,000 rows a request or 500,000 a day | Split by country or seniority and run several requests |
FAQ
Who should be the first RevOps hire?
A generalist who has run a CRM and built a pipeline report. Hire a doer who can ship in the first month, not a director who needs a team to be useful.
Should RevOps report to sales or to the CEO?
To one revenue leader: the CRO, or the CEO in a small company. The point of RevOps is a single owner of the funnel, so splitting reporting lines brings back the silos it exists to remove.
When do I split into sales ops, marketing ops and CS ops?
Past about 200 revenue people. Before that, one team with a systems admin and an analyst covers all three. Split when one person is blocking another's queue every week.
Does LeadOcean replace a RevOps tool?
No. It supplies people and company data through an API and an MCP server. It has no rep workspace, sequencer or CRM. To pick a data source, read best B2B data providers for RevOps teams, best email finder tools for RevOps teams and best lead enrichment tools for RevOps teams. Plans are on the pricing page, and more guides are on the blog.
Benchmark your RevOps team against real peers before you hire
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →