What problem does it solve? Building a semantic layer or data catalog demo requires realistic financial data, but real banking data is unavailable and ad-hoc fake data lacks the shared keys, cryptic schemas, and documented anomalies needed to make joins and cataloging meaningful. ## Core Features & Use Cases - Deterministic Silo Generation: Produces creditos, liquidez, and derivados Parquet datasets with a fixed seed (SEED = 20260720) so every make data run yields byte-identical output. - Deliberately Heterogeneous Schemas: Each silo names the same client concept differently (cli_ref, id_cliente, ctpty_cd) while sharing a common client ID pool to enable counterparty joins. - Documented Anomaly Injection: Injects ~0.1% anomalies (negative amounts, impossible dates, exact duplicates) with exact counts logged to data/README.md. - Catalog and User Seeding: Generates 200-400 catalog entries from physical schemas plus ~30 curated tribal notes and 7 Argon2-hashed users via dbmate migrations. - Use Case: Run make data to populate data/silos/*.parquet with millions of reproducible rows, then build and test the semantic layer and data catalog against known, documented data quality issues. ## Quick Start Ask the assistant to write ml/data/generators.py following this skill's rules and run the make data target to produce the seeded Parquet silos.