Skip to content
Marketsources

Sources

Every system we are designed to read, and what is connected.

Sources is the honest register. One card per external system, each stating the same facts in the same order: what it owns, what we would read from it, whether anything may be written back, how often, the freshness budget, the credential kind and where it would live, the authorization boundary, and which projections it would fill.

  • 1 page that answers what is connected
  • 4 things every source needs before it reads
  • 0 credentials this page can display

The problem this solves

What goes wrong when this work lives in spreadsheets, documents and one person's memory.

A dashboard that looks live and is not

A chart drawn from a stale export reads exactly like a chart drawn from a live one. This page is where you find out which you are looking at.

Integration claims nobody can check

A slide says connected to PostHog. The register says what would be read, what is still missing, and who would hold the key.

Two answers to one question

When two systems both hold a fact, somebody picks the one that agrees with them. The register names one owner per kind of truth.

In the app

What it looks like

Captures of Growth-OS itself, rendered with sample data rather than our own records.

The source register, one card per external system.
The source register, one card per external system.
One source card stating what it owns, what it needs and what is missing.
One source card stating what it owns, what it needs and what is missing.

How it works

From an empty record to something you can act on, in the order you do it.

  1. 1

    Read what a source owns

    Each card names the one kind of truth it would be the owner of, so the same fact is not sourced twice from two places.

  2. 2

    Read what it would need

    Credential kind, custody, cadence and freshness budget, in the same order on every card.

  3. 3

    Read what is still missing

    Readiness is declared per source in the type itself, not by display convention, so an entry cannot be compared against connected and still compile.

Highlights

Why it matters

Designed to read, stated as such

Attio, the WISEPIM admin API, PostHog, Mollie, Google Analytics, Search Console, Loops, Sanity, Mintlify and Google Calendar each declare what they would own. Designed to read is not the same as connected, and the card says which it is.

Readiness is a list, not a badge

Each source names what is still missing: an adapter, a tenant connection, an ingestion job and a registered metric, and for several of them a tenant selection as well.

No credential form, no key on screen

Secrets stay on the server in the shared connection store. Sources reports custody, it never holds it, and it never displays a key.

Honest limits

What this does and does not promise

  • No provider was called from this repository against live credentials during development, and every adapter was exercised against fixtures. Read the register as what we are designed to read, and the Sources page in the app as what is actually connected.

  • The page is read only. It has no controls, no filter row and no credential form.

Questions

Frequently asked questions

Do this work in Sources

The page opens on this project's records. The in-app guide describes every field.