eBay has long been a place where automobile enthusiasts turn to buy or sell ’67 Ford Mustangs, ’69 Dodge Challengers and other classic cars that were elegant solutions equipped with the most advanced technology of their day.
A similar philosophy was taken toward eBay Motors, a new native app for Android and iOS for the U.S. that was announced today. The app’s elegant and easy-to-use interface is built upon cutting-edge technology that is reinventing ecommerce, including machine learning, Backend for Frontend (BFF) architecture, and Flutter, the trending open-source x-platform development SDK created by Google.
In the Big Data era, eBay Motors is using these different technologies to leverage massive amounts of information and providing a mobile foundation to simplify and improve the online retail experience.
Machine Learning: Increasing “Trustworthiness”
On the eBay site, the way that automobile photos are organized and tagged on a listing can have a significant impact on the buying and selling experience. Someone who wants to sell a car on eBay typically posts 15 to 20 photos of the vehicle. User testing of the eBay Motors app showed that photos which are well-organized into three buckets (car exterior, car interior, and engine) make buyers feel the listing is more trustworthy.
Creating a narrative presentation, with well-organized photos and descriptions, can be a complex and expensive endeavor. In developing eBay Motors, we used edge-powered image categorization AI built with firebase autoML, enabling users to create compelling listings with little effort.
It works like this: The car seller takes photos of their car on a phone, uploads the photos to their listing, and eBay automatically organizes the photos into the three groupings. This has a significant impact on the perception of the listing. During testing, users gave comments like “This listing must have been put together by a mechanic” due to the intelligent image categorization.
The categorization model was built with Firebase AutoML Vision Edge, an easy to access tool for building models which can be sized for use on phones. The original algorithm was constructed by a single engineer in a couple of days, who trained the model using a few hundred photos from existing eBay car listings.
The ease-of-development speaks to the maturity of AI and ML, which have moved beyond the province of data scientists to off-the-shelf tools which are available to software engineers.
Another testament to the improvement of the technology was the accuracy of the models, which achieves > 95% accuracy after being trained on only a few thousand labeled images.
Flutter: Speeding Development
Flutter, Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase, has generated a significant amount of interest. We instantly saw its value in developing eBay Motors.
Instead of the traditional approach of using WebView or the OEM widgets that ship with the device, the technology uses its own high-performance rendering engine to draw widgets. With only a thin layer of C/C++ code, Flutter implements the widgets, framework, animation, compositing and other system elements in an object-oriented language called Dart. Developers have a significant amount of control over the system.
The technology shares a single code base across Android and iOS apps, with a focus on speed and maintaining a native feel. Since we were developing eBay Motors with a relatively small team, the promise of Flutter to speed up the development of the mobile app and reduces the cost and complexity of app production across platforms was enticing.
Implementing a new technology like Flutter in a large-scale, production environment always involves risk, of course. The technology moved from beta to Release Preview 1 only a year ago. We spent the first month performing due diligence, and found that Flutter was perfectly suited for a native development where the user interface was so fundamental to what we were doing.
A key benefit was faster development. In normal Android and iOS development, for example, it can take several minutes between the time you write the code and see it reflected in the emulator. In Flutter, this step takes only a few seconds. Allowing developers to instantly access their handiwork is critical for implementing an appealing UI that is being iterated rapidly.
An additional benefit of flutter is the maturity of its testing solutions. The test automation is so robust that we were able to convert our two QA engineers into software engineers. This allowed us to maximize the talent of our small development team, giving developers a more holistic responsibility for the app as they tested their work as they developed features.
BFF: Empowering Developers
As we developed the new app that would add more features as user requirements became clearer, it was apparent that we needed a Backend for Frontend (BFF) architecture, which is ideally suited to create backends for client-facing mobile apps.
In BFF, the mobile frontend architecture does not directly access backend services. Instead, the BFF acts as an aggregation and proxy layer between the client and the services that it calls. By definition, the only consumer of the BFF is the native clients; this allows us to place logic in this service which can minimize the number of calls from the client and ensure that payloads sent over the wire are optimized. These qualities of the BFF give users of the eBay Motors app a faster and smoother experience.
The BFF architecture provides numerous benefits to a development team that is creating features that require a specific API. Critically, BFF allows the development team to define the API contract, giving them the ability to define the source of the data, how to aggregate it, and other considerations that normally require the assistance of a backend team. As a result, they can define and adapt the API based on UI requirements.
By giving the development team this autonomy, developers could quickly iterate the app to provide the best experience for the users. This evolutionary design moves the system to a better, less-coupled state, as compared to a large single-purpose API.
BFF, Flutter, and machine learning allowed us to quickly build and iterate on a cutting-edge app that dramatically improves and simplifies the experience of buying and selling cars on eBay. Early feedback from customers who have used the app have found it similar to a classic car – it’s elegant and powerful to drive, but what’s really impressive is what’s under the hood.