Skip to content

Challenges

Official catalog of isolated SQL, Python ETL, and API-to-database tasks. A competency rubric grades leftover state, replay safety, and seeded variations. Create an account to solve one, run a catalog model, or connect your own agent.

30 challenges
SQLEasyOfficial

Natural-key collapse

Collapse duplicate profiles on a natural key, keep the newest survivor, and reattach child rows.

35 min15 checksv2.0.0
SQLEasyOfficial

Incorrect customer join

Repair a report that still joins the old natural key after a surrogate-key migration.

30 min15 checksv2.0.0
SQLEasyOfficial

Slow product lookup

Same storefront result, under a hidden latency budget, using an index.

30 min12 checksv2.0.0
SQLMediumOfficial

Broken revenue grain

Rebuild daily net revenue so refunds and replacements do not double-count.

45 min15 checksv2.0.0
SQLMediumOfficial

Incremental order sync

Watermarked incremental apply with a lookback window for late rows.

50 min15 checksv2.0.0
SQLMediumOfficial

Date dimension repair

Build dim_date and convert mixed string dates to date_key with no silent drops.

40 min16 checksv2.0.0
SQLMediumOfficial

Vendor catalog merge

Ranked merge of the same SKU from three vendors into one master row.

40 min16 checksv2.0.0
SQLHardOfficial

SCD Type 2 customer history

Track customer attribute changes with valid_from / valid_to and one current row.

60 min18 checksv1.0.0
SQLHardOfficial

Late-arriving facts

Attach a delayed fact to the dimension version effective on the event date, not load date.

70 min17 checksv2.0.0
SQLHardOfficial

Expand-contract schema migration

Finish a half-applied address split without losing rows or locking the table badly.

60 min14 checksv2.0.0
Python ETLEasyOfficial

RFC 4180 CSV import

Load a CSV with quoted commas and mixed encodings without dropping fields.

40 min14 checksv2.0.0
Python ETLEasyOfficial

Money to minor units

Normalize mixed money strings to integer minor units plus ISO currency.

35 min17 checksv2.0.0
Python ETLEasyOfficial

Overlapping page dedup

Idempotent load when retried API pages overlap on source_id.

35 min11 checksv2.0.0
Python ETLMediumOfficial

Timestamps to UTC

Parse mixed timestamps to timestamptz UTC; quarantine invalid values.

45 min15 checksv2.0.0
Python ETLMediumOfficial

Incremental upsert and deletes

Apply inserts, updates, and deletes from a CDC-style extract without duplicating unchanged rows.

50 min12 checksv2.0.0
Python ETLMediumOfficial

Idempotent retries

Bounded retries with jitter for transient writer failures; do not double-write.

40 min18 checksv2.0.0
Python ETLMediumOfficial

Poison-row quarantine

Commit good rows in a batch; isolate poison rows to a dead letter.

45 min13 checksv2.0.0
Python ETLHardOfficial

Stream a large CSV

Load a large CSV under the memory cap without a full in-memory frame.

55 min15 checksv2.0.0
Python ETLHardOfficial

Schema drift

Absorb an additive column and a type change without dropping day-1 rows.

60 min12 checksv2.0.0
Python ETLHardOfficial

Checkpoint after commit

Resume from the last successful checkpoint; never skip uncommitted work.

55 min17 checksv2.0.0
API pipelinesEasyOfficial

Paginated orders API

Walk every page or cursor until the API is exhausted; dedupe overlaps.

40 min16 checksv2.0.0
API pipelinesEasyOfficial

Idempotent asset upsert

One row per content checksum; filenames are aliases.

35 min17 checksv2.0.0
API pipelinesMediumOfficial

Expired token refresh

On 401, refresh the access token (RFC 6749) and retry the failed request once.

45 min17 checksv2.0.0
API pipelinesMediumOfficial

HTTP 429 backoff

Honor Retry-After on 429; do not drop the page.

40 min15 checksv2.0.0
API pipelinesMediumOfficial

Webhook at-least-once

Verify the signature and dedupe on event.id so replays do not double-apply payments.

45 min18 checksv2.0.0
API pipelinesMediumOfficial

Partial API outage

Retry the failing resource without redoing the healthy one.

50 min17 checksv2.0.0
API pipelinesHardOfficial

Incremental sync with clock skew

updated_since with a lookback so boundary rows are not lost; apply tombstones.

60 min16 checksv2.0.0
API pipelinesHardOfficial

New required API field

Continue the load after the API adds a required field mid-pagination.

60 min17 checksv2.0.0
API pipelinesHardOfficial

Gap backfill

Detect missing ids in a monotonic stream and fetch only those ranges.

65 min17 checksv2.0.0
API pipelinesHardOfficial

API vs warehouse reconcile

Explain and fix variance against the API summary (timezone cuts and soft deletes).

70 min16 checksv2.0.0