MarketBase Principles How it's built Ask it GitHub
Free Cross-agent GTM Data Lake

For everything your
CRM won't hold.

Every enrichment, every list, every tag, every score and classification, every signal. Your CRM shouldn't hold these. Neither should your local disk or a folder in Drive.

Store everything in one flexibly-opinionated database, used by all your team members and agents.

Drive it from your agent

/plugin marketplace add marketbase-dev/marketbase
/plugin install marketbase@marketbase

It is a Postgres database, so anything that speaks SQL already works: Cursor, VS Code, n8n, OpenClaw, a Python script, or a teammate in psql.

Bring Your Own Database

PostgresNeonSupabaseRDS

Your keys & secrets

Infisical1PasswordDoppler.env

Data sources

ApolloClayExaCrustdataHunterLeadMagicLinkedInCSV

CRM & Sequencers

HubSpotSalesforceAttioSmartleadInstantlyOutreachLemlist
MarketBase
Free Cross-agent GTM Data Lake

Agent and Automation Frameworks

ClaudeOpenAICodexGeminiCursorHermesOpenClawPiOpenCodeVS Coden8nZapierMakeLangChainCrewAIPython

Design principles

Build one experimentation data lake that knows everything

Everything is saved.

Every enrichment and data upload is cached before it is parsed.

Built-in Provenance.

Every record knows where it came from.

Judgment is versioned.

Every qualification and routing decision remembers its source parameters.

Bring Your Own Database.

You own the data, controlling costs and growing at your own pace.

No more

How it's built

MarketBase is four layers on one Postgres database. Data comes in at the top, decisions go out at the bottom, and every layer between them keeps a record of what it did.

01

Ingest

Every vendor response is cached before it is parsed, keyed on the API, endpoint and params that produced it. A crashed job resumes from cache. A re-run costs nothing.

enrichment_callsenrichment_source_policysource_types
02

Records

People and companies, one row each, however they arrived. A person who shows up as a phone number and later as a LinkedIn profile stays one lead.

leadscompanieslead_identitiescompany_edges
03

Context

What you observed, what you decided, and why. Observations and judgments live in separate tables, so refreshing data never rewrites a decision.

lead_sourcessignalsassertionsprocessorsterritory_policy
04

Activation

Decisions delivered where the work happens: campaigns, exports and saved reports, with outcomes and CRM deal state written back so the next run knows.

campaign_memberslead_conversationscompany_dealssaved_reports

Nine primitives

Everything in MarketBase is one of these. Learn them and you can read any row in the database.

Records

The people and accounts you research.

One row per person and per company, with every handle a person is known by: LinkedIn, email, phone.

leads · companies · lead_identities

Sources

How each lead got here.

Which pull, which filters, which day. A lead found three ways has three sources and still one row.

lead_sources · source_types

Enrichment calls

The receipt for every paid call.

The raw response, its cost and when it was fetched. This is what makes "never pay twice" true.

enrichment_calls

Signals

Observations, never opinions.

What a source said about a lead or company on a given day. Append-only and safe to refresh.

signals

Assertions

Judgments, with a name on them.

Who decided what about whom, under which version of the rules. Qualified, disqualified, a customer, a competitor.

assertions · lead_qualifications

Edges

Company to company.

Customer of, partner of, competes with. Any company, any counterparty, never deleted, only withdrawn.

company_edges

Processors

The logic that wrote it.

Named, versioned classifiers, fetchers and enrichers. Versions are immutable, so old decisions stay explainable.

processors

Policies

Rules, with their reasons.

How long each source stays fresh, and where you sell. Each one carries the evidence it came from.

enrichment_source_policy · territory_policy

Outcomes

What you did, and what happened.

Campaigns, conversations, meetings and open deals. A lead at an account with a live deal is held back automatically.

campaign_members · lead_conversations · company_deals

MarketBase makes go-to-market data sourced, cached, versioned, explainable and replayable.

Ask it the questions nobody can currently answer

Your agent has the whole database. These are real questions, and the answers exist because every row remembers where it came from.

Where did this list actually come from?
1,240 leads, pulled from Apollo on 12 Aug 2026. Filters were headcount 50-500, US only, titles matching "head of support". 318 came from a second pull on 28 Aug with the headcount floor dropped to 20.
Have we already enriched any of these people?
612 of 900 are already enriched, most recently 3 Sep. Enriching the remaining 288 will cost 288 credits. The other 612 are served from cache and cost nothing.
Which message went to which version of this audience?
Audience v1 got messages v1 and v2. Audience v1.1, which added the Series B filter, got v3 only. The 47 leads that appear in both got v2 and v3, and 12 of them replied after v3.
What changed when I tightened the ICP last week?
Qualifier icp_v4 dropped 214 leads that icp_v3 had passed, mostly on the new headcount floor. 31 of those had already been messaged. Both verdicts are still stored, so you can diff or roll back.
Is any of this stale?
1,847 rows were enriched more than 90 days ago. Job titles drift fastest. Re-running keeps the old values, so you can measure how much actually changed before trusting the next run.
Which prompt filled in this column?
Column persona was written by classifier persona_v2 on 19 Aug, using gpt-4o-mini. The prompt is stored with the run, along with the full result for each row, so you can re-run it or fix it and compare.