The Stack That Helped Opendoor Buy and Sell Over $1B in Homes

30,923
Opendoor
A new way to buy and sell homes. Opendoor allows homeowners to sell their home online in a few clicks, bringing certainty and simplicity to what is usually a long and stressful process.

By Alex Zirbel, Software Engineer at Opendoor.


About Opendoor

Unless you’re in San Francisco or New York, selling your home is a giant headache that typically lasts three months. Opendoor removes the headache — go online, ask for an offer, answer a few questions and we’ll buy your home directly from you. We’ll take it from there and deal with selling the home to another buyer while you can go on with your life.

Right now we operate in Phoenix, Dallas, and Las Vegas. We’ve completed over 4,800 real estate transactions — over $1B in homes. For a company about to turn 3 years old, it’s pretty crazy how far we’ve come.

There’s a lot that goes into one real estate transaction. First, there’s what you might consider our core engineering challenge: making an accurate offer on each home. If we offer too much, we’ll lose money and go out of business; if we offer too little, we’ll seem like scammers and offend our customers.

After we buy the home, we’ll work with contractors to do any necessary repairs and touch-ups, then put the home on the market and find a buyer. Since we own every home, we can do clever things like putting smart locks on all the doors and offering all-day open houses.



I’m a frontend engineer, and mainly like to work on the consumer-facing website. I’m currently working on improving the experience for first-time home buyers. The process can be really scary for people who don’t know anything about real estate.

Engineering Organization

Our team is split between product engineering and data science: the tools used by each team are different enough that the teams work in separate code bases. Of course, the resulting product has to be well-integrated, and the product team pulls a lot of data from data science APIs. This coordination is tricky to get right; Kevin Teh from the data science team wrote about it in some detail in a recent post.

At first, we split the product team into “customer-facing” and “internal tools” groups. It was nice to have all the frontend engineers on the same team, but we noticed that some projects didn’t have clear owners. For example, our buyer support team uses some internal tools we’ve built. Should those tools be developed by the “internal tools” team, or is support part of the customer experience?

Now the team is split into cross-functional teams based around parts of the business. The Seller team handles people selling to us; the Homes team handles renovations and inventory; and the Buyer team puts our homes on the market and finds buyers.

As we grow, the lines between teams often get blurry, so we expect that the structure will always be evolving. It’s common for engineers to move between teams, including between the product and data science teams.

Product Architecture

We started in 2014 with a Ruby on Rails monolith and Angular frontend, both of which were good ways to move fast while we were very small.

The MVP of our customer-facing product was a multi-page form where you could enter information about your home to get an offer, but that was just the tip of the iceberg. We had to build internal tools to help our team correctly price homes and manage the transaction process. We used Angular and Bootstrap to build out those tools; the main goal was to add features quickly, without fiddling around with CSS — in fact, without requiring any frontend experience at all.

We use Puma as our webserver, and Postgres for our database — one big benefit is the PostGIS extension for location data. Sidekiq runs our asynchronous jobs with support from Redis. Elasticsearch shows up everywhere in our internal tools. We use Webpack to build our frontend apps, and serve them using the Rails Asset Pipeline.

We use Imgix to store photos of our homes, as well as most of the icons and illustrations around our site. We mainly use Imgix’s auto-resizing feature, so we never lose track of our original images, but can later load images of appropriate size for each context on the frontend.

Monolith to Microservices

Where appropriate, we try to break isolated logic out into microservices. For example, we’re working on a service which calculates our projected costs and fees. Our cost structure changes frequently, and we want to estimate how policy changes might affect our fees. This code wasn't a great fit for the Rails app because we wanted it to be accessible to our analysts and data scientists as well.

We’ve now split this logic out into its own service. It uses a version-history-aware computation graph to calculate and back-test our internal costs, and (soon!) will come with its own React frontend to visualize those calculations.

Our data science stack is also a fully separate set of services, so there’s a lot of inter-app communication going on. To let these services authenticate to one another, we use an Elixir app called Paladin. Opendoor engineer Dan Neighman wrote and open-sourced Paladin, and explains why it’s helpful in this blog post. Authentication is based on JWTs provided by Warden and Guardian.

Data Science Architecture

I’ve always found data science at Opendoor interesting because it’s not the “grab as much data as you possibly can, then process it at huge scale” problem I’m used to hearing about.

To find the price of a house, you look at nearby homes that sold recently, then squeeze as much information out of that data as you possibly can by comparing it to what you know about the market as a whole. Our co-founder Ian Wong has a more in-depth talk here.

We can group most of the data science work into several core areas:

  1. Ingesting and organizing data from a variety of sources
  2. Training machine learning models to predict home value and market risk
  3. Quantifying and mitigating various forms of risk, including macroeconomic and individual house-liquidity
  4. Collecting information in a data warehouse to empower the analytics team

For data ingestion, we pull from a variety of sources (like tax record and assessor data). We dump most of this data into an RDS Postgres database. We also transform and normalize everything at this phase — we’re importing dirty data from sources that often conflict. This blog post goes into more detail on how we merge data for a given address.



For our machine learning model, we use Python with building blocks from SqlAlchemy, scikit-learn, and Pandas. We use Flask for routing/handling requests. We use Docker to build images and Kubernetes for deployment and scaling. Our system lets us describe a model as a JSON configuration, and once deployed, the system automatically grabs the required features, trains the model, and evaluates how well the model did against performance metrics. This automation lets us iterate really fast.

We’re starting to use Dask for feature fetching and processing. Other companies often use Spark and Hadoop for this, but we need support for more complex parallel algorithms. Dask’s comparison to PySpark post describes this perfectly:

Dask is lighter weight and is easier to integrate into existing code and hardware. If your problems vary beyond typical ETL + SQL and you want to add flexible parallelism to existing solutions then dask may be a good fit, especially if you are already using Python and associated libraries like NumPy and Pandas.

The final piece of our data science architecture is the Data Warehouse, which we use to collect analytics data from everywhere we can. For a long time we used a nightly pg_dump to move Postgres data from each service’s database directly into a home-built Data Warehouse. We recently migrated to Google’s BigQuery instead. BigQuery is faster, and lets us fit more data into each query, but the killer feature is that it’s serverless. We have many people running queries at “peak hours”, and don’t want things to slow down just because we have a preallocated number of servers available.

High-Tech Open Houses

Since Opendoor actually owns all the houses we sell, we can be creative about how we show them to potential buyers.

Typically, if you want to see a house for sale, you have to call the listing agent and schedule a time. We realized early on that we could make open houses way more convenient by installing automatic locks on our doors so the homes could be accessed at any time. For version 0 of the project, we literally posted our VP of Product’s phone number on the doors of all our houses — buyers would call in, and he’d tell them the unlock code.

For version 1, we added Twilio so we could automatically send unlock codes over SMS. For version 2, we built a mobile app.



Customers expect a good mobile experience these days, but our all-day open house feature made it twice as important. You can use the app to find nearby homes as you’re driving around, and explore them on a whim — a huge improvement from the traditional process!

We built our app in React Native. A major part of that choice was pragmatic — our team had a lot of experience with web technologies, and almost no experience with native technologies. We also wanted to support both iPhone and Android from early on, and React Native let us do that (we released our app for iPhone first, and adding Android only took an extra couple weeks).

Not everyone wants to install an app, so it's still possible to access our homes via SMS. We’ve added a few security mechanisms — one worth mentioning is Blockscore, which lets us quickly run identity verification using phone numbers. For riskier numbers, we disable the automatic entry system and have our support team call the customer to collect their information.

Tools and Workflows

We manage our repositories and do code reviews on GitHub. All code is reviewed by at least one other engineer, but once it’s in the master branch, it’s assumed to be ready to deploy. If you want to deploy your code, you can do it in three steps:

  1. ./bin/deploy staging
  2. Check your work on staging
  3. ./bin/deploy production

This takes 10-15 minutes in total. We’ve worked hard to automate the process so we can move fast as a team. We use Heroku for hosting, and run automated tests on CircleCI. Slack bots report what’s being deployed.

There are a lot of external services we rely on heavily. To run through them briefly: Help Scout and Dyn for emails; Talkdesk and Twilio for calls and customer service; HelloSign for online contract signing; New Relic and Papertrail for system monitoring; Sentry for error reporting.

For analytics, we’ve used a lot of tools: Mixpanel for the web, Amplitude for mobile, Heap for retroactive event tracking. We mainly use Looker for digging into that data and making dashboards.

Joining Opendoor Engineering

Opendoor has a very entrepreneurial, pragmatic culture: Engineers here typically talk with customers, understand their needs, and take the initiative on projects. We’re big on ownership and empowering others, and are aggressively anti-snark.



We’re looking for engineers of all backgrounds: it doesn’t matter what languages you work with now, we’re sure you’ll ramp up fast.

Find out more about Opendoor jobs on StackShare or on our careers site.

Huge thanks to Kevin Teh, Mike Chen, Nelson Ray, Ian Wong, and Alexey Komissarouk for their help putting together this post.

Opendoor
A new way to buy and sell homes. Opendoor allows homeowners to sell their home online in a few clicks, bringing certainty and simplicity to what is usually a long and stressful process.
Tools mentioned in article
Open jobs at Opendoor
Senior Software Engineer – Analytics ...
United States
About Opendoor Founded in 2014, Opendoor’s mission is to empower everyone with the freedom to move. We believe the traditional real estate process is broken and our goal is simple: build a digital, end-to-end customer experience that makes buying and selling a home simple, certain and fast. We have assembled a dedicated team with diverse backgrounds to support more than 100,000 homes bought and sold with us and the customers who have selected Opendoor as a trusted partner in handling one of their largest financial transactions. But the work is far from over as we continue to grow in new markets. Transforming the real estate industry takes tenacity and dedication. It takes problem solvers and builders. It takes a tight knit community of teammates doing the best work of their lives, pushing one another to transform a complicated process into a simple one.  So where do you fit in? Whether you’re passionate about real estate, people, numbers, words, code, or strategy -- we have a place for you. Real estate is broken. Come help us fix it. About the Team: Analytics Platform is on a mission to democratize learning by building systems that enable company-wide analytics and experimentation. By implementing sufficient instrumentation, designing intuitive data models, and building batch/streaming pipelines, we will allow for deep and scalable investigation and optimization of the business. By developing self-serve tools, we will empower executives, PMs, Ops to understand company performance at a glance and uncover insights to support decision making. Finally, by building capabilities such as forecasting, alerting, and experimentation, we will enable more, better, and faster decisions. Stack: Python SQL Snowflake Airflow <li>Partner with infrastructure and product engineers to instrument our backend services and end-to-end user journeys to create visibility for the rest of the business</li><li>Develop and monitor data pipelines and build out new integrations with third-party tools</li><li>Work with data scientists to design our data models as inputs to metrics and machine learning models</li><li>Have the autonomy to help shape the future of data engineering by establishing best practices</li><li>Architect a company-wide analytics platform to inform daily decision-making</li><li>Establish the best practices for data engineering</li><li>Work on the unique challenge of joining a variety of online and offline data sets, not just big data</li><li>Opportunity to grow into a Tech Lead/Manager, and mentor junior team members as we quickly grow the team</li> <li>4+ years of experience working with instrumentation, data pipelines, and data warehouses</li><li>BS or MS degree in Computer Science, Engineering, or a related technical field</li><li>Strong programming skills, preferably in Python</li><li>Familiarity with software design principles, including test-driven development</li><li>Proficiency with systems design and data modeling</li><li>Fluency with workflow management tools, like Airflow or dbt</li><li>Experience with modern data warehouses, like Snowflake or BigQuery</li><li>Ability to understand the needs of stakeholders, define business requirements, and architect systems that will scale and extend to accommodate them over time</li><li>History of independently leading cross-functional projects and prioritizing work based on business impact</li><li>Expertise breaking down complex problems, documenting solutions, and sequencing work to make iterative improvements</li>
Staff Software Engineer – Analytics P...
United States
About Opendoor Founded in 2014, Opendoor’s mission is to empower everyone with the freedom to move. We believe the traditional real estate process is broken and our goal is simple: build a digital, end-to-end customer experience that makes buying and selling a home simple, certain and fast. We have assembled a dedicated team with diverse backgrounds to support more than 100,000 homes bought and sold with us and the customers who have selected Opendoor as a trusted partner in handling one of their largest financial transactions. But the work is far from over as we continue to grow in new markets. Transforming the real estate industry takes tenacity and dedication. It takes problem solvers and builders. It takes a tight knit community of teammates doing the best work of their lives, pushing one another to transform a complicated process into a simple one.  So where do you fit in? Whether you’re passionate about real estate, people, numbers, words, code, or strategy -- we have a place for you. Real estate is broken. Come help us fix it. About the Team: Analytics Platform is on a mission to democratize learning by building systems that enable company-wide analytics and experimentation. By implementing sufficient instrumentation, designing intuitive data models, and building batch/streaming pipelines, we will allow for deep and scalable investigation and optimization of the business. By developing self-serve tools, we will empower executives, PMs, Ops to understand company performance at a glance and uncover insights to support decision making. Finally, by building capabilities such as forecasting, alerting, and experimentation, we will enable more, better, and faster decisions. Stack: Python SQL Snowflake Airflow <li>Partner with infrastructure and product engineers to instrument our backend services and end-to-end user journeys to create visibility for the rest of the business</li><li>Develop and monitor data pipelines and build out new integrations with third-party tools</li><li>Work with data scientists to design our data models as inputs to metrics and machine learning models</li><li>Have the autonomy to help shape the future of data engineering by establishing best practices</li><li>Architect a company-wide analytics platform to inform daily decision-making</li><li>Establish the best practices for data engineering</li><li>Work on the unique challenge of joining a variety of online and offline data sets, not just big data</li><li>Opportunity to grow into a Tech Lead/Manager, and mentor junior team members as we quickly grow the team</li> <li>6+ years of experience working with instrumentation, data pipelines, and data warehouses, preferably acting as a data architect in a previous role</li><li>BS or MS degree in Computer Science, Engineering, or a related technical field</li><li>Strong programming skills, preferably in Python</li><li>Familiarity with software design principles, including test-driven development</li><li>Proficiency with systems design and data modeling</li><li>Fluency with workflow management tools, like Airflow or dbt</li><li>Experience with modern data warehouses, like Snowflake or BigQuery</li><li>Ability to understand the needs of stakeholders, define business requirements, and architect systems that will scale and extend to accommodate them over time</li><li>History of independently leading cross-functional projects and prioritizing work based on business impact</li><li>Expertise breaking down complex problems, documenting solutions, and sequencing work to make iterative improvements</li>
Senior Engineering Manager - Data
United States
About Opendoor Founded in 2014, Opendoor’s mission is to empower everyone with the freedom to move. We believe the traditional real estate process is broken and our goal is simple: build a digital, end-to-end customer experience that makes buying and selling a home simple, certain and fast. We have assembled a dedicated team with diverse backgrounds to support more than 100,000 homes bought and sold with us and the customers who have selected Opendoor as a trusted partner in handling one of their largest financial transactions. But the work is far from over as we continue to grow in new markets. Transforming the real estate industry takes tenacity and dedication. It takes problem solvers and builders. It takes a tight knit community of teammates doing the best work of their lives, pushing one another to transform a complicated process into a simple one.  So where do you fit in? Whether you’re passionate about real estate, people, numbers, words, code, or strategy -- we have a place for you. Real estate is broken. Come help us fix it. About the Team The Data team develops the data platform that underlies Opendoor’s business. We’re responsible for both our systems and content. Our focus ranges from integrating with Multiple Listing Services (MLS) to building and maintaining the Data Warehouse solutions that drive algorithmic and interactive data models. We utilize our own proprietary, specialized systems as well as third-party tools from Open Source and Cloud-based providers. Our systems support clients who work with data in applications developed in various languages (including Python, Go, and Ruby) as well as with different latency and SLA profiles. We are looking for an Engineering Manager who can help us build the systems to scale up our data acquisition, ingestion, and processing efforts to 100x where it is today. As the engineering manager for this team, you will mentor and lead the software engineers that will be at the center of this data. Your team will build the platform to empower the rest of the company to seamlessly ingest and process data, track data quality, report reliability metrics, and catalog output tables. Our future data science research direction, machine learning strategy, and analytics will run through your team. As a hands-on leader for this team, we will be looking to you to steward the vision and lead the charge to support that future. <li>Help build and lead great software teams to deliver world-class systems</li><li>Support and grow your direct reports and peer teams</li><li>Champion engineering and data science, establishing metrics and process for regular assessment and improvement</li><li>Provide technical leadership and guidance to both your team members and your project peers</li><li>Working closely with product and data science, help engineers gain business context, improve prioritization skills, and hone their craft</li><li>Promote an engaged, product-focused, positive engineering culture</li><li>Uncover better ways of developing software by doing it and helping others do it</li> <li>BS or higher degree in Computer Science, Engineering, or a related technical field</li><li>Quantitative experience, either via previous job experience or a degree in Mathematics, Statistics, or a related field</li><li>4+ years of experience building production software systems</li><li>2+ years managing data platform related products (data processing, data warehousing, data ingestion)</li><li>Prior experience with data processing technology (e.g. Spark, Hadoop) and workflow management tools (e.g. Airflow, dbt)</li><li>Prior experience handling complex external data ingestion involving a variety of types of data</li><li>Proven ability to use data and metrics to drive decisions</li><li>History of independently leading cross-functional projects and prioritizing work based on business impact</li><li>Ability to understand the needs of stakeholders, define business requirements, and architect systems that will scale and extend to accommodate them over time</li><li>Expertise in breaking down complex problems, documenting solutions, and sequencing work to make iterative improvements</li><li>A sense of ownership and a passion for delighting customers through innovation and creative solutions to complex problems</li><li>Excellent communication skills and high attention to detail</li><li>Experience hiring, mentoring, and leading teams of software engineers, data engineers, and project managers</li>
Senior Software Engineer - Enterprise
United States
About Opendoor Founded in 2014, Opendoor’s mission is to empower everyone with the freedom to move. We believe the traditional real estate process is broken and our goal is simple: build a digital, end-to-end customer experience that makes buying and selling a home simple, certain and fast. We have assembled a dedicated team with diverse backgrounds to support more than 100,000 homes bought and sold with us and the customers who have selected Opendoor as a trusted partner in handling one of their largest financial transactions. But the work is far from over as we continue to grow in new markets. Transforming the real estate industry takes tenacity and dedication. It takes problem solvers and builders. It takes a tight knit community of teammates doing the best work of their lives, pushing one another to transform a complicated process into a simple one.  So where do you fit in? Whether you’re passionate about real estate, people, numbers, words, code, or strategy -- we have a place for you. Real estate is broken. Come help us fix it. About the Team Since Opendoor first started operating in 2014, we’ve learned a lot about buying, managing, and selling real estate. The Enterprise unit with Opendoor aims to share our learnings by offering our technology and processes to institutional single-family-home investment partners. This team is building a modern platform for transactions, offering a wide range of services such as brokerage and title. About the Role: What you should expect as a software engineer working on our Enterprise team — maximum agency, tight feedback loops with customers, and no shortage of problems that directly translate to business value!  As a member of the team, you will have the opportunity to design, build and ship massive data pipelines, complex workflow management systems, and software tools that enable us to operate at a scale that would otherwise not be humanly possible.  Our products are built with Python, Typescript, and React, though we occasionally also work on services written in Ruby, and Go. <li>Contributing to all phases of software development including ideation, prototyping, design and production</li><li>Building products, tools and services from scratch, as well as evolving existing systems</li><li>Applying your technical expertise to guide the team in making intelligent and pragmatic design decisions[</li><li>Partnering with product managers, designers, and operators to identify and solve customer pain points</li><li>Hiring and mentoring other engineers on the Homebase team and across Opendoor</li> <li>A track record of approximately 6+ years building and delivering production quality software systems</li><li>Excellent communication skills — clear written and oral communication is important to our ability to operate as a remote team</li><li>Strong engineering fundamentals — we don’t require knowledge of specific languages or technologies; instead we value transferable experience writing & debugging code, scaling existing services, and designing/architecting new software systems</li><li>A strong sense of ownership and customer empathy — we work very closely with our internal and external customers, and maintaining positive working relationships with them is paramount to the success of our business</li>
Verified by
Engineering Manager - Pricing
Software Engineer
Engineering Manager
Software Engineer
Software Engineer
Lead Data Scientist / Software Engineer Manager
Software Engineer
Machine Learning Engineer
You may also like