Intelligent data typemapping, at scale.
Analyze source schemas, map data types across heterogeneous systems, and generate transformation logic, without the 3 a.m. pager.
Live · mapping in action
Types inferred, nullability preserved, precision respected — automatically.
Mapping across
- Postgres
- Snowflake
- BigQuery
- Redshift
- Databricks
- Oracle
Mapping types across systems is where migrations quietly go wrong.
- idUUIDok
- order_totalNUMERIC(12,2)changed
- created_atTIMESTAMPTZok
- metadataJSONBok
- shipping_regionVARCHAR(2)missing
- 01 · drift
Schema drift breaks pipelines at 3 a.m.
A NUMERIC(12,2) becomes NUMERIC(18,4) upstream. Nobody notices until the pager does.
- 02 · scale
Manual type mapping doesn't scale past ten tables.
Spreadsheets of source/target pairs age like milk. Your Monday is now spent re-verifying them.
- 03 · edges
Every migration rediscovers the same edge cases.
Timezone semantics. Unsigned integers. Nullable arrays. We've all paid this tax, more than once.
A complete mapping engine - from schema to transformation.
Four systems that work together: parse, propose, verify, compile. Each is inspectable. None of it is magic.
Schema analysis.
Introspect a warehouse and watch the topology assemble itself - tables, types, constraints, relationships - before a single row moves.
Learn moreAuto-mapping.
Type pairs get scored against a corpus of production migrations. You review a ranked diff, not a blank form.
Learn moreCross-platform.
Postgres, Snowflake, BigQuery, Databricks, Oracle, MySQL - same mapping primitives, dialect-aware under the hood.
Learn more-- snowflake / auto-generated
SELECT
id::STRING AS id,
order_total::NUMBER(18,4) AS order_total,
CONVERT_TIMEZONE('UTC', created_at)
::TIMESTAMP_NTZ AS created_at,
PARSE_JSON(metadata) AS metadata
FROM source.orders;Transformation logic.
Every mapping compiles to reviewable SQL or Python. Switch dialects without rewriting the plan.
Learn moreThree steps. Same abstractions end to end.
Connect.
Point at a database URL or warehouse credential. Read-only. We introspect; we don't mutate.
- ›parsing table: orders
- ›→ 28 columns · 4 indexes
- ›inferred: 24 direct · 4 edge
- ›→ mapping confidence: 97.3%
- ›loading dialect: snowflake
- ›→ ready to emit
Analyze.
Types, constraints, lineage, cardinality — parsed and scored. You see confidence, not black boxes.
CREATE OR REPLACE TABLE target.orders AS
SELECT
id::STRING,
order_total::NUMBER(18,4),
CONVERT_TIMEZONE('UTC', created_at)::TIMESTAMP_NTZ AS created_at,
PARSE_JSON(metadata) AS metadata
FROM source.orders;Transform.
Compile the plan to SQL or Python. Run dry; diff against expected output; promote when green.
See it map.
One Postgres source. Three warehouses. Toggle the target and watch the type projections recompile.
- idUUID→STRING
- customer_idUUID→STRING
- order_totalNUMERIC(18,4)→NUMBER(18,4)
- currencyCHAR(3)→STRING
- metadataJSONB→VARIANT
- is_refundedBOOLEAN→BOOLEAN
- created_atTIMESTAMPTZ→TIMESTAMP_NTZ
-- snowflakeCREATE OR REPLACE TABLE target.orders ASSELECTid::STRING, AS idcustomer_id::STRING, AS customer_idorder_total::NUMBER(18,4), AS order_totalcurrency::STRING, AS currencyPARSE_JSON(metadata), AS metadatais_refunded, AS is_refundedCONVERT_TIMEZONE('UTC', created_at)::TIMESTAMP_NTZ AS created_atFROM source.orders;
Twenty-plus source and target systems. One mapping vocabulary.
Measured, not claimed.
From a 3-week cutover to 1 PR.