Developer Spotlight: Postmates

Postmates talks with us about their integration of Orders API

Reddit
LinkedIn

In working with Postmates on their integration of the Square Orders API, we wanted to sit down with them and chat a little more about what Postmates is up to and how that process went. For those unfamiliar, Postmates is a logistics platform that connects customers with local couriers who can deliver anything from any store or restaurant in minutes. Square has partnered with Postmates to integrate into the Square Order Manager that allows Square Sellers to easily manage orders for their business directly in their point of sale or Square dashboard.

Tell us a little bit about the engineering team at Postmates and how things work there.

We currently have 200 engineers and growing. We are aligned around various products with the core being the 3 pillars, the three sides of our marketplace: Buyer, Fleet, and Seller. We value teamwork, efficiency, and building/using the right tools at the right time.

We value folks that take ownership and responsibility for their tasks. We care about each other and you’ll often find folks helping out other teams whether over slack on in person. Postmates is a fast-paced place to learn and develop in your career while changing how goods move around cities.

In order to maintain developer velocity, we organize into pods, or subteams, focused tightly around key goals. We then provide the pod with the space and autonomy to make the choices in tech and design to improve the product and enhance the customer experience.

We are remote-friendly, with almost every team having at least a few remote members across the board. Teams generally operate on 1 or 2 week sprints, allowing some freedom to work in the way that’s best for them.

The thing that I enjoy most here is speed and trust. We have a large problem space to cover and a team that is growing to keep up with it. My journey has gone from individual contributor working on features to engineering leader quadrupling my team size.

You build for a lot of restaurants, retailers, delivery couriers, and hungry customers. What technologies and frameworks do you use for Postmates’ infrastructure for all these different people?

On the backend, we use a variety of frameworks suited to the use case. We currently have services deployed in Python, Golang, Elixir, Erlang, and Scala. On the frontend, we are unified around React and Redux, with newer projects utilizing Typescript and GraphQL. For mobile clients, we go the native route: Kotlin/Java for Android and Swift for iOS.

For data science we use sckikit learn, xgb, tensorflow, keras, google ai platform, domino, dataflow, big query, google colab, airflow, nltk, statsmodels, sacred, matplotlib, holoviews/hvplot.

On the platform front, we deploy our services to kubernetes and have common logging and monitoring available to all teams: prometheus, grafana, kibana, elasticsearch, jaeger, open-tracing, open-census, and other custom tools.

When developing the delivery and order management integrations, what were the key issues that you were solving for?

The Postmates delivery integration is designed to help Square sellers grow their business by offering on-demand delivery to their customers. With no technical expertise needed, sellers can get set up in minutes and connect to their customers in entirely new ways using the power of the Postmates platform.

For order management, it’s really about efficiency. We want Square merchants to be able to self-onboard with just a few clicks and be up and running on the Postmates marketplace. Additionally, we want our existing Postmates + Square Partners to streamline their ordering process and free themselves from a secondary tablet solution. This means faster and more accurate orders as these flow directly into the Square terminal.

What was it like to work with the Orders API?

Working with Square’s Orders API was mostly a delightful experience. We made heavy use of the online documentation, the premade Postman collection, and the support provided by Square’s team. When we’d find something unclear or missing from the documentation, our feedback and suggestions were always welcomed. And when things went wrong, the API returned helpful error messages that were easy to debug.

One thing we were pleasantly surprised by was the fast response times with the Orders API. After working with so many other POS APIs, we’d come to expect long latencies when placing orders. There was some functionality in the Orders API that we were expecting to rely on. One example being validation on order modifiers. When we submit orders using the API, there is currently no validation on whether the item we’re ordering actually accepts the modifiers we’re attaching to it.

One implementation detail we really appreciated about the Square API was all the thought they put into security; making use of auth tokens that expire and ensuring their partners store those tokens securely. In fact, it is the use of oauth that allowed us to launch a self-onboarding flow for our sellers to connect their square accounts without any humans in the loop.

How long did the integration take? How many sprints? How many engineers were there on it?

It took a pair of engineers roughly 3 weeks to integrate the Postmates Delivery service with Square. Eng efforts continued for another 2 months to optimize the experience during a beta period with merchants. This is an example of our pod focus at work, small teams moving quickly to ship and iterate towards our goals.

On the ordering front, we had 1-2 engineers working for roughly 3-4 weeks. This integration powered the Postmates Pickup experience at Coachella and Stagecoach where we were able to collaborate directly with the Square team in a live order environment. Based on that experience, we continued to iterate on product enhancements for the next few weeks before making it available to all of our partner merchants.

What was it like working with Square during this process? How would you describe the quality of support you received?

While both the teams were planning for go to market, there was a great commitment from the Square team to invest in the success of the launch. Victor Wong, Square’s Product Partnership Manager, was very approachable & quick to help out on anything that was needed. Throughout the process, we held weekly meetings with members from both sides available to discuss progress, review issues, and ultimately bring us to success. Overall, it was a great experience working with Victor & team.

We had a constant, real-time flow of communication with them at all times, and they always made themselves available to answer questions or help us debug some code. Their feedback throughout the development process guided us and helped increase our productivity tremendously.

One feature in particular they helped us out with was testing a catalog with a large amount of items. In our initial development cycle, we didn’t realize that particular endpoint supported pagination. Once we realized we had to create a catalog with 100 items, it seemed like it would take a while. Instead, Victor and his team were able to create one for us with over 400 items in just a few minutes.

What is coming next for the Postmates’ engineering team that you can talk about?

We are building out a second dedicated engineering office in LA. With LA being our largest market, we believe it makes sense to double down on this presence to better connect with our users and learn about their expectations of the Postmates' experience and apply those region specific learning across all of our markets.