Every data engineer who works across platforms knows this pain:
You build a clean ingestion layer for one platform. The next project is on another. You rewrite the same logic again.
The intent is always the same — ingest this source, this way, with these rules. Only the runtime changed: Databricks → Snowflake → Fabric → BigQuery.
The usual fix is a generic abstraction that "hides" the platform. But that almost always becomes a lowest common denominator — you lose Auto Loader, Iceberg, Unity Catalog, the very native features you chose the platform for.
So I built ContractForge to try a different idea: define the intent once, let each platform execute it its own native way.






