Post Mortem Discussion
Check out photos of this project
What was the problem to be solved?
The process for nurses to order durable medical equipment can be combersome and error prone.
Additionally, it requires many manual steps and nurses are often on the go or in their vehicles when they need to order equipment for their patients.
What was the proposed solution?
Nurses need a guided way to order equipment using only their voice.
Additionally, the bot needs to assist the nurse by proactively protecting the nurse from order errors.
Finally, the platform should be available for the nurses on their mobile phone so they can access it on the go.
What challenges arose during the project?
Despite the many advances in voice-to-text and text-to-voice technology, it still has many challenges.
For example, if an application says "What time would you like the item delivered?" voice translation technology can easily convert "12 PM" or "9 AM" to a time.
However, if the user says "Noon" or "morning", the technology needs a bit of training.
Even more complicated is if the user adds pregnant pauses such as "uhhhhhhh 12 pm" or "how about noon."
If the bot replies "I'm sorry. I didn't understand that" too often, the technology loses its purpose as the users get frustrated with it.
What was the technical approach to the project?
The requirements of mobile and voice made React Native an ideal choice for this project.
"In order to leverage the built-in voice-to-text translation systems of iOS and Android, this needed to be a native application," Gunner founder and CEO, Cody Swann, said. "And because the app would be virtually identical whether on an Android or iOS device, React Native was the obvious winner."
Additionally, the team leveraged an Open Source library that acted as a wrapper around both of the platforms' voice to text tech, which eliminated a lot of the heaches that go into exacting words and meaning.
In order for the bot to read the steps and ask for confirmations, the team relied on Expo for that and a number of other common functions.
The frontend React Native client communicates with a GraphQL API written in Node.js and run on AWS Lambda and Amazon API Gateway.
This API sources its data from a legacy Ruby on Rails application.
What was the project management approach to the project?
In this case, the team knew it had approximately four months to complete this platform.
With that in mind, the management team worked with stakeholders to list user stories for all the features the platform would need.
After that, the management team worked with the product team to estimate Effort Points for each user story on a 1, 2, 4, 8, 16 point scale.
The team added all the points to arrive at a total Effort Point level for the entire project.
Knowing they had two months to tackle that total level, the management team was able to look at the available development resources and their Velocity score (how many Effort Points they can complete in a single iteration), and put together a team that could complete the project in less than four months.
Each iteration is a week, and the management team will know immediately if the team is ahead or behind schedule and can adjust resources as necessary.
This approach is a variation of the Agile Scrum approach to project management.
What platform was built for this project?
As with most projects, the team used CloudFormation and the Serverless Framework to manage the backend, which included:
For the frontend, the team leveraged the AWS Amplify framework, which helped create the AWS AppSync backend with a GraphQL API that the React and React Native clients used to communicate with the backend.
Amplify also helped manage Amazon S3 and Amazon CloudFront for storing and serving static assets and building and deploying the React Native client.
What did you learn from working on this project?
As this was Gunner's first voice-only app, the team learned a lot about the idiocracies of heavily integrating voice.
For example, the developers had to figure out how to detect silence and then implement an ideal time of silence to determine that the user had stopped speaking as this was a completely hands-free app.
Why was Gunner selected for this project?
Qualis has been a Gunner Technology client for nearly a decade.
When they need something built, they know Gunner will deliver the highest quality, on time and on budget.
Who worked on this project?
What tools, techniques and methodologies were used on this project?
Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams
Amazon API Gateway is a fully managed service that makes it easy for developers to create, publish, maintain, monitor, and secure APIs at any scale.
Apollo binds data to your UI with the ultra-flexible, community-driven GraphQL client for React, JavaScript, and native platforms.
AWS Amplify is a toolchain which includes a robust feature set for simplifying mobile and web application development.
AWS AppSync automatically updates the data in web and mobile applications in real time, and updates data for offline users as soon as they reconnect.
Expo is a free and open source toolchain built around React Native to help build native iOS and Android projects using JavaScript and React.
GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data.
Material Design is a visual language that synthesizes the classic principles of good design with the innovation of technology and science.
Material UI is a CSS Framework and a Set of React Components that Implement Google's Material Design
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications
Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more