Bringing unstructured data into the Catalog, PDFs, images and documents for AI to read, is a feature of the Growth and Custom plans.
Each stream is one more table to synchronize. Fewer streams, faster sync and lean catalog. Mark what answers a question and turn on the rest when you need it.
Mark the frequency only at the source. The transformations run in a cascade, when the previous step ends, without random execution and without half data.
Each company organizes the layers as it makes sense. What matters is the concept: raw, refined, ready.
| order | value | status | customer | channel |
|---|---|---|---|---|
| a83f | R$ 1,234.50 | approved | Silva Store | |
| b91c | R$ 890.00 | pending | Cafe Aurora |
receita_por_canal tells what it is without opening the table.The layer is convention. What guides consumption is the table having a clear name and being in the expected place.
| Column | Description |
|---|---|
status int |
1 = active, 2 = cancelled, 3 = overdue |
mrr decimal |
Monthly recurring revenue, in BRL |
cliente_id int |
Reference to the customer who owns the subscription |
Enrich via external API, apply an ML model, process free text or nested JSON, and iterative calculations. Rule of thumb: SQL for most, notebook when you need logic or libs.
| channel | month | revenue |
|---|---|---|
| 2026-06 | R$42,000 | |
| 2026-06 | R$31,500 | |
| Organic | 2026-06 | R$ 18,900 |
"Add the approved revenue by channel and month" and MCP writes this query for you.
Query and notebook write to the same Gold. Those who consume it do not know (nor do they need to know) how the table was made.
Don't create a star schema when a wide table resolves. A beautiful model in the diagram is often expensive in practice.
| data_id → dim_data |
client_id → dim_cliente |
product_id → dim_produto |
value |
|---|---|---|---|
| d_031 | c_5521 | p_88 | R$ 1,234 |
| d_031 | c_7702 | p_88 | R$890 |
| date | customer | product | channel | value |
|---|---|---|---|---|
| 06-01 | Silva Store | Pro Plan | R$ 1,234 | |
| 06-01 | Cafe Aurora | Lite Plan | R$890 |
{
"account_id": "c_5521",
"uso_mes": 1842,
"limit": 5000
}
Seller won't open Nekt's Lakehouse. The score calculated in Gold appears directly on the HubSpot card, where it already exists.
The same gold.receita_por_canal that the agent reads feeds the BI dashboard. Nobody recalculates, nobody diverges.
Alert via Slack or email on routines that someone depends on. The cheapest thing is to warn early.
The agent sees exactly what the token user sees. Token Scoped limits to the chosen tables.
| COHORT | M0 | M1 | M2 | M3 |
|---|---|---|---|---|
| Jan | 100 | 72 | 58 | 49 |
| Feb | 100 | 75 | 61 | · |
| Sea | 100 | 78 | · | · |
Churn only counts subscriptions that have already paid at least once. A canceled trial is not churn.
| date | customer | channel | investment | leads |
|---|---|---|---|---|
| 2026-06-01 | Silva Store | Goal | R$320 | 18 |
| 2026-06-01 | Silva Store | R$410 | 22 | |
| 2026-06-01 | Cafe Aurora | Goal | R$ 280 | 15 |
| 2026-06-01 | Cafe Aurora | R$ 190 | 9 |
Prefix or column per customer ensures data never gets mixed up.