A Software Engineer at Recursion Pharmaceuticals plays a pivotal role in transforming how drugs are discovered and developed. Unlike traditional tech companies, Recursion Pharmaceuticals sits at the intersection of biology, chemistry, automation, and data science. Software engineers here do not just build web applications; they design and scale the digital backbone that powers massive robotic wet laboratories, processes petabytes of biological imaging data, and runs advanced machine learning models. Your work directly impacts the speed and accuracy with which the company can decode biology and bring life-saving treatments to patients. Whether you are building complex data pipelines, optimizing high-throughput screening platforms, or designing robust execution engines, you are solving highly complex, multi-disciplinary problems. The engineering team is tasked with creating software that is highly reusable, scalable, and resilient, ensuring that biological assays can be translated into actionable therapeutic insights. To succeed in this role, you must be comfortable with ambiguity and possess a strong desire to collaborate with cross-functional teams, including biologists, chemists, data scientists, and automation engineers. It is a highly collaborative and mission-driven environment where your technical contributions have a direct, tangible impact on human health.
Recruiter Screen
reportedInitial conversational screen focusing on your background, recent projects, and overall fit for the organization.
What to demonstrate
- Initial conversational screen focusing on your background, recent projects, and overall fit for the organization
- Depth in Algorithms (whiteboard)
How to prepare
- Be able to walk your CV end to end in two minutes, and say why this company specifically.
- Have your salary expectations, notice period and location constraints ready, and ask for the rest of the loop in writing.
Online Assessment
reportedComprehensive assessment testing SQL, regular expressions, data structures, and coding challenges on a platform like HackerRank.
What to demonstrate
- Comprehensive assessment testing SQL, regular expressions, data structures, and coding challenges on a platform like HackerRank
- Depth in Algorithms (whiteboard)
How to prepare
- Answer aloud and timed: Implement an efficient algorithm to detect cycles or dependencies within a directed graph.
- Answer aloud and timed: Given a stream of biological data points, design a data structure that allows for fast insertion and retrieval of the most common experimental results.
Technical Interviews
reportedInterviews with hiring managers and directors focusing on technical and behavioral aspects.
What to demonstrate
- Interviews with hiring managers and directors focusing on technical and behavioral aspects
- Depth in Algorithms (whiteboard)
How to prepare
- Answer aloud and timed: Design a Directed Acyclic Graph (DAG) execution engine (similar to Apache Airflow) in Python that handles task dependencies and reusability.
- Answer aloud and timed: How would you design a system to ingest, store, and process millions of high-resolution cellular images daily?
Live Coding Exercise
reportedPractical coding exercise focused on software design rather than abstract puzzles.
What to demonstrate
- Practical coding exercise focused on software design rather than abstract puzzles
- Depth in Algorithms (whiteboard)
How to prepare
- Answer aloud and timed: Explain how you would architect a scalable service that allows wet-lab scientists to query real-time experimental progress across multiple robotic platforms.
- Answer aloud and timed: Design a rate-limiting system for an API that serves machine learning inference models to internal research teams.
System Design Interview
reportedInterview focused on system design principles and practices.
What to demonstrate
- Interview focused on system design principles and practices
- Depth in Algorithms (whiteboard)
How to prepare
- Answer aloud and timed: Tell me about a time you had to work with a non-technical stakeholder (like a biologist or chemist) to define software requirements. How did you ensure alignment?
- Answer aloud and timed: Describe a situation where you made a significant technical mistake. How did you identify it, what was the impact, and how did you resolve it?
Leadership Alignment Session
reportedDedicated session to assess alignment with leadership and core values.
What to demonstrate
- Dedicated session to assess alignment with leadership and core values
- Depth in Algorithms (whiteboard)
How to prepare
- Answer aloud and timed: Tell me about a time you had to deliver a project under tight deadlines with ambiguous requirements. How did you prioritize your tasks?
- Answer aloud and timed: Describe a time when you disagreed with a senior engineer or manager on an architectural decision. How did you handle the discussion and what was the outcome?
PracHub editorial advice for the preparation topics above.
Going into the loop without having done this.
To maximize your chances of success during the Recursion Pharmaceuticals interview process, keep these practical tips in mind:
Going into the loop without having done this.
Master the STAR Method: Prepare 4 to 5 detailed stories from your past experience. Ensure you focus heavily on the Actions you personally took and the quantifiable Results of those actions.
Going into the loop without having done this.
Brush Up on SQL and Regex: The online assessment is known to cover a wide variety of topics, including SQL queries and regular expression parsing. Do not neglect these areas during your preparation.
Going into the loop without having done this.
Ask Clarifying Questions: During the DAG design and system design rounds, the requirements will purposely be left somewhat vague. Begin by asking clarifying questions to define the scope before writing any code.
Choose a category, try a prompt, then open its approach, worked solution or follow-up when you need it.
Solve a multi-part algorithmic challenge involving custom string parsing and regular expressions (Regex).
Solve a multi-part algorithmic challenge involving custom string parsing and regular expressions (Regex).
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Implement an efficient algorithm to detect cycles or dependencies within a directed graph.
Implement an efficient algorithm to detect cycles or dependencies within a directed graph.
Approach
- Restate the input: its shape, its size, and what is guaranteed about it.
- Name the brute-force solution and its complexity before improving on it.
- Choose the data structure from the access pattern, not from familiarity.
- State the target complexity and say which constraint rules the naive version out.
Follow-up
- How does this change if the input no longer fits in memory?
- What is the worst case, and how likely is it on real data?
Collapse a redelivered event batch into per-aggregate high-water marks
You drain a batch of up to 5,000,000 events, each (aggregate_id BIGINT, aggregate_version INT, event_type, payload). The log guarantees order within one aggregate only; the batch merges 64 partitions, and a relay failover has redelivered a range, so an older version for an aggregate can appear after a newer one. Given a map of last_applied_version per aggregate, produce the events worth applying, at most one per (aggregate_id, version), plus the count discarded. Target O(n) time. State the memory for 2,000,000 distinct aggregates and what you do when it does not fit.
Approach
- One pass, one hash map from aggregate_id to the highest version kept, and a discard counter. An event whose version is at or below last_applied_version for its aggregate is dropped without further work, which is the whole reason the event carries its version rather than a delta. O(n) expected time, O(d) space in distinct aggregates.
- Keep the maximum, never the last occurrence. The redelivered range means the final appearance of an aggregate in the batch can be an older version than one seen earlier in the same batch, so last-wins applies stale state over newer state and the projection regresses with no error anywhere.
- Cost the memory instead of calling it large: an 8-byte key plus a 4-byte version is 12 bytes of payload, and an open-addressed table held at a 0.7 load factor costs roughly 17 bytes per entry before per-slot metadata, so 2,000,000 aggregates is tens of megabytes in a native layout and several times that in a runtime that boxes both key and value.
- If the distinct set exceeds memory, partition on hash(aggregate_id) mod P and reduce each partition independently. Every event for one aggregate hashes to the same partition, so the per-partition result is exact and the merge is concatenation rather than a second reduction.
Follow-up
- The payload is a patch rather than a snapshot, so applying only the highest version loses the intermediate changes. What changes in your reduction?
- How do you detect that version 7 arrived while version 6 was never delivered, and what should the consumer do about the gap?
Write a SQL query to extract and aggregate complex experimental data from relational tables.
Write a SQL query to extract and aggregate complex experimental data from relational tables.
Approach
- Name the grain you start from and join outward from it.
- Check whether any join is one-to-many before aggregating, or the sums inflate.
- Say which index the query would use, and what makes it unusable.
- Handle the rows that do not match: that is usually the actual question.
Follow-up
- How does the query change if that join becomes one-to-many?
- What happens to this when the table is ten times larger?
Explain why the owner filter ignores the listing index
The only index on resource is (tenant_id, status, updated_at DESC, resource_id DESC). A new endpoint returns one user's resources across all statuses, newest created first: WHERE tenant_id = $1 AND owner_user_id = $2 ORDER BY created_at DESC LIMIT 20. On a tenant with 2M rows it takes 900 ms and EXPLAIN shows a sort above a large scan. Explain precisely why the existing index cannot serve it, give the index that can, and state which of these the new index still will not help: owner_user_id alone across tenants; the same query ordered by updated_at. PostgreSQL 16.
Approach
- Separate the two jobs an index does. For filtering, a composite btree is seekable only on a left prefix, so with no predicate on status the scan can at best range over tenant_id and test owner_user_id per row; PostgreSQL 16 has no btree skip scan to jump the unconstrained column.
- For ordering, the index is sorted by (status, updated_at) within a tenant and not by created_at, so the LIMIT cannot stop early: every matching row is read and then sorted. That is the 'Sort Method: top-N heapsort' line, and it is why the plan reads 2M rows to answer with 20.
- Derive the replacement from the access path — equality, equality, then the ordering column: CREATE INDEX CONCURRENTLY ON resource (tenant_id, owner_user_id, created_at DESC). The scan seeks to the (tenant, owner) range and walks 20 entries in order, so the Sort node disappears along with the row-read.
- Treat INCLUDE (title, status) as conditional, not free. An index-only scan still visits the heap for any row whose page is not marked all-visible, so on a table taking 1.2k writes/second the win depends on autovacuum keeping the visibility map current, and the wider index costs more on every insert.
Follow-up
- 90% of rows are status='active'. Would a partial index WHERE status = 'active' change your answer, and for which of the three queries?
- A dashboard runs this for 40 owners in one page load. What changes about the design?
Given a stream of biological data points, design a data structure that allows for fast insertion and retrieval
Given a stream of biological data points, design a data structure that allows for fast insertion and retrieval of the most common experimental results.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
Design a Directed Acyclic Graph (DAG) execution engine (similar to Apache Airflow) in Python that handles task
Design a Directed Acyclic Graph (DAG) execution engine (similar to Apache Airflow) in Python that handles task dependencies and reusability.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
How would you design a system to ingest, store, and process millions of high-resolution cellular images daily?
How would you design a system to ingest, store, and process millions of high-resolution cellular images daily?
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
Explain how you would architect a scalable service that allows wet-lab scientists to query real-time experimen
Explain how you would architect a scalable service that allows wet-lab scientists to query real-time experimental progress across multiple robotic platforms.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
Design a rate-limiting system for an API that serves machine learning inference models to internal research te
Design a rate-limiting system for an API that serves machine learning inference models to internal research teams.
Approach
- Fix the scope first: who calls this, how often, and what they do when it fails.
- Name the read and write paths separately; they rarely have the same bottleneck.
- Choose a partition key and say what query it makes expensive.
- State the consistency you need, and where you are willing to be stale.
Follow-up
- What breaks first when traffic grows ten times?
- How does this behave when that dependency is down for an hour?
One log partition stops advancing while the others drain
Search results for a subset of tenants are hours stale; the rest are current. The projection consumer reports lag of zero on 15 of 16 partitions and 400,000 on one. Its error rate is flat and its CPU is idle. outbox_event has no pending rows older than a second, so the relay has published everything it holds. Identify the mechanism, give the ordered checks, and state what you do in the first ten minutes versus what you change permanently.
Approach
- Read the lag distribution first. A slow consumer lags everywhere; zero on fifteen partitions and 400,000 on one is not throughput. Idle CPU on the stuck partition means the consumer is not advancing its offset at all, which points at one message it cannot get past rather than at a rate problem.
- Exonerate the producer before touching the consumer. No pending outbox rows older than a second means the relay published, so the event exists in the log. This separates never sent from sent and never applied, which are different code paths and usually different owners.
- Read the message at the stuck offset and the handler's log lines for its event_id. A flat error rate with no progress has two explanations and you must distinguish them: the handler is throwing and the retry loop is swallowing it, or the handler is blocking on something and never returning. Idle CPU with no error lines favours the second.
- Mitigate before diagnosing further. Move the offending event to a dead-letter store and commit the offset past it. Adding consumers does nothing here, because a partition is consumed by exactly one member of the group, and the blast radius is every aggregate hashed to that partition, not only the aggregate that produced the bad event.
Follow-up
- The dead-lettered event carried aggregate_version 7 and the projection had applied 6. What must the replay do differently if 8 and 9 landed in the meantime?
- How do you show staleness to the user while the partition is behind, given the API already returns the projection's watermark?
Built from the rounds and topics Recursion Pharmaceuticals candidates report.
Prepare, practise & reflect
One practical outcome each day. Spend longer where you need it.
0 / 7 done01Map the Recursion Pharmaceuticals loop
- Write out the reported sequence: Recruiter Screen, Online Assessment, Technical Interviews, Live Coding Exercise, System Design Interview, Leadership Alignment Session.
- For each round, write one sentence on what it is judging, from the description above, and mark the one you are least ready for.
Deliverable: A one-page map of the 6 reported rounds, with the weakest marked.
02Work Algorithms (whiteboard)
- Spend the session on Algorithms (whiteboard), which Recursion Pharmaceuticals candidates report being tested on.
- Write one worked example in Algorithms (whiteboard) and time yourself on it.
Deliverable: One timed worked example in Algorithms (whiteboard).
03Work Problem Solving & Reasoning
- Spend the session on Problem Solving & Reasoning, which Recursion Pharmaceuticals candidates report being tested on.
- Write one worked example in Problem Solving & Reasoning and time yourself on it.
Deliverable: One timed worked example in Problem Solving & Reasoning.
04Work System Design (open-ended)
- Spend the session on System Design (open-ended), which Recursion Pharmaceuticals candidates report being tested on.
- Write one worked example in System Design (open-ended) and time yourself on it.
Deliverable: One timed worked example in System Design (open-ended).
05Answer out loud: Coding & Algorithmic Problem Solving
- Answer aloud, timed: Solve a multi-part algorithmic challenge involving custom string parsing and regular expressions (Regex).
- Answer aloud, timed: Write a SQL query to extract and aggregate complex experimental data from relational tables.
Deliverable: Spoken answers to 2 reported Coding & Algorithmic Problem Solving question(s), under time.
06Answer out loud: System & Pipeline Design
- Answer aloud, timed: Design a Directed Acyclic Graph (DAG) execution engine (similar to Apache Airflow) in Python that handles task dependencies and reusability.
- Answer aloud, timed: How would you design a system to ingest, store, and process millions of high-resolution cellular images daily?
Deliverable: Spoken answers to 2 reported System & Pipeline Design question(s), under time.
07Answer out loud: Behavioral & Core Values
- Answer aloud, timed: Tell me about a time you had to work with a non-technical stakeholder (like a biologist or chemist) to define software requirements. How did you ensure alignment?
- Answer aloud, timed: Describe a situation where you made a significant technical mistake. How did you identify it, what was the impact, and how did you resolve it?
Deliverable: Spoken answers to 2 reported Behavioral & Core Values question(s), under time.
Expand any day for tasks and deliverables. Your progress is saved on this device.
Behavioural rounds judge the decision you made and what it cost.
Tell me about a time you had to work with a non-technical stakeholder (like a biologist or chemist) to define
Tell me about a time you had to work with a non-technical stakeholder (like a biologist or chemist) to define software requirements. How did you ensure alignment?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
Describe a situation where you made a significant technical mistake. How did you identify it, what was the imp
Describe a situation where you made a significant technical mistake. How did you identify it, what was the impact, and how did you resolve it?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
Tell me about a time you had to deliver a project under tight deadlines with ambiguous requirements. How did y
Tell me about a time you had to deliver a project under tight deadlines with ambiguous requirements. How did you prioritize your tasks?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
Describe a time when you disagreed with a senior engineer or manager on an architectural decision. How did you
Describe a time when you disagreed with a senior engineer or manager on an architectural decision. How did you handle the discussion and what was the outcome?
Approach
- Pick a story where you made the decision, not one where you watched it.
- State the situation in two sentences and spend the rest on the reasoning.
- Give the blast radius: what could have broken, and what you measured.
- Name the disagreement and how you resolved it with evidence.
Follow-up
- What would you do differently if you ran that again?
- How did you know your change caused the improvement?
- 01
Tell me about a time you had to work with a non-technical stakeholder (like a biologist or chemist) to define software requirements. How did you ensure alignment?
- 02
Describe a situation where you made a significant technical mistake. How did you identify it, what was the impact, and how did you resolve it?
- 03
Tell me about a time you had to deliver a project under tight deadlines with ambiguous requirements. How did you prioritize your tasks?
- 04
Describe a time when you disagreed with a senior engineer or manager on an architectural decision. How did you handle the discussion and what was the outcome?
How difficult is the Software Engineer interview process at Recursion Pharmaceuticals?
The process is generally rated as average to difficult. While it does not rely heavily on hyper-specific, abstract LeetCode brain teasers, it requires a very strong grasp of practical software design, object-oriented principles in Python, and system architecture.
Recursion Pharmaceuticals Software Engineer candidate reports ↗What is the most important technical round to prepare for?
The software design exercise, such as designing a DAG or execution engine in Python, is critical. Focus on writing clean, modular, and reusable code, and be prepared to explain how your design handles complexity and future extensions.
Recursion Pharmaceuticals Software Engineer candidate reports ↗How important are the behavioral interviews?
Extremely important. Recursion Pharmaceuticals conducts thorough behavioral interviews using the STAR method, often led by senior directors. They look for deep alignment with their core values, collaboration across disciplines, and a strong growth mindset. Do not treat the behavioral rounds as a formality. Candidates who perform exceptionally well technically can still be rejected if they cannot provide structured, deep-dive examples of collaboration and values alignment.
Recursion Pharmaceuticals Software Engineer candidate reports ↗Do I need a background in biology or chemistry to get hired?
No, a background in life sciences is not required. However, you must show a genuine curiosity and willingness to learn about the domain, as you will be collaborating daily with scientific experts to build software that decodes biology.
Recursion Pharmaceuticals Software Engineer candidate reports ↗How hard is the Recursion Pharmaceuticals interview?
Candidates most commonly rate Recursion Pharmaceuticals interviews as medium, based on 85 reported interviews. About 24% of candidates who interview go on to receive an offer.
Recursion Pharmaceuticals Software Engineer candidate reports ↗What topics does Recursion Pharmaceuticals test in interviews?
Recursion Pharmaceuticals interviews most often cover Python, Statistics, Algorithms (whiteboard), Machine Learning Engineering, and Assay development. The exact emphasis depends on the specific role you apply for.
Recursion Pharmaceuticals Software Engineer candidate reports ↗Is Recursion Pharmaceuticals a good place to work?
Employees rate Recursion Pharmaceuticals 3.5 out of 5 overall, based on aggregated workplace reviews spanning career growth, work-life balance, compensation, culture, and management.
Recursion Pharmaceuticals Software Engineer candidate reports ↗Where is Recursion Pharmaceuticals headquartered?
Recursion Pharmaceuticals is headquartered in Salt Lake City, UT.
Recursion Pharmaceuticals Software Engineer candidate reports ↗Sources & methodology 3 sources ↗
Official role evidence, timestamped platform data and clearly labeled preparation advice.
- 01Recursion Pharmaceuticals Software Engineer candidate reports ↗
Company-reported rounds, questions and FAQ.
candidate · Accessed 2026-09-22 - 02PracHub Software Engineer practice ↗
PracHub practice material, not company-reported.
platform · Accessed 2026-09-22 - 03PracHub preparation framework ↗
PracHub preparation guidance.
platform · Accessed 2026-09-22