← Kalyan Venkatesh

StreamLake

A streaming lakehouse for card transactions where every hop checks a data contract and stops the run when the data breaks it.

Try it

Edit a silver.transactions record or trigger a preset breakage, then validate it against the same row assertions the Spark engine runs over 1.85M rows.

Or break one of the checks in the real contract:

How it works

A live map of the pipeline, hop by hop. Moving dots are rows in flight, coloured by whether they cleared the contract.

01System design, the hops in run order

Read top to bottom. Inputs and contracts on the left, the ingest to marts spine in the centre, Iceberg tables and the dashboard on the right, and the Kafka streaming arm at the bottom.

system.blueprint
hover a chip to spotlight its stage
Rows in flight
Quarantined / contract breach
Cleared the contract, advanced
Hop · table · artifact

Notes

Error stops, warn surfaces.

An error breach halts the DAG, so the warehouse keeps serving yesterday's correct data. A warn breach is logged and shown.

Bad rows are quarantined.

Bad transactions (amounts outside $0 to $30k, a card with no hash) would move to silver.transactions_quarantine with the rule that caught them. The run fails only past 10% quarantined, a budget this clean, synthetic feed has never come close to.

1 scan for the whole batch.

Every check compiles to a Spark aggregate, merged into one df.agg. Silver's 14 assertions over 1.85M rows cost about 3.6 seconds.