Hard facts
What's included
Every workspace gets a real PostgreSQL database. Not a shared multi-tenant store. Not a proprietary data format.
| Attribute | Value |
|---|---|
| Database engine | Neon PostgreSQL (serverless) |
| Included | Free with every workspace |
| Isolation | Dedicated Neon project per tenant |
| Schemas | 5 managed + 1 custom (dl_cache, dl_override, dl_graph, dl_resolved, dl_meta, tenant_custom) |
| SQL access | Direct psql / DBeaver / Metabase / any Postgres client |
| Export fees | $0 (pg_dump, COPY TO, direct query) |
| Data residency | Your Neon project, your data |
| Retention | Unlimited (your database, no auto-deletion) |
| vs Clay | Data locked in Clay platform, no SQL, no database |
| vs Apollo | Data locked in Apollo, limited export credits |
Why it matters
What an included database means for your GTM data
Query your enrichment data with any SQL tool. Connect Metabase, Looker, Grafana, or write raw SQL. No vendor SDK required, no API pagination, no row limits. Your data is a pg_dump away from full portability.
Join enrichment data with CRM exports, analytics tables, or custom datasets. The tenant_custom schema gives you full DDL privileges: create your own tables, indexes, and views alongside your enrichment data.
Your data stays in your dedicated Neon project. Physically isolated compute and storage, no shared multi-tenant database. Delete anytime with standard PostgreSQL tools. No "please contact sales" to export your records.
If you only need one-off lookups piped straight into a CRM or spreadsheet, you may never touch the database directly. The CLI and API return results inline. The database becomes valuable when you build on top of enrichment data over time.
Architecture
Schema architecture
Raw enrichments land in dl_cache, the identity graph links them to resolved entities, manual corrections go in dl_override, and coalesced views surface in dl_resolved.
dl_resolvedCoalesced viewsMerged, deduplicated records from all providers. Query this 90% of the time.
dl_cacheEnrichment cacheRaw responses from every provider call. Every enrichment you have ever run is stored here.
dl_graphIdentity graphCross-provider deduplication. Links enrichment events to resolved person/company entities.
dl_overrideManual overridesHuman corrections that take precedence over cached data in dl_resolved views.
dl_metaMigrations & settingsSchema versioning and tenant configuration. Platform-managed, no manual intervention.
Examples
What you can do with SQL access
Queries the vendor UI never anticipated. No API pagination, no row limits, no export queue.
Find all enriched people at a company
SELECT entity_id, doc->>'full_name' AS name,
doc->>'email' AS email, doc->>'title' AS title
FROM dl_resolved.resolved_people
WHERE doc->>'company_domain' = 'stripe.com'
ORDER BY updated_at DESC;Email verification rate by provider
SELECT doc->>'source_provider' AS provider,
COUNT(*) AS total,
COUNT(*) FILTER (WHERE doc->>'email_status' = 'valid') AS verified,
ROUND(100.0 * COUNT(*) FILTER (WHERE doc->>'email_status' = 'valid') / COUNT(*), 1) AS pct
FROM dl_cache.enrichment_event
GROUP BY 1 ORDER BY pct DESC;Export all resolved contacts to CSV
\copy (
SELECT doc->>'full_name', doc->>'email',
doc->>'company_name', doc->>'title'
FROM dl_resolved.resolved_people
) TO 'contacts.csv' WITH CSV HEADERJoin enrichment data with your own segments
SELECT p.doc->>'full_name' AS name,
p.doc->>'email' AS email,
s.segment, s.score
FROM dl_resolved.resolved_people p
JOIN tenant_custom.account_segments s
ON s.company_entity_id = (p.doc->>'company_entity_id')::uuid
WHERE s.segment = 'enterprise'
ORDER BY s.score DESC;Side-by-side
Data ownership comparison
Where does your enrichment data actually live?
| Feature | Deepline | Clay | Apollo | ZoomInfo |
|---|---|---|---|---|
| Included database | Neon PostgreSQL (dedicated project) | None | None | None |
| Direct SQL access | Any Postgres client (psql, DBeaver, Metabase) | No, UI-only | No, API with rate limits | No, UI + limited API |
| Export cost | $0 (pg_dump, COPY TO) | CSV download only | Export credits (limited per tier) | Export credits (limited per contract) |
| Data isolation | Dedicated Neon project per tenant | Shared platform | Shared platform | Shared platform |
| Custom tables | Full DDL in tenant_custom schema | No | No | No |
| BI tool connection | Direct Postgres connection | No direct connection | No direct connection | No direct connection |
Common questions
FAQ
Is the database really free?
Yes. Every Deepline workspace includes a dedicated Neon PostgreSQL project at no additional cost. There are no storage fees, no export fees, and no per-query charges from Deepline. Neon's serverless architecture scales storage automatically.
Can I connect Metabase, Looker, or Grafana directly?
Yes. Request a read connection URI via the API and configure your BI tool with the host, port, database, username, and password. SSL is required. The dl_resolved views are designed as the primary query surface for reporting.
Is my data shared with other tenants?
No. Each workspace gets a dedicated Neon project with separate compute, separate storage, and separate connection endpoints. There is no row-level security or shared-schema multi-tenancy.
Can I create my own tables?
Yes, in the tenant_custom schema. The override role has full DDL and DML privileges there. Create tables, indexes, functions, and views alongside your enrichment data. The 5 managed schemas are platform-managed and should not be modified directly.
What happens if I leave Deepline?
Run pg_dump against your Neon project and take everything with you. There are no export restrictions, no lock-in period, and no fees. Your data is standard PostgreSQL; it works anywhere Postgres runs.
Try Deepline in 30 seconds
Install the CLI, enrich your first contact, and query the results in your own PostgreSQL database.
curl -s "https://code.deepline.com//api/v2/cli/install" | bash