UX Research, Wire-framing, Visual design, Android development, Testing
Client: Echosense is a company building a contextual mobile engagement platform. The platform would be used by companies to deliver relevant engaging advertisements to users based on their context.
Challenge: Design a B2B solution that would enable Echosense to collect rich and accurate data to map different businesses and locations.
Role: I was working at Echosense as UX designer and Android developer. My responsibilities were to design and develop an Android application that would help Echosense team and business partners to collect data using a smartphone.
Team: We were a team of six people. I was the only UX Designer and Android developer on the team. I worked closely with two backend developers (Parth & Vibhav) to build different services to support Atlas and Echosense platform, a quality analyst (Shalini) who ensured that all services and application were running smooth, a business developer (Aayush) who worked directly with promoters and business, our project manager/CTO (Deepak Jain) and CEO (Deepak Singh).
Atlas was designed to enable promoters (users) to visit different businesses and locations and collect rich data specific and unique to each place. The generated data would later be used by Echosense platform to map the places to generate different contexts.
I started by looking into what different features were required to collect rich and accurate data while still providing the user with enough flexibility to use it in public places. I researched about different hardware and software features offered by different gadgets and smartphones that could be used to collect a great variety of rich data. I also looked into the potential users, problems they face with using smartphones and market research for the competition and their implementation.
There were two primary users of Atlas
- Promoters at Echosense: Promoters were hired by Echosense to visit different shops, markets, shopping malls, restaurants and other businesses to collect rich data.
- Employees at Partner businesses: Employees at partner businesses would use Atlas to gather rich data at their stores.
Defining the terminology
Calibration: Process of recording sensor data along with the strength of various signals at any point.
Zone: A big Area with commercial business and stores in it. (Shopping mall, Markets)
Group: A commercial store or a business office. (Clothing store, Restaurant)
Spot: A small section or area in a store. (Payment counter, Men's shirts section)
Type: Each of the above would have a type associated with it which would be unique it each category. (High-income market, General store, Fast food restaurant, Takeaway store)
Defining the User flow
We wanted to design the application to be very simple and straightforward by decreasing the number of actions performed by the user and still giving enough freedom to generate rich data. We defined a model for collecting data which simplified the user flow of the app; Search - Select - Calibrate.
The app required some additional features like a profile with user details, recording and showing statistics, Ability to make app work offline, Sync application with backend services, etc.
Sketches and Wire-frames
I started with iterations of different sketches to map-out the flow and layout of the app followed by low fidelity wireframes and prototypes. The primary use-case was for the user to quickly search and select the relevant options and calibrate. In some cases, the user would have to create new items if they cannot find it in the list. After some iterations and testing, We found that a simplified linear user flow was a better option. We divided the calibration into two sections; Area/Location and spot details.
Due to lack of time and small size of the team as I was the only designer and Android developer, we decided to skip high fidelity prototypes and started developing the Android application. I used a neutral colour palette with a blue accent colour to highlight the primary actions in the application. The app was developed following Google's Material design guidelines which provide amazing design resources and components. I started developing the primary functions of the app and connecting it with services that were being developed by the backend developers, followed by the Calibration testing and Statistics screens. I later also added the on-boarding, Registration, Login and Profile screens before the application was rolled out to external promoters and Partners to keep-up with the expansion of Atlas to different cities. We tested the application throughout the development process and made changes based on the feedback from the stakeholders.
Throughout the development process, we were continuously testing the application. In the early stage, we tested the application internally by going to different locations and using it in real-life scenarios. Later we had a separate team freelance promoters who were assigned to go to different locations to calibrate stores. With regular intensive testing, we found different problems with the app and the process, which brought different features to Atlas. We were also rapidly expanding to different cities so had to make sure the learning curve was gradual and the application was not overwhelming for new users while still keeping new features.
Few of the issues we found in multiple stages of testing:
- Searching the items: I used dropdown lists for the items but found that it was hard to find a single item in the list. After trying different alternatives, I decided to use AutoCompleteTextView available in Android material design which allows the user to search and filters the list with keywords. Later we found that some users were searching for different keywords and could not find the items. For example for "Men's clothing store", they were searching terms like 'apparels', 'shirt', even some equivalent words in Hindi. To help users with the search I decided to implement predictive search. I attached a list of such words with each item so if they searched for 'shirt', 'Men's clothing store' would filter out.
- Time to calibrate: While creating new zones and groups, many promoters were entering the wrong addresses and also the process was very long. To speed up the process and make it easy for the user, I pre-filled some of the required information using Android Location API when creating a new Zone or Group like names and address.
- Mock location: Some of the promoters were using the mock location from home to calibrate which resulted in wrong calibration data. To tackle this problem I implemented a system to make sure the users were calibrating data from correct places and did not use mock location. I also implemented some other features to eliminate wrong calibration data.
- Third-party security features: A lot of smartphones (mostly Chinese brands like Xiaomi and Oppo) had additional security features which caused a lot of problems with location and other sensors. I implemented different workarounds for each brand and their OS versions.
- Collecting rich data: We also had some challenges with using different sensors for collecting data in different scenarios for which we had to find alternative ways like using Google services for location when GPS was not available.
My journey to becoming a better Designer (& Developer)
Atlas was a very simple app when we started but it became a very complex project as we developed it and added new features for the business requirements while still keeping it simple and easy to use. Even-though many of the things seemed very simple and straightforward to us were not intelligible to the users. At first, I found myself struggling to figure out why the users ware not using the features properly but later I learned to look deeper into the user behaviour and try to solve the problems based on that. I also found it hard to balance the perspectives as UX designer as well as Android developer but later realised how I brought a different experience with it which was well appreciated and gave me an edge over other designers and developers. The understanding of both stages of product development helped me empathise with both the users and the developers; to find a good balance and be better at communicating and collaborating with both. I also learned how to address the business needs along with a focus on creating a better user experience.