Define business logic once.
Use everywhere.

Semantic layer and feature platform
unified as one friendly SQL dialect

Sound familiar?

These are common challenges we hear from data teams.
FeatureMesh transforms this complexity into clarity.

"We need to join 5 tables just to know if a customer is active..."

— Data Engineer

"Every team has their own version of 'monthly revenue' calculation..."

— Analytics Lead

"Our ML features are a mess of duplicated pipelines..."

— ML Engineer

Meet FeatureQL

The SQL dialect designed for business logic.
No YAML configs. No Python decorators. No scattered files.
Just consistent, declarative definitions ready for both analytics and production.

Abstracted

Feature expressions are decoupled from storage, optimization, and execution.

Atomic

Operates at the column level (that we call features) rather than at the table level.

f(x)

Functional

Pure-transformations facilitates reusability, collaboration, and testing.

Business ready

Experimentation, growth accounting, point-in-time, simulations, out of the box.

How it actually works

1

Define entities and keys

That's the foundation of semantics.

CREATE FEATURES AS
SELECT 
    customers = entity(),
    customer_id = input(bigint#customers),
    orders = entity(),
    order_id = input(bigint#orders),
;
2

Map features to columns

Each column in your analytics database becomes a source feature.

CREATE FEATURES IN fm.core AS
SELECT 
    customer_data := external_sql(
        `SELECT orders FROM customer_history WHERE customer_id=%customer_id`,
        AS row(orders array(row(
            order_id bigint#orders, 
            date_create timestamp, 
            price decimal(10,2)
        )))
    ),
    customer_ml_batch := external_sql(
        `SELECT churn_risk FROM customer_ml_batch WHERE customer_id=%customer_id`,
        AS row(churn_risk float)
    ),
;
3

Write transformations

Express your business logic as declarative feature transformations.

CREATE FEATURES IN fm.marketing AS 
SELECT
    has_recent_orders := date_diff(
        array_max(fm.core.customer_data[orders][date_create]), 
        date_ref::timestamp, 
        'day'
    ) < 30,
    churn_risk := fm.core.customer_ml_batch[churn_risk],
    lifetime_value := array_sum(fm.core.customer_data[orders][price]),
    show_promocode_offline := not has_recent_orders 
        and lifetime_value > 1000.00 
        and churn_risk > 0.8e0,
;
4

Compute features in batch

Apply the transformation to any set of inputs, hybrid with SQL.

/* SQL */ 
SELECT
    show_promocode_offline, 
    COUNT(1) as num_customers
FROM FEATUREQL(
    SELECT 
        customer_id := bind_sql(SELECT customer_id FROM customers), 
        show_promocode_offline
) 
GROUP BY show_promocode_offline

Painless adoption, zero disruption

Keep what works

Your current analytics stack works fine? Keep it running. Your existing APIs and services? They stay right where they are.
FeatureMesh works alongside your infrastructure, not against it.

Start small, scale smart

DAY
1

Move one piece of code from your backend to FeatureMesh. Test it. See it work.

WEEK
1

Data scientists are writing new features in FeatureQL instead of SQL. No migration needed.

MONTH
1

Gradually port existing business-rule heavy projects as needed. Your backend gets leaner and cleaner.

Risk-free evolution

No big-bang deployments. No risky migrations. Just progressive enhancement of your data capabilities. Move as fast or slow as your comfort allows.

What you'll love

Data scientists

Stop rebuilding features for each model. Access clean, validated features instantly. Focus on modeling, not data plumbing.

Engineers / Data engineers

No more scattered business logic. Clear ownership. Type-safe transformations. And way less code to maintain.

Data analysts / Business teams

Understand exactly how metrics are calculated. Experiment freely. Get the insights you need without waiting for engineering.

Your next competitive advantage

Companies won’t win by just collecting data. They’ll operationalize knowledge.
FeatureMesh transforms every business rule into reusable, composable building blocks you can deploy anywhere.

When AI becomes commodity

Models will be cheap. Your advantage will be intelligence that speaks your business language. FeatureMesh turns business logic into a shared vocabulary your AI understands instantly.

When business moves at AI speed

While others wait weeks for new rules, you’ll adapt in hours. FeatureMesh’s composable features let you build, test, and deploy strategies faster than ever.