Alex Zhouk

Senior Data Engineer at Coinbase · Seattle, WA

  • US citizen
  • Based in Seattle
  • Open to Washington, California, and New York
  • Available to start on offer
  • 10+ years in data roles

Status line from Alex, 2026-10-19; the rest from resume v12 · 2026-10-13.

Quick answers

What the first message usually asks, answered from the resume and from Alex’s own dated statements. Each answer names its source; the technical terms are explained under the career numbers.

Where are you, and would you move?

Based in Seattle. Alex, 2026-10-19

Open to Washington, California, and New York. Alex, 2026-10-19

Remote or in an office?

Willing to be 4-5 days in office. Alex, 2026-10-18

The current role is remote. resume v12, Coinbase record

Do you need visa sponsorship?

US citizen, so no visa sponsorship needed. follows from “US citizen” (Alex, 2026-10-19)

When could you start?

Available to start on offer. Alex, 2026-10-19

What do you do now?

Senior Data Engineer at Coinbase, since Mar 2024, remote. resume v12, Coinbase record

Senior data engineer at Coinbase on dbt, Airflow and Snowflake: the unified staking data model, a semantic layer made LLM-ready with the Claude API, the observability platform behind 20+ KPIs. resume v12, summary

How many years of experience?

10+ years in data roles. resume v12, summary

What do you work with?

Pipelines: dbt Core and Cloud, Airflow, Spark and PySpark, Hive, Databricks, AWS Glue and EMR, GitHub Actions CI/CD resume v12, SKILLS

Warehouses: Snowflake, Redshift, Databricks, Azure Data Lake, Postgres; dimensional modeling (star schemas, slowly changing dimensions), semantic layers, data contracts, freshness SLAs and data quality KPIs resume v12, SKILLS

Languages: SQL, Python (Pandas, PySpark, FastAPI, Streamlit), R resume v12, SKILLS

Education?

University of Washington, Bachelor of Arts, Economics; Minor, Entrepreneurship, Sep 2011 – Dec 2015. GPA 3.5, Dean's List Scholar. resume v12, EDUCATION

What is the project on the resume?

KVMACHINES, independent project (Jan 2026 – Present): Built to test whether agents can run a business on Anthropic's products: one Claude session per department with its own key, memory store and routines; a person's signature on every step that changes something; every output a record people and programs can check. resume v12, KVMACHINES bullet 1

Career numbers

A plain headline for each number, then the resume bullet it is quoted from, verbatim; the bullets are in the Resume view.

  • $18.9BCrypto assets covered by the data model Alex led at Coinbase“a dimensional model across $18.9B in crypto assets on six networks”resume v12, Coinbase bullet 1
  • 1,600+Files converted into LLM-ready metadata by Claude API automation at Coinbase“converted 1,600+ dbt, YAML and SQL files into LLM-ready metadata”resume v12, Coinbase bullet 2
  • 20+Pipeline health and data quality measures watched by the monitoring platform Alex built at Coinbase“monitors 20+ pipeline health and data quality KPIs”resume v12, Coinbase bullet 3
  • $450M+Weekly ad revenue covered by the reporting pipelines Alex built and owned at Amazon“$450M+ in weekly ad revenue, zero SLA misses in 18 months”resume v12, Amazon (Sponsored Products) bullet 1
  • $115MProjected revenue corrected after Alex found and fixed a revenue-pipeline error at TikTok“correcting projected revenue by $115M (+10%)”resume v12, TikTok bullet 2
  • $55M a monthMonthly recurring billing handled by the pipeline Alex owned at Amazon Web Services“$55M a month in recurring billing, zero disputes”resume v12, Amazon Web Services bullet 2
  • +$65MMAnnualized revenue from what Alex’s A/B test launched at Amazon“the A/B test that launched Thematic placement sourcing (+$65MM annualized)”resume v12, Amazon (Sponsored Products) bullet 2
What the technical terms mean (12)
staking data model
staking is locking crypto assets into a blockchain network to help run it, for rewards; a data model is the layout of the tables that record it
semantic layer
the agreed definitions of business metrics and terms that sit between the raw tables and whoever queries them, so every tool counts the same way
LLM-ready
prepared so a large language model (the kind of AI behind Claude) can read it and use it
observability platform
monitoring for data pipelines: whether the data arrives on time, complete and correct
data contracts
written agreements on what a dataset contains and promises, between the team that produces it and the teams that use it
freshness SLAs
an SLA is a service-level agreement, a promised standard; a freshness SLA promises how up to date the data is kept
Claude session per department
Claude is Anthropic’s AI assistant; a session is one running copy of it, here one for each department of the business
Thematic placement sourcing
the name of what the A/B test launched; the resume does not define it further
A/B test
a controlled experiment: two versions shown to different groups and their results compared
slowly changing dimensions
warehouse tables that keep the history of an attribute as it changes, so an old record is read with the values of its time
dimensional model
a warehouse layout with one central table of events or amounts and lookup tables around it (dates, products, customers), the usual shape for reporting
KPIs
key performance indicators: the measures a team tracks

Where next

Resume

resume v12 · 2026-10-13 · text verbatim, except the status line (Alex, 2026-10-19)

Copy the resume as plain text, for your applicant-tracking system
resume_text
ALEX ZHOUK
Seattle, WA | https://www.linkedin.com/in/alexzhouk/ | https://kvkeys.com/#sql | https://kvmachines.com
US citizen. Based in Seattle. Open to Washington, California, and New York. Available to start on offer.

