Type systems, DSLs, compilers
GHC contributions, type-level programming, production Haskell at depth. We maintain universum (our Haskell prelude) and Servant-based APIs. Work where language semantics and type system design are the core deliverable.
Careers at Serokell
Technically demanding work with engineers who take quality seriously. Fully remote.
Serokell will never ask for payment or financial details during hiring.
All official communication comes from @serokell.io addresses only.
If anything feels off — write directly to hr@serokell.io.
Short list, real demand: a role appears here only when a confirmed project stands behind it. No match today? Strong profiles go into the talent network — we reach out when something relevant opens.
Right engineer, wrong moment.
By applying, your data is processed for recruitment purposes. Write hr@serokell.io to update or delete your data.
People we've decided we want to work with.
Choose the domains you're ready to rotate across — one profile, several possible directions.
By submitting, you agree to candidate data processing for recruitment purposes. Write hr@serokell.io to update or delete your data.
Four questions. Honest answers only — the quiz is for your benefit, not ours.
(It also quietly filters out AI bots. If you're one: hello, please tell your human to apply personally.)
guest@serokell:~$ ./fit_check --interactive
Six domains. One standard: problems that require depth that off-the-shelf tooling won't get you.
GHC contributions, type-level programming, production Haskell at depth. We maintain universum (our Haskell prelude) and Servant-based APIs. Work where language semantics and type system design are the core deliverable.
Formal verification as a deliverable. Smart contract verification, cryptographic proof systems, formal specification. When the code protects real money and live protocols, the standard for correctness is formal.
Production Rust for performance-critical work — distributed systems, protocol tooling, infrastructure. deploy-rs (2,100+ GitHub stars) is written in Rust. Our "Rust in Production" interview series documents real-world Rust at scale. Same correctness standards as Haskell; different performance profile.
deploy-rs has 2,100+ GitHub stars. We build infrastructure where reproducibility is the baseline: NixOS, Kubernetes, CI/CD, Vault secrets management. Every environment behaves identically — by design.
Real systems work: long-term memory architecture for LLM-powered applications, agent design patterns, evaluation infrastructure. We write critically about what AI can do in production — and build to that standard.
We built Morley and Lorentz — a Haskell framework and eDSL for Tezos smart contracts used in production. Clients: Cardano, Tezos (7 years), LIGO, Solana ecosystem. At this layer, correctness is the entire product.
The people shape the work. Here's the public record.
In-depth articles written by engineers, on the problems they actually work on.
We contribute to GHC — the Haskell compiler used by the entire ecosystem.
The whole company has worked this way from day one. Async by default, hours are yours to manage, built for people spread across many time zones.
A decade in technically demanding domains — from blockchain protocols to cryptographic proof systems. The work and the stack evolve; the standard for quality has stayed the same.
Most communication is written and async. We expect clear, complete messages — the kind that move things forward without a follow-up. When a call makes sense, we have one.
Manage your time with full autonomy. Real expectations come with it: deliver your work, communicate proactively, be available when the project needs you.
Nobody here settles a question with rank. The house rule: prove you are right.
Clarity and ownership define how work gets done. The process is kept at the minimum needed to coordinate well.
Most roles attach to a specific project with its own scope, team, and timeline — real context and real ownership from day one.
Clear, complete writing is how things move forward — internally, with clients, in documentation. If you do your best thinking in writing — before you speak — you'll be in good company here.
Most work is async across time zones. Where a project needs live coordination, the job description states an overlap window — and even that isn't rigid: you work roughly around those hours, and exact times are only fixed for scheduled meetings.
You work with Serokell directly and invoice for your work. You define how and when you deliver — the output is what matters, the schedule is yours.
Projects regularly land on genuinely new technology and problems without an established playbook. For most engineers here, opportunity is the biggest line item in the package.
Engagements run long — our longest client relationship has run seven years.
Two signatures: NDA first, then the contract. We ask for ID and basic details, you know your project and your first point of contact — then you start.
Free, confidential in-house support with a professional — including EMDR therapy sessions — available to everyone here. Deep work deserves a well-rested mind.
Your rate is discussed at the HR call; invoicing and contract structure at the offer stage. Direct answers, before you invest interview hours.
Our hiring process, documented the way we document everything. Five stages — same process, same order, for every candidate.
Submit your CV. Every applicant receives a short questionnaire written by the team — role-specific questions that surface what a CV often can't. Answer async, in your own time.
All applications go through our review process. We track who's been in touch before. If your profile is a strong match, you hear back promptly. If the timing isn't right, we may reach out when something relevant opens.
A ~45-minute video call covering background, working style, motivations, timezone, and engagement logistics. Rates and compensation are discussed here — openly, before you've invested hours in technical interviews. You get direct answers about the role and what to expect.
A conversation with a senior engineer or team lead. The interviewer reads your CV beforehand, so the discussion opens from your actual experience — plus role-specific technical questions, with space for your own questions too.
A written offer with full terms: rate, scope, timezone expectations, contract structure. We work with engineers across multiple countries. If the timing isn't right, we add you to our talent pool — the same curated list we reach out to first when a matching project opens.
Every year we ask every engineer how the year actually went. From the 2025 survey:
Keep the culture where team leads are open to new ideas and very approachable; it makes teamwork smooth and effective.

Broadening my skills into Rust was extremely positive. And also the fact that Serokell itself is diversifying the skillset — Rust in addition to Haskell, and also across industries — were very welcome news.
.png)
The biggest positive of my year? That I returned to Serokell.
.png)
Remote work, knowledgeable and responsible colleagues to learn from, and good work-life balance.
.png)
GHC.
.png)
Keep the very high transparency; keep the safe environment for experiments and openness to feedback. Keep the culture of freedom.

Communication with Ivan Smetannikov — about work, learning, and life in general. He consistently supports me and helps me.
I'd like to keep the team I'm currently working with. It's comprised of people who are a pleasure to work with.

The variety of projects and the connections: I met more people, worked with new teammates, and enjoyed the range of collaboration this year.

I was invited as a speaker, prepared a talk, and the trip was covered.
.png)
I gave PM work a try, and I'm really glad I did. I learned a lot, got great support and advice, and now I have a much better grasp of the field.

Working on complex tasks — and also having time to refactor and improve the codebase.

Rust. I really liked this language and was very happy solving industrial problems with it.

I needed to learn Nix for work, and it felt good to learn something new.
.png)
The opportunity to constantly explore and experiment with new, modern technologies.

We hired another engineer with the same name, and people mixed us up a couple of times — it was genuinely funny.

The whole team, photographed as themselves — no stock photos.
For most roles, no. We hire across Rust, DevOps/SRE, TypeScript/frontend, blockchain (Solana, Solidity), data engineering, and AI/ML. Each job description states clearly what's required versus what's a plus. Haskell roles are a subset of what we hire for.
Both at once: engagements are full-time, and they are attached to a specific project. A role only appears on this page when a confirmed project stands behind it, so what you read in the description is the work that actually exists.
Self-driven, with the work itself doing most of the teaching. There is no fixed curriculum. What there is: problems that require depth, senior people to hold the work to a standard, and time budgeted for the things engineers here do in public — writing for the blog, contributing to GHC and to our open-source tools. If you need a syllabus handed to you, this will feel unstructured. If you pick your own direction and say what you are doing, it works.
We start looking for the next one before it does. Projects end on a known timeline far more often than they end suddenly, and the point of a bench of six domains is that the next engagement usually exists. If nothing matches at that moment, you go into the talent pool — the curated list we reach out to first when a matching project opens.
Read what we have written. The technical blog is engineers writing about the problems they actually worked on, and the "Rust in Production" series is practitioners at other companies describing real systems. Our open-source work is on GitHub — deploy-rs, universum, and our GHC contributions. The projects page is what we shipped and for whom.
No. The five stages on this page are the whole process, in that order, for every candidate: a short written questionnaire when you apply, a review, an HR call, a technical interview, and then an offer or the talent pool. The questionnaire is role-specific and takes minutes, not an evening. The technical conversation starts from your actual experience, because the interviewer has read your CV beforehand. We do not ask people to build things for free.
Every application is read by a person, and we track who has been in touch before. If your profile is a strong match you will hear back promptly. Once you have reached the HR call or the technical interview, you get a decision and the reasoning behind it. We cannot write individual feedback on every application we receive — but you will not be left waiting on silence to work out what happened.
Yes, and it is not held against you. Most people we did not take on were a timing mismatch rather than a verdict — the project that needed your profile had already been staffed, or did not exist yet. We keep a record of previous conversations, so a second application starts from what we already know about you rather than from nothing.
Send one profile and tell us the domains you are open to. The talent network exists for exactly this: pick the areas you would be happy to rotate across, and we match you against everything that opens rather than against a single posting. Applying to several postings separately does not improve your odds; it just gives the same people the same CV more than once.
Write to hr@serokell.io and say what you want changed or removed. Your data is processed for recruitment purposes only. One thing worth knowing: Serokell will never ask for payment or financial details during hiring, and all official communication comes from @serokell.io addresses. If a message claiming to be from us does either, tell us at that address.
Send your CV and tell us what you're looking for — we'll reach out when it's a match.
