The multi-client problem
Agencies run the same enrichment workflows across 10, 20, 50 clients. Each client has different provider contracts, different billing, different ICP criteria. When tools bundle clients into a single workspace, billing and API keys can become tangled.
How Deepline handles multi-client operations
Per-client workspaces
Each client gets their own workspace with isolated:
- Provider API keys (their Apollo, their Hunter, their sequencer)
- Postgres database (their enriched records, exportable)
- Billing (provider costs pass through to their account)
Reproducible workflows
Every client campaign is a shell command. Check it into git, change configurations per client, and deploy the same workflow with one Claude Code prompt.
Set up a new workspace for Client X. Paste their Apollo API key. Build a prospect list: 100 CEOs at US SaaS companies with 11-50 employees. Enrich via waterfall. Push to their Instantly campaign.
Claude Code creates the org and deploys:
# Create a new organization in the dashboard at /settings/organizations,
# then switch the CLI to it:
deepline auth switch client-x
deepline enrich --input target-companies.csv --output prospects.csv \
--with-waterfall email \
--with 'apollo=apollo_people_match:...'
deepline enrich --input prospects.csv \
--with '{"alias":"push","tool":"instantly_add_to_campaign","payload":{"campaign_id":"q2-outbound","leads":[{"email":"{{email}}","first_name":"{{first_name}}","last_name":"{{last_name}}"}]}}'
Copy workflows across clients
Copy the same workflow to a new client with one command. Switch workspaces and run. Configurations and API keys are isolated.
Run the same CEO prospecting workflow for Client Y. Use their API keys.
deepline auth switch client-y
deepline enrich --input target-companies.csv --output prospects.csv \
--with-waterfall email \
--with 'apollo=apollo_people_match:...'
Monitor all clients from one view
See run history, credits used, and workflow status across all client workspaces from a single dashboard.
deepline auth orgs
# → client-x
# → client-y
# → client-z
# Per-org credit usage and active workflows are visible in the dashboard at /settings/organizations
Client isolation model
| What | How it works |
|---|---|
| API keys | Stored in client workspace. Never shared across clients. |
| Data | Dedicated Postgres per client. Export, query, or wire a dashboard. |
| Billing | BYOK: client pays providers directly. Managed: credits billed to client workspace. |
| Workflows | Shell commands. Save in git. Hand off when engagement ends. |
Who uses this
| Role | What they do with Deepline |
|---|---|
| Agency founder | Manage enrichment costs across multiple clients |
| Campaign operator | Spin up and tear down client campaigns weekly |
| White-label provider | Keep client data and billing fully isolated |
Cost structure
BYOK mode: Client pays providers directly. You pay $0 platform fee.
Managed credits: $0.10/credit. Bill clients for credits used plus your margin.
Get started
curl -s "https://code.deepline.com/api/v2/cli/install" | bash
deepline auth register
# Create a new organization in the dashboard at /settings/organizations,
# then switch to it: deepline auth switch <org-slug>
Common questions
Frequently Asked Questions
1Can clients see each other's data?+
No. Workspaces are fully isolated. No shared API keys, no shared databases.
2Can I white-label this?+
Yes. Deepline does not appear in client-facing outputs. Shell commands look like your tooling.
3How do I hand off to a client?+
Export the workflow as a shell script. Client can run it themselves or you can deploy it as a scheduled workflow.