Find accounts and people
Lead generation that runs inside your own workspace
Lead generation stops being a vendor you buy from and becomes a table you own. Rows arrive from a sourcing run, columns enrich and score them, and the ones that pass go straight into a sequence.
Most lead generation tools sell you a list and stop there. The expensive part was never the list. It was everything after it: deciding which rows deserve budget, finding a channel that reaches the person, and keeping the whole thing current when a third of it goes stale in a quarter.
Here the list is a hosted table in your own workspace. A sourcing run writes rows, enrichment and scoring columns run on top of them, and each cell keeps its status, provider, cost and error. Rows that clear your filters are enrolled from the same table, so the list and the campaign never drift apart.
Example searches
Ask for it the way you'd say it
Every search below runs on the same hosted Tables, with the cost previewed before anything is spent.
A first list from scratch
find B2B SaaS companies in North America with 10 to 60 employees that sell to engineering teams
Rows land typed, with the lane that produced each one recorded on the row itself.
Narrow a list you inherited
take this csv of 2,000 accounts and drop anything that is not a software company with a live website
An import plus one classification column does the cut, and the rejected rows stay visible.
Buying committee per account
for each of these accounts give me the head of engineering and whoever owns product
Contact rows link back to the account row, so one company never becomes six unrelated leads.
Plays
Three motions you can run this week
Each one is a chain of Oxygen primitives — the same hosted objects your workspace already has, composed.
From an empty table to an enrolled list
A segment you described in one sentence ends the week as contacts in an active sequence.
- 1Create the table, run a sourcing search into it, and read the first twenty rows before going wider.
- 2Add the enrichment and scoring columns, run a sample, then enroll what cleared the bar.
oxygen lead-sourcing planScore against the ICP you already wrote
Qualification stops being a prompt somebody pastes and starts reading one stored definition.
- 1Write the ICP once as workspace knowledge, including the disqualifiers everyone keeps forgetting.
- 2Point the scoring column at it, then promote the accounts that pass onto company records.
oxygen columns addLet the list refill itself
New accounts matching the segment appear without anyone rerunning a query by hand on a Monday.
- 1Bind the sourcing run to the table and arm a cadence, with the per-delivery ceiling approved up front.
- 2Branch on the score and enroll only what clears it. Everything else waits in the table.
oxygen feeds bind
Capabilities
What you get
One table instead of four tools
Sourcing, enrichment, scoring, and enrollment run on the same rows. No export step between them and no second copy of the list to reconcile.
Rows that carry their own history
Each cell an action wrote keeps its status, inputs, outputs, provider, cost, and error, so a field that looks wrong is traceable.
Spend you approve in advance
Preview a run on your own rows, read the estimate, then approve a ceiling. A run cannot grow past the number you agreed to.
Free while you are still building
Tables, manual and formula columns, imports, workflows, and sequence drafts cost nothing. Credits are drawn by enrichment, tool, and AI columns when they actually run on a row.
Boundaries
What Tables does not own
This is Tables, the working surface. A row here is a candidate, not canon: it becomes truth when you promote it onto Records. Cadence, suppression, and reply handling belong to Sequences, and the definition it scores against lives in the Knowledge Graph.
Data sources
What the data actually comes from
Every value lands with its provider and cost recorded on the cell.

Apollo
The named paid alternative on the account pass. It runs managed on our key; connect your own Apollo key on a paid plan and it runs on your quota.

People Data Labs
Firmographic breadth for the opening pass, where size, industry, and geography are the only filters.

Exa
Reaches segments a structured filter cannot express, like companies describing a specific workflow.

Blitz API
Head of the contact chain once the account list is settled and each row needs a person to write to.
Run these on Oxygen's managed credits, or connect your own provider keys and pay the vendor directly — the same columns, the same runs, the same provenance either way. See every integration.
Limits
Where this stops
- Not every filter survives the plan. A segment defined by something no routed lane can express comes back with that filter dropped and the reason named, which is worth reading before the run rather than after it.
- Coverage differs by lane. A firmographic pass, a hiring pass, and a description pass each miss different companies, which is why the same segment is worth asking of more than one.
FAQ
Questions people ask first
Where does the list actually live?
Can I start from a list I already have?
How do I stop a run from overspending?
Do I need a paid plan to build a list?
What happens to rows that do not qualify?
How is this different from a database seat?
Run lead generation that runs inside your own workspace on your own workspace
Sign up, get a working workspace with a one-time credit grant, and run the first play from the web app, the CLI, or your AI assistant over MCP.