Declarative Data Platform

The data platformAgents can read

declared, not hand-coded

Declare your sources, your business and your metrics. Daana generates the warehouse tables and transformations, with definitions your team and AI agents can trace from any metric back to its source.

[REQUEST ACCESS]
Need help building your data platform? Free assessment →01 Model02 Generate03 AskScroll ↓︎

The Daana CLI overview film

The hand-written layers of a data platform collapse into two declared files, a model and a mapping. Everything else is generated.

  1. Model your business: entities, their attributes and the relationships between them, declared in YAML.
  2. Generate: daana-cli deploy and daana-cli execute generate the warehouse, and marts are generated from dar specs.
  3. Ask: an agent answers a question about history, reading the definitions from the model.

Model. Generate. Ask.

// MODEL. GENERATE. ASK.
Skip the film ↓︎
// KEY CAPABILITIES

The parts you'd hand‑write,
already handled.

Every warehouse needs these, and every team builds them again. In Daana they come from the model, the same way every time.

  • // 01

    Model once, generate everything

    Declare entities, attributes and relationships in YAML and map your sources to them. Daana generates the tables, a current and a history view per entity, and a view for every relationship. No schema copied across dbt models or stored procedures. Follow the warehouse example →

    daana-cli deploy
  • // 02

    History is first-class, not bolted on

    Mark an attribute with effective_timestamp and every change is kept, with a point-in-time function per entity. No SCD-2 plumbing, no "do we add valid_from this time?"

    effective_timestamp: true
  • // 03

    Multiple IDs are reality, not edge cases

    A customer has an email, a customer number and a partner reference. Daana keeps up to five identifiers per entity and resolves them to one stable key, instead of making you pick the one true key and hack around it later.

    allow_multiple_identifiers: true
  • // 04

    Load strategies you can explain at 3am

    Four ways in: FULL for current state, FULL_LOG for history, INCREMENTAL for rows that change, TRANSACTIONAL for events that never do. Pick one per source and move on. Compare loading strategies →

    FULLFULL_LOGINCREMENTALTRANSACTIONAL
  • // 05

    Merge, don't nuke

    Your model evolves. Merge brings the mappings up to date: new attributes arrive with placeholders, removed ones go, and your transformation expressions, table settings and where clauses stay. A backup is written first.

    daana-cli merge
  • // 06

    Definitions live with the data

    Deploy writes every definition into your own warehouse, next to the data it describes. People and agents read what a field means instead of guessing it.

    daana_metadata

CI/CD without surprises

Check validates the model, mappings, workflow and connections before anything deploys. Generation is deterministic: the same model produces the same SQL, so every pull request shows exactly what will change.

daana-cli check
// MECHANISMS

3-Layered
Architecture

Describe your sources, define your business concepts, and declare your metrics. Daana connects the layers and generates the pipelines. Every layer is a declaration, so the whole platform is something you, and your agents, can read. Why the platform has three layers →

// LINEAGE

Semantic lineage Technical lineage

Connected data. Connected context. Knowing where a field came from is only part of the picture. Daana connects the data path with definitions at every layer, so humans and agents can understand both how data moves and what it means. This is the map an agent walks.

From source to metric, through DAS, DAB and DAR

Illustrative example · subscription lifecycle
  1. DAS · Data contract

    What does the source mean?

    The state the accounts service gave the account. DISABLED, since 2020: blocked by support or billing, no login. CLOSED_BY_USER, since last year: the user closed it in the app.

    account_state_changed

    new_state

    ACTIVE · DISABLED · CLOSED_BY_USER

    Contract field · STRING · REQUIRED

  2. DAB · Business model

    What does the business mean?

    Where the customer's subscription stands. ENDED: no access and no billing, however the account was closed.

    SUBSCRIPTION

    subscription_status

    DISABLED → ENDED

    CLOSED_BY_USER → ENDED

    Mapped from new_state · effective at the source event time

  3. DAR · Metric definition

    What is churn?

    Subscriptions that ended in the month. Each counts once, in the month its status became ENDED.

    fct__subscription_event

    Monthly churn

    Event count · grouped by event month

Ask an agent why churn looks low on a given day, and it walks both lineages back: from the metric's definition to the business's to the source's, checking at every step what each layer means and where its data comes from. How an agent found the root cause in a real standup →

// AGENTS

Talk to your
data platform

One prepared table. A few charts. We've seen that “talk to your data” demo. Here the agent keeps going: asked why a number looks wrong, it walks back through every layer that made it, reading what each one means and where its data comes from, until it finds the one that broke.

[ HUMAN ]

Why is revenue so low on the 4th?

[ AGENT ]

It isn't slow sales. Orders are missing.

Walked back

  1. Checked: DAR Daily revenueDefinition unchanged.
  2. Checked: DAB order_line.order_line_amountThe mapping drops no line.
  3. Checked: DAS sales_ordersorder_date against ingested_at: lost, not late.
  4. Failed: Landing Shop databaseNo orders landed for 6h40m. The connector stalled overnight.

Reload the window; the next normal run repairs the rest.

Illustrative incident · the bookstore demo

No code read.From declarationsto root cause.

// FOR YOUR TEAM AND YOUR AGENTS

That was one walk. The same declarations answer the other questions too:

Understand a metric

Trace a number through its business definition, mapping, and source contract.

Assess a change

Follow the connections to see which business concepts and metrics depend on a source field.

Diagnose a mismatch

Compare the definitions, mappings, and run history to locate what needs correcting.

How Nextory put shared definitions into practice →

// YOUR TURN

Don't take our word for it. Ask your agent.

Give the agent you already use this question about your own platform:

Our revenue looks low for last Tuesday. Walk from the dashboard metric back to the source system. At each step, tell me what the data means and where it comes from, and show me where you found it.

Count how often it had to read code, or guess. With Daana, every one of those answers is a declaration.

Agents can read what Daana is at daana.dev/llms.txt, including the declarations behind the example above.

Why more context alone doesn't stop the guessing →

Request access

Less time reconstructing the platform. More time building and operating it.

Tell us about your data platform and we'll get back to you about next steps.

// 01 ABOUT YOU
Role
Favorite Platform
// 02 ENTER DETAILS
We promise not to spam you.
How we handle your data: Privacy
// FREE DATA PLATFORM ASSESSMENT

Need help building your data platform?

We'll spend time with your data team, understand where you are and where you want to go, and come back with a roadmap. What to build, in what order, and why.

[ Get a free assessment → ]