Problem ⚠️

Although the world economy has become largely digitized, in-person transactions remain extremely popular: with 82% of total retail sales, brick and mortar stores continue to occupy the vast majority of the retail market. Many expect this number to sharply decline, especially due to the COVID-19 pandemic; however, it is not estimated to drop below 78% (only a 4% decline) by 2024. In essence, brick and mortar will continue to be the market leader with regards to retail transactions in the foreseeable future.

The standard in-person checkout model used for dozens of years by brick and mortar retailers has numerous redundancies and flaws that can turn a quick grocery run into a long-winded chore. Among them include:

  1. Checkout lines are a massive inconvenience and add unnecessary waiting time to a consumer’s checkout process, especially when stores are understaffed. This has become such an issue that shoppers go out of their way to view store checkout line wait times (through third party apps) prior to departing for the store. This is not only an inconvenience for the customer but is also detrimental for the vendor: 39% of shoppers leave a store before making a purchase because of checkout line length.

  2. The in-person checkout model is innately redundant: removing the checkout line from the equation, a shopper will still have to physically add an item to their cart, only to then remove all the items when they are checking out. Once the cashier is finished scanning, every item that the shopper purchased will need to be physically readded to the shopper’s cart. This system is extremely inefficient and only compounds long checkout lines. Many stores have implemented a self-checkout option for smaller carts, but not only does this not solve the problem for larger orders, but it also comes with its own host of issues.

  3. Self checkout systems are bug-prone and inconvenient: for example, making any changes to the cart after scanning items requires store manager assistance. Self checkout lines are also an issue, especially when a manager is helping customers. These issues have not been attempted to be solved outside of stores fixing bugs in their respective self-checkout systems.

Given these issues and with 77% of American shoppers dissatisfied with brick and mortar checkout lines, it is clear that the in-person checkout experience requires optimization.

Our Solution 🤔

goCart is a mobile app that has effectively digitized the in-person checkout process. With various features built into the app, the vast majority of the issues with the brick and mortar checkout system will be solved (including those listed above): a goCart user will be able to quickly scan items into their cart, check out with one click, and bypass checkout lines on their way out of the store.

Page

Alt text

Store-Credit Wallet + Debit/Credit Card Payment Options

Alt text

Barcode Scanner

Alt text

One-click Checkout + Digital Receipt

Alt text Alt text

Design and Development 👨‍💻

Our goal was to keep the user experience as simple and intuitive as possible. We opted for a straightforward 3-tab design that guides the user through our redesigned shopping experience.


  • Expo (built on top of React Native)
  • Javascript + CSS + HTML
  • CryptoJS - used to generate signature for Rapyd API
  • Rapyd API REST Endpoints - Rapyd Collect and Rapyd Wallet
  • Firebase - realtime cloud database for account information/cart data and data persistence between user app and companion app for vendors (see Security)

Rapyd Integration 💸

In order to simplify the collection of funds, our model utilizes the Rapyd Wallet API to create a single company wallet (CREATE WALLET) which can be easily adapted by any business. We then create a new personal wallet (CREATE WALLET) for each user account to track their store balance. Our demo uses the Rapyd Test API (ADD FUNDS TO WALLET) to simulate the transfer of funds from a user’s card to their store balance. However, in a production environment, the Rapyd Collect toolkit would be used to handle this.

Once the funds are added, the Rapyd Wallet API allows us to create a wallet to wallet transfer (TRANSFER FUNDS B/W WALLETS) that facilitates payment with in store credit. In addition to in-store credit, we also offer users the option to pay directly with an external card. This is where we use Rapyd Collect, as it handles card-to-wallet transactions (CREATE PAYMENT BY CARD), keeping it simple on both the customer and business end.

Once the user checks out, the payment ID returned with the API call is stored. This is then used for another level of security at the exit door where the payment is confirmed on the business end. If the user pays with a card, we complete the payment with (COMPLETE PAYMENT). Similarly, for a payment by store credit, the payment is accepted with (ACCEPT WALLET TRANSFER).

Target Market 💼

Since we don’t have access to brick and mortar store inventories, we developed goCart based on a personal store model. Essentially, we created our own inventory of ~10 items to test and demonstrate our application. Because of the nature of our application, we will require a double-pronged marketing strategy: both B2C (so shoppers download the app) and B2B (so goCart can be used in various stores with their respective inventories). The beauty of the problem we are aiming to solve is that every adult goes shopping, so on the B2C end our target market will eventually be nearly every adult.

On the B2B end, it is unreasonable to expect large retail corporations to shift off their respective shopping apps and inventory storage methods and move completely to goCart. Thus, we have developed the app in a way such that it can be integrated into the corporation’s existing workflows. All a store would need to do to use the app on their end is to plug in their inventory (can be done through various avenues such as Firebase). Outside of massive companies, we can expect many smaller retailers who don’t have an already built shopping app to shift to goCart.

Security 🔐

One of the main vulnerabilities we immediately noticed in our solution was a greater opportunity for customers to shoplift. To counter this problem, we developed a companion app for vendors to quickly scan and verify the contents of a user’s cart.

When a user has finished adding items to cart, they click the checkout button - if all payments are set up properly from the user’s end, their order will be confirmed and they will receive a QR code.

A store employee can use the companion app to scan the QR code; after this, the customer’s cart will be displayed on the employee’s screen. The employee can then quickly cross-check the customer’s physical cart with the cart on the app to ensure the customer is not leaving the store with more items than they purchased.

Alt text

To add an extra layer of security in the future when we are integrating our app in stores, we plan to add scales near the store exit. These scales will measure the total weight of the physical cart, which an employee can compare with the sum total weight of all items in the customer’s cart in the app (individual item weights can be retrieved from UPC database when the item is scanned). This process is similar to the security measure many stores place in their self-checkout systems.

Future Plans 🔮

Given the time constraints of this hackathon, we focused strictly on implementing the core features of this app. However, we’ve thought of many enhancements we can make to goCart and are looking forward to working with the Rapyd team to bring these features to fruition!

  • Bring scannable payments and receipts to gas stations, restaurants, arcades, and other in-person events
  • Manage a user’s previous orders and record store locations of purchased items for an even faster shopping experience
  • Allow users to purchase and send gift cards via Rapyd Wallet transactions
  • Implement the aforementioned security features by tracking the expected weight of a user’s cart
  • Scan paper coupons and gift cards in addition to automatically applying promotional offers sent over email      

Testing Information

You can sign in and demo the app with the following login details:
password: test

The first two links (expo and github) are the demo and code for the customer-side app. The second pair of links is the demo and code for the store-facing companion app to verify customer orders.

In order for you to scan a barcode, please download the Expo Go app and click on the link included below. You can then scan the QR code that the link directs to, which will launch the demo on your mobile device. Here are some sample barcodes in our current database for you to test out:

Alt text
Alt text
Alt text
Alt text

Share this project: