AI Modeling & Build
After BRD completion, ekai generates production-ready artifacts. The AI MODELING & BUILD tab contains six sub-tabs for each artifact type.
Complete the Capture Requirements step to generate your Business Requirements Document.
Artifact Sub-tabs
| Tab | Content |
|---|---|
| DATA LINEAGE | Visual diagram of data flow |
| DATA CATALOG | Table and column documentation |
| BUSINESS GLOSSARY | Term definitions |
| METRICS/KPIS | Calculated measures with SQL |
| DATA VALIDATION | dbt tests and quality rules |
| DBT PROJECT | Complete dbt project code |
Data Lineage
Visual representation of how data flows from source to output:

Lineage Diagram Elements
Yellow boxes - raw data from warehouse
Green boxes - cleaned/renamed data
Pink boxes - business logic
White boxes - marts and facts
Controls
- Zoom — + / - buttons
- Pan — Click and drag
- Fullscreen — Expand view
- Download — Export as image
Data Catalog
Auto-generated documentation for all tables and columns:

Catalog Entry Example
fct_card_activation
Fact table capturing card activation events and metrics for onboarding analysis. Grain: One row per card issued.
| Column Name | Data Type | Description |
|---|---|---|
| card_id | NUMBER | Primary key - Unique identifier from Worldline |
| customer_id | NUMBER | Foreign key to dim_customers |
| card_type | TEXT | Type of card (Debit, Credit, Prepaid) |
| card_issuance_date | DATE | When the card was issued |
| card_activation_date | DATE | When activated (nullable) |
| activation_lag_days | NUMBER | Days between issuance and activation |
| is_activated | BOOLEAN | Whether card has been activated |
| is_valid_activation | BOOLEAN | Data quality flag |
| customer_segment | TEXT | Customer segment for analysis |
Business Glossary
Standardized term definitions:

Glossary Format
| Term | Definition & Logic |
|---|---|
| Customer 360 View | A complete, unified view of each customer combining all banking relationships—deposits, loans, cards, and interactions—into a single record. |
| Active Relationship | A banking product or account that is currently open and operational. Closed or inactive accounts are not counted. |
| Deposit Balance | Total amount deposited across all active savings and checking accounts, shown in Euros. |
| Outstanding Loan Balance | Total amount owed across all active loans, shown in original loan currency. |
| Card Utilization Rate | Percentage of credit limit currently utilized across all active cards. |
Metrics/KPIs
Calculated measures with SQL formulas:

Metrics Format
| Name | Description | Calculation |
|---|---|---|
| Total Deposit Balance | Sum of all deposit balances (EUR) | SUM(total_deposit_balance_eur) WHERE deposit_account_count > 0 |
| Average Deposit per Customer | Average deposit balance | AVG(total_deposit_balance_eur) WHERE deposit_account_count > 0 |
| Card Utilization Rate | Credit usage percentage | (SUM(outstanding) / SUM(credit_limit)) * 100 |
| Activation Rate | Cards activated percentage | COUNT(activated) / COUNT(total) * 100 |
Data Validation
Quality rules implemented as dbt tests:

Validation Rule Example
1. Grain Validation
| Attribute | Value |
|---|---|
| Rule | One Row Per Customer |
| Category | GRAIN |
| Severity | CRITICAL |
| Test Type | Uniqueness |
| Expected Result | Zero rows returned |
| Failure Action | BLOCK deployment |
Implementation:
SELECT customer_id, COUNT(*) as row_count
FROM mart_customer_360
GROUP BY customer_id
HAVING COUNT(*) > 1
DBT Project
Complete dbt project with all models:

Project Structure
├── README.md
├── dbt_project.yml
├── logs/
├── macros/
├── mart_relations.json
├── models/
│ ├── intermediate/
│ ├── marts/
│ │ └── customer/
│ │ ├── _customer__models.yml
│ │ ├── mart_customer_360.sql
│ │ └── sources.yml
│ └── staging/
├── models_targets.json
├── package-lock.yml
└── packages.yml
Code View
The right panel shows model SQL with syntax highlighting:
models:
- name: mart_customer_360
description: "Single denormalized table containing one row per customer"
tests:
- dbt_utils.equal_rowcount:
compare_model: ref('stg_customers')
columns:
- name: CUSTOMER_ID
description: "Unique identifier for the customer"
tests:
- not_null
- unique
Share with Collaborators
Use the Share button to add team members:

Next Steps
- Execute DBT — Build and run the project
- Publish — Deploy to Snowflake Intelligence