Every number has a source.
Open-source data platform where every KPI and AI answer traces back to its dataset, quality score and source.
Revenue, September
€4.82M
+3.1% vs August
- DatasetGold
finance.revenue_monthlyReady for the business - Quality score94/100ExcellentBased on 6 of 6 dimensions
- Validity100
- Completeness97
- Freshness92
- Volume88
- Uniqueness100
- Stability78
Weakest dimension: Stability 78
- Lineage
Bronze: salesforce.opportunitySilver: sales.ordersGold: finance.revenue_monthly
Column
amount_eur: Aggregated,SUM(amount * fx_rate) - SourceSalesforce, loaded into SnowflakeUpdated 2 hours ago
Traceable to its sourceExample data
Works with the warehouse you already have.
SQL warehouses
PostgreSQL
MySQLClickHouse
Snowflake
Amazon Redshift
Databricks
Google BigQuery
Microsoft Fabric
File stores
Amazon S3Google Drive
OneDrive
SharePoint
Tables stay in your warehouse: queries run where the data is.
An AI answer is only as good as the data under it.
The number nobody can explain
Two reports, two revenue figures. The meeting goes on deciding which one is right.
The table that went quiet
A pipeline stopped two days ago. Nobody noticed until a dashboard stayed flat.
The chatbot that sounds sure
It answers fast, from a raw table, and nothing tells you so.
Northstar checks the data before anyone uses it, and keeps the proof next to the number.
How it works
From your tools to a number you can rely on.
Data is collected, becomes governed datasets, then feeds your KPIs, dashboards and Chat. Quality and access apply at every step.
The proof sits next to the number.
A score that cannot hide a problem
Six weighted dimensions, from 0 to 100. A severe problem caps the score, so good results cannot average it away.
Weights
- Validity30
- Completeness20
- Freshness15
- Volume15
- Uniqueness10
- Stability10
Caps
- 59A critical validation rule fails
- 59The primary key has duplicates
- 40The table is empty
- 40The schema changed in a breaking way
Levels
- 80-100Excellent
- 60-79Good
- < 60Needs improvement
Lineage down to the column
From the sources to the gold datasets, and on to the KPIs and dashboards that use them. Check what a change would break before you make it.
- Sources
- Bronze
- Silver
- Gold
- Usages
Answers that show their work
Chat looks in gold datasets first. Each answer lists the datasets, the SQL it ran and the rows returned.
Why did revenue rise in September?
How this answer was built
- Datasets analysed
finance.revenue_monthlyGold- SQL executed
- SELECT month, SUM(amount_eur) …
- 12 rows returned
- 12 rows returned
Not based on a gold dataset. When no gold dataset backs an answer, Chat says so.
The AI proposes. You decide.
Assistants work on your governed datasets, within your rights. Nothing is deployed, applied or accepted without a person.
| Assistant | What it does | What it never does alone |
|---|---|---|
| Chat | Answers questions in plain language | What it never does alone: Change data, or read a dataset you cannot use |
| Ingestion agent | Writes and tests a pipeline that loads a source | What it never does alone: Deploy, or see the credentials you enter |
| Transformation agent | Writes the queries of silver and gold datasets | What it never does alone: Apply, or write the statements that create tables |
| Alert assistant | Prepares an alert from one sentence | What it never does alone: Create the alert without your review |
12 switches let platform administrators turn each AI feature on or off.
Access follows your teams. The AI too.
Organization roles open the features. Team roles open the resources: this dataset, that dashboard. An assistant only reads what you can read.
Who can do whatOpen source
The whole product, on your servers.
Apache 2.0, with no feature held back. Run it with Docker Compose, Helm or Coolify, next to your warehouse. Or let us run it for you.
git clone https://github.com/nathan294/northstar.git
cd northstar/deploy/docker
cp .env.example .env
docker compose -f compose.full.yml up -dfrom northstar_sdk import Client
client = Client() # NORTHSTAR_API_URL, NORTHSTAR_API_KEY
orders = client.datasets.upsert(
location={"schema": "marts", "table": "orders"},
name="Orders",
type="TABLE",
layer="GOLD",
storage_system_slug="warehouse",
)
orders.assign_to_team("sales")
orders.analyze()Every resource can be created from code. Each call respects the integration account's roles and teams.
Put a source behind every number.
Install Northstar on your servers today, or tell us about your data and join Cloud early access.