Shopkeep - making a point of sale
An Android point-of-sale for a market-leading US commerce company.talk to us
Android for the First Time
Before their acquisition by Lightspeed in 2020, Shopkeep was a market-leading cloud-commerce company based out of NYC, whose software was used by retailers to manage the sales cycle from inventory through to payment.
Customers managed their inventory using a web-based portal and their point-of-sale (POS) using a highly-regarded iOS application. In 2017, Shopkeep decided to build an Android version of their POS application to work with the range of Clover devices that had gained real traction in the market.
At the time, Shopkeep had no in-house Android experience but needed to get to market quickly whilst they set about building out their own team. They realised that the only way to do this was to outsource the development to a 3rd party provider, one that really understood the Android ecosystem and who could also help with growing their in-house capabilities. They chose Instil.
The team has been flexible and adaptive to the client's requirements and the internal stakeholders have thoroughly been impressed with their good attitude and top-tier development expertise.
Breaking into the Circle of Trust
This project was the first time Shopkeep had worked with a third-party. Internally, they had an exceptionally strong technology team who, from the CTO down, knew what they were doing and how to ship product, so finding a partner that they could trust was always going to be a challenge.
Trust, of course, takes time to build. For Shopkeep, there was real nervousness about finding a partner who shared their culture of engineering excellence and who understood how to build robust, secure, resilient software.
So, one of our first tasks was to prove our delivery and engineering expertise during a week-long discovery workshop in NYC. The week was spent scoping out a viable, releasable product, shaping our collective ways of working and developing a working prototype to help validate assumptions, uncover unknowns and prove that we knew what we were doing.
On the last day, they presented the first prototype of what the product would look like and were blown away by their flexibility.
Delighted with progress, the Shopkeep quickly turned up the dial and went into full delivery mode, putting their full trust in us to own and deliver the application.
From Supplier to Partner
On the surface, point-of-sale systems seem reasonably straightforward - integrate with the backend inventory management APIS, display available purchasable items, support the payment workflow, integrate with external hardware, and so on - but under the covers there's actually quite a lot going on.
For example, how should state be replicated across a network of POS devices? What should happen when the POS has issues connecting to backend APIs or even local hardware due to network or device issues? Essentially, a point-of-sale system needs to be resilient to any number of environmental issues with little or preferably no intervention from the Shopkeep team.
The team, of course, built these resiliency concerns into the architecture from day one. However a point-of-sale system is not a one-and-done project. There is a constant stream of new features to be added and an ever-increasing range of devices and hardware to integrate with, including card readers and receipt printers.
Our relationship with Shopkeep therefore evolved over the 3+ years of the engagement. What started as a simple third-party supplier engagement ended up being a close, long-term partnership where we continued to provide support until well after their acquisition. This support included working on the development of new product lines and providing formal training courses in engineering best practices and QA to their wider team.
One of their values as a partner is that they transfer knowledge over to our team. They don’t just help develop the product and walk away. They helped train our team on the Android platform to ensure we maintain their good practices and high-quality code