LLM WikiAccess-protected knowledge portal

WIKI

Remember Data Engineer Assignment — Claude Implementation

AI Summary Purpose Preserve implementation, review, and cross machine resume context for the Claude Code implementation of the Remember & Company Data Engineer take home assignment. Key points User confirmed status on 2026 07 28 the selecte

경로ai/repo-notes/remember-data-engineer-assignment-claude.md
카테고리Repo Note
태그#ai-review #airflow #assignment #claude #crawler #data #engineer #infra #kubernetes #portfolio #remember #repo-note #report #study

# Remember Data Engineer Assignment — Claude Implementation

AI Summary

Purpose:

Code implementation of the Remember & Company Data Engineer take-home assignment.

Key points:

the application is awaiting the next result.

career/클로드이력서/리멤버앤컴퍼니-data-engineer/과제/작업본/.

(2026-08-11): comments only, AST-identical code, same test and run results. Never repackage from it.

the Korean path (macOS NFC/NFD normalization differs per machine).

.env, local Python, or DuckDB CLI is required.

both the 2022 initial load and the 2023 sync.

NULL); value preservation is a documented flag, not the default.

17,087 no-ops / 9,426 deactivations; master 32,687 rows with 23,261 active.

deliverable map and the run instructions. An earlier document-boundary cleanup had moved that rationale out of README, which broke deliverable 3 of the brief.

과제 작업 설명.md was folded into README on the user's instruction to stop splitting the same material across files.

prose, splitting the merge monolith, tightening runtime boundaries, and expanding transaction tests, the final review scored 96/100 with no major blocker.

operations; data profiling owns source evidence; run-result owns execution evidence; ARCHITECTURE holds three rendered Mermaid diagrams and the key definition.

52 entries, 1,670,577 bytes, SHA-256 876bef94d18fe2d2648c88248ccd06060c310389addc9651bbe8892329d3dc96.

re-applies 0755 to up.sh and 0644 elsewhere in the staging copy and asserts both, otherwise the reviewer's ./up.sh fails with permission denied.

from that copy: both target runs SUCCESS, master 32,687, source/master mismatches 0, container tests 107 passed.

Relevant when:

Do not read full document unless:

Linked documents:

Open Questions

as scope the assignment did not ask for. The assignment defines Insert and Update only; the Codex implementation leaves 2022-only rows untouched instead.

extraction. Unresolved with the recruiter. The assignment brief invites questions by mail or chat; sending one was considered and not done because of the deadline.

Details

Resume on another Mac

ASSIGNMENT_DIR=$(dirname "$(find "$HOME/Library/CloudStorage" \
  -name 'REMEMBER_CLAUDE_WORKDIR' -print -quit)")
cd "$ASSIGNMENT_DIR"
bash resume-here.sh            # venv at ~/.venvs/remember-de-assignment, tests, pipeline
bash resume-here.sh --docker    # plus full Docker E2E
cd 작업본 && ./up.sh            # final submission path; Docker only

HANDOFF.md in that directory carries the same instructions plus the expected numbers, the zip rebuild recipe, and the three environment traps below.

The venv is deliberately created outside Google Drive. A venv inside Drive syncs thousands of files and its interpreter paths are not portable between machines anyway. The Drive folder holds source, tests, docs, and the submission zip only — 7 MB total once the regenerable DuckDB file is removed.

Directory layout

career/클로드이력서/리멤버앤컴퍼니-data-engineer/과제/
  REMEMBER_CLAUDE_WORKDIR          ASCII marker for cross-machine path resolution
  resume-here.sh                   bootstrap + verification
  HANDOFF.md                       status, expected values, zip recipe, traps
  과제-원문.pdf                     assignment brief
  김현욱_리멤버앤컴퍼니_DE과제.zip    submission package
  작업본/                           canonical working copy
  주석본/                           annotated study copy (interview prep, not shipped)

Only 작업본/ enters the zip. Everything at the parent level is working material.

Annotated study copy (added 2026-08-11)

주석본/ is a copy of 작업본/ carrying line-by-line Korean comments on the DAG and all 19 include/pipeline/ modules, made for interview walkthroughs. scripts/, sql/, the shell entry points, and tests/ are unannotated. 주석본/주석본-안내.md records the scope and the verification commands, and 주석본/면접리뷰용.md traces the ./up.sh call order in three layers (host script, DAG tasks, apply_master transaction) as Mermaid sequence diagrams, verified to render with mermaid-cli.

Code is unchanged: with SQL -- comments stripped from string literals, all 20 files have an AST identical to 작업본/. Local verification on the annotated copy (no Docker, duckdb 1.5.5 + pytest 8.3.4 in a throwaway venv): pytest tests -q gives 101 passed / 1 skipped, and scripts/run_pipeline.py --fresh --years 2022 2023 reproduces every expected value in the table below, including 8/8 reconciliation on both runs.

Repackaging must always come from 작업본/; 주석본/ never enters the zip.

Expected values (default policy)

20222023
Source rows30,51323,261
Inserted30,5132,174
Updated04,000
Unchanged017,087
Deactivated09,426
Master rows30,51332,687 (23,261 active)
Reconciliation8/88/8

Assignment-rule check (2023 source versus master) returns 0 mismatches. Master address nulls are 2,249; with SYNC_PRESERVE_EXISTING_ON_NULL=true they are 156. If numbers differ, check for a stale SYNC_* environment variable first.

One-take submission path (verified 2026-07-27)

./up.sh destroys only prior generated state, builds the Airflow image, starts PostgreSQL and Airflow, waits for the DAG to register, waits for the 2022 and 2023 ops_sync_run rows to reach SUCCESS, prints task logs and database inspection queries, and exports the finished DuckDB to warehouse/employment_insurance.duckdb. Services remain running for Airflow UI inspection until docker compose down.

Immutable inputs are baked into the image rather than bind-mounted. This fixes an observed Docker Desktop failure where Python imports from the Google Drive File Provider path returned OSError: [Errno 35] Resource deadlock avoided. DuckDB is created in a named volume and copied to the host only after both target runs succeed. The Docker build also normalizes Korean CSV names to NFC; macOS stores them as NFD, which otherwise fails byte-exact lookup inside Linux.

The first live build also exposed that Docker preserved the Google Drive working copy's 0600 mode when copying requirements.txt, then made the layer file root-owned. COPY --chmod=0644 makes the Airflow image user able to install it.

Final technical-lead revi