The Manifest: Week 2

The Weekly · Week 2 · Stream

The Manifest

Next drop Monday Sep 28, 16:00 UTC

Week 2

hosted bydatadriven

Results

next drop

9 scored

27 submissions

first in coral_mesa_9943, 11h 8m

The challenge

You're a data engineer at a video streaming service. Every title is encoded into several quality levels, called renditions, and a feed has logged 1 JSON line per rendition since 2020. Before a launch weekend, the delivery team needs 1 clean row per rendition to decide what to cache near viewers, and the feed is the only record of what was made. Write the code that turns it into that table.

The mess

The feed is 6 years old and nobody owned it. 3 different encoding tools wrote to it in turn, each using its own names for things. When a tool changed, titles were encoded again and the old lines stayed. Quality levels were named by whoever set them up. Lines are written by a logger, not a serializer. A batch goes out again whenever a job is replayed.

Streamed record examplesline 1 of 10
01{
02"title_id": "T-0104553",string
03"variant": "240p",string
04"codec": "h264",string
05"bitrate": 399,number
06"duration": 10186.24,number
07"packaged": "2025-04-09T23:11:50Z"string
08}

1,000,000 messages

Normalized output schema

Click a column for its requirements, or click the bottom of the sheet to see the 10 sample rows to produce.

Notes from the delivery team

  • 1 row per rendition of a title.
  • Latest packaged_at wins for a rendition.
  • A time with no zone is UTC.
  • packager, ingested_at and other feed extras are bookkeeping.
  • Each output logs under its job; the job's close line comes last.

How you're scored

  • +1the right value. A right null counts.
  • 0null where the source held a value. Silence is free.
  • −1a wrong value. Silent corruption costs.
  • −2a row that should not exist: no matching key, or a second row for the same key. The last row for a key is the one scored.
Drops Mon 21 Sep 16:00 UTC · freezes Sun 27 Sep 16:00 UTC · results post at the freeze · next drop Mon 28 Sep 16:00 UTC. Submit as often as you like; the last one counts. Questions go in this week's thread.