Skip to content

Fix where the brief and the exercise data disagree - #6

Merged
santiaro90 merged 1 commit into
mainfrom
close-setup-gaps
Aug 10, 2026
Merged

santiaro90 merged 1 commit into
mainfrom
close-setup-gaps

Conversation

@santiaro90

Copy link
Copy Markdown
Contributor

A dry run through the exercise — fresh clone, Docker up, init.sh, then actually solving both challenges — turned up five places where the brief promises something the repo doesn't contain, and one thing candidates are never told: that they have 60 minutes.

Nothing here makes the exercise easier. Two of the changes make it harder.

What was off, and what changed

Gap Change
Session length never stated 60 minutes, in the intro, and the "you won't finish" line now says so because of it
"thousands/decimal separators" — no grouping separator existed in any amount mo_18 is now "1.050,00 kr". A parser that strips commas produces 1.05000 and fails loudly instead of silently returning the wrong number
"Some real people plausibly exist in both systems" — exactly one exact-match email, nothing to weigh Two cells changed: one Meridian address now matches a TTG account only after case and padding are normalized, and one address is now shared by two people who are obviously not the same person
customer_id described as TTG's identity, but only pages carries it and the money keys on account_id Said plainly, in both the README bullet and sources.yml
bin/ingest mid-session was unannounced, unlike bin/add-partner Announced, in the same shape: your interviewer will run it and ask you to rebuild
sources.yml listed USD as a Meridian currency; no USD order exists Corrected, and stated as a fact about Meridian's trade

Two smaller ones: vendor product names are gone from the source descriptions, since the exercise shouldn't imply anyone's stack; and dbt deps no longer leaves an untracked dbt_packages/ in the candidate's tree mid-session.

What I deliberately didn't do

Explain the trap in bin/ingest. The incremental batches turn the merge log into a chain and re-send a row that already exists. Single-hop resolution silently resolves people to the wrong id, and a duplicate breaks uniqueness. That is the sharpest thing in Challenge 1 and it stays unexplained — the README says the step is coming and sources.yml says the log is "appended to over time, like any other source", which is what a real engineer would get. Working out what that implies is the exercise.

Same reasoning on identity: sources.yml now says an address in both systems is "a hint, not a key", and stops there. The candidate finds the shared address themselves or they don't.

Add rows or tables. The dataset is small enough to read end to end inside the session, which is most of why the exercise works. Three cells changed; nothing grew.

Verified

Loaded the edited data and built a full working solution on top of it — staging, currency conversion off the seed, facts at both grains, identity dimension, tests. 42 nodes green.

  • 1.050,00 kr parses to 1050.00; the naive strip-commas version errors rather than returning 105000.
  • All three identity shapes now appear: the same person twice inside Meridian, a cross-system match that only resolves after normalization, and one address held by two different people.
  • bin/add-partner mid-session plus a rebuild on an untouched tree still picks up the new brand, so Challenge 2's acceptance criterion is unaffected.

A dry run through the exercise surfaced five claims in the README and
sources.yml that the repo doesn't deliver, and one thing candidates are
never told: how long they have.

The data edits are three cells, not new rows. The dataset is small enough
to read in full during the session, and it should stay that way.

- Session length is now stated: 60 minutes.
- A Meridian order carries a real grouping separator, so "thousands/decimal
  separators" is true of the data and not just the brief.
- Email now lines up across the two systems in more than one shape, so
  cross-source identity is a decision rather than a single exact match.
- customer_id is documented as living only on pages; the money keys on
  account_id.
- The mid-session ingest step is announced the way the add-partner step is.
- Vendor names dropped from source descriptions; the exercise shouldn't
  imply a stack.
Copilot AI balanced review requested due to automatic review settings August 5, 2026 23:32

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Aligns the exercise brief with its fixtures and runtime behavior.

Changes:

  • Documents the 60-minute limit and mid-session ingestion.
  • Clarifies identity, currency, and source semantics.
  • Adds representative identity and currency edge cases.

Reviewed changes

Copilot reviewed 4 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
README.md Updates exercise guidance and data examples.
dbt/models/sources.yml Clarifies source semantics and currencies.
data/initial/meridian_orders.csv Adds European grouping separators.
data/initial/meridian_customers.csv Adds cross-system identity edge cases.
.gitignore Ignores generated dbt artifacts.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread dbt/models/sources.yml
description: Stable; correlates to accounts.
- name: customer_id
description: Unstable; may be merged at any time (e.g. Segment Unify). Resolve via identity_merges when building marts.
description: Unstable behavioural id, emitted by the tracker and merged at any time. Only pages carries it — orders and transactions key on account_id. Resolve via identity_merges when building marts.
@santiaro90
santiaro90 marked this pull request as ready for review August 6, 2026 02:12
@santiaro90
santiaro90 merged commit 6f7f8bd into main Aug 10, 2026
4 checks passed
@santiaro90
santiaro90 deleted the close-setup-gaps branch August 19, 2026 16:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants