Skip to content

My Model Is Fine, The Data Is Not

Data engineering, ML pipelines, labelling and data quality

t/my-model-is-fine

Data engineering, pipelines, labelling, drift, and the training set that quietly rotted.

19 members
8 posts
Created Aug 2026

Community rules

3 rules for t/my-model-is-fine

  1. No scraped personal data

    Do not post datasets built from people who did not agree to be in them.

  2. Bring the detail

    Versions, error text, what you already tried. "It does not work" is not a question anyone can answer.

  3. No drive-by self promotion

    Share your own work when it answers the thread. A link with no context is a advert, and it gets removed.

Discussions

1
  • My Model Is Fine, The Data Is Not

    The main discussion

    Primary

    Nobody has said anything yet. Be the first.

Showing 8 posts.

Posts in t/my-model-is-fine

7

  • Accepted answer

    hi xinyi! my honest view as someone who reviews take-homes at my bank: 1. using it for syntax and checking your English is fine lah. everyone googles pandas syntax, AI is the new google for that. 2. yes, mention it, one line at the end: 'I used ChatGPT for syntax lookups and proofreading. All analysis decisions and code are my own and I can explain them.' this reads as honest and mature, not weak. 3. this one is the important one. don't submit any line you can't explain. before you submit, go through every cell and say out loud why it is there. if you can't, rewrite it your way. what we actually look for: did you check for leakage, did you handle the class imbalance (churn is always imbalanced), did you explain the business meaning. AI won't think about those for you. you can do this! 💪
    1 reply
6

  • Accepted answer

    Small team, I'd do two layers. 1. pandera at ingestion for schema and ranges. It's just Python, it reads like documentation and it fails loudly: import pandera as pa schema = pa.DataFrameSchema({ 'amount_eur': pa.Column(float, pa.Check.in_range(0, 50_000)), 'currency': pa.Column(str, pa.Check.isin(['EUR'])), }) schema.validate(df, lazy=True) 2. dbt tests (not_null, unique, accepted_values, plus a custom one) on the models you already have. For euros to cents specifically, a range check won't catch it if the max is generous. What catches it is a distribution check against history: today's median amount vs the last 30 days. If it moves 10x, fail. That's a 15-line custom test in dbt. GX can do this too, but for 3 people the setup cost is real.
    1 reply

  • Accepted answer

    We ran a pilot of exactly this in Singapore last year. Short answer: it works on a curated subset, never on the raw warehouse. What worked: we built a semantic layer first (about 40 business metrics in dbt, each with one agreed definition, plus descriptions for every column the model is allowed to see). The model writes queries against that layer, not against 600 tables. Accuracy on our test questions went from embarrassing to about 85% on the curated layer. What didn't: anything outside those 40 metrics. And the 15% wrong answers look exactly as confident as the right ones. So the real project is the semantic layer and the definitions. The chatbot is the last 10%.
    1 reply