Senior Data Engineer
Turn raw exchange messages into one schema. You will build the venue adapters, data-quality checks and normalization jobs that every dataset we sell passes through, starting with Hyperliquid and then the venues planned for Phase 2.
The role
Our normalization layer takes raw messages from each exchange and writes them into the tables described in our schema: trades, quotes, candles, book_l2, book_l3, book_l4, funding, open interest, liquidations and the rest. Today it handles Hyperliquid, which we have recorded from two regions since November 2025. Phase 2 plans three more venues in 2027 and Phase 3 four more in 2028, each subject to a data agreement with the exchange.
You will work with Maya Okafor, who owns the schema, and Priya Raman, who runs capture. Maya decides what a row should look like; you make sure every venue produces that row correctly, at volume, with every gap accounted for.
What you will do
- Build and maintain venue adapters that map each exchange's message formats, symbols and sequence numbers into the normalized schema, for Hyperliquid first and then for each venue as its data agreement is signed.
- Write the order book reconstruction for L2 snapshots and deltas and for L3 order events (add, modify, cancel, fill), and verify it against venue snapshots.
- Own the data-quality checks: sequence continuity, crossed books, timestamp ordering, duplicate trades and the rules that write to the
gapstable. - Load licensed historical data where an agreement with a venue includes it, marked with
source = "venue_archive"and kept separate from our own capture. - Keep daily Parquet output to our S3 layout (one file per symbol per UTC day) on time and correct, and alert when it is neither.
- Document each venue's message formats and continuity rules. Your notes become the per-venue pages in our docs.
What we are looking for
- Six or more years building data pipelines in production, with at least two on market data, tick data or another high-volume event stream where ordering matters.
- Strong Python and one compiled language (Rust, C++ or Go). Our hot paths are in Rust; orchestration and checks are in Python.
- Working knowledge of columnar formats and query engines: Parquet, Arrow, and at least one of Polars, DuckDB or Spark.
- An understanding of how limit order books work, including the difference between aggregated levels and order-level events.
- Care about correctness you can prove: tests against real captures, reconciliation reports and checks that fail loudly.
- Clear written English. Most of our decisions are made in documents.
Nice to have
- Experience with exchange WebSocket and FIX feeds, or with crypto venue APIs in particular.
- Familiarity with decimal arithmetic and the precision problems of float prices.
- Experience operating storage at the hundreds-of-terabytes scale on S3 or similar.
- Open source work on data tooling that we can read.
Compensation
Base salary of $165,000 to $200,000 a year and stock options for 0.35% to 0.70% of the company, vesting over four years with a one-year cliff and a ten-year exercise window after you leave. The band is the same wherever you live. We pay in USD or in your local currency at the equivalent amount, either directly or through an employer of record.
The role includes our standard benefits: 25 days of paid leave plus public holidays, health insurance, 16 weeks of paid parental leave, a $3,000 equipment budget, a $2,000 yearly learning budget and an annual company week in person. The careers page has the details.
Location and hours
Remote, anywhere from UTC−1 to UTC+3, which covers most of Europe, the UK, Portugal and parts of Africa and the Middle East. You will overlap most of the day with Maya in Lisbon and Lukas in Berlin, and for a few hours with Priya in Singapore. Everyone keeps 13:00 to 15:00 UTC free for live discussion.
Capture runs every day of the year. The on-call rotation is shared by the three engineers and you, one week in four, with a paid on-call allowance.
Process
- Application, read by a founder, with a reply within a week.
- 30-minute intro call with Daniel.
- 90-minute technical conversation with Maya about a real normalization problem from the Hyperliquid feed.
- Paid work sample, up to four hours, at a flat $400: write an adapter and checks for a one-hour sample of a venue's raw feed.
- Calls with Priya, Lukas and Chris, plus two references. Decision within three business days.
Apply for Senior Data Engineer.
A few links and a short note are enough. A CV is welcome but not required. Tell us about a pipeline you built and what broke in it.
Prefer email? Write to daniel@financedatacloud.com with the role in the subject line. The form opens your own email app with the application addressed to Daniel. We use your details only to assess your application, as described in our privacy policy.
Send it from your email app.
Your email app should have opened with the application addressed to Daniel. Once you send it, a founder reads it and replies within a week. If nothing opened, email daniel@financedatacloud.com directly.