SUMMARY
Senior data engineer at Coinbase on dbt, Airflow and Snowflake: the unified staking data model, a semantic layer made LLM-ready with the Claude API, the observability platform behind 20+ KPIs. Data Engineer titles since 2023 after a Data Scientist role at TikTok and BI and analytics roles at Amazon; 10+ years in data roles. This year, KVMACHINES: an independent project to test whether agents can run a business on Anthropic's products, with a person's signature on every step that changes something (kvkeys.com/#sql).

SKILLS
Pipelines: dbt Core and Cloud, Airflow, Spark and PySpark, Hive, Databricks, AWS Glue and EMR, GitHub Actions CI/CD
Warehouses: Snowflake, Redshift, Databricks, Azure Data Lake, Postgres; dimensional modeling (star schemas, slowly changing dimensions), semantic layers, data contracts, freshness SLAs and data quality KPIs
Languages: SQL, Python (Pandas, PySpark, FastAPI, Streamlit), R
Reporting: Superset, Tableau, Streamlit apps, SQL consoles in the browser (Postgres in the page); executive and cross-functional dashboards
AI-assisted engineering: Claude Code, the Claude API and MCP connectors for pipeline, schema and CI work, with an independent review session before the merge; LLM-ready dbt metadata
Cloud and tooling: AWS, Azure, Docker, GitHub Actions

EXPERIENCE

Senior Data Engineer
Coinbase | Remote | Mar 2024 - Present
- Led the unified staking data model, a dimensional model across $18.9B in crypto assets on six networks, with Product Management, Data Science and leadership, using dbt Core and Cloud, Airflow and Snowflake; executive dashboards in Superset and Tableau.
- Standardized the semantic layer across Coinbase: Python automation on the Claude API converted 1,600+ dbt, YAML and SQL files into LLM-ready metadata in the company's first data contracts rollout, so LLM-based analytics tools query trusted, documented datasets directly.
- Built the org-wide observability platform in Streamlit (Python, SQL) that monitors 20+ pipeline health and data quality KPIs, with automated source freshness tests and schema validation across the warehouse, cutting the time to detect a failure.

Senior Data Engineer
Machina Labs | Chatsworth, CA | Feb 2023 - Mar 2024
- First data engineering hire: built a robotics startup's Databricks warehouse from the ground up, PySpark ELT pipelines on Azure that bring robot telemetry, Salesforce and GraphQL feeds into a medallion lake for 40+ stakeholders, with CI/CD through GitHub Actions.
- Built the FastAPI service over the Databricks APIs that ended direct cluster access for three internal teams; shipped the invoice management app and a bidirectional pricing calculator (Streamlit, PySpark, Docker on Azure) with write-back for Finance and Sales.

Data Scientist, Creator Monetization
TikTok | Los Angeles, CA | Dec 2021 - Feb 2023
- Owned the Creator Monetization data stack end to end: 15+ production tables with dimensional modeling and 50+ Apache Hive SQL pipelines behind dashboards and cross-team analytics, with data contracts between event producers and downstream consumers.
- Found and fixed a systematic error in the Branded Content revenue pipeline through SQL and lineage review, correcting projected revenue by $115M (+10%); built the Instacart add-to-cart ETL and reporting with anomaly detection, alerting and source freshness SLAs.

Business Intelligence Engineer II, Sponsored Products Advertising
Amazon | Seattle, WA | May 2020 - Dec 2021
- Built and owned four Redshift ETL pipelines (80+ tasks) that publish the Weekly Business Review for the Targeting, Optimization, Recommendation and Budget teams: $450M+ in weekly ad revenue, zero SLA misses in 18 months; seven Tableau dashboards.
- Owned the A/B test that launched Thematic placement sourcing (+$65MM annualized) and identified $8MM more in annualized revenue; standardized data models adopted across four teams.

Business Intelligence Engineer II, Private Brands
Amazon | Seattle, WA | Nov 2018 - May 2020
- Automated product metrics in Redshift for the Accelerator program across 11 countries ($800M, 800% year over year), with slowly changing dimension tables for product attribute history; built the placement-level sales dashboard that steered marketing spend.
- Traced sudden sales dips to bad actors ($300k opportunity cost) and shipped a real-time monitoring pipeline with data quality alerting and the takedown dashboard.

Custom Pricing Analyst
Amazon Web Services | Seattle, WA | Oct 2017 - Nov 2018
- Designed and built the Enterprise Support analytical warehouse in Redshift (10M+ rows), a star-schema dimensional model that replaced manual billing workflows.
- Owned the monthly billing pipeline for every AWS Enterprise Support customer: $55M a month in recurring billing, zero disputes; led two projects that added $1M in monthly AWS revenue.

Business Analyst (contract)
Amazon | Seattle, WA | Dec 2016 - Oct 2017
- Built the Redshift pipelines and dashboards for contract-worker onboarding across 40+ countries and set the data governance standards for the HR system integrations; SQL, R and Python tooling for job-code mapping of the global contingent workforce.

Compensation Data Analyst (contract)
Microsoft | Redmond, WA | Sep 2016 - Dec 2016
- R scripts that automated the manual revenue adjustment and bulk territory processes (60+ hours saved a month); quarterly audits of revenue, territories and quota.

Financial Analyst
Booking.com | Bellevue, WA | Jul 2015 - Sep 2015
- Consolidated invoice reporting in SQL and Excel across two offices.

Financial Analyst, Retail
Amazon | Seattle, WA | Sep 2014 - Mar 2015
- Optimized the SQL and automated the refresh of 20 Excel reports behind the Canada Retail weekly business review; customer returns and free replacements analyzed by reason code.

PROJECTS

KVMACHINES, independent project
kvkeys.com/#sql, kvmachines.com | Seattle, WA | Jan 2026 - Present
- Built to test whether agents can run a business on Anthropic's products: one Claude session per department with its own key, memory store and routines; a person's signature on every step that changes something; every output a record people and programs can check.
- Designed the kvkeys data model: every connector, skill and version of the department plugins in one Postgres schema (818 entities, 351 skills, 420 versions), replayed from history, every table and most columns commented, a 20-step CI gate before any merge.
- Shipped kvkeys.com/#sql, Postgres running in the browser as the self-serve SQL console over that schema; built the jobs dataset behind this application: 293,891 postings from 13,750 Greenhouse, Lever and Ashby boards joined to the BLS occupation and employment tables.
- Agents open the pull requests and a separate session reviews them before the merge, under rules I set: 685 merged across 39 repositories from 2 to 13 October 2026.

EDUCATION
University of Washington | Seattle, WA
Bachelor of Arts, Economics; Minor, Entrepreneurship | Sep 2011 - Dec 2015
GPA 3.5, Dean's List Scholar

US citizen. Based in Seattle. Open to Washington, California, and New York. Available to start on offer.

Senior data engineer at Coinbase on dbt, Airflow and Snowflake: the unified staking data model, a semantic layer made LLM-ready with the Claude API, the observability platform behind 20+ KPIs. Data Engineer titles since 2023 after a Data Scientist role at TikTok and BI and analytics roles at Amazon; 10+ years in data roles. This year, KVMACHINES: an independent project to test whether agents can run a business on Anthropic's products, with a person's signature on every step that changes something (kvkeys.com/#sql).

Experience

Senior Data Engineer

Coinbase · Remote

Mar 2024 – Present
  • Led the unified staking data model, a dimensional model across $18.9B in crypto assets on six networks, with Product Management, Data Science and leadership, using dbt Core and Cloud, Airflow and Snowflake; executive dashboards in Superset and Tableau.
  • Standardized the semantic layer across Coinbase: Python automation on the Claude API converted 1,600+ dbt, YAML and SQL files into LLM-ready metadata in the company's first data contracts rollout, so LLM-based analytics tools query trusted, documented datasets directly.
  • Built the org-wide observability platform in Streamlit (Python, SQL) that monitors 20+ pipeline health and data quality KPIs, with automated source freshness tests and schema validation across the warehouse, cutting the time to detect a failure.

Senior Data Engineer

Machina Labs · Chatsworth, CA

Feb 2023 – Mar 2024
  • First data engineering hire: built a robotics startup's Databricks warehouse from the ground up, PySpark ELT pipelines on Azure that bring robot telemetry, Salesforce and GraphQL feeds into a medallion lake for 40+ stakeholders, with CI/CD through GitHub Actions.
  • Built the FastAPI service over the Databricks APIs that ended direct cluster access for three internal teams; shipped the invoice management app and a bidirectional pricing calculator (Streamlit, PySpark, Docker on Azure) with write-back for Finance and Sales.

Data Scientist, Creator Monetization

TikTok · Los Angeles, CA

Dec 2021 – Feb 2023
  • Owned the Creator Monetization data stack end to end: 15+ production tables with dimensional modeling and 50+ Apache Hive SQL pipelines behind dashboards and cross-team analytics, with data contracts between event producers and downstream consumers.
  • Found and fixed a systematic error in the Branded Content revenue pipeline through SQL and lineage review, correcting projected revenue by $115M (+10%); built the Instacart add-to-cart ETL and reporting with anomaly detection, alerting and source freshness SLAs.

Business Intelligence Engineer II, Sponsored Products Advertising

Amazon · Seattle, WA

May 2020 – Dec 2021
  • Built and owned four Redshift ETL pipelines (80+ tasks) that publish the Weekly Business Review for the Targeting, Optimization, Recommendation and Budget teams: $450M+ in weekly ad revenue, zero SLA misses in 18 months; seven Tableau dashboards.
  • Owned the A/B test that launched Thematic placement sourcing (+$65MM annualized) and identified $8MM more in annualized revenue; standardized data models adopted across four teams.

Business Intelligence Engineer II, Private Brands

Amazon · Seattle, WA

Nov 2018 – May 2020
  • Automated product metrics in Redshift for the Accelerator program across 11 countries ($800M, 800% year over year), with slowly changing dimension tables for product attribute history; built the placement-level sales dashboard that steered marketing spend.
  • Traced sudden sales dips to bad actors ($300k opportunity cost) and shipped a real-time monitoring pipeline with data quality alerting and the takedown dashboard.

Custom Pricing Analyst

Amazon Web Services · Seattle, WA

Oct 2017 – Nov 2018
  • Designed and built the Enterprise Support analytical warehouse in Redshift (10M+ rows), a star-schema dimensional model that replaced manual billing workflows.
  • Owned the monthly billing pipeline for every AWS Enterprise Support customer: $55M a month in recurring billing, zero disputes; led two projects that added $1M in monthly AWS revenue.

Business Analyst (contract)

Amazon · Seattle, WA

Dec 2016 – Oct 2017
  • Built the Redshift pipelines and dashboards for contract-worker onboarding across 40+ countries and set the data governance standards for the HR system integrations; SQL, R and Python tooling for job-code mapping of the global contingent workforce.

Compensation Data Analyst (contract)

Microsoft · Redmond, WA

Sep 2016 – Dec 2016
  • R scripts that automated the manual revenue adjustment and bulk territory processes (60+ hours saved a month); quarterly audits of revenue, territories and quota.

Financial Analyst

Booking.com · Bellevue, WA

Jul 2015 – Sep 2015
  • Consolidated invoice reporting in SQL and Excel across two offices.

Financial Analyst, Retail

Amazon · Seattle, WA

Sep 2014 – Mar 2015
  • Optimized the SQL and automated the refresh of 20 Excel reports behind the Canada Retail weekly business review; customer returns and free replacements analyzed by reason code.

Projects

KVMACHINES, independent project

kvkeys.com/#sql, kvmachines.com · Seattle, WA

Jan 2026 – Present
  • Built to test whether agents can run a business on Anthropic's products: one Claude session per department with its own key, memory store and routines; a person's signature on every step that changes something; every output a record people and programs can check.
  • Designed the kvkeys data model: every connector, skill and version of the department plugins in one Postgres schema (818 entities, 351 skills, 420 versions), replayed from history, every table and most columns commented, a 20-step CI gate before any merge.
  • Shipped kvkeys.com/#sql, Postgres running in the browser as the self-serve SQL console over that schema; built the jobs dataset behind this application: 293,891 postings from 13,750 Greenhouse, Lever and Ashby boards joined to the BLS occupation and employment tables.
  • Agents open the pull requests and a separate session reviews them before the merge, under rules I set: 685 merged across 39 repositories from 2 to 13 October 2026.

Skills

Pipelines
dbt Core and Cloud, Airflow, Spark and PySpark, Hive, Databricks, AWS Glue and EMR, GitHub Actions CI/CD
Warehouses
Snowflake, Redshift, Databricks, Azure Data Lake, Postgres; dimensional modeling (star schemas, slowly changing dimensions), semantic layers, data contracts, freshness SLAs and data quality KPIs
Languages
SQL, Python (Pandas, PySpark, FastAPI, Streamlit), R
Reporting
Superset, Tableau, Streamlit apps, SQL consoles in the browser (Postgres in the page); executive and cross-functional dashboards
AI-assisted engineering
Claude Code, the Claude API and MCP connectors for pipeline, schema and CI work, with an independent review session before the merge; LLM-ready dbt metadata
Cloud and tooling
AWS, Azure, Docker, GitHub Actions

Education

University of Washington

Bachelor of Arts, Economics; Minor, Entrepreneurship · Seattle, WA

Sep 2011 – Dec 2015

GPA 3.5, Dean's List Scholar

How this works

This page is one resume record, two public datasets (postings fetched from three job boards for the bench, and one probe per board for the company index) and what is computed from them, in order. Each step names its inputs and outputs, and each is checkable on this page: the formats, the bench and the SQL console show their own evidence.

  1. 1 One resume record

    Input
    A text file of facts, one key -> value line each, one block per record: the candidate, every role, the project, the skills, the education. Resume v12 of 2026-10-13.
    Output
    resume.json: 1 candidate, 10 roles, 1 project, 6 skill rows and 1 education row, text verbatim. The email address and phone number are left out of the record on purpose: LinkedIn is the one contact.
    Check it
    The Resume view is that record rendered; the career numbers on the overview are checked at build time against the bullets they quote. Resume →
  2. 2 Three ATS formats, generated from the vendor docs

    Input
    The record, plus the public API docs of each applicant-tracking system: the Greenhouse Job Board API (applications, jobs, education lookups), the Lever Postings API README and the Ashby public job-posting API page.
    Output
    5 payloads from one generator: a Greenhouse application and the resume as a Greenhouse job post, a Lever application and the resume as a Lever posting, the resume as an Ashby job. Each block names the doc section every field follows and the record field it comes from.
    Check it
    The observed comparison next to the Lever block: what Lever’s own resume parser extracted from the PDF on 2026-10-18 next to the generated value (two links came back as http without www or the trailing slash, the third link was dropped, the phone came back as digits only). Ashby’s form field paths were read from a live posting on 2026-10-19. ATS formats →
  3. 3 The bench

    Input
    Postings from three public boards, fetched as JSON: Anthropic on Greenhouse, OpenAI on Ashby, Spotify on Lever. The resume as plain text: the record’s own resume_text (the build checks the two are equal, the contact line and the status line aside). A vocabulary of 64 terms with labels (dbt, Airflow, data modeling, “N+ years”, and so on). Adapters that map each vendor’s section headings to the parser’s five sections (about, responsibility, must, nice, stop); text before the first mapped heading is marked intro and skipped; the heading map is shown on every role.
    Output
    11 roles scored, 5 left out with the reason. Per role: a 0–1 score (the mean of the bullet scores weighted must 1 / responsibility 0.75 / nice 0.5), counts of covered, partial and missing requirements, the must-haves covered, the terms hit and missed, and up to six excerpts (missing must-haves first), each with the terms it matched.
    Check it
    Every number is on the Bench view with its posting linked; the method card lists what the method does not measure. Bench →
  4. 4 The company index

    Input
    A registry of 13,750 board slugs (carried over from earlier crawls of the same vendors, plus Alex’s own list of AI companies), and the public board APIs of Greenhouse, Lever and Ashby, probed once per slug on 2026-10-19: does the board answer, and with how many postings.
    Output
    13,750 slugs with the ATS, the company name recorded in the registry (not the board’s answer), liveness (live, empty, dead) as of that capture, open reqs on the live boards (293,994), the probe day, and a flag for sandbox, test and demo slugs (25).
    Check it
    The Company index view: the method in prose, search, filters and the summary by ATS. The first 50 rows are in the page; the full index (boards.json, served beside the page) loads when the view opens. Company index →
  5. 5 SQL in the browser

    Input
    schema.sql (19 tables, each commented) and one JSON file per table (<table>.json, served beside the page), written by the build from the same data the other views render. PGlite 0.5.8, Postgres compiled to WebAssembly, served beside the page as three files (12.4 MB).
    Output
    A console with 10 preset queries: career numbers with their sources, the experience timeline, the ATS field maps, bench scores and gaps, boards by ATS and liveness, a slug lookup.
    Check it
    What loads when: no engine file and no table file is requested until a click. The full company index (boards.json, served beside the page) loads when the Company index view opens; the engine and every table file load when Start Postgres is pressed. The build checks that no such request sits outside those two handlers. SQL console →

What to change to make it yours

The owner’s facts live in a few named constants and three data files; everything else on the page is derived from them.

  • Constants in the generator. STATUS and STATUS_SOURCE (the status line, one sentence per chip, and who said it when), OPEN_TO (the states that line names), OFFICE (the office-days statement and its date), WITHHELD (the placeholders that stand in for the email, phone and resume file in every payload), RESUME_VERSION and SITE_URL.
  • Constants in the renderer. The KPIS list: for each career number its verbatim fragment, the bullet it lives in and a plain headline (a fragment that is not in its bullet drops the tile and fails the build); the GLOSSARY of plain-words definitions; the BENCH_PLAN dates.
  • Data files. resume.kv → resume.json through tools/prepare-data.mjs --resume; boards.jsonl → boards.json (--boards); the bench’s output → bench.json (--bench).
  • What is readable here, and what is not. The renderer (render.js) and the SQL console (console.js) are inline in this page’s source, as served. The generator, the build, the data preparation and the bench scripts are not published on this page: it describes them and shows their outputs.

What you need to run this yourself

  • Your resume as a record. A plain text file of key -> value facts, blank line between records, so one script can build every format from it and a check can prove a number is quoted, not retyped. Keep the email address, phone number and street address out of the record, so no output can leak them.
  • The vendor docs. Each applicant-tracking system documents its job-board or postings API publicly (the ATS formats view links the pages this page follows). Download the pages you follow and name the section next to every field you fill, so a reviewer can trace a field without you.
  • Node 20 or later. The generator, the renderer and the build are plain Node scripts with no packages. The build is one script run: it rebuilds the page and fails on any check that does not pass (an email address or phone number, a missing source, a number that is not verbatim, an engine file requested too early). Those scripts are not on this page; what you would write is described above.
  • Python 3 for the bench. A parser that finds the sections of a posting by heading, a vocabulary file of the terms you care about, an evaluator that scores each requirement bullet, and two adapters that turn Ashby and Lever postings into the shape the parser reads. The postings come from the boards’ public JSON endpoints; no key is needed to read them.
  • The board index. The same three public APIs answer for any slug, so a list of slugs plus one probe each gives you liveness and open reqs. Record the capture date and show it; boards move.
  • PGlite. The npm package ships Postgres as WebAssembly: two .wasm files and a filesystem bundle. Serve them beside the page, verify their checksums at build time, and load them only on a click. The page imports the small JavaScript wrapper from a CDN and nothing else.
  • A static host that serves byte ranges. This page runs on one Cloudflare Worker with static assets (a few kilobytes of code: cache headers, byte ranges, security headers). The same HTML, with the database and engine files published beside it, runs as a claude.ai artifact.

Honest limits

  • The bench measures vocabulary overlap, with one person’s 64-term list, against eleven postings at three companies. It says which words a posting uses that the resume does not; it does not say whether the candidate can do the job.
  • Postings move. The Anthropic roles were scored on 2026-10-13 and not re-run; by 2026-10-19, 1 of the 4 roles scored then (“Data Engineer, Safeguards”) had closed on the board, and 1 posting on the board (“Recruiting Analytics Data Engineer”) was never scored. The OpenAI and Spotify postings were fetched and scored on 2026-10-19. The capture dates are on every card and the index says liveness is as of 2026-10-19, not today.
  • The generated payloads are shaped by the docs, not accepted by a live board: the request lines marked illustrative use a board name that does not exist, and a candidate has no API key for a Greenhouse board (the hosted form is the submission path).
  • Lever’s parser was observed on two hosted forms with one PDF; Ashby’s resume autofill was never run, so there is no parsed result to compare for it.
  • There is no email address, phone number or resume file on this page, not even inside the payloads: those fields show placeholders such as {email}. The SQL console runs in memory and sends nothing anywhere.

One record, three ATS formats

For engineers: the resume record mapped into the payloads three applicant-tracking systems document. Recruiters can skip this view; the resume itself is in the Resume view.

The resume record, mapped by one generator into the payload each applicant-tracking system documents: five outputs for three vendors. Two are application payloads (what a careers page or the hosted form sends; the API key on the request is the employer’s), three are posting shapes (the resume in the JSON each board publishes jobs in, to compare field names). Field names follow the vendor docs named and linked on each block; values marked “observed” were read from live forms and parsers, with the date. The URLs marked illustrative use alexzhouk as a board name that does not exist.

Greenhouse

Greenhouse Job Board API: submit an application

What a careers page or the hosted application form sends to the employer’s board for this candidate. The credential on the request is the employer’s API key, never the candidate’s. Here: HTTP Basic with the employer’s Job Board API key.

follows _applications.md · Greenhouse Job Board API: Applications

POST https://boards-api.greenhouse.io/v1/boards/{board_token}/jobs/{id} · application/json · HTTP Basic, the employer's Job Board API key (a candidate has none: the hosted form is the submission path)

greenhouse.application
{
  "first_name": "Alex",
  "last_name": "Zhouk",
  "email": "{email}",
  "phone": "{phone}",
  "country_short_name": "US",
  "resume_text": "ALEX ZHOUK\nSeattle, WA | https://www.linkedin.com/in/alexzhouk/ | https://kvkeys.com/#sql | https://kvmachines.com\nUS citizen. Based in Seattle. Open to Washington, California, and New York. Available to start on offer.\n\nSUMMARY\nSenior data engineer at Coinbase on dbt, Airflow and Snowflake: the unified staking data model, a semantic layer made LLM-ready with the Claude API, the observability platform behind 20+ KPIs. Data Engineer titles since 2023 after a Data Scientist role at TikTok and BI and analytics roles at Amazon; 10+ years in data roles. This year, KVMACHINES: an independent project to test whether agents can run a business on Anthropic's products, with a person's signature on every step that changes something (kvkeys.com/#sql).\n\nSKILLS\nPipelines: dbt Core and Cloud, Airflow, Spark and PySpark, Hive, Databricks, AWS Glue and EMR, GitHub Actions CI/CD\nWarehouses: Snowflake, Redshift, Databricks, Azure Data Lake, Postgres; dimensional modeling (star schemas, slowly changing dimensions), semantic layers, data contracts, freshness SLAs and data quality KPIs\nLanguages: SQL, Python (Pandas, PySpark, FastAPI, Streamlit), R\nReporting: Superset, Tableau, Streamlit apps, SQL consoles in the browser (Postgres in the page); executive and cross-functional dashboards\nAI-assisted engineering: Claude Code, the Claude API and MCP connectors for pipeline, schema and CI work, with an independent review session before the merge; LLM-ready dbt metadata\nCloud and tooling: AWS, Azure, Docker, GitHub Actions\n\nEXPERIENCE\n\nSenior Data Engineer\nCoinbase | Remote | Mar 2024 - Present\n- Led the unified staking data model, a dimensional model across $18.9B in crypto assets on six networks, with Product Management, Data Science and leadership, using dbt Core and Cloud, Airflow and Snowflake; executive dashboards in Superset and Tableau.\n- Standardized the semantic layer across Coinbase: Python automation on the Claude API converted 1,600+ dbt, YAML and SQL files into LLM-ready metadata in the company's first data contracts rollout, so LLM-based analytics tools query trusted, documented datasets directly.\n- Built the org-wide observability platform in Streamlit (Python, SQL) that monitors 20+ pipeline health and data quality KPIs, with automated source freshness tests and schema validation across the warehouse, cutting the time to detect a failure.\n\nSenior Data Engineer\nMachina Labs | Chatsworth, CA | Feb 2023 - Mar 2024\n- First data engineering hire: built a robotics startup's Databricks warehouse from the ground up, PySpark ELT pipelines on Azure that bring robot telemetry, Salesforce and GraphQL feeds into a medallion lake for 40+ stakeholders, with CI/CD through GitHub Actions.\n- Built the FastAPI service over the Databricks APIs that ended direct cluster access for three internal teams; shipped the invoice management app and a bidirectional pricing calculator (Streamlit, PySpark, Docker on Azure) with write-back for Finance and Sales.\n\nData Scientist, Creator Monetization\nTikTok | Los Angeles, CA | Dec 2021 - Feb 2023\n- Owned the Creator Monetization data stack end to end: 15+ production tables with dimensional modeling and 50+ Apache Hive SQL pipelines behind dashboards and cross-team analytics, with data contracts between event producers and downstream consumers.\n- Found and fixed a systematic error in the Branded Content revenue pipeline through SQL and lineage review, correcting projected revenue by $115M (+10%); built the Instacart add-to-cart ETL and reporting with anomaly detection, alerting and source freshness SLAs.\n\nBusiness Intelligence Engineer II, Sponsored Products Advertising\nAmazon | Seattle, WA | May 2020 - Dec 2021\n- Built and owned four Redshift ETL pipelines (80+ tasks) that publish the Weekly Business Review for the Targeting, Optimization, Recommendation and Budget teams: $450M+ in weekly ad revenue, zero SLA misses in 18 months; seven Tableau dashboards.\n- Owned the A/B test that launched Thematic placement sourcing (+$65MM annualized) and identified $8MM more in annualized revenue; standardized data models adopted across four teams.\n\nBusiness Intelligence Engineer II, Private Brands\nAmazon | Seattle, WA | Nov 2018 - May 2020\n- Automated product metrics in Redshift for the Accelerator program across 11 countries ($800M, 800% year over year), with slowly changing dimension tables for product attribute history; built the placement-level sales dashboard that steered marketing spend.\n- Traced sudden sales dips to bad actors ($300k opportunity cost) and shipped a real-time monitoring pipeline with data quality alerting and the takedown dashboard.\n\nCustom Pricing Analyst\nAmazon Web Services | Seattle, WA | Oct 2017 - Nov 2018\n- Designed and built the Enterprise Support analytical warehouse in Redshift (10M+ rows), a star-schema dimensional model that replaced manual billing workflows.\n- Owned the monthly billing pipeline for every AWS Enterprise Support customer: $55M a month in recurring billing, zero disputes; led two projects that added $1M in monthly AWS revenue.\n\nBusiness Analyst (contract)\nAmazon | Seattle, WA | Dec 2016 - Oct 2017\n- Built the Redshift pipelines and dashboards for contract-worker onboarding across 40+ countries and set the data governance standards for the HR system integrations; SQL, R and Python tooling for job-code mapping of the global contingent workforce.\n\nCompensation Data Analyst (contract)\nMicrosoft | Redmond, WA | Sep 2016 - Dec 2016\n- R scripts that automated the manual revenue adjustment and bulk territory processes (60+ hours saved a month); quarterly audits of revenue, territories and quota.\n\nFinancial Analyst\nBooking.com | Bellevue, WA | Jul 2015 - Sep 2015\n- Consolidated invoice reporting in SQL and Excel across two offices.\n\nFinancial Analyst, Retail\nAmazon | Seattle, WA | Sep 2014 - Mar 2015\n- Optimized the SQL and automated the refresh of 20 Excel reports behind the Canada Retail weekly business review; customer returns and free replacements analyzed by reason code.\n\nPROJECTS\n\nKVMACHINES, independent project\nkvkeys.com/#sql, kvmachines.com | Seattle, WA | Jan 2026 - Present\n- Built to test whether agents can run a business on Anthropic's products: one Claude session per department with its own key, memory store and routines; a person's signature on every step that changes something; every output a record people and programs can check.\n- Designed the kvkeys data model: every connector, skill and version of the department plugins in one Postgres schema (818 entities, 351 skills, 420 versions), replayed from history, every table and most columns commented, a 20-step CI gate before any merge.\n- Shipped kvkeys.com/#sql, Postgres running in the browser as the self-serve SQL console over that schema; built the jobs dataset behind this application: 293,891 postings from 13,750 Greenhouse, Lever and Ashby boards joined to the BLS occupation and employment tables.\n- Agents open the pull requests and a separate session reviews them before the merge, under rules I set: 685 merged across 39 repositories from 2 to 13 October 2026.\n\nEDUCATION\nUniversity of Washington | Seattle, WA\nBachelor of Arts, Economics; Minor, Entrepreneurship | Sep 2011 - Dec 2015\nGPA 3.5, Dean's List Scholar\n",
  "employments": [
    {
      "company_name": "Coinbase",
      "title": "Senior Data Engineer",
      "start_date": {
        "month": "3",
        "year": "2024"
      },
      "current": "true"
    },
    {
      "company_name": "Machina Labs",
      "title": "Senior Data Engineer",
      "start_date": {
        "month": "2",
        "year": "2023"
      },
      "end_date": {
        "month": "3",
        "year": "2024"
      },
      "current": "false"
    },
    {
      "company_name": "TikTok",
      "title": "Data Scientist, Creator Monetization",
      "start_date": {
        "month": "12",
        "year": "2021"
      },
      "end_date": {
        "month": "2",
        "year": "2023"
      },
      "current": "false"
    },
    {
      "company_name": "Amazon",
      "title": "Business Intelligence Engineer II, Sponsored Products Advertising",
      "start_date": {
        "month": "5",
        "year": "2020"
      },
      "end_date": {
        "month": "12",
        "year": "2021"
      },
      "current": "false"
    },
    {
      "company_name": "Amazon",
      "title": "Business Intelligence Engineer II, Private Brands",
      "start_date": {
        "month": "11",
        "year": "2018"
      },
      "end_date": {
        "month": "5",
        "year": "2020"
      },
      "current": "false"
    },
    {
      "company_name": "Amazon Web Services",
      "title": "Custom Pricing Analyst",
      "start_date": {
        "month": "10",
        "year": "2017"
      },
      "end_date": {
        "month": "11",
        "year": "2018"
      },
      "current": "false"
    },
    {
      "company_name": "Amazon",
      "title": "Business Analyst (contract)",
      "start_date": {
        "month": "12",
        "year": "2016"
      },
      "end_date": {
        "month": "10",
        "year": "2017"
      },
      "current": "false"
    },
    {
      "company_name": "Microsoft",
      "title": "Compensation Data Analyst (contract)",
      "start_date": {
        "month": "9",
        "year": "2016"
      },
      "end_date": {
        "month": "12",
        "year": "2016"
      },
      "current": "false"
    },
    {
      "company_name": "Booking.com",
      "title": "Financial Analyst",
      "start_date": {
        "month": "7",
        "year": "2015"
      },
      "end_date": {
        "month": "9",
        "year": "2015"
      },
      "current": "false"
    },
    {
      "company_name": "Amazon",
      "title": "Financial Analyst, Retail",
      "start_date": {
        "month": "9",
        "year": "2014"
      },
      "end_date": {
        "month": "3",
        "year": "2015"
      },
      "current": "false"
    }
  ],
  "educations": [
    {
      "school_name_id": {
        "lookup": "GET /v1/boards/{board_token}/education/schools?term=University%20of%20Washington",
        "pick": "items[].id where text is \"University of Washington\"",
        "doc": "_educations.md"
      },
      "degree_id": {
        "lookup": "GET /v1/boards/{board_token}/education/degrees?term=Bachelor's%20Degree",
        "pick": "items[].id where text is \"Bachelor's Degree\"",
        "doc": "_educations.md"
      },
      "discipline_id": {
        "lookup": "GET /v1/boards/{board_token}/education/disciplines?term=Economics",
        "pick": "items[].id where text is \"Economics\"",
        "doc": "_educations.md"
      },
      "start_date": {
        "month": "9",
        "year": "2011"
      },
      "end_date": {
        "month": "12",
        "year": "2015"
      }
    }
  ]
}

email and phone: withheld on this page; contact is LinkedIn

Which doc section each field follows (11 rows)
FieldFollowsFrom the record
first_name_applications.md › Request Parameters › first_name (required)candidate.first_name
last_name_applications.md › Request Parameters › last_name (required)candidate.last_name
email_applications.md › Request Parameters › email (required){email}: withheld on this page; contact is LinkedIn
phone_applications.md › Request Parameters › phone{phone}: withheld on this page; contact is LinkedIn
country_short_name_applications.md › Request Parameters › country_short_name (hidden field, fraud checks)candidate.country
resume_text_applications.md › Submitting Attachments › Resume Attachments › plaintext file contentsresumeText(record): the ATS text, without email or phone
employments[]_applications.md › Request Parameters › employments: company_name, title, start_date{month,year}, current "true"/"false", end_date when current is falseexperience[] in order; the project is not an employment
educations[]_applications.md › Request Parameters › educations: school_name_id, degree_id, discipline_id, start_date, end_dateeducation[]
educations[].*_id_educations.md › List Schools / List Degrees / List Disciplines (?term=…); ids are per boardlookups, shown instead of any board's ids
location, latitude, longitude_applications.md › Collecting Applicant Location (all three or none)left out: no street address on this page
question_*, cover_letter_text, gender, race, veteran_status, demographic_answers, data_compliance_applications.md › Request Parameters (job-specific)left out: per job post, and private

Greenhouse Job Board API: the resume as a job post

The resume written in the JSON shape this board publishes its jobs in, so the field names can be compared side by side. Nothing sends it anywhere.

follows _jobs.md · Greenhouse Job Board API: Jobs

GET https://boards-api.greenhouse.io/v1/boards/alexzhouk/jobs/{job_id}?questions=true · application/json (response) · illustrative: alexzhouk is not a Greenhouse board token

greenhouse.job
{
  "id": null,
  "title": "Senior Data Engineer",
  "company_name": "Alex Zhouk",
  "first_published": "2026-10-13T00:00:00Z",
  "updated_at": "2026-10-13T00:00:00Z",
  "application_deadline": null,
  "requisition_id": "resume v12",
  "location": {
    "name": "Seattle, WA"
  },
  "content": "&lt;p&gt;Senior data engineer at Coinbase on dbt, Airflow and Snowflake: the unified staking data model, a semantic layer made LLM-ready with the Claude API, the observability platform behind 20+ KPIs. Data Engineer titles since 2023 after a Data Scientist role at TikTok and BI and analytics roles at Amazon; 10+ years in data roles. This year, KVMACHINES: an independent project to test whether agents can run a business on Anthropic's products, with a person's signature on every step that changes something (kvkeys.com/#sql).&lt;/p&gt;&lt;h3&gt;Skills&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Pipelines:&lt;/strong&gt; dbt Core and Cloud, Airflow, Spark and PySpark, Hive, Databricks, AWS Glue and EMR, GitHub Actions CI/CD&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Warehouses:&lt;/strong&gt; Snowflake, Redshift, Databricks, Azure Data Lake, Postgres; dimensional modeling (star schemas, slowly changing dimensions), semantic layers, data contracts, freshness SLAs and data quality KPIs&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Languages:&lt;/strong&gt; SQL, Python (Pandas, PySpark, FastAPI, Streamlit), R&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Reporting:&lt;/strong&gt; Superset, Tableau, Streamlit apps, SQL consoles in the browser (Postgres in the page); executive and cross-functional dashboards&lt;/li&gt;&lt;li&gt;&lt;strong&gt;AI-assisted engineering:&lt;/strong&gt; Claude Code, the Claude API and MCP connectors for pipeline, schema and CI work, with an independent review session before the merge; LLM-ready dbt metadata&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Cloud and tooling:&lt;/strong&gt; AWS, Azure, Docker, GitHub Actions&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Experience&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Senior Data Engineer&lt;/strong&gt;, Coinbase (Remote, Mar 2024 - Present)&lt;ul&gt;&lt;li&gt;Led the unified staking data model, a dimensional model across $18.9B in crypto assets on six networks, with Product Management, Data Science and leadership, using dbt Core and Cloud, Airflow and Snowflake; executive dashboards in Superset and Tableau.&lt;/li&gt;&lt;li&gt;Standardized the semantic layer across Coinbase: Python automation on the Claude API converted 1,600+ dbt, YAML and SQL files into LLM-ready metadata in the company's first data contracts rollout, so LLM-based analytics tools query trusted, documented datasets directly.&lt;/li&gt;&lt;li&gt;Built the org-wide observability platform in Streamlit (Python, SQL) that monitors 20+ pipeline health and data quality KPIs, with automated source freshness tests and schema validation across the warehouse, cutting the time to detect a failure.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Senior Data Engineer&lt;/strong&gt;, Machina Labs (Chatsworth, CA, Feb 2023 - Mar 2024)&lt;ul&gt;&lt;li&gt;First data engineering hire: built a robotics startup's Databricks warehouse from the ground up, PySpark ELT pipelines on Azure that bring robot telemetry, Salesforce and GraphQL feeds into a medallion lake for 40+ stakeholders, with CI/CD through GitHub Actions.&lt;/li&gt;&lt;li&gt;Built the FastAPI service over the Databricks APIs that ended direct cluster access for three internal teams; shipped the invoice management app and a bidirectional pricing calculator (Streamlit, PySpark, Docker on Azure) with write-back for Finance and Sales.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Data Scientist, Creator Monetization&lt;/strong&gt;, TikTok (Los Angeles, CA, Dec 2021 - Feb 2023)&lt;ul&gt;&lt;li&gt;Owned the Creator Monetization data stack end to end: 15+ production tables with dimensional modeling and 50+ Apache Hive SQL pipelines behind dashboards and cross-team analytics, with data contracts between event producers and downstream consumers.&lt;/li&gt;&lt;li&gt;Found and fixed a systematic error in the Branded Content revenue pipeline through SQL and lineage review, correcting projected revenue by $115M (+10%); built the Instacart add-to-cart ETL and reporting with anomaly detection, alerting and source freshness SLAs.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Business Intelligence Engineer II, Sponsored Products Advertising&lt;/strong&gt;, Amazon (Seattle, WA, May 2020 - Dec 2021)&lt;ul&gt;&lt;li&gt;Built and owned four Redshift ETL pipelines (80+ tasks) that publish the Weekly Business Review for the Targeting, Optimization, Recommendation and Budget teams: $450M+ in weekly ad revenue, zero SLA misses in 18 months; seven Tableau dashboards.&lt;/li&gt;&lt;li&gt;Owned the A/B test that launched Thematic placement sourcing (+$65MM annualized) and identified $8MM more in annualized revenue; standardized data models adopted across four teams.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Business Intelligence Engineer II, Private Brands&lt;/strong&gt;, Amazon (Seattle, WA, Nov 2018 - May 2020)&lt;ul&gt;&lt;li&gt;Automated product metrics in Redshift for the Accelerator program across 11 countries ($800M, 800% year over year), with slowly changing dimension tables for product attribute history; built the placement-level sales dashboard that steered marketing spend.&lt;/li&gt;&lt;li&gt;Traced sudden sales dips to bad actors ($300k opportunity cost) and shipped a real-time monitoring pipeline with data quality alerting and the takedown dashboard.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Custom Pricing Analyst&lt;/strong&gt;, Amazon Web Services (Seattle, WA, Oct 2017 - Nov 2018)&lt;ul&gt;&lt;li&gt;Designed and built the Enterprise Support analytical warehouse in Redshift (10M+ rows), a star-schema dimensional model that replaced manual billing workflows.&lt;/li&gt;&lt;li&gt;Owned the monthly billing pipeline for every AWS Enterprise Support customer: $55M a month in recurring billing, zero disputes; led two projects that added $1M in monthly AWS revenue.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Business Analyst (contract)&lt;/strong&gt;, Amazon (Seattle, WA, Dec 2016 - Oct 2017)&lt;ul&gt;&lt;li&gt;Built the Redshift pipelines and dashboards for contract-worker onboarding across 40+ countries and set the data governance standards for the HR system integrations; SQL, R and Python tooling for job-code mapping of the global contingent workforce.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Compensation Data Analyst (contract)&lt;/strong&gt;, Microsoft (Redmond, WA, Sep 2016 - Dec 2016)&lt;ul&gt;&lt;li&gt;R scripts that automated the manual revenue adjustment and bulk territory processes (60+ hours saved a month); quarterly audits of revenue, territories and quota.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Financial Analyst&lt;/strong&gt;, Booking.com (Bellevue, WA, Jul 2015 - Sep 2015)&lt;ul&gt;&lt;li&gt;Consolidated invoice reporting in SQL and Excel across two offices.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Financial Analyst, Retail&lt;/strong&gt;, Amazon (Seattle, WA, Sep 2014 - Mar 2015)&lt;ul&gt;&lt;li&gt;Optimized the SQL and automated the refresh of 20 Excel reports behind the Canada Retail weekly business review; customer returns and free replacements analyzed by reason code.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Projects&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;KVMACHINES, independent project&lt;/strong&gt;, kvkeys.com/#sql, kvmachines.com (Seattle, WA, Jan 2026 - Present)&lt;ul&gt;&lt;li&gt;Built to test whether agents can run a business on Anthropic's products: one Claude session per department with its own key, memory store and routines; a person's signature on every step that changes something; every output a record people and programs can check.&lt;/li&gt;&lt;li&gt;Designed the kvkeys data model: every connector, skill and version of the department plugins in one Postgres schema (818 entities, 351 skills, 420 versions), replayed from history, every table and most columns commented, a 20-step CI gate before any merge.&lt;/li&gt;&lt;li&gt;Shipped kvkeys.com/#sql, Postgres running in the browser as the self-serve SQL console over that schema; built the jobs dataset behind this application: 293,891 postings from 13,750 Greenhouse, Lever and Ashby boards joined to the BLS occupation and employment tables.&lt;/li&gt;&lt;li&gt;Agents open the pull requests and a separate session reviews them before the merge, under rules I set: 685 merged across 39 repositories from 2 to 13 October 2026.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Education&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;University of Washington&lt;/strong&gt;, Seattle, WA: Bachelor of Arts, Economics; Minor, Entrepreneurship (Sep 2011 - Dec 2015); GPA 3.5, Dean's List Scholar&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;US citizen. Based in Seattle. Open to Washington, California, and New York. Available to start on offer.&lt;/p&gt;",
  "absolute_url": "https://alexzhouk.com/",
  "language": "en",
  "internal_job_id": null,
  "metadata": [
    {
      "id": null,
      "name": "Status",
      "value_type": "short_text",
      "value": "US citizen. Based in Seattle. Open to Washington, California, and New York. Available to start on offer."
    },
    {
      "id": null,
      "name": "LinkedIn",
      "value_type": "url",
      "value": "https://www.linkedin.com/in/alexzhouk/"
    },
    {
      "id": null,
      "name": "kvkeys.com/#sql",
      "value_type": "url",
      "value": "https://kvkeys.com/#sql"
    },
    {
      "id": null,
      "name": "kvmachines.com",
      "value_type": "url",
      "value": "https://kvmachines.com"
    }
  ],
  "questions": [
    {
      "required": true,
      "label": "First Name",
      "fields": [
        {
          "name": "first_name",
          "type": "input_text"
        }
      ]
    },
    {
      "required": true,
      "label": "Last Name",
      "fields": [
        {
          "name": "last_name",
          "type": "input_text"
        }
      ]
    },
    {
      "required": true,
      "label": "Email",
      "fields": [
        {
          "name": "email",
          "type": "input_text"
        }
      ]
    },
    {
      "required": false,
      "label": "Phone",
      "fields": [
        {
          "name": "phone",
          "type": "input_text"
        }
      ]
    },
    {
      "required": true,
      "label": "Resume",
      "fields": [
        {
          "name": "resume",
          "type": "input_file"
        },
        {
          "name": "resume_text",
          "type": "textarea"
        }
      ]
    }
  ]
}
Which doc section each field follows (11 rows)
FieldFollowsFrom the record
id, internal_job_id_jobs.md › Retrieve a job (ids are assigned by Greenhouse)null
title_jobs.md › Retrieve a job › titleexperience[0].title
company_name_jobs.md › Retrieve a job › company_namecandidate.name
first_published, updated_at_jobs.md › Retrieve a job (ISO 8601)the record's version date, 2026-10-13
requisition_id_jobs.md › Retrieve a job › requisition_idthe record's version label
location.name_jobs.md › Retrieve a job › locationcandidate.city
content_jobs.md › Retrieve a job › content: HTML converted to entities, as the API returns itresumeHtml(record), entity-encoded once
absolute_url_jobs.md › Retrieve a job › absolute_urlhttps://alexzhouk.com/
metadata[]_jobs.md › "job custom fields … shown in the metadata attribute" {id, name, value_type, value}the status line and the three links
questions[]_jobs.md › Questions (first_name, last_name, email, phone, resume + resume_text)the standard fields in the doc; no custom questions
pay_input_ranges, demographic_questions, data_compliance_jobs.md › Retrieve a jobleft out: no compensation on this page; not applicable

Lever

Lever Postings API: apply to a job posting

What a careers page or the hosted application form sends to the employer’s board for this candidate. The credential on the request is the employer’s API key, never the candidate’s. Here: {APIKEY} in the URL is the employer’s Postings API key.

follows README.md · Lever Postings API: README

POST https://api.lever.co/v0/postings/{SITE}/{POSTING-ID}?key={APIKEY} · application/json (the resume file needs multipart/form-data) · {APIKEY} is the employer's Postings API key (a candidate has none: the hosted form is the submission path)

lever.apply
{
  "name": "Alex Zhouk",
  "email": "{email}",
  "phone": "{phone}",
  "org": "Coinbase",
  "urls": {
    "LinkedIn": "https://www.linkedin.com/in/alexzhouk/",
    "Portfolio": "https://kvkeys.com/#sql",
    "Other": "https://kvmachines.com"
  },
  "comments": "US citizen. Based in Seattle. Open to Washington, California, and New York. Available to start on offer."
}

email, phone and the resume file: withheld on this page; contact is LinkedIn

Which doc section each field follows (8 rows)
FieldFollowsFrom the record
nameREADME.md › Apply to a job posting › name (required)candidate.name
emailREADME.md › Apply to a job posting › email (required; Lever de-dupes on it){email}: withheld on this page; contact is LinkedIn
phoneREADME.md › Apply to a job posting › phone{phone}: withheld on this page; contact is LinkedIn
orgREADME.md › Apply to a job posting › org ("Current company / organization")experience[0].company
urlsREADME.md › Apply to a job posting › urls (a JSON object keyed by site name)candidate.links; keys LinkedIn, Portfolio, Other as on the hosted form (observed)
commentsREADME.md › Apply to a job posting › comments ("Additional information from the candidate")the status line
resumeREADME.md › Apply to a job posting › resume (multipart/form-data only){resume file}: the resume file is not on this page
silent, source, ip, timezone, userAgent, acceptLanguage, referer, consent.*, opportunityLocationREADME.md › Apply to a job postingleft out: set by the form owner, not the candidate

What Lever’s parser actually extracted observed 2026-10-18

Lever's resume parser on the v12 PDF, as prefilled on two hosted Lever application forms.

FieldGeneratedParsed from the PDFNote
nameAlex ZhoukAlex Zhouksame
email{email}{email}parsed correctly; withheld on this page; contact is LinkedIn
phone{phone}{phone}parsed as digits only, punctuation stripped; withheld on this page; contact is LinkedIn
orgCoinbaseCoinbasesame
location (hosted form field)Seattle, WASeattle, WA, USAthe form adds the country; not an API field in the README
urls.LinkedInhttps://www.linkedin.com/in/alexzhouk/http://linkedin.com/in/alexzhoukhttps became http; www. and the trailing slash dropped
urls.Other (kvmachines.com)https://kvmachines.comhttp://kvmachines.comhttps became http
urls.Portfolio (kvkeys.com/#sql)https://kvkeys.com/#sqldroppeddropped by the parser

hosted-form field names seen: urls[Twitter], urls[GitHub], urls[Portfolio], eeo[gender], eeo[race], eeo[veteran], cards[...] (custom questions). selectedLocation: {"name":"Seattle, WA, USA","address":{"city":"Seattle","country":{"code":"US","description":""},"CountryCode":"US","region":{"code":"WA","description":"Seattle"}}}

Lever Postings API: the resume as a posting

The resume written in the JSON shape this board publishes its jobs in, so the field names can be compared side by side. Nothing sends it anywhere.

follows README.md · Lever Postings API: README

GET https://api.lever.co/v0/postings/alexzhouk/alexzhouk-resume-v12?mode=json · application/json (response) · illustrative: alexzhouk is not a Lever site

lever.posting
{
  "id": "alexzhouk-resume-v12",
  "text": "Senior Data Engineer",
  "categories": {
    "location": "Seattle, WA",
    "commitment": null,
    "team": null,
    "department": null,
    "allLocations": [
      "Seattle, WA",
      "Washington",
      "California",
      "New York"
    ]
  },
  "country": "US",
  "opening": "<p>Senior data engineer at Coinbase on dbt, Airflow and Snowflake: the unified staking data model, a semantic layer made LLM-ready with the Claude API, the observability platform behind 20+ KPIs. Data Engineer titles since 2023 after a Data Scientist role at TikTok and BI and analytics roles at Amazon; 10+ years in data roles. This year, KVMACHINES: an independent project to test whether agents can run a business on Anthropic's products, with a person's signature on every step that changes something (kvkeys.com/#sql).</p>",
  "openingPlain": "Senior data engineer at Coinbase on dbt, Airflow and Snowflake: the unified staking data model, a semantic layer made LLM-ready with the Claude API, the observability platform behind 20+ KPIs. Data Engineer titles since 2023 after a Data Scientist role at TikTok and BI and analytics roles at Amazon; 10+ years in data roles. This year, KVMACHINES: an independent project to test whether agents can run a business on Anthropic's products, with a person's signature on every step that changes something (kvkeys.com/#sql).",
  "description": "<p>Senior data engineer at Coinbase on dbt, Airflow and Snowflake: the unified staking data model, a semantic layer made LLM-ready with the Claude API, the observability platform behind 20+ KPIs. Data Engineer titles since 2023 after a Data Scientist role at TikTok and BI and analytics roles at Amazon; 10+ years in data roles. This year, KVMACHINES: an independent project to test whether agents can run a business on Anthropic's products, with a person's signature on every step that changes something (kvkeys.com/#sql).</p><h3>Skills</h3><ul><li><strong>Pipelines:</strong> dbt Core and Cloud, Airflow, Spark and PySpark, Hive, Databricks, AWS Glue and EMR, GitHub Actions CI/CD</li><li><strong>Warehouses:</strong> Snowflake, Redshift, Databricks, Azure Data Lake, Postgres; dimensional modeling (star schemas, slowly changing dimensions), semantic layers, data contracts, freshness SLAs and data quality KPIs</li><li><strong>Languages:</strong> SQL, Python (Pandas, PySpark, FastAPI, Streamlit), R</li><li><strong>Reporting:</strong> Superset, Tableau, Streamlit apps, SQL consoles in the browser (Postgres in the page); executive and cross-functional dashboards</li><li><strong>AI-assisted engineering:</strong> Claude Code, the Claude API and MCP connectors for pipeline, schema and CI work, with an independent review session before the merge; LLM-ready dbt metadata</li><li><strong>Cloud and tooling:</strong> AWS, Azure, Docker, GitHub Actions</li></ul><h3>Experience</h3><ul><li><strong>Senior Data Engineer</strong>, Coinbase (Remote, Mar 2024 - Present)<ul><li>Led the unified staking data model, a dimensional model across $18.9B in crypto assets on six networks, with Product Management, Data Science and leadership, using dbt Core and Cloud, Airflow and Snowflake; executive dashboards in Superset and Tableau.</li><li>Standardized the semantic layer across Coinbase: Python automation on the Claude API converted 1,600+ dbt, YAML and SQL files into LLM-ready metadata in the company's first data contracts rollout, so LLM-based analytics tools query trusted, documented datasets directly.</li><li>Built the org-wide observability platform in Streamlit (Python, SQL) that monitors 20+ pipeline health and data quality KPIs, with automated source freshness tests and schema validation across the warehouse, cutting the time to detect a failure.</li></ul></li><li><strong>Senior Data Engineer</strong>, Machina Labs (Chatsworth, CA, Feb 2023 - Mar 2024)<ul><li>First data engineering hire: built a robotics startup's Databricks warehouse from the ground up, PySpark ELT pipelines on Azure that bring robot telemetry, Salesforce and GraphQL feeds into a medallion lake for 40+ stakeholders, with CI/CD through GitHub Actions.</li><li>Built the FastAPI service over the Databricks APIs that ended direct cluster access for three internal teams; shipped the invoice management app and a bidirectional pricing calculator (Streamlit, PySpark, Docker on Azure) with write-back for Finance and Sales.</li></ul></li><li><strong>Data Scientist, Creator Monetization</strong>, TikTok (Los Angeles, CA, Dec 2021 - Feb 2023)<ul><li>Owned the Creator Monetization data stack end to end: 15+ production tables with dimensional modeling and 50+ Apache Hive SQL pipelines behind dashboards and cross-team analytics, with data contracts between event producers and downstream consumers.</li><li>Found and fixed a systematic error in the Branded Content revenue pipeline through SQL and lineage review, correcting projected revenue by $115M (+10%); built the Instacart add-to-cart ETL and reporting with anomaly detection, alerting and source freshness SLAs.</li></ul></li><li><strong>Business Intelligence Engineer II, Sponsored Products Advertising</strong>, Amazon (Seattle, WA, May 2020 - Dec 2021)<ul><li>Built and owned four Redshift ETL pipelines (80+ tasks) that publish the Weekly Business Review for the Targeting, Optimization, Recommendation and Budget teams: $450M+ in weekly ad revenue, zero SLA misses in 18 months; seven Tableau dashboards.</li><li>Owned the A/B test that launched Thematic placement sourcing (+$65MM annualized) and identified $8MM more in annualized revenue; standardized data models adopted across four teams.</li></ul></li><li><strong>Business Intelligence Engineer II, Private Brands</strong>, Amazon (Seattle, WA, Nov 2018 - May 2020)<ul><li>Automated product metrics in Redshift for the Accelerator program across 11 countries ($800M, 800% year over year), with slowly changing dimension tables for product attribute history; built the placement-level sales dashboard that steered marketing spend.</li><li>Traced sudden sales dips to bad actors ($300k opportunity cost) and shipped a real-time monitoring pipeline with data quality alerting and the takedown dashboard.</li></ul></li><li><strong>Custom Pricing Analyst</strong>, Amazon Web Services (Seattle, WA, Oct 2017 - Nov 2018)<ul><li>Designed and built the Enterprise Support analytical warehouse in Redshift (10M+ rows), a star-schema dimensional model that replaced manual billing workflows.</li><li>Owned the monthly billing pipeline for every AWS Enterprise Support customer: $55M a month in recurring billing, zero disputes; led two projects that added $1M in monthly AWS revenue.</li></ul></li><li><strong>Business Analyst (contract)</strong>, Amazon (Seattle, WA, Dec 2016 - Oct 2017)<ul><li>Built the Redshift pipelines and dashboards for contract-worker onboarding across 40+ countries and set the data governance standards for the HR system integrations; SQL, R and Python tooling for job-code mapping of the global contingent workforce.</li></ul></li><li><strong>Compensation Data Analyst (contract)</strong>, Microsoft (Redmond, WA, Sep 2016 - Dec 2016)<ul><li>R scripts that automated the manual revenue adjustment and bulk territory processes (60+ hours saved a month); quarterly audits of revenue, territories and quota.</li></ul></li><li><strong>Financial Analyst</strong>, Booking.com (Bellevue, WA, Jul 2015 - Sep 2015)<ul><li>Consolidated invoice reporting in SQL and Excel across two offices.</li></ul></li><li><strong>Financial Analyst, Retail</strong>, Amazon (Seattle, WA, Sep 2014 - Mar 2015)<ul><li>Optimized the SQL and automated the refresh of 20 Excel reports behind the Canada Retail weekly business review; customer returns and free replacements analyzed by reason code.</li></ul></li></ul><h3>Projects</h3><ul><li><strong>KVMACHINES, independent project</strong>, kvkeys.com/#sql, kvmachines.com (Seattle, WA, Jan 2026 - Present)<ul><li>Built to test whether agents can run a business on Anthropic's products: one Claude session per department with its own key, memory store and routines; a person's signature on every step that changes something; every output a record people and programs can check.</li><li>Designed the kvkeys data model: every connector, skill and version of the department plugins in one Postgres schema (818 entities, 351 skills, 420 versions), replayed from history, every table and most columns commented, a 20-step CI gate before any merge.</li><li>Shipped kvkeys.com/#sql, Postgres running in the browser as the self-serve SQL console over that schema; built the jobs dataset behind this application: 293,891 postings from 13,750 Greenhouse, Lever and Ashby boards joined to the BLS occupation and employment tables.</li><li>Agents open the pull requests and a separate session reviews them before the merge, under rules I set: 685 merged across 39 repositories from 2 to 13 October 2026.</li></ul></li></ul><h3>Education</h3><ul><li><strong>University of Washington</strong>, Seattle, WA: Bachelor of Arts, Economics; Minor, Entrepreneurship (Sep 2011 - Dec 2015); GPA 3.5, Dean's List Scholar</li></ul>",
  "descriptionPlain": "ALEX ZHOUK\nSeattle, WA | https://www.linkedin.com/in/alexzhouk/ | https://kvkeys.com/#sql | https://kvmachines.com\nUS citizen. Based in Seattle. Open to Washington, California, and New York. Available to start on offer.\n\nSUMMARY\nSenior data engineer at Coinbase on dbt, Airflow and Snowflake: the unified staking data model, a semantic layer made LLM-ready with the Claude API, the observability platform behind 20+ KPIs. Data Engineer titles since 2023 after a Data Scientist role at TikTok and BI and analytics roles at Amazon; 10+ years in data roles. This year, KVMACHINES: an independent project to test whether agents can run a business on Anthropic's products, with a person's signature on every step that changes something (kvkeys.com/#sql).\n\nSKILLS\nPipelines: dbt Core and Cloud, Airflow, Spark and PySpark, Hive, Databricks, AWS Glue and EMR, GitHub Actions CI/CD\nWarehouses: Snowflake, Redshift, Databricks, Azure Data Lake, Postgres; dimensional modeling (star schemas, slowly changing dimensions), semantic layers, data contracts, freshness SLAs and data quality KPIs\nLanguages: SQL, Python (Pandas, PySpark, FastAPI, Streamlit), R\nReporting: Superset, Tableau, Streamlit apps, SQL consoles in the browser (Postgres in the page); executive and cross-functional dashboards\nAI-assisted engineering: Claude Code, the Claude API and MCP connectors for pipeline, schema and CI work, with an independent review session before the merge; LLM-ready dbt metadata\nCloud and tooling: AWS, Azure, Docker, GitHub Actions\n\nEXPERIENCE\n\nSenior Data Engineer\nCoinbase | Remote | Mar 2024 - Present\n- Led the unified staking data model, a dimensional model across $18.9B in crypto assets on six networks, with Product Management, Data Science and leadership, using dbt Core and Cloud, Airflow and Snowflake; executive dashboards in Superset and Tableau.\n- Standardized the semantic layer across Coinbase: Python automation on the Claude API converted 1,600+ dbt, YAML and SQL files into LLM-ready metadata in the company's first data contracts rollout, so LLM-based analytics tools query trusted, documented datasets directly.\n- Built the org-wide observability platform in Streamlit (Python, SQL) that monitors 20+ pipeline health and data quality KPIs, with automated source freshness tests and schema validation across the warehouse, cutting the time to detect a failure.\n\nSenior Data Engineer\nMachina Labs | Chatsworth, CA | Feb 2023 - Mar 2024\n- First data engineering hire: built a robotics startup's Databricks warehouse from the ground up, PySpark ELT pipelines on Azure that bring robot telemetry, Salesforce and GraphQL feeds into a medallion lake for 40+ stakeholders, with CI/CD through GitHub Actions.\n- Built the FastAPI service over the Databricks APIs that ended direct cluster access for three internal teams; shipped the invoice management app and a bidirectional pricing calculator (Streamlit, PySpark, Docker on Azure) with write-back for Finance and Sales.\n\nData Scientist, Creator Monetization\nTikTok | Los Angeles, CA | Dec 2021 - Feb 2023\n- Owned the Creator Monetization data stack end to end: 15+ production tables with dimensional modeling and 50+ Apache Hive SQL pipelines behind dashboards and cross-team analytics, with data contracts between event producers and downstream consumers.\n- Found and fixed a systematic error in the Branded Content revenue pipeline through SQL and lineage review, correcting projected revenue by $115M (+10%); built the Instacart add-to-cart ETL and reporting with anomaly detection, alerting and source freshness SLAs.\n\nBusiness Intelligence Engineer II, Sponsored Products Advertising\nAmazon | Seattle, WA | May 2020 - Dec 2021\n- Built and owned four Redshift ETL pipelines (80+ tasks) that publish the Weekly Business Review for the Targeting, Optimization, Recommendation and Budget teams: $450M+ in weekly ad revenue, zero SLA misses in 18 months; seven Tableau dashboards.\n- Owned the A/B test that launched Thematic placement sourcing (+$65MM annualized) and identified $8MM more in annualized revenue; standardized data models adopted across four teams.\n\nBusiness Intelligence Engineer II, Private Brands\nAmazon | Seattle, WA | Nov 2018 - May 2020\n- Automated product metrics in Redshift for the Accelerator program across 11 countries ($800M, 800% year over year), with slowly changing dimension tables for product attribute history; built the placement-level sales dashboard that steered marketing spend.\n- Traced sudden sales dips to bad actors ($300k opportunity cost) and shipped a real-time monitoring pipeline with data quality alerting and the takedown dashboard.\n\nCustom Pricing Analyst\nAmazon Web Services | Seattle, WA | Oct 2017 - Nov 2018\n- Designed and built the Enterprise Support analytical warehouse in Redshift (10M+ rows), a star-schema dimensional model that replaced manual billing workflows.\n- Owned the monthly billing pipeline for every AWS Enterprise Support customer: $55M a month in recurring billing, zero disputes; led two projects that added $1M in monthly AWS revenue.\n\nBusiness Analyst (contract)\nAmazon | Seattle, WA | Dec 2016 - Oct 2017\n- Built the Redshift pipelines and dashboards for contract-worker onboarding across 40+ countries and set the data governance standards for the HR system integrations; SQL, R and Python tooling for job-code mapping of the global contingent workforce.\n\nCompensation Data Analyst (contract)\nMicrosoft | Redmond, WA | Sep 2016 - Dec 2016\n- R scripts that automated the manual revenue adjustment and bulk territory processes (60+ hours saved a month); quarterly audits of revenue, territories and quota.\n\nFinancial Analyst\nBooking.com | Bellevue, WA | Jul 2015 - Sep 2015\n- Consolidated invoice reporting in SQL and Excel across two offices.\n\nFinancial Analyst, Retail\nAmazon | Seattle, WA | Sep 2014 - Mar 2015\n- Optimized the SQL and automated the refresh of 20 Excel reports behind the Canada Retail weekly business review; customer returns and free replacements analyzed by reason code.\n\nPROJECTS\n\nKVMACHINES, independent project\nkvkeys.com/#sql, kvmachines.com | Seattle, WA | Jan 2026 - Present\n- Built to test whether agents can run a business on Anthropic's products: one Claude session per department with its own key, memory store and routines; a person's signature on every step that changes something; every output a record people and programs can check.\n- Designed the kvkeys data model: every connector, skill and version of the department plugins in one Postgres schema (818 entities, 351 skills, 420 versions), replayed from history, every table and most columns commented, a 20-step CI gate before any merge.\n- Shipped kvkeys.com/#sql, Postgres running in the browser as the self-serve SQL console over that schema; built the jobs dataset behind this application: 293,891 postings from 13,750 Greenhouse, Lever and Ashby boards joined to the BLS occupation and employment tables.\n- Agents open the pull requests and a separate session reviews them before the merge, under rules I set: 685 merged across 39 repositories from 2 to 13 October 2026.\n\nEDUCATION\nUniversity of Washington | Seattle, WA\nBachelor of Arts, Economics; Minor, Entrepreneurship | Sep 2011 - Dec 2015\nGPA 3.5, Dean's List Scholar\n",
  "descriptionBody": "<h3>Skills</h3><ul><li><strong>Pipelines:</strong> dbt Core and Cloud, Airflow, Spark and PySpark, Hive, Databricks, AWS Glue and EMR, GitHub Actions CI/CD</li><li><strong>Warehouses:</strong> Snowflake, Redshift, Databricks, Azure Data Lake, Postgres; dimensional modeling (star schemas, slowly changing dimensions), semantic layers, data contracts, freshness SLAs and data quality KPIs</li><li><strong>Languages:</strong> SQL, Python (Pandas, PySpark, FastAPI, Streamlit), R</li><li><strong>Reporting:</strong> Superset, Tableau, Streamlit apps, SQL consoles in the browser (Postgres in the page); executive and cross-functional dashboards</li><li><strong>AI-assisted engineering:</strong> Claude Code, the Claude API and MCP connectors for pipeline, schema and CI work, with an independent review session before the merge; LLM-ready dbt metadata</li><li><strong>Cloud and tooling:</strong> AWS, Azure, Docker, GitHub Actions</li></ul><h3>Experience</h3><ul><li><strong>Senior Data Engineer</strong>, Coinbase (Remote, Mar 2024 - Present)<ul><li>Led the unified staking data model, a dimensional model across $18.9B in crypto assets on six networks, with Product Management, Data Science and leadership, using dbt Core and Cloud, Airflow and Snowflake; executive dashboards in Superset and Tableau.</li><li>Standardized the semantic layer across Coinbase: Python automation on the Claude API converted 1,600+ dbt, YAML and SQL files into LLM-ready metadata in the company's first data contracts rollout, so LLM-based analytics tools query trusted, documented datasets directly.</li><li>Built the org-wide observability platform in Streamlit (Python, SQL) that monitors 20+ pipeline health and data quality KPIs, with automated source freshness tests and schema validation across the warehouse, cutting the time to detect a failure.</li></ul></li><li><strong>Senior Data Engineer</strong>, Machina Labs (Chatsworth, CA, Feb 2023 - Mar 2024)<ul><li>First data engineering hire: built a robotics startup's Databricks warehouse from the ground up, PySpark ELT pipelines on Azure that bring robot telemetry, Salesforce and GraphQL feeds into a medallion lake for 40+ stakeholders, with CI/CD through GitHub Actions.</li><li>Built the FastAPI service over the Databricks APIs that ended direct cluster access for three internal teams; shipped the invoice management app and a bidirectional pricing calculator (Streamlit, PySpark, Docker on Azure) with write-back for Finance and Sales.</li></ul></li><li><strong>Data Scientist, Creator Monetization</strong>, TikTok (Los Angeles, CA, Dec 2021 - Feb 2023)<ul><li>Owned the Creator Monetization data stack end to end: 15+ production tables with dimensional modeling and 50+ Apache Hive SQL pipelines behind dashboards and cross-team analytics, with data contracts between event producers and downstream consumers.</li><li>Found and fixed a systematic error in the Branded Content revenue pipeline through SQL and lineage review, correcting projected revenue by $115M (+10%); built the Instacart add-to-cart ETL and reporting with anomaly detection, alerting and source freshness SLAs.</li></ul></li><li><strong>Business Intelligence Engineer II, Sponsored Products Advertising</strong>, Amazon (Seattle, WA, May 2020 - Dec 2021)<ul><li>Built and owned four Redshift ETL pipelines (80+ tasks) that publish the Weekly Business Review for the Targeting, Optimization, Recommendation and Budget teams: $450M+ in weekly ad revenue, zero SLA misses in 18 months; seven Tableau dashboards.</li><li>Owned the A/B test that launched Thematic placement sourcing (+$65MM annualized) and identified $8MM more in annualized revenue; standardized data models adopted across four teams.</li></ul></li><li><strong>Business Intelligence Engineer II, Private Brands</strong>, Amazon (Seattle, WA, Nov 2018 - May 2020)<ul><li>Automated product metrics in Redshift for the Accelerator program across 11 countries ($800M, 800% year over year), with slowly changing dimension tables for product attribute history; built the placement-level sales dashboard that steered marketing spend.</li><li>Traced sudden sales dips to bad actors ($300k opportunity cost) and shipped a real-time monitoring pipeline with data quality alerting and the takedown dashboard.</li></ul></li><li><strong>Custom Pricing Analyst</strong>, Amazon Web Services (Seattle, WA, Oct 2017 - Nov 2018)<ul><li>Designed and built the Enterprise Support analytical warehouse in Redshift (10M+ rows), a star-schema dimensional model that replaced manual billing workflows.</li><li>Owned the monthly billing pipeline for every AWS Enterprise Support customer: $55M a month in recurring billing, zero disputes; led two projects that added $1M in monthly AWS revenue.</li></ul></li><li><strong>Business Analyst (contract)</strong>, Amazon (Seattle, WA, Dec 2016 - Oct 2017)<ul><li>Built the Redshift pipelines and dashboards for contract-worker onboarding across 40+ countries and set the data governance standards for the HR system integrations; SQL, R and Python tooling for job-code mapping of the global contingent workforce.</li></ul></li><li><strong>Compensation Data Analyst (contract)</strong>, Microsoft (Redmond, WA, Sep 2016 - Dec 2016)<ul><li>R scripts that automated the manual revenue adjustment and bulk territory processes (60+ hours saved a month); quarterly audits of revenue, territories and quota.</li></ul></li><li><strong>Financial Analyst</strong>, Booking.com (Bellevue, WA, Jul 2015 - Sep 2015)<ul><li>Consolidated invoice reporting in SQL and Excel across two offices.</li></ul></li><li><strong>Financial Analyst, Retail</strong>, Amazon (Seattle, WA, Sep 2014 - Mar 2015)<ul><li>Optimized the SQL and automated the refresh of 20 Excel reports behind the Canada Retail weekly business review; customer returns and free replacements analyzed by reason code.</li></ul></li></ul><h3>Projects</h3><ul><li><strong>KVMACHINES, independent project</strong>, kvkeys.com/#sql, kvmachines.com (Seattle, WA, Jan 2026 - Present)<ul><li>Built to test whether agents can run a business on Anthropic's products: one Claude session per department with its own key, memory store and routines; a person's signature on every step that changes something; every output a record people and programs can check.</li><li>Designed the kvkeys data model: every connector, skill and version of the department plugins in one Postgres schema (818 entities, 351 skills, 420 versions), replayed from history, every table and most columns commented, a 20-step CI gate before any merge.</li><li>Shipped kvkeys.com/#sql, Postgres running in the browser as the self-serve SQL console over that schema; built the jobs dataset behind this application: 293,891 postings from 13,750 Greenhouse, Lever and Ashby boards joined to the BLS occupation and employment tables.</li><li>Agents open the pull requests and a separate session reviews them before the merge, under rules I set: 685 merged across 39 repositories from 2 to 13 October 2026.</li></ul></li></ul><h3>Education</h3><ul><li><strong>University of Washington</strong>, Seattle, WA: Bachelor of Arts, Economics; Minor, Entrepreneurship (Sep 2011 - Dec 2015); GPA 3.5, Dean's List Scholar</li></ul>",
  "descriptionBodyPlain": "ALEX ZHOUK\nSeattle, WA | https://www.linkedin.com/in/alexzhouk/ | https://kvkeys.com/#sql | https://kvmachines.com\nUS citizen. Based in Seattle. Open to Washington, California, and New York. Available to start on offer.\n\nSUMMARY\nSenior data engineer at Coinbase on dbt, Airflow and Snowflake: the unified staking data model, a semantic layer made LLM-ready with the Claude API, the observability platform behind 20+ KPIs. Data Engineer titles since 2023 after a Data Scientist role at TikTok and BI and analytics roles at Amazon; 10+ years in data roles. This year, KVMACHINES: an independent project to test whether agents can run a business on Anthropic's products, with a person's signature on every step that changes something (kvkeys.com/#sql).\n\nSKILLS\nPipelines: dbt Core and Cloud, Airflow, Spark and PySpark, Hive, Databricks, AWS Glue and EMR, GitHub Actions CI/CD\nWarehouses: Snowflake, Redshift, Databricks, Azure Data Lake, Postgres; dimensional modeling (star schemas, slowly changing dimensions), semantic layers, data contracts, freshness SLAs and data quality KPIs\nLanguages: SQL, Python (Pandas, PySpark, FastAPI, Streamlit), R\nReporting: Superset, Tableau, Streamlit apps, SQL consoles in the browser (Postgres in the page); executive and cross-functional dashboards\nAI-assisted engineering: Claude Code, the Claude API and MCP connectors for pipeline, schema and CI work, with an independent review session before the merge; LLM-ready dbt metadata\nCloud and tooling: AWS, Azure, Docker, GitHub Actions\n\nEXPERIENCE\n\nSenior Data Engineer\nCoinbase | Remote | Mar 2024 - Present\n- Led the unified staking data model, a dimensional model across $18.9B in crypto assets on six networks, with Product Management, Data Science and leadership, using dbt Core and Cloud, Airflow and Snowflake; executive dashboards in Superset and Tableau.\n- Standardized the semantic layer across Coinbase: Python automation on the Claude API converted 1,600+ dbt, YAML and SQL files into LLM-ready metadata in the company's first data contracts rollout, so LLM-based analytics tools query trusted, documented datasets directly.\n- Built the org-wide observability platform in Streamlit (Python, SQL) that monitors 20+ pipeline health and data quality KPIs, with automated source freshness tests and schema validation across the warehouse, cutting the time to detect a failure.\n\nSenior Data Engineer\nMachina Labs | Chatsworth, CA | Feb 2023 - Mar 2024\n- First data engineering hire: built a robotics startup's Databricks warehouse from the ground up, PySpark ELT pipelines on Azure that bring robot telemetry, Salesforce and GraphQL feeds into a medallion lake for 40+ stakeholders, with CI/CD through GitHub Actions.\n- Built the FastAPI service over the Databricks APIs that ended direct cluster access for three internal teams; shipped the invoice management app and a bidirectional pricing calculator (Streamlit, PySpark, Docker on Azure) with write-back for Finance and Sales.\n\nData Scientist, Creator Monetization\nTikTok | Los Angeles, CA | Dec 2021 - Feb 2023\n- Owned the Creator Monetization data stack end to end: 15+ production tables with dimensional modeling and 50+ Apache Hive SQL pipelines behind dashboards and cross-team analytics, with data contracts between event producers and downstream consumers.\n- Found and fixed a systematic error in the Branded Content revenue pipeline through SQL and lineage review, correcting projected revenue by $115M (+10%); built the Instacart add-to-cart ETL and reporting with anomaly detection, alerting and source freshness SLAs.\n\nBusiness Intelligence Engineer II, Sponsored Products Advertising\nAmazon | Seattle, WA | May 2020 - Dec 2021\n- Built and owned four Redshift ETL pipelines (80+ tasks) that publish the Weekly Business Review for the Targeting, Optimization, Recommendation and Budget teams: $450M+ in weekly ad revenue, zero SLA misses in 18 months; seven Tableau dashboards.\n- Owned the A/B test that launched Thematic placement sourcing (+$65MM annualized) and identified $8MM more in annualized revenue; standardized data models adopted across four teams.\n\nBusiness Intelligence Engineer II, Private Brands\nAmazon | Seattle, WA | Nov 2018 - May 2020\n- Automated product metrics in Redshift for the Accelerator program across 11 countries ($800M, 800% year over year), with slowly changing dimension tables for product attribute history; built the placement-level sales dashboard that steered marketing spend.\n- Traced sudden sales dips to bad actors ($300k opportunity cost) and shipped a real-time monitoring pipeline with data quality alerting and the takedown dashboard.\n\nCustom Pricing Analyst\nAmazon Web Services | Seattle, WA | Oct 2017 - Nov 2018\n- Designed and built the Enterprise Support analytical warehouse in Redshift (10M+ rows), a star-schema dimensional model that replaced manual billing workflows.\n- Owned the monthly billing pipeline for every AWS Enterprise Support customer: $55M a month in recurring billing, zero disputes; led two projects that added $1M in monthly AWS revenue.\n\nBusiness Analyst (contract)\nAmazon | Seattle, WA | Dec 2016 - Oct 2017\n- Built the Redshift pipelines and dashboards for contract-worker onboarding across 40+ countries and set the data governance standards for the HR system integrations; SQL, R and Python tooling for job-code mapping of the global contingent workforce.\n\nCompensation Data Analyst (contract)\nMicrosoft | Redmond, WA | Sep 2016 - Dec 2016\n- R scripts that automated the manual revenue adjustment and bulk territory processes (60+ hours saved a month); quarterly audits of revenue, territories and quota.\n\nFinancial Analyst\nBooking.com | Bellevue, WA | Jul 2015 - Sep 2015\n- Consolidated invoice reporting in SQL and Excel across two offices.\n\nFinancial Analyst, Retail\nAmazon | Seattle, WA | Sep 2014 - Mar 2015\n- Optimized the SQL and automated the refresh of 20 Excel reports behind the Canada Retail weekly business review; customer returns and free replacements analyzed by reason code.\n\nPROJECTS\n\nKVMACHINES, independent project\nkvkeys.com/#sql, kvmachines.com | Seattle, WA | Jan 2026 - Present\n- Built to test whether agents can run a business on Anthropic's products: one Claude session per department with its own key, memory store and routines; a person's signature on every step that changes something; every output a record people and programs can check.\n- Designed the kvkeys data model: every connector, skill and version of the department plugins in one Postgres schema (818 entities, 351 skills, 420 versions), replayed from history, every table and most columns commented, a 20-step CI gate before any merge.\n- Shipped kvkeys.com/#sql, Postgres running in the browser as the self-serve SQL console over that schema; built the jobs dataset behind this application: 293,891 postings from 13,750 Greenhouse, Lever and Ashby boards joined to the BLS occupation and employment tables.\n- Agents open the pull requests and a separate session reviews them before the merge, under rules I set: 685 merged across 39 repositories from 2 to 13 October 2026.\n\nEDUCATION\nUniversity of Washington | Seattle, WA\nBachelor of Arts, Economics; Minor, Entrepreneurship | Sep 2011 - Dec 2015\nGPA 3.5, Dean's List Scholar\n",
  "lists": [
    {
      "text": "Skills",
      "content": "<li><strong>Pipelines:</strong> dbt Core and Cloud, Airflow, Spark and PySpark, Hive, Databricks, AWS Glue and EMR, GitHub Actions CI/CD</li><li><strong>Warehouses:</strong> Snowflake, Redshift, Databricks, Azure Data Lake, Postgres; dimensional modeling (star schemas, slowly changing dimensions), semantic layers, data contracts, freshness SLAs and data quality KPIs</li><li><strong>Languages:</strong> SQL, Python (Pandas, PySpark, FastAPI, Streamlit), R</li><li><strong>Reporting:</strong> Superset, Tableau, Streamlit apps, SQL consoles in the browser (Postgres in the page); executive and cross-functional dashboards</li><li><strong>AI-assisted engineering:</strong> Claude Code, the Claude API and MCP connectors for pipeline, schema and CI work, with an independent review session before the merge; LLM-ready dbt metadata</li><li><strong>Cloud and tooling:</strong> AWS, Azure, Docker, GitHub Actions</li>"
    },
    {
      "text": "Experience",
      "content": "<li><strong>Senior Data Engineer</strong>, Coinbase (Remote, Mar 2024 - Present)<ul><li>Led the unified staking data model, a dimensional model across $18.9B in crypto assets on six networks, with Product Management, Data Science and leadership, using dbt Core and Cloud, Airflow and Snowflake; executive dashboards in Superset and Tableau.</li><li>Standardized the semantic layer across Coinbase: Python automation on the Claude API converted 1,600+ dbt, YAML and SQL files into LLM-ready metadata in the company's first data contracts rollout, so LLM-based analytics tools query trusted, documented datasets directly.</li><li>Built the org-wide observability platform in Streamlit (Python, SQL) that monitors 20+ pipeline health and data quality KPIs, with automated source freshness tests and schema validation across the warehouse, cutting the time to detect a failure.</li></ul></li><li><strong>Senior Data Engineer</strong>, Machina Labs (Chatsworth, CA, Feb 2023 - Mar 2024)<ul><li>First data engineering hire: built a robotics startup's Databricks warehouse from the ground up, PySpark ELT pipelines on Azure that bring robot telemetry, Salesforce and GraphQL feeds into a medallion lake for 40+ stakeholders, with CI/CD through GitHub Actions.</li><li>Built the FastAPI service over the Databricks APIs that ended direct cluster access for three internal teams; shipped the invoice management app and a bidirectional pricing calculator (Streamlit, PySpark, Docker on Azure) with write-back for Finance and Sales.</li></ul></li><li><strong>Data Scientist, Creator Monetization</strong>, TikTok (Los Angeles, CA, Dec 2021 - Feb 2023)<ul><li>Owned the Creator Monetization data stack end to end: 15+ production tables with dimensional modeling and 50+ Apache Hive SQL pipelines behind dashboards and cross-team analytics, with data contracts between event producers and downstream consumers.</li><li>Found and fixed a systematic error in the Branded Content revenue pipeline through SQL and lineage review, correcting projected revenue by $115M (+10%); built the Instacart add-to-cart ETL and reporting with anomaly detection, alerting and source freshness SLAs.</li></ul></li><li><strong>Business Intelligence Engineer II, Sponsored Products Advertising</strong>, Amazon (Seattle, WA, May 2020 - Dec 2021)<ul><li>Built and owned four Redshift ETL pipelines (80+ tasks) that publish the Weekly Business Review for the Targeting, Optimization, Recommendation and Budget teams: $450M+ in weekly ad revenue, zero SLA misses in 18 months; seven Tableau dashboards.</li><li>Owned the A/B test that launched Thematic placement sourcing (+$65MM annualized) and identified $8MM more in annualized revenue; standardized data models adopted across four teams.</li></ul></li><li><strong>Business Intelligence Engineer II, Private Brands</strong>, Amazon (Seattle, WA, Nov 2018 - May 2020)<ul><li>Automated product metrics in Redshift for the Accelerator program across 11 countries ($800M, 800% year over year), with slowly changing dimension tables for product attribute history; built the placement-level sales dashboard that steered marketing spend.</li><li>Traced sudden sales dips to bad actors ($300k opportunity cost) and shipped a real-time monitoring pipeline with data quality alerting and the takedown dashboard.</li></ul></li><li><strong>Custom Pricing Analyst</strong>, Amazon Web Services (Seattle, WA, Oct 2017 - Nov 2018)<ul><li>Designed and built the Enterprise Support analytical warehouse in Redshift (10M+ rows), a star-schema dimensional model that replaced manual billing workflows.</li><li>Owned the monthly billing pipeline for every AWS Enterprise Support customer: $55M a month in recurring billing, zero disputes; led two projects that added $1M in monthly AWS revenue.</li></ul></li><li><strong>Business Analyst (contract)</strong>, Amazon (Seattle, WA, Dec 2016 - Oct 2017)<ul><li>Built the Redshift pipelines and dashboards for contract-worker onboarding across 40+ countries and set the data governance standards for the HR system integrations; SQL, R and Python tooling for job-code mapping of the global contingent workforce.</li></ul></li><li><strong>Compensation Data Analyst (contract)</strong>, Microsoft (Redmond, WA, Sep 2016 - Dec 2016)<ul><li>R scripts that automated the manual revenue adjustment and bulk territory processes (60+ hours saved a month); quarterly audits of revenue, territories and quota.</li></ul></li><li><strong>Financial Analyst</strong>, Booking.com (Bellevue, WA, Jul 2015 - Sep 2015)<ul><li>Consolidated invoice reporting in SQL and Excel across two offices.</li></ul></li><li><strong>Financial Analyst, Retail</strong>, Amazon (Seattle, WA, Sep 2014 - Mar 2015)<ul><li>Optimized the SQL and automated the refresh of 20 Excel reports behind the Canada Retail weekly business review; customer returns and free replacements analyzed by reason code.</li></ul></li>"
    },
    {
      "text": "Projects",
      "content": "<li><strong>KVMACHINES, independent project</strong>, kvkeys.com/#sql, kvmachines.com (Seattle, WA, Jan 2026 - Present)<ul><li>Built to test whether agents can run a business on Anthropic's products: one Claude session per department with its own key, memory store and routines; a person's signature on every step that changes something; every output a record people and programs can check.</li><li>Designed the kvkeys data model: every connector, skill and version of the department plugins in one Postgres schema (818 entities, 351 skills, 420 versions), replayed from history, every table and most columns commented, a 20-step CI gate before any merge.</li><li>Shipped kvkeys.com/#sql, Postgres running in the browser as the self-serve SQL console over that schema; built the jobs dataset behind this application: 293,891 postings from 13,750 Greenhouse, Lever and Ashby boards joined to the BLS occupation and employment tables.</li><li>Agents open the pull requests and a separate session reviews them before the merge, under rules I set: 685 merged across 39 repositories from 2 to 13 October 2026.</li></ul></li>"
    },
    {
      "text": "Education",
      "content": "<li><strong>University of Washington</strong>, Seattle, WA: Bachelor of Arts, Economics; Minor, Entrepreneurship (Sep 2011 - Dec 2015); GPA 3.5, Dean's List Scholar</li>"
    }
  ],
  "additional": "<p>US citizen. Based in Seattle. Open to Washington, California, and New York. Available to start on offer.</p>",
  "additionalPlain": "US citizen. Based in Seattle. Open to Washington, California, and New York. Available to start on offer.",
  "hostedUrl": "https://alexzhouk.com/",
  "applyUrl": "https://www.linkedin.com/in/alexzhouk/",
  "workplaceType": "unspecified"
}
Which doc section each field follows (11 rows)
FieldFollowsFrom the record
idREADME.md › Get a list of job postings › id ("Unique job posting ID")the record's version label
textREADME.md › text ("Job posting name")experience[0].title
categories.location, allLocationsREADME.md › categories (location, commitment, team, department, allLocations)candidate.city plus the states the status line names; commitment, team and department are not in the record
countryREADME.md › country (ISO 3166-1 alpha-2)candidate.country
opening / openingPlainREADME.md › opening, openingPlaincandidate.summary
description, descriptionBody (+Plain)README.md › description, descriptionPlain, descriptionBody, descriptionBodyPlainresumeHtml(record) / resumeText(record)
lists[]README.md › lists ({text, content: unstyled HTML of list elements})skills, experience, projects, education
additional / additionalPlainREADME.md › additional, additionalPlain ("Optional closing content")the status line
hostedUrl, applyUrlREADME.md › hostedUrl, applyUrlhttps://alexzhouk.com/ and the LinkedIn profile, the one contact
workplaceTypeREADME.md › workplaceType (unspecified | on-site | remote | hybrid)"unspecified": the resume record states none; Alex’s statement of 2026-10-18 (willing to be 4-5 days in office) is in the quick answers
salaryRange, salaryDescriptionREADME.md › salaryRange (optional)left out: no compensation on this page

Ashby

Ashby Job Postings API: the resume as a job

The resume written in the JSON shape this board publishes its jobs in, so the field names can be compared side by side. Nothing sends it anywhere. The application form after it is what Ashby’s hosted form asks for, as observed on one live posting.

follows page.md · Ashby public Job Posting API

GET https://api.ashbyhq.com/posting-api/job-board/alexzhouk?includeCompensation=false · application/json (response) · illustrative: alexzhouk is not an Ashby job board

ashby.posting
{
  "apiVersion": "1",
  "jobs": [
    {
      "title": "Senior Data Engineer",
      "location": "Seattle, WA",
      "secondaryLocations": [
        {
          "location": "Washington",
          "address": {
            "addressRegion": "Washington",
            "addressCountry": "USA"
          }
        },
        {
          "location": "California",
          "address": {
            "addressRegion": "California",
            "addressCountry": "USA"
          }
        },
        {
          "location": "New York",
          "address": {
            "addressRegion": "New York",
            "addressCountry": "USA"
          }
        }
      ],
      "department": null,
      "team": null,
      "isListed": true,
      "descriptionHtml": "<p>Senior data engineer at Coinbase on dbt, Airflow and Snowflake: the unified staking data model, a semantic layer made LLM-ready with the Claude API, the observability platform behind 20+ KPIs. Data Engineer titles since 2023 after a Data Scientist role at TikTok and BI and analytics roles at Amazon; 10+ years in data roles. This year, KVMACHINES: an independent project to test whether agents can run a business on Anthropic's products, with a person's signature on every step that changes something (kvkeys.com/#sql).</p><h3>Skills</h3><ul><li><strong>Pipelines:</strong> dbt Core and Cloud, Airflow, Spark and PySpark, Hive, Databricks, AWS Glue and EMR, GitHub Actions CI/CD</li><li><strong>Warehouses:</strong> Snowflake, Redshift, Databricks, Azure Data Lake, Postgres; dimensional modeling (star schemas, slowly changing dimensions), semantic layers, data contracts, freshness SLAs and data quality KPIs</li><li><strong>Languages:</strong> SQL, Python (Pandas, PySpark, FastAPI, Streamlit), R</li><li><strong>Reporting:</strong> Superset, Tableau, Streamlit apps, SQL consoles in the browser (Postgres in the page); executive and cross-functional dashboards</li><li><strong>AI-assisted engineering:</strong> Claude Code, the Claude API and MCP connectors for pipeline, schema and CI work, with an independent review session before the merge; LLM-ready dbt metadata</li><li><strong>Cloud and tooling:</strong> AWS, Azure, Docker, GitHub Actions</li></ul><h3>Experience</h3><ul><li><strong>Senior Data Engineer</strong>, Coinbase (Remote, Mar 2024 - Present)<ul><li>Led the unified staking data model, a dimensional model across $18.9B in crypto assets on six networks, with Product Management, Data Science and leadership, using dbt Core and Cloud, Airflow and Snowflake; executive dashboards in Superset and Tableau.</li><li>Standardized the semantic layer across Coinbase: Python automation on the Claude API converted 1,600+ dbt, YAML and SQL files into LLM-ready metadata in the company's first data contracts rollout, so LLM-based analytics tools query trusted, documented datasets directly.</li><li>Built the org-wide observability platform in Streamlit (Python, SQL) that monitors 20+ pipeline health and data quality KPIs, with automated source freshness tests and schema validation across the warehouse, cutting the time to detect a failure.</li></ul></li><li><strong>Senior Data Engineer</strong>, Machina Labs (Chatsworth, CA, Feb 2023 - Mar 2024)<ul><li>First data engineering hire: built a robotics startup's Databricks warehouse from the ground up, PySpark ELT pipelines on Azure that bring robot telemetry, Salesforce and GraphQL feeds into a medallion lake for 40+ stakeholders, with CI/CD through GitHub Actions.</li><li>Built the FastAPI service over the Databricks APIs that ended direct cluster access for three internal teams; shipped the invoice management app and a bidirectional pricing calculator (Streamlit, PySpark, Docker on Azure) with write-back for Finance and Sales.</li></ul></li><li><strong>Data Scientist, Creator Monetization</strong>, TikTok (Los Angeles, CA, Dec 2021 - Feb 2023)<ul><li>Owned the Creator Monetization data stack end to end: 15+ production tables with dimensional modeling and 50+ Apache Hive SQL pipelines behind dashboards and cross-team analytics, with data contracts between event producers and downstream consumers.</li><li>Found and fixed a systematic error in the Branded Content revenue pipeline through SQL and lineage review, correcting projected revenue by $115M (+10%); built the Instacart add-to-cart ETL and reporting with anomaly detection, alerting and source freshness SLAs.</li></ul></li><li><strong>Business Intelligence Engineer II, Sponsored Products Advertising</strong>, Amazon (Seattle, WA, May 2020 - Dec 2021)<ul><li>Built and owned four Redshift ETL pipelines (80+ tasks) that publish the Weekly Business Review for the Targeting, Optimization, Recommendation and Budget teams: $450M+ in weekly ad revenue, zero SLA misses in 18 months; seven Tableau dashboards.</li><li>Owned the A/B test that launched Thematic placement sourcing (+$65MM annualized) and identified $8MM more in annualized revenue; standardized data models adopted across four teams.</li></ul></li><li><strong>Business Intelligence Engineer II, Private Brands</strong>, Amazon (Seattle, WA, Nov 2018 - May 2020)<ul><li>Automated product metrics in Redshift for the Accelerator program across 11 countries ($800M, 800% year over year), with slowly changing dimension tables for product attribute history; built the placement-level sales dashboard that steered marketing spend.</li><li>Traced sudden sales dips to bad actors ($300k opportunity cost) and shipped a real-time monitoring pipeline with data quality alerting and the takedown dashboard.</li></ul></li><li><strong>Custom Pricing Analyst</strong>, Amazon Web Services (Seattle, WA, Oct 2017 - Nov 2018)<ul><li>Designed and built the Enterprise Support analytical warehouse in Redshift (10M+ rows), a star-schema dimensional model that replaced manual billing workflows.</li><li>Owned the monthly billing pipeline for every AWS Enterprise Support customer: $55M a month in recurring billing, zero disputes; led two projects that added $1M in monthly AWS revenue.</li></ul></li><li><strong>Business Analyst (contract)</strong>, Amazon (Seattle, WA, Dec 2016 - Oct 2017)<ul><li>Built the Redshift pipelines and dashboards for contract-worker onboarding across 40+ countries and set the data governance standards for the HR system integrations; SQL, R and Python tooling for job-code mapping of the global contingent workforce.</li></ul></li><li><strong>Compensation Data Analyst (contract)</strong>, Microsoft (Redmond, WA, Sep 2016 - Dec 2016)<ul><li>R scripts that automated the manual revenue adjustment and bulk territory processes (60+ hours saved a month); quarterly audits of revenue, territories and quota.</li></ul></li><li><strong>Financial Analyst</strong>, Booking.com (Bellevue, WA, Jul 2015 - Sep 2015)<ul><li>Consolidated invoice reporting in SQL and Excel across two offices.</li></ul></li><li><strong>Financial Analyst, Retail</strong>, Amazon (Seattle, WA, Sep 2014 - Mar 2015)<ul><li>Optimized the SQL and automated the refresh of 20 Excel reports behind the Canada Retail weekly business review; customer returns and free replacements analyzed by reason code.</li></ul></li></ul><h3>Projects</h3><ul><li><strong>KVMACHINES, independent project</strong>, kvkeys.com/#sql, kvmachines.com (Seattle, WA, Jan 2026 - Present)<ul><li>Built to test whether agents can run a business on Anthropic's products: one Claude session per department with its own key, memory store and routines; a person's signature on every step that changes something; every output a record people and programs can check.</li><li>Designed the kvkeys data model: every connector, skill and version of the department plugins in one Postgres schema (818 entities, 351 skills, 420 versions), replayed from history, every table and most columns commented, a 20-step CI gate before any merge.</li><li>Shipped kvkeys.com/#sql, Postgres running in the browser as the self-serve SQL console over that schema; built the jobs dataset behind this application: 293,891 postings from 13,750 Greenhouse, Lever and Ashby boards joined to the BLS occupation and employment tables.</li><li>Agents open the pull requests and a separate session reviews them before the merge, under rules I set: 685 merged across 39 repositories from 2 to 13 October 2026.</li></ul></li></ul><h3>Education</h3><ul><li><strong>University of Washington</strong>, Seattle, WA: Bachelor of Arts, Economics; Minor, Entrepreneurship (Sep 2011 - Dec 2015); GPA 3.5, Dean's List Scholar</li></ul><p>US citizen. Based in Seattle. Open to Washington, California, and New York. Available to start on offer.</p>",
      "descriptionPlain": "ALEX ZHOUK\nSeattle, WA | https://www.linkedin.com/in/alexzhouk/ | https://kvkeys.com/#sql | https://kvmachines.com\nUS citizen. Based in Seattle. Open to Washington, California, and New York. Available to start on offer.\n\nSUMMARY\nSenior data engineer at Coinbase on dbt, Airflow and Snowflake: the unified staking data model, a semantic layer made LLM-ready with the Claude API, the observability platform behind 20+ KPIs. Data Engineer titles since 2023 after a Data Scientist role at TikTok and BI and analytics roles at Amazon; 10+ years in data roles. This year, KVMACHINES: an independent project to test whether agents can run a business on Anthropic's products, with a person's signature on every step that changes something (kvkeys.com/#sql).\n\nSKILLS\nPipelines: dbt Core and Cloud, Airflow, Spark and PySpark, Hive, Databricks, AWS Glue and EMR, GitHub Actions CI/CD\nWarehouses: Snowflake, Redshift, Databricks, Azure Data Lake, Postgres; dimensional modeling (star schemas, slowly changing dimensions), semantic layers, data contracts, freshness SLAs and data quality KPIs\nLanguages: SQL, Python (Pandas, PySpark, FastAPI, Streamlit), R\nReporting: Superset, Tableau, Streamlit apps, SQL consoles in the browser (Postgres in the page); executive and cross-functional dashboards\nAI-assisted engineering: Claude Code, the Claude API and MCP connectors for pipeline, schema and CI work, with an independent review session before the merge; LLM-ready dbt metadata\nCloud and tooling: AWS, Azure, Docker, GitHub Actions\n\nEXPERIENCE\n\nSenior Data Engineer\nCoinbase | Remote | Mar 2024 - Present\n- Led the unified staking data model, a dimensional model across $18.9B in crypto assets on six networks, with Product Management, Data Science and leadership, using dbt Core and Cloud, Airflow and Snowflake; executive dashboards in Superset and Tableau.\n- Standardized the semantic layer across Coinbase: Python automation on the Claude API converted 1,600+ dbt, YAML and SQL files into LLM-ready metadata in the company's first data contracts rollout, so LLM-based analytics tools query trusted, documented datasets directly.\n- Built the org-wide observability platform in Streamlit (Python, SQL) that monitors 20+ pipeline health and data quality KPIs, with automated source freshness tests and schema validation across the warehouse, cutting the time to detect a failure.\n\nSenior Data Engineer\nMachina Labs | Chatsworth, CA | Feb 2023 - Mar 2024\n- First data engineering hire: built a robotics startup's Databricks warehouse from the ground up, PySpark ELT pipelines on Azure that bring robot telemetry, Salesforce and GraphQL feeds into a medallion lake for 40+ stakeholders, with CI/CD through GitHub Actions.\n- Built the FastAPI service over the Databricks APIs that ended direct cluster access for three internal teams; shipped the invoice management app and a bidirectional pricing calculator (Streamlit, PySpark, Docker on Azure) with write-back for Finance and Sales.\n\nData Scientist, Creator Monetization\nTikTok | Los Angeles, CA | Dec 2021 - Feb 2023\n- Owned the Creator Monetization data stack end to end: 15+ production tables with dimensional modeling and 50+ Apache Hive SQL pipelines behind dashboards and cross-team analytics, with data contracts between event producers and downstream consumers.\n- Found and fixed a systematic error in the Branded Content revenue pipeline through SQL and lineage review, correcting projected revenue by $115M (+10%); built the Instacart add-to-cart ETL and reporting with anomaly detection, alerting and source freshness SLAs.\n\nBusiness Intelligence Engineer II, Sponsored Products Advertising\nAmazon | Seattle, WA | May 2020 - Dec 2021\n- Built and owned four Redshift ETL pipelines (80+ tasks) that publish the Weekly Business Review for the Targeting, Optimization, Recommendation and Budget teams: $450M+ in weekly ad revenue, zero SLA misses in 18 months; seven Tableau dashboards.\n- Owned the A/B test that launched Thematic placement sourcing (+$65MM annualized) and identified $8MM more in annualized revenue; standardized data models adopted across four teams.\n\nBusiness Intelligence Engineer II, Private Brands\nAmazon | Seattle, WA | Nov 2018 - May 2020\n- Automated product metrics in Redshift for the Accelerator program across 11 countries ($800M, 800% year over year), with slowly changing dimension tables for product attribute history; built the placement-level sales dashboard that steered marketing spend.\n- Traced sudden sales dips to bad actors ($300k opportunity cost) and shipped a real-time monitoring pipeline with data quality alerting and the takedown dashboard.\n\nCustom Pricing Analyst\nAmazon Web Services | Seattle, WA | Oct 2017 - Nov 2018\n- Designed and built the Enterprise Support analytical warehouse in Redshift (10M+ rows), a star-schema dimensional model that replaced manual billing workflows.\n- Owned the monthly billing pipeline for every AWS Enterprise Support customer: $55M a month in recurring billing, zero disputes; led two projects that added $1M in monthly AWS revenue.\n\nBusiness Analyst (contract)\nAmazon | Seattle, WA | Dec 2016 - Oct 2017\n- Built the Redshift pipelines and dashboards for contract-worker onboarding across 40+ countries and set the data governance standards for the HR system integrations; SQL, R and Python tooling for job-code mapping of the global contingent workforce.\n\nCompensation Data Analyst (contract)\nMicrosoft | Redmond, WA | Sep 2016 - Dec 2016\n- R scripts that automated the manual revenue adjustment and bulk territory processes (60+ hours saved a month); quarterly audits of revenue, territories and quota.\n\nFinancial Analyst\nBooking.com | Bellevue, WA | Jul 2015 - Sep 2015\n- Consolidated invoice reporting in SQL and Excel across two offices.\n\nFinancial Analyst, Retail\nAmazon | Seattle, WA | Sep 2014 - Mar 2015\n- Optimized the SQL and automated the refresh of 20 Excel reports behind the Canada Retail weekly business review; customer returns and free replacements analyzed by reason code.\n\nPROJECTS\n\nKVMACHINES, independent project\nkvkeys.com/#sql, kvmachines.com | Seattle, WA | Jan 2026 - Present\n- Built to test whether agents can run a business on Anthropic's products: one Claude session per department with its own key, memory store and routines; a person's signature on every step that changes something; every output a record people and programs can check.\n- Designed the kvkeys data model: every connector, skill and version of the department plugins in one Postgres schema (818 entities, 351 skills, 420 versions), replayed from history, every table and most columns commented, a 20-step CI gate before any merge.\n- Shipped kvkeys.com/#sql, Postgres running in the browser as the self-serve SQL console over that schema; built the jobs dataset behind this application: 293,891 postings from 13,750 Greenhouse, Lever and Ashby boards joined to the BLS occupation and employment tables.\n- Agents open the pull requests and a separate session reviews them before the merge, under rules I set: 685 merged across 39 repositories from 2 to 13 October 2026.\n\nEDUCATION\nUniversity of Washington | Seattle, WA\nBachelor of Arts, Economics; Minor, Entrepreneurship | Sep 2011 - Dec 2015\nGPA 3.5, Dean's List Scholar\n",
      "publishedAt": "2026-10-13T00:00:00.000+00:00",
      "address": {
        "postalAddress": {
          "addressLocality": "Seattle",
          "addressRegion": "Washington",
          "addressCountry": "USA"
        }
      },
      "jobUrl": "https://alexzhouk.com/",
      "applyUrl": "https://www.linkedin.com/in/alexzhouk/"
    }
  ]
}

email, phone and the resume file in the observed form: withheld on this page; contact is LinkedIn

Which doc section each field follows (13 rows)
FieldFollowsFrom the record
apiVersionpage.md › API › apiVersion ("1")the doc
jobs[].titlepage.md › jobs[].titleexperience[0].title
jobs[].locationpage.md › jobs[].locationcandidate.city
jobs[].secondaryLocations[]page.md › secondaryLocations[].location, address{addressLocality, addressRegion, addressCountry}the states the status line names (region and country only)
jobs[].department, teampage.md › jobs[].department, jobs[].teamnull: not in the record
jobs[].isListedpage.md › jobs[].isListedtrue: this page is public
jobs[].descriptionHtml / descriptionPlainpage.md › jobs[].descriptionHtml, descriptionPlainresumeHtml(record) / resumeText(record)
jobs[].publishedAtpage.md › jobs[].publishedAt (ISO DateTime)the record's version date, 2026-10-13
jobs[].address.postalAddresspage.md › postalAddress.addressLocality, addressRegion, addressCountrycandidate.city
jobs[].jobUrl, applyUrlpage.md › jobs[].jobUrl, jobs[].applyUrlhttps://alexzhouk.com/ and the LinkedIn profile, the one contact
jobs[].isRemote, workplaceType, employmentTypepage.md: "where some piece of this data is missing in Ashby, it will also be missing in this response"left out: not in the resume record (the office statement of 2026-10-18 is in the quick answers)
compensationpage.md › compensation (includeCompensation=true)left out: no compensation on this page
applicationForm (observed)not in page.md: applicationForm of a live Ashby job posting (the public job-posting API, non-user GraphQL)system field paths observed 2026-10-19 on a Wealth.com posting (the posting’s own URL was not recorded); Ashby's resume autofill was never run, so there is no parsed result to compare

Application form field paths observed 2026-10-19

What Ashby’s hosted application form asks a candidate for: the system fields every form has, plus per-form fields. The values are this record’s answers; the form sends them to the employer, never to this page.

applicationForm of a live Ashby job posting (the public job-posting API, non-user GraphQL). Read from a Wealth.com posting on 2026-10-19 (the posting’s own URL was not recorded; its board is in the company index: jobs.ashbyhq.com/wealth-com). Ashby's resume autofill was never run, so there is no parsed result to compare.

ashby.applicationForm (observed)
{
  "label": "observed",
  "when": "2026-10-19",
  "where": "applicationForm of a live Ashby job posting (the public job-posting API, non-user GraphQL)",
  "note": "the value key is this record's answer for each field; isRequired and isNullable are set per form and are not reproduced here",
  "sections": [
    {
      "title": null,
      "fieldEntries": [
        {
          "isRequired": null,
          "field": {
            "path": "_systemfield_name",
            "title": "Name",
            "type": "String",
            "isNullable": null
          },
          "value": "Alex Zhouk"
        },
        {
          "isRequired": null,
          "field": {
            "path": "_systemfield_email",
            "title": "Email",
            "type": "Email",
            "isNullable": null
          },
          "value": "{email}"
        },
        {
          "isRequired": null,
          "field": {
            "path": "_systemfield_location",
            "title": "Location",
            "type": "Location",
            "isNullable": null
          },
          "value": "Seattle, Washington, United States"
        },
        {
          "isRequired": null,
          "field": {
            "path": "_systemfield_resume",
            "title": "Resume",
            "type": "File",
            "isNullable": null
          },
          "value": "{resume file}"
        },
        {
          "isRequired": null,
          "field": {
            "path": "{per-form UUID}",
            "title": "Phone",
            "type": "Phone",
            "isNullable": null
          },
          "value": "{phone}"
        }
      ]
    }
  ]
}

Bench

For engineers: the resume scored against eleven public postings by one vocabulary method, with the method’s limits. Recruiters can skip this view.

the resume scored against data-engineering postings on three boards

One card per company, 11 roles. Score bars share one 0–1 scale; the strip under each bar splits the posting’s requirements into covered, partial and missing. Gaps are shown as gaps, and every excerpt says which vocabulary terms made it count.

covered partial missing · generated 2026-10-19

Resume input: v12 (Alex_Zhouk_Resume_ATS.txt), the record’s own plain text (the Resume view shows it as resume_text); the build checks that the two are equal, the contact line and the status line aside.

Method

method: greenhouse-resume evaluate.py · 64 terms · weights must 1 / responsibility 0.75 / nice 0.5

Each requirement bullet scores the share of the vocabulary terms it names that the resume shows (an "N+ years" ask counts as a term, met by the dated data titles), a bullet naming no term scores by stemmed word overlap instead (covered at 50%, partial at 25%), and the role score is the mean of the bullet scores weighted by section.

What it does not measure

  1. The resume was not scored blind against Anthropic: versions 5 to 12 were each scored against the Anthropic postings with this evaluator while the resume was being revised, so the three Anthropic scores are not an independent test. The OpenAI and Spotify roles were scored once, on 2026-10-19, after the resume was final.
  2. It scores vocabulary, not ability: a requirement bullet is covered when the resume names the terms the bullet names. A bullet that names no term falls back to stemmed word overlap (covered at half the words shared, partial at a quarter).
  3. The vocabulary has 64 terms, chosen by one person; a posting that asks in other words scores low for the wrong reason, and a resume that happens to name the terms scores high for the wrong reason.
  4. A named technology counts as covered when a broader term matches it: a bullet asking for GCP and Kubernetes is covered by the term “cloud platform”, which other clouds on the resume satisfy, and a bullet asking for Java backend services names no term at all, so it was covered on shared words alone. The terms each excerpt matched are printed under it so the reason is visible.
  5. Years are not compared the way a reader would: only the first “N+ years” ask in a bullet is read, and it is checked against the years in data, analytics and BI titles; a second ask in the same bullet (8+ years of software engineering) is never compared, and the field an ask names is not checked.
  6. Soft lines are scored like skills: “a passion for the mission” and “a bias for action” are vocabulary terms with a word pattern for the posting and one for the resume, so a match there is a match of words, not of character.
  7. Three companies, eleven roles, one resume version: a sample, not a market. Roles were picked by a title filter (data or analytics engineering, individual contributors only); management and program roles are listed as left out.
  8. Postings move. The Anthropic roles were scored on 2026-10-13 and not re-run; by 2026-10-19, 1 of the 4 roles scored then (“Data Engineer, Safeguards”) had closed on the board, and 1 posting on the board (“Recruiting Analytics Data Engineer”) was never scored. The OpenAI and Spotify postings were fetched and scored on 2026-10-19.
  9. Vendor headings are mapped to the parser’s five sections by hand (the heading maps on each role). Text before the first mapped heading (an “About the team” block, shown as intro) is skipped, and a heading the map does not know is dropped from scoring and recorded as unmapped.
  10. The score is a weighted mean of bullet scores (must 1, responsibility 0.75, nice 0.5), so a posting with many responsibility bullets and one hard must-have can score well while missing the must-have. The must-have count sits next to every score for that reason.

Anthropic greenhouse

evaluated 2026-10-13 · fetched 2026-10-12 · board: anthropic

  • Data Engineer, Product
    San Francisco, CA | New York City, NY | Seattle, WA
    0.98

    17 covered · 1 partial · 0 missing of 18 requirements · must-haves 8/9

    Covered AI to scale the work Airflow bias for action building a function from the ground up canonical datasets clarity in ambiguity dashboards and reporting data architecture data modeling data products data quality and integrity dbt end-to-end ownership ETL/ELT pipelines GitHub and version control metrics and KPIs partnering across teams product metrics Python reliability and error handling scale self-serve analytics shaping roadmaps SLAs and timely delivery SQL the mission usage logs and events
    Gaps Hex

    headings: About the role → about · Responsibilities → responsibility · You may be a good fit if you have → must · Strong candidates may also have → nice · The annual compensation range for this role is listed below. → stop

    • covered must Expertise building multi-step ETL jobs with tools like dbt, plus experience with workflow tools like Airflow and version control through… matched terms: Airflow, dbt, ETL/ELT pipelines, GitHub and version control posting
    • covered must Expertise in SQL and Python for turning data into accurate, clean data models matched terms: data modeling, data quality and integrity, Python, SQL posting
    • covered must Significant experience as a Data Engineer or in a similar Data Science & Analytics role, ideally partnering with Product leads to build… matched terms: partnering across teams, metrics and KPIs, product metrics posting
    • covered must Experience using AI to scale your own productivity and your team's without lowering the quality of the work matched terms: AI to scale the work, scale posting
    • covered must A passion for Anthropic's mission of building helpful, honest and harmless AI matched terms: the mission posting
    • covered must A bias for action, and a sense of when "good enough" beats perfect matched terms: bias for action posting
  • Data Engineer, Billing & Payments
    San Francisco, CA | New York City, NY
    0.97

    19 covered · 2 partial · 0 missing of 21 requirements · must-haves 8/9

    Covered 5+ years Airflow bias for action billing and payments building a function from the ground up canonical datasets clarity in ambiguity dashboards and reporting data architecture data modeling data products data quality and integrity dbt end-to-end ownership ETL/ELT pipelines finance and revenue operations GitHub and version control integrating sources metrics and KPIs monitoring and alerting partnering across teams Python reconciliation self-serve analytics shaping roadmaps SLAs and timely delivery SQL the mission usage logs and events
    Gaps Hex on-call and data operations

    headings: About the role → about · Responsibilities: → responsibility · You may be a good fit if you have: → must · Strong candidates may also have: → nice · The annual compensation range for this role is listed below. → stop

    • covered must Expertise in SQL and Python, and in building multi-step data pipelines with tools like dbt matched terms: dbt, ETL/ELT pipelines, Python, SQL posting
    • covered must Experience with workflow orchestration tools like Airflow, and version control with GitHub matched terms: Airflow, GitHub and version control posting
    • covered must Familiarity with billing concepts such as invoicing, payments, credits, refunds and subscriptions, and experience working with data from… matched terms: billing and payments, integrating sources posting
    • covered must 5+ years of experience as a Data Engineer, Analytics Engineer or in a similar role matched terms: 5+ years posting
    • covered must A bias for action and urgency, without letting perfect be the enemy of the effective matched terms: bias for action posting
    • covered must A full-stack mindset: you do what it takes to solve a problem end to end, even when it goes beyond the original scope matched terms: end-to-end ownership posting
  • Data Engineer, GTM
    San Francisco, CA | New York City, NY
    0.98

    15 covered · 1 partial · 0 missing of 16 requirements · must-haves 9/10

    Covered 5+ years a cloud warehouse Airflow BI tools (Looker, Tableau, Metabase, Superset) bias for action billing and payments building a function from the ground up canonical datasets clarity in ambiguity dashboards and reporting data modeling data products data quality and integrity dbt end-to-end ownership ETL/ELT pipelines finance and revenue operations GitHub and version control integrating sources partnering across teams Python quote-to-cash (CPQ, contracts, ERP) reliability and error handling Salesforce scale self-serve analytics shaping roadmaps SLAs and timely delivery SQL the mission
    Gaps Hex

    headings: About the Role → about · Responsibilities → responsibility · You might be a good fit if you have → must · The annual compensation range for this role is listed below. → stop

    • covered must Expertise in building multi-step ETL jobs, building robust data models through tooling like dbt; proficiency with workflow management… matched terms: Airflow, data modeling, dbt, ETL/ELT pipelines, reliability and error handling, GitHub and version control posting
    • covered must Hands-on experience modeling Salesforce data and at least one adjacent quote-to-cash system: CPQ, contract lifecycle management, billing… matched terms: billing and payments, quote-to-cash (CPQ, contracts, ERP), data modeling, Salesforce posting
    • covered must Expertise in SQL and Python to transform data into accurate, clean data models. matched terms: data modeling, data quality and integrity, Python, SQL posting
    • covered must 5+ years of experience as a Data Engineer, Analytics Engineer or in a similar Data Science & Analytics role, ideally partnering with GTM… matched terms: partnering across teams, finance and revenue operations, 5+ years posting
    • covered must A passion for the company's mission of building helpful, honest, and harmless AI. matched terms: the mission posting
    • covered must A bias for action and urgency, not letting perfect be the enemy of the effective. matched terms: bias for action posting
Left out (2)
  • 5424111008 Recruiting Analytics Data Engineer — not in the v12 evaluation of 2026-10-13 (v12-four-roles.json scores Product, Billing & Payments, GTM and Safeguards); the evaluation was not re-run for this bench
  • 5240422008 Data Engineer, Safeguards — scored 0.900 in the v12 evaluation of 2026-10-13, but the posting was closed on the Greenhouse board by 2026-10-19 (the board API returns 404)

Structural gaps Hex on-call and data operations

source: v12-four-roles.json

OpenAI ashby

evaluated 2026-10-19 · fetched 2026-10-19 · board: openai

  • Data Engineer
    San Francisco, CA | Mountain View, CA
    0.84

    9 covered · 0 partial · 2 missing of 11 requirements · must-haves 4/5

    Covered 3+ years a cloud warehouse Airflow canonical datasets data architecture ETL/ELT pipelines finance and revenue operations integrating sources metrics and KPIs performance and optimization product metrics Python reliability and error handling Spark
    Gaps privacy and compliance

    headings: About the team → intro (text before the first section heading: skipped, not scored) · About the role: → about · In this role, you will: → responsibility · You might thrive in this role if you: → must · paragraph: This role is exclusively based in our San Francisco HQ. Some of our roles are also locate… → stop

    • missing must Experience with distributed processing technologies and frameworks, such as Hadoop, Flink and distributed storage systems (e.g., HDFS, S3). no vocabulary term in this bullet: too few shared words posting
    • covered must Expertise with any of ETL schedulers such as Airflow, Dagster, Prefect or similar frameworks. matched terms: Airflow, ETL/ELT pipelines posting
    • covered must Solid understanding of Spark and ability to write, debug and optimize Spark code. matched terms: performance and optimization, Spark posting
    • covered must Have 3+ years of experience as a data engineer and 8+ years of any software engineering experience(including data engineering). matched terms: 3+ years posting
    • covered must Proficiency in at least one programming language commonly used within Data Engineering, such as Python, Scala, or Java. matched terms: Python posting
    • covered responsibility Develop canonical datasets to track key product metrics including user growth, engagement, and revenue. matched terms: canonical datasets, metrics and KPIs, product metrics posting
  • 0.84

    9 covered · 0 partial · 2 missing of 11 requirements · must-haves 4/5

    Covered 3+ years a cloud warehouse Airflow canonical datasets data architecture ETL/ELT pipelines finance and revenue operations integrating sources metrics and KPIs performance and optimization product metrics Python reliability and error handling Spark
    Gaps privacy and compliance

    headings: About the Team → intro (text before the first section heading: skipped, not scored) · About the role: → about · In this role, you will: → responsibility · You might thrive in this role if you: → must · paragraph: This role is based in Bellevue. We use a hybrid work model and value in-person collaborat… → stop

    • missing must Experience with distributed processing technologies and frameworks, such as Hadoop, Flink and distributed storage systems (e.g., HDFS, S3). no vocabulary term in this bullet: too few shared words posting
    • covered must Expertise with any of ETL schedulers such as Airflow, Dagster, Prefect or similar frameworks. matched terms: Airflow, ETL/ELT pipelines posting
    • covered must Solid understanding of Spark and ability to write, debug and optimize Spark code. matched terms: performance and optimization, Spark posting
    • covered must Have 3+ years of experience as a data engineer and 8+ years of any software engineering experience(including data engineering). matched terms: 3+ years posting
    • covered must Proficiency in at least one programming language commonly used within Data Engineering, such as Python, Scala, or Java. matched terms: Python posting
    • covered responsibility Develop canonical datasets to track key product metrics including user growth, engagement, and revenue. matched terms: canonical datasets, metrics and KPIs, product metrics posting
  • Analytics Engineer, GTM
    San Francisco, CA | New York, NY
    0.84

    18 covered · 1 partial · 3 missing of 22 requirements · must-haves 9/12

    Covered 10+ years AI to scale the work BI tools (Looker, Tableau, Metabase, Superset) bias for action dashboards and reporting data modeling data products documentation ETL/ELT pipelines finance and revenue operations integrating sources metrics and KPIs partnering across teams Python scale self-serve analytics SQL
    Gaps none

    headings: About the Role → about · In This Role, You Will → responsibility · You Might Thrive in This Role If You → must · About OpenAI → stop

    • missing must Can independently structure and own ambiguous, high-impact business problems from initial framing through recommendation and execution. no vocabulary term in this bullet: too few shared words posting
    • missing must Bring exceptional attention to detail and a strong commitment to accuracy. no vocabulary term in this bullet: too few shared words posting
    • covered must Have deep SQL expertise and extensive experience working with large datasets and designing ETL workflows. matched terms: ETL/ELT pipelines, SQL posting
    • covered must Have experience with BI tools such as Tableau or Looker and know how to enable effective self-service analytics. matched terms: BI tools (Looker, Tableau, Metabase, Superset), self-serve analytics posting
    • covered must Have 10+ years of experience in a relevant data role within fast-moving, results-oriented organizations. matched terms: 10+ years posting
    • covered must Are highly autonomous, resourceful, and creative when navigating technical, operational, and stakeholder constraints. matched terms: partnering across teams posting
  • Software Engineer, Data Infrastructure
    San Francisco, CA | New York, NY | Seattle, WA | Mountain View, CA
    0.81

    7 covered · 2 partial · 1 missing of 10 requirements · must-haves 4/5

    Covered 4+ years clarity in ambiguity partnering across teams performance and optimization reliability and error handling scale
    Gaps on-call and data operations

    headings: About the Team → intro (text before the first section heading: skipped, not scored) · About the Role → about · In this role, you will: → responsibility · You might thrive in this role if you: → must · paragraph: This role is exclusively based in our San Francisco HQ. We offer relocation assistance to… → stop

    • missing must Have an intrinsic desire to learn and fill in missing skills, and an equally strong talent for sharing learnings clearly and concisely… no vocabulary term in this bullet: too few shared words posting
    • covered must Take pride in building and operating scalable, reliable, secure systems matched terms: reliability and error handling, scale posting
    • covered must Have 4+ years in data infrastructure engineering OR matched terms: 4+ years posting
    • covered must Have 4+ years in infrastructure engineering with a strong interest in data matched terms: 4+ years posting
    • covered must Are comfortable with ambiguity and rapid change matched terms: clarity in ambiguity posting
    • covered responsibility Ensure our data platform can scale by orders of magnitude while remaining reliable and efficient matched terms: reliability and error handling, scale, performance and optimization posting
Left out (2)
  • acbf80cd-20a7-47fe-aaf9-3e9224d1570c Data Engineering Manager, Growth & Revenue — management role (Data Engineering Manager); the bench scores individual-contributor data roles only
  • c0c70d7e-c450-4ca4-842a-dbc5e643c048 Technical Program Manager, Storage & Data Infrastructure — program-management role (Technical Program Manager); the bench scores individual-contributor data roles only

Structural gaps privacy and compliance

source: openai.json

Spotify lever

evaluated 2026-10-19 · fetched 2026-10-19 · board: spotify

Spotify's roles here are in London and Stockholm: its Lever board had no US data roles on 2026-10-19.

  • 0.75

    9 covered · 2 partial · 3 missing of 14 requirements · must-haves 5/8

    Covered CI and tests clarity in ambiguity data architecture data modeling experiments and statistics partnering across teams reliability and error handling scale Spark SQL
    Gaps BigQuery

    headings: description (Lever field) → about · What You'll Do → responsibility · Who You Are → must · Where You'll Be → stop · additional (Lever field) → stop

    • missing must You are an experienced Data Engineer, and proficient in backend development using Java. no vocabulary term in this bullet: too few shared words posting
    • missing must You are familiar with DevOps practices, cloud infrastructure, containerized applications, and Kubernetes fundamentals. no vocabulary term in this bullet: too few shared words posting
    • covered must You have experience with JVM-based data processing frameworks such as Flink, Beam, Dataflow, or Spark. matched terms: Spark posting
    • covered must You have experience with data modeling and schema design. matched terms: data modeling posting
    • covered must You care about high-quality code and engineering practices such as continuous delivery and automated testing. matched terms: CI and tests posting
    • covered must You value experimentation, iterative development, and collaborative software development practices. matched terms: experiments and statistics posting
  • Senior Backend Data Engineer – Content Intelligence
    Stockholm, Sweden | London, United Kingdom
    0.73

    16 covered · 2 partial · 5 missing of 23 requirements · must-haves 8/12

    Covered 5+ years AI to scale the work communicating with non-technical readers end-to-end ownership ML model monitoring and evaluation partnering across teams performance and optimization Python reliability and error handling scale
    Gaps on-call and data operations

    headings: description (Lever field) → about · What You Will Do → responsibility · Who You Are → must · Where You’ll Be → stop · additional (Lever field) → stop

    • missing must You have deep expertise in either backend or data engineering and are comfortable working across both disciplines no vocabulary term in this bullet: too few shared words posting
    • missing must You’re comfortable operating in an environment where backend, data, ML infrastructure, and AI increasingly overlap no vocabulary term in this bullet: too few shared words posting
    • missing must You’re able to participate in a shared on-call rotation terms not on the resume: on-call and data operations posting
    • covered must Experience with ML infrastructure, AI/LLM systems, agents, model evaluation, or integrating model APIs at scale is a plus matched terms: AI to scale the work, scale, ML model monitoring and evaluation posting
    • covered must You communicate effectively and enjoy collaborating with engineering, product, and technical stakeholders matched terms: communicating with non-technical readers, partnering across teams posting
    • covered must You have 5+ years of relevant engineering experience, with strong experience in backend and/or data engineering matched terms: 5+ years posting
  • Backend Engineer II - Data Platform
    Stockholm, Sweden | London, United Kingdom
    0.74

    6 covered · 4 partial · 0 missing of 10 requirements · must-haves 3/6

    Covered a cloud warehouse cloud platform communicating with non-technical readers data products data quality and integrity end-to-end ownership ETL/ELT pipelines governance and lineage reliability and error handling Snowflake Spark SQL usage logs and events
    Gaps BigQuery on-call and data operations

    headings: description (Lever field) → about · What You'll Do → responsibility · Who You Are → must · Where You'll Be → stop · additional (Lever field) → stop

    • covered must You have a working understanding of data engineering concepts such as orchestration, metadata management, data quality, governance and… matched terms: governance and lineage, data quality and integrity posting
    • covered must You are a strong communicator and collaborator who enjoys working across teams, and you're comfortable in a dynamic platform environment… matched terms: communicating with non-technical readers posting
    • covered must You have solid experience building and running backend services and APIs in production with Java, and you care about API design… no vocabulary term in this bullet: covered on shared words alone posting
    • covered responsibility Build Data Pipelines: Develop and run the batch and streaming pipelines that keep our metadata current, processing platform events and… matched terms: governance and lineage, data products, ETL/ELT pipelines, usage logs and events posting
    • covered responsibility Build and Evolve Core Services: Design, build and operate the backend services and APIs behind our data catalog, lineage and publishing… matched terms: governance and lineage, reliability and error handling posting
    • covered responsibility Own Projects End to End: Turn what the teams using our platform need into technical designs, drive them through delivery and rollout, and… matched terms: end-to-end ownership posting
  • Backend Engineer - Data Platform
    Stockholm, Sweden | London, United Kingdom
    0.65

    4 covered · 7 partial · 0 missing of 11 requirements · must-haves 2/7

    Covered a cloud warehouse cloud platform communicating with non-technical readers ETL/ELT pipelines monitoring and alerting reconciliation scale Snowflake Spark
    Gaps BigQuery on-call and data operations

    headings: description (Lever field) → about · What You'll Do → responsibility · Who You Are → must · Where You'll Be → stop · additional (Lever field) → stop

    • covered must You're comfortable on GCP and Kubernetes. You can read kubectl output, reason about IAM and quotas, and work with CRDs and operators. You… matched terms: cloud platform posting
    • covered must You communicate clearly in writing and work well asynchronously across US and EU time zones. matched terms: communicating with non-technical readers posting
    • covered responsibility Build and evolve the lakehouse: Help build the foundations that let data workflows read and write Iceberg tables directly, from this… matched terms: a cloud warehouse posting
    • covered responsibility Drive adoption: Help migrate data pipelines from across Spotify onto the new stack, making the move as painless as possible through… matched terms: ETL/ELT pipelines posting
Left out (1)
  • abcc8b41-7553-4054-b5eb-8d3e49e00e25 Engineering Manager - Data Platform — management role (Engineering Manager); the bench scores individual-contributor data roles only

Structural gaps BigQuery on-call and data operations

source: spotify.json

Company index

For engineers: the job-board index behind the bench and the postings dataset, with how it was collected. Recruiters can skip this view.

captured 2026-10-19 from the public board APIs

Every company job-board slug in the registry behind the postings dataset, probed once on Greenhouse, Lever and Ashby: 13,750 boards, 293,994 open reqs on the live ones. Per-slug liveness and open_reqs are as of the 2026-10-19 pull, not today. How the index was made is under the summary.

ATSlivedeademptytotal
greenhouse4,5778656906,132
lever1,7921,1543863,332
ashby2,8661,0493714,286
all9,2353,0681,44713,750

25 slugs flagged as sandbox, test or demo by /sandbox|\btest(ing)?\b|\bdemo\b/i on slug or company. Source: the 13,750 Greenhouse, Lever and Ashby slugs behind the jobs dataset of resume v12 (KVMACHINES bullet 3: 293,891 postings as of 2026-09-28/29), each probed again on 2026-10-19. The whole index: db/boards.json (columnar JSON; decodeBoards() in this page’s source reads it).

How the index was made

Where the slugs came from

The registry the pull asked again: 13,750 (ATS, slug) pairs, first seen between 2026-07-28 and 2026-09-29. 9,688 from an earlier capture’s dataset (dated 2026-09-22), 2,994 found by a slug resolver, 1,058 migrated from an earlier list, 10 from Alex’s own list of AI companies (checked by hand on 2026-09-27): 13,750 in all.

What was asked per slug

One public request per board, no key: Greenhouse GET https://boards-api.greenhouse.io/v1/boards/{slug}/jobs?content=true; Lever GET https://api.lever.co/v0/postings/{slug}?mode=json; Ashby GET https://api.ashbyhq.com/posting-api/job-board/{slug}?includeCompensation=true. At most 10 requests a second to Greenhouse, 3 to Lever and 5 to Ashby, 32 boards in flight; a 429 or 5xx answer was retried up to four times with backoff. No request was conditional: every board answered with its full list.

What live, empty and dead mean

Live: the board answered 200 with one or more postings, and open reqs is their count. Empty: 200 with none. Dead: 404. Any other answer counts as an error, not as dead, and its board is pulled again; in this pull every board answered 200 or 404.

When

One pull in 9 chunks, from 2026-10-20 02:56 UTC to 03:40 UTC (the evening of 2026-10-19 in Pacific time, hence the 2026-10-19 label). Every row’s probed day is that day, dead boards included: it is the day of the probe, not the day the board was last seen alive. The previous capture of the same slugs, 2026-09-28/29, counted 293,891 postings: the figure on the resume.

The company column

The name is the registry’s, not the board’s answer: it came with the slug from the earlier capture (from Alex’s list for its 10 boards) and the probe does not update it; where the earlier capture took its names from is not recorded in the sources read for this page. So 519 of the 3,068 dead boards still carry a name, 343 live boards have none (shown blank), and a wrong registry name stays wrong: OpenAI’s Ashby board is recorded as “Open Company”.

The first 50 rows are below; the full index (13,750 rows) loads when this view opens.

13,750 of 13,750 boards · 9,235 live · 3,068 dead · 1,447 empty · 25 flagged · 293,994 open reqs on live boards

ATSSlugCompany (registry name)LivenessOpen reqsProbed (Pacific day)Flag
greenhouse103644278Lume Deodorantlive162026-10-19
greenhouse1047games1047 gamesdead—2026-10-19
greenhouse10alabs10a Labslive222026-10-19
greenhouse10beauty10Beautylive112026-10-19
greenhouse10pearlsuk10Pearls - UKempty02026-10-19
greenhouse113134Cast and Crewdead—2026-10-19
greenhouse12jlkfskOrion Global Solutionslive52026-10-19
greenhouse12twenty12twentylive72026-10-19
greenhouse143studiosinc143 Studios LLClive12026-10-19
greenhouse14technology14 Technology Holdingslive22026-10-19
greenhouse1800contacts1-800 Contactslive142026-10-19
greenhouse1800gotjunk1-800-GOT-JUNK?live602026-10-19
greenhouse1910genetics1910dead—2026-10-19
greenhouse1uphealth1upHealthdead—2026-10-19
greenhouse21shares21Shareslive12026-10-19
greenhouse240certification240 Certificationempty02026-10-19
greenhouse2bc11c2c7usEthernoviaempty02026-10-19
greenhouse2k2Klive1092026-10-19
greenhouse2kmadrid2K Madridlive102026-10-19
greenhouse2kvegas2Klive12026-10-19
greenhouse2u2Ulive22026-10-19
greenhouse2uinlinepromotionsCO/ NJ Internal Job Boardlive12026-10-19
greenhouse31stunion31st Unionlive92026-10-19
greenhouse3cloud—live352026-10-19
greenhouse3dayblindssales3 Day Blinds (Sales)live982026-10-19
greenhouse3lateral—empty02026-10-19
greenhouse3mgroofing3MG Roofing & Solarlive292026-10-19
greenhouse3redpartners3Red Partnerslive92026-10-19
greenhouse52805280live22026-10-19
greenhouse5364856uhdfnvbkldfnbhrpkdfgbdvtyhroDavidson Kempner for LinkedInlive12026-10-19
greenhouse540540live52026-10-19
greenhouse550550 Madisonlive292026-10-19
greenhouse5minlab5minlablive12026-10-19
greenhouse5wpr5WPRlive112026-10-19
greenhouse66degrees66Degreeslive232026-10-19
greenhouse6sense6Senselive292026-10-19
greenhouse7shifts7shiftsdead—2026-10-19
greenhouse84518451live142026-10-19
greenhouse8451university84.51° University Programs / Early Career Pathsempty02026-10-19
greenhouse8amgolf8AM Golflive42026-10-19
greenhouse8thlightrebuild8th Lightlive52026-10-19
greenhousea—dead—2026-10-19
greenhousea16za16zlive172026-10-19
greenhousea24A24live52026-10-19
greenhousea3c41b8b71eff8c4Ivantilive62026-10-19
greenhouseaaru—dead—2026-10-19
greenhouseaavaaAAVAAempty02026-10-19
greenhouseabacusABACUSlive452026-10-19
greenhouseabacusinsightsAbacus Insightslive182026-10-19
greenhouseabakaaiAbaka AIdead—2026-10-19
of 275

50 rows a page · captured 2026-10-19 · liveness as of that capture, not today · the company name is the registry’s, the probed day is the pull’s (see above).

SQL · Postgres in your browser

For engineers: Postgres in the browser over the tables behind this page. Recruiters can skip this view.

PGlite 0.5.8 runs Postgres as WebAssembly on this page. Press Start Postgres and it downloads the engine (12.4 MB, once per visit; no engine or table file is requested before that click), creates the 19 tables below from schema.sql and fills them with the 14,202 rows behind every other view: the resume, the five ATS payloads and their field maps, the bench and the company index. Queries run in memory; nothing leaves the browser.

Postgres is not started.

Tables

  • candidate 1 row · id, name, first_name, last_name, headline, city, country, status_line, summary, resume_version, resume_date
  • links 3 rows · candidate_id, ord, label, url
  • experience 10 rows · id, ord, company, title, location, start_month, end_month, current
  • projects 1 row · id, ord, title, sites, location, start_month, end_month, current
  • bullets 21 rows · kind, parent_id, ord, text
  • skills 6 rows · id, ord, label, value
  • education 1 row · id, ord, school, degree, location, start_month, end_month, note, greenhouse_degree, greenhouse_discipline
  • career_numbers 8 rows · ord, value, unit, fragment, kind, parent_id, bullet_ord, source, on_overview
  • ats_formats 5 rows · ats, format, title, doc, method, url, content_type, note, auth, payload
  • ats_fields 54 rows · ats, format, ord, field, value, doc, source
  • lever_parsed 8 rows · ord, field, generated, parsed, note, observed, observed_in
  • bench_method 1 row · evaluator, terms, weight_must, weight_responsibility, weight_nice, note, generated, resume
  • bench_companies 3 rows · company, ats, board, board_url, evaluated, fetched, source, note
  • bench_roles 11 rows · id, company, ord, title, location, url, score, requirements, covered, partial, missing, must, must_covered
  • bench_terms 197 rows · company, role_id, term, status
  • bench_headings 53 rows · role_id, ord, heading, section
  • bench_excerpts 64 rows · role_id, ord, section, status, text, terms
  • bench_left_out 5 rows · company, id, title, reason
  • boards 13,750 rows · ats, slug, company, liveness, open_reqs, last_seen, flagged
Tables · schema.sql 4b29033dc7e6
-- alexzhouk.com: the tables behind the page, loaded into PGlite (Postgres in the browser) from db/<table>.json.
-- Every row is derived at build time from data/resume.json (resume v12, 2026-10-13), the generator's five ATS
-- outputs, data/bench.json and data/boards.json (pulled 2026-10-19). build.mjs checks that every table here
-- has a db/<table>.json with these columns in this order. Nothing on this page writes back.

create table candidate (
  id text primary key,
  name text not null,
  first_name text not null,
  last_name text not null,
  headline text not null,
  city text not null,
  country text not null,
  status_line text not null,
  summary text not null,
  resume_version text not null,
  resume_date date not null
);
comment on table candidate is 'One row: the header of the resume record (resume v12, 2026-10-13). No email address or phone number: LinkedIn (the links table) is the one contact.';
comment on column candidate.headline is 'The current title, taken from the first experience row.';
comment on column candidate.country is 'ISO 3166-1 alpha-2.';
comment on column candidate.status_line is 'Work authorization, location and start, as Alex stated them on 2026-10-19 (this replaces the v12 status line).';

create table links (
  candidate_id text not null references candidate(id),
  ord int not null,
  label text not null,
  url text not null,
  primary key (candidate_id, ord)
);
comment on table links is 'The links on the resume header, in order.';

create table experience (
  id text primary key,
  ord int not null,
  company text not null,
  title text not null,
  location text not null,
  start_month text not null,
  end_month text,
  current boolean not null
);
comment on table experience is 'One row per role, most recent first (ord 1).';
comment on column experience.start_month is 'YYYY-MM.';
comment on column experience.end_month is 'YYYY-MM, or null while current.';

create table projects (
  id text primary key,
  ord int not null,
  title text not null,
  sites text not null,
  location text not null,
  start_month text not null,
  end_month text,
  current boolean not null
);
comment on table projects is 'Independent projects on the resume.';
comment on column projects.sites is 'The sites the project names, comma separated.';

create table bullets (
  kind text not null check (kind in ('experience', 'project')),
  parent_id text not null,
  ord int not null,
  text text not null,
  primary key (kind, parent_id, ord)
);
comment on table bullets is 'Every resume bullet, verbatim, under its experience or project row.';

create table skills (
  id text primary key,
  ord int not null,
  label text not null,
  value text not null
);
comment on table skills is 'The SKILLS rows of the resume, in order.';

create table education (
  id text primary key,
  ord int not null,
  school text not null,
  degree text not null,
  location text not null,
  start_month text not null,
  end_month text not null,
  note text,
  greenhouse_degree text,
  greenhouse_discipline text
);
comment on table education is 'The education rows of the resume record (resume v12), one per school.';
comment on column education.greenhouse_degree is 'The lookup term for the Greenhouse education endpoints (ids differ per board).';

create table career_numbers (
  ord int primary key,
  value text not null,
  unit text,
  fragment text not null,
  kind text not null,
  parent_id text not null,
  bullet_ord int not null,
  source text not null,
  on_overview boolean not null
);
comment on table career_numbers is 'The career numbers quoted from the resume bullets; each fragment occurs verbatim in the bullet it names. on_overview marks the ones shown as tiles on the overview.';
comment on column career_numbers.fragment is 'The bullet text the number is quoted from.';
comment on column career_numbers.on_overview is 'True for the overview tiles; the postings count is kept off the overview and shown on the resume and the engineer views only.';

create table ats_formats (
  ats text not null,
  format text primary key,
  title text not null,
  doc text not null,
  method text not null,
  url text not null,
  content_type text,
  note text,
  auth text,
  payload jsonb not null
);
comment on table ats_formats is 'The five outputs the generator builds from the record: one per vendor format, with its request line and payload.';
comment on column ats_formats.doc is 'The vendor doc the output follows.';
comment on column ats_formats.note is 'Set when the URL is illustrative (alexzhouk is not a board token).';

create table ats_fields (
  ats text not null,
  format text not null references ats_formats(format),
  ord int not null,
  field text not null,
  value jsonb,
  doc text not null,
  source text not null,
  primary key (format, ord)
);
comment on table ats_fields is 'Which doc section each payload field follows and which record field it comes from.';
comment on column ats_fields.value is 'The payload value at that path, when the path is a single key; null for composite rows and left-out fields.';
comment on column ats_fields.source is 'The record field, constant or rule the value comes from.';

create table lever_parsed (
  ord int primary key,
  field text not null,
  generated text,
  parsed text,
  note text not null,
  observed date not null,
  observed_in text not null
);
comment on table lever_parsed is 'What Lever''s resume parser extracted from the v12 PDF (observed on two hosted forms) next to the generated value.';
comment on column lever_parsed.observed_in is 'Where the parsed values were read.';

create table bench_method (
  evaluator text not null,
  terms int not null,
  weight_must numeric not null,
  weight_responsibility numeric not null,
  weight_nice numeric not null,
  note text not null,
  generated timestamptz not null,
  resume text not null
);
comment on table bench_method is 'How the bench scores a posting: the evaluator, the vocabulary size and the section weights.';

create table bench_companies (
  company text primary key,
  ats text not null,
  board text not null,
  board_url text,
  evaluated date not null,
  fetched date,
  source text,
  note text
);
comment on table bench_companies is 'One row per company bench: the board, when its postings were fetched and when the resume was scored.';

create table bench_roles (
  id text primary key,
  company text not null references bench_companies(company),
  ord int not null,
  title text not null,
  location text not null,
  url text,
  score numeric(4,3) not null,
  requirements int not null,
  covered int not null,
  partial int not null,
  missing int not null,
  must int not null,
  must_covered int not null
);
comment on table bench_roles is 'One row per scored posting; the score is the section-weighted mean of its requirement bullets, 0 to 1.';

create table bench_terms (
  company text not null,
  role_id text,
  term text not null,
  status text not null check (status in ('covered', 'gap', 'structural'))
);
comment on table bench_terms is 'Vocabulary terms per role: covered by the resume, a gap, or (role_id null) a structural gap the evaluator flags for the whole company.';

create table bench_headings (
  role_id text not null references bench_roles(id),
  ord int not null,
  heading text not null,
  section text not null,
  primary key (role_id, ord)
);
comment on table bench_headings is 'How each posting''s own headings were mapped to the parser''s sections (about, responsibility, must, nice, stop).';

create table bench_excerpts (
  role_id text not null references bench_roles(id),
  ord int not null,
  section text not null,
  status text not null,
  text text not null,
  terms text,
  primary key (role_id, ord)
);
comment on table bench_excerpts is 'Up to six requirement bullets per role: the missing must-haves first, then the best covered ones; cut to 140 characters.';

create table bench_left_out (
  company text not null references bench_companies(company),
  id text not null,
  title text,
  reason text not null,
  primary key (company, id)
);
comment on table bench_left_out is 'Postings on the board that were not scored, and why.';

create table boards (
  ats text not null,
  slug text not null,
  company text,
  liveness text not null check (liveness in ('live', 'dead', 'empty')),
  open_reqs int,
  last_seen date not null,
  flagged boolean not null,
  primary key (ats, slug)
);
comment on table boards is 'Every company job-board slug in the registry behind the postings dataset, probed again on the public Greenhouse, Lever and Ashby board APIs in one pull on the evening of 2026-10-19 Pacific (2026-10-20 02:56 to 03:40 UTC); the Company index view states the method.';
comment on column boards.company is 'The registry''s name for the slug, carried over from earlier captures; not the board''s answer, and not updated by the probe, so a dead board can carry a name and a wrong name stays wrong. Null when the registry had none.';
comment on column boards.liveness is 'As of the 2026-10-19 pull: live (HTTP 200 with one or more postings), empty (200 with none) or dead (404).';
comment on column boards.open_reqs is 'Postings in the board''s answer in the 2026-10-19 pull; null when the board was dead.';
comment on column boards.last_seen is 'The Pacific day of the pull that wrote the row (2026-10-19); every board was asked in that one pull, dead boards included, so this is the probe day, not the day the board was last seen alive.';
comment on column boards.flagged is 'The slug or company matches sandbox, test or demo.';