This is a live, 2-hour agentic coding session. You will pick one of two problems, then work on it with an AI agent while you share your screen.
We are evaluating: How you approach a problem, define a plan, ensure quality, and build toward a solution.
What we are NOT evaluating: Your ability to finish or have a perfect solution.
You are free to:
- Ask questions when something is ambiguous
- Make assumptions
- Use the AI agent throughout the session to help you explore and implement your plan
| When | Time | What happens |
|---|---|---|
| Before the day | 5 min | Set up your environment (below). If the check does not print READY, tell your recruiter. |
| 0:00 | 10 min | Intros. Run git pull and the setup check, set the agent key that we send you, and start the agent. |
| 0:10 | 5 min | Read the two problems that your interviewer sends, and pick one. |
| 0:15 | 75 min | Work on the problem, and think out loud. You can take a 5-minute break at any time. |
| 1:30 | 15 min | Walk us through your plan and what you built. |
| 1:45 | 15 min | Two questions from us about how you work. Then your questions for us, about us and the team. |
You have just joined the data engineering team at Waypoint. They sell a directory of every physical business location in the US: coffee shops, gas stations, dentists, and gyms. Delivery apps, mapping companies, and retail analysts pay for it. Other engineering teams at Waypoint build paid features on the data that your team ships. Waypoint does not collect this data itself. It buys data feeds from three providers:
- atlas
- beacon
- cartograph.
At the start of the session, your interviewer sends you the two problems in the chat, as a file. Save it as PROBLEMS.md in the root of this repo, so that your agent can read it too. Then pick one.
You work on your own computer, with your own editor and terminal. Set it up before the session. It takes about 5 minutes.
- git
- uv. uv installs Python 3.14 and every package for you.
- The DuckDB CLI, version 2.0 or later
- Claude Code
git clone https://github.com/crexi-dev/de-interview-exercise.git
cd de-interview-exercise
uv sync
uv run python setup/build_db.py
uv run python setup/check.pyThe last command must print READY. If it prints NOT READY, follow what it lists. If you cannot fix it, tell your recruiter before the session. On macOS and Linux, make setup runs the same three commands.
- The agent. At the start, your interviewer sends you a key in the chat. In the terminal, run
export ANTHROPIC_API_KEY=<key>(in PowerShell,$env:ANTHROPIC_API_KEY="<key>"). Then start Claude Code withclaudein the same terminal. The key works only for this session. - The database. To explore the data, run
duckdb -readonly data/waypoint.duckdbin the terminal. In read-only mode, you, the agent, and dbt can use the database at the same time. - dbt, SQL, or Python. We build our warehouse transformations in dbt. In the session, you can work in dbt, in plain SQL scripts, or in Python jobs.
- dbt. The project in
dbt/has one source per provider (atlas,beacon,cartograph), awaypointsource forcategories, and ahealth_inspectionssource for the OCR output. The sources hold data tests, for example the accepted values ofevent_typefor each provider. dbt writes models todata/dev.duckdb. To build, rundbt buildfrom thedbt/folder. If dbt is new to you,dbt/LEARN_DBT.mdhas a prompt that teaches you and your agent the basics, and a free practice project. - SQL scripts.
sql/README.mdtells you how to write and run plain SQL scripts against the data. They write their tables todata/work.duckdb. - Python. The repo is one uv project. Its environment,
.venv, holds dbt, Jupyter, and your Python jobs. It hasdbt,duckdb,pandas,polars,jupyterlab, andanthropic. Activate it in each terminal (source .venv/bin/activate, or.venv\Scripts\activateon Windows), or putuv runin front of a command. To add a package, runuv add <package>.extract_load/README.mdtells you how to run a job. - Docs.
SCHEMA.mddescribes every table and column, as the providers document them.AGENTS.mdtells the agent how to work with the data and dbt here. - A dev container, if you prefer one.
.devcontainer/builds the same environment in Docker, for VS Code Dev Containers.
You can also use your own docs and web searches.