Designing Parsl's Point of Sale

The project

To enhance Parsl’s offering of itemized inventory management, stakeholders presented the concept of developing an in house point-of-sale.

This decision was driven by the fact that:

  1. Almost all potential clients needed or had an existing a point of sale that we needed to integrate with
  2. Every new integration cost us development time.

However, a point-of-sale in the cannabis industry has many requirements that make it different from point-of-sales in most other retail situations:

  1. Customers for dispensaries must be KYC’ed in order to ensurer they can legally buy product. The evidence of this must be recorded by the business for each sale.
  2. Product is not kept on the floor of a cannabis dispensary. Orders are submitted, then fulfilled in a room that holds inventory, and then sent to the counter to complete the sale.

The points above are the key reasons businesses in the cannabis industry require an industry specific point-of-sale.

There was also strong feedback from our direct industry research that there was a high-level of dissatisfaction with the current offerings for cannabis-specific point-of-sale programs.



Second hand research

There is a significant amount of point-of-sale software available, and as the development of Parsl’s point-of-sale was intended to solve specific problems related to the cannabis industry, there was no need to reinvent the wheel for the majority of functionality aspects.

So to lay the groundwork for the Point-of-Sale, I spent time signing up for popular point-of-sale software and auditing their UX. 

These point-of-sales included

  • Vend
  • Lightspeed
  • Square

Client Interview and Competitor Demo

To uncover the key problems that needed to be solved for the cannabis industry, we set up a demo with a key client to view their current point-of-sale system and interview them about the key pain points.

The defined problems

After analysis with Parsl’s Chief Technical Officer this problem was attributed to a few key factors:


Customer check-in

Customers for cannabis dispensaries are required to verify the identity of a customer to ensure they can be legally sold product. For compliance purposes they are also required to keep a record of this information.


Cannabis product is not held front of house

Unlike most retail environments, dispensaries do not hold products on the floor. They display samples and then make an order for fulfillment in an inventory storeroom. This requirement broke up the standard customer journey of completing a sale of ringing up the sale and processing the sale into two separate actions.


Intuitive UI

The key piece of feedback we recieved from our client interviews was that, although many of the solutions in the cannabis industry accounted for the above problems, they were not executed in an intuitive design. This led to mistakes being made and operational efficiencies.


Item specific tracking (system specific)

There was also a problem to solve that related to the way our inventory tracking system works. The item specific tracking that is central to our inventory tracking requires the point-of-sale knowing exactly which product was sold, not just what product line it was from.

The design solutions

To fully integrate with the inventory management aspect of our system, the design solution requires two new apps (check-in app and point-of-sale app), and enhancement to two existing domain (Parsl inventory app and the admin portal).


Admin portal

In order to set up a working dispensary set-up for the point-of-sale app first features had to be developed on.

The features implemented to achieve this were:


A subset of the existing Facilities. Created in order for products to be assigned a location. A separate domain was required due to a few unique fields that were required.

Unique code for QR

This generated a code in order to allow the check-in app (detailed below) to function

Loyalty Points

This feature allowed companies to assign their own Loyalty Point to Dollar spent ratio.


This feature is set up to define specific point-of-sale locations. The specific form of feature came from insights from the client interview, particularly the ability to turn payment types on and off, as the use case for the point of sale goes beyond simply processing sales (eg: floating budtender submitting orders, a dedicated employee verifying orders).

Tax Rule

Custom tax rules were a feature designed to make our POS as flexible as possible. This helped Companies customize the taxes charged on their POS to match the jurisdiction they are operating.

Additional changes were made to allow overriding of the global tax value at a product line level.

Card surcharge

The same approach was taken to payment types. Due to the unique situation where cannabis is illegal at a national level and legal at a state level, cannabis business have to take a unique approach to taking non-cash payments.

For this reason we wanted to make adding addition payment processing types as flexible as possible.

User profile enhancements

In order for employees to use an open instance of the POS then need a PIN to unlock it. We introduced an enhancement to auto-generate a PIN for every user.


Check-in app

The next stage of the design solution was a customer facing check-in app. This app was required in order to collect and store the required KYC information about customers in a streamlined and efficient manner.

Check in scan

This app was built to allow customers to sign into a dispensary via a ‘Check-in’ QR code with all the relevant details required to authorise their purchase.

This designed was modelled very closely on many of the COVID contact tracing apps and applets that were mandated for businesses

As already mentioned, in the admin portal section, when a dispensary is created within a Company a unique QR code is created. This code can be printed and scanned with the users camera (either inside or outside the app).

If the user does not have the app installed, scanning the QR code will direct them to Appstore or Play Store.

Check in information

The user is then shown a form that collects all the information require to properly KYC them to purchase cannabis products.

This information is saved and linked to the users purchase. It is also saved the users device so they only have to enter it once.

Once checked in they are added to a validation queue for a dispensary worker to confirm their details.

Once checked in

Once the user is checked in they don’t have to do anything however the app will display to them the status of their check-in and any orders they have placed.

It will also allow them to access their check-in history.


Point of Sale App

Set up

The point of sale app was intended to be used on a tablet and we wanted to make operation and implementation of the point of sale as flexible as possible.

This began with setting up the Terminals. 

The initial log-in screens are intended to be used by a supervisor and leverage the existing permissions, displaying relevant companies the user belongs to (if it is more than one), then active dispensaries, then available terminals.

Once the supervisor has completed the login the ‘Worker PIN Screen’ will be activated. This serves as a password protected lock screen that allows the Terminals to be secure and allow multiple employees to use the same station while still tracking all activity.

A terminal is logged out when a supervisor balances the till and the app will return to the original login screen.

Verifying a customer

Once the user has checked-in on the app they will be added to the Pending Verification list in the Point of Sale app.

Before a dispensary employee can process an order they must select the customer from this queue and verify their information.

Making a Sale

The process of making a sale runs through a verified customers profile.

The dispensary worker finds the customer in the verified queue, and selects to make a new Order.

At this stage they are presented with product tiles to begin compiling the order. Products are segmented into Cannabis and Non-cannabis products, and then into sub categories

To locate products the employee can click on a category, search by product line name, or simply scroll. As the user scrolls down the active category automatically updates to always give the employee a clear idea of where they are.

The dispensary can also integrate a barcode scanner with the app for further efficiencies.

Once the order is compiled the employee can apply discounts, to give the customer an accurate estimate of the end cost of the order, and submit for fulfilment (designs below)

Processing a sale

Once the order has been fulfilled, processing a sale follows a fairly standard point of sale process

The dispensary worker can access the customers profile, and then navigate to existing orders. This page displays saved orders (which are orders that were compiled but not yet submitted), and pending orders (which are orders that were submitted but not yet fulfilled).

Selecting a completed order allows the worker to go through a flow that touched on, payment method, discount, tip, and receipt.

Balancing & Close

The only users that can balance and close an open terminal is a supervisor.

The balancing process goes through some basic functions in order for the supervisor to verify the sessions intake of various payment methods an correct if required.

Once the Terminal has been balanced and closed its status will be changed to closed and it is available to be opened in a new session on a different device



In order to fulfil one of the key challenges of the project, we had to ensure that the cannabis product selected could be identified on an item specific level.

To do this we decided to implement the fulfilment of orders as a feature on the existing Parsl inventory app

This made sense for several reasons:

  • Any company using the POS app would also be already familiar with the inventory app
  • The employees dealing with stock in the storerooms would also be interacting with that inventory in different ways in the app
  • The Parsl Inventory App is already build around itemized scanning

The process of fulfilment was:

Select order

In the Parsl Inventory App the user selects ‘Orders’ from the Bulk Actions menu

From here the user will see a screen with a list of cards for all unassigned open orders. They can search the order number to filter the list. They can also tick a box to see orders that have already been assigned in case they need to take over a fulfillment from another employee.

Fulfil order

Once an order is selected the screen will display a list of product lines for that order with the required quantity.

The user can then use the standard scanning procedure to fulfil the order.

  • IF the user scans a product that is from a Product Line that has not reached its specified quantity, that individual product will be added to the order.
  • IF the user scans a product from an unrequired product line or a product line that has already reached the specified quantity they will get an error

The user can submit the fulfillment at anytime, however if they have not fulfilled all product they will get a warning. This is to give the flexibility if there is an unexpected shortage for the product line.

If the order is submitted underfulfilled the Ready Order will be automatically adjusted accordingly.

Once the order is submitted the order will be available for the front-of-house to complete the ‘Processing a sale’ flow detailed above.

The Results

The UI changes in these designs are yet to be completely implemented in the production app, however presenting these solutions recieved positive feedback from two key clients that were particularly impacted by the scanning problems.