Home
SimpliSurvey - NPS Survey Platform

SimpliSurvey - NPS Survey Platform

to : SimpliSurvey allows businesses from any industry to quickly send surveys to customers and track responses in an analytics dashboard.

Showcase & Media

Project Discussion

The Gunner Team breaks down the project

Screenshots

Check out photos of this project

Problem

What was the problem to be solved?

Too often companies learn of customer satisfaction too late to fix the problem.

Additionally, creating and seding out surveys is a hassle and a lot of work and survey response rate is often poor.

Even when a survey is completed, the data only represents a given point in time.

And finally, It can be difficult to know what action is needed when negative survey trends are noted.

Solution

What was the proposed solution?

In order to solve these problems, companies need to continuously survey their customers easily and affordably by providing customer authorized instant survey for a high rate of return.

The data from these surveys needs to be readily available in real-time trends that allow companies to drill down into specifics on a management dashboard.

Challenges

What challenges arose during the project?

Time series data can be challenging to wrangle.

Many development shops make the mistake of building early versions of an application that requires time series data the quick way and put off "figuring out how to scale Big Data."

The team at Gunner knew from the start the SimpliSurvey would soon be hosting tons of data as it is an SaaS proudct that will house data for many organizations.

Additionally, as simplicity is one of the big selling points of the platform the UI team at Gunner needed to create a simple and efficient UI for each type of user in the platform, including:

  • Administrator setting up their organization for the first time and starting the first survey campaign
  • Users selecting which campaign to send and sending it to a respondent
  • Respondents taking the actual survey and submitting it.

Finally, the platform requires both a web app for the administrative dashboard and for respondents to take the surveys as well as a native app for users to be able to send surveys to respondents.

This meant the Gunner development and infrastructure teams would need to support two different clients.

Technical

What was the technical approach to the project?

"Time series can be intimiating," Gunner Technology DevOps Engineer, Ethan Sloan, said. "Fortunately, we've built several IoT apps that handled way more data in 10 minutes than SimpliSurvey can handle in a year."

The infrastructure team decided to start with Amazon DynamoDB as the master source.

All survey responses will be written into a DynamoDB with the organization id as the partition key and the date as the sort key.

This should provide the flexibility and performance to manage up to 10,000 clients with 100 or more survey responses per day.

However, to ensure that scaling will never be an issue, the team is streaming the data via Amazon Kinesis to ElastiCache, which will be used to partition the data in even more ways.

"It used to be that new companies couldn't afford to pay for Scalability out of the gate," Gunner Technology CEO, Cody Swann, said. "With Amazon Web Services, we can build a world-class infastructure that will be there when we need it, but not cost us anything until we do."

To address the issue of UI, the Gunner team focused on building simple campaign templates for new administrators to pick from.

Rather than wadding into unfamiliar waters and having to figure out how to build a survey campaign, the new admin could just choose and existing one.

"Too much right at signup can be intimidating," Gunner designer Cory Schneider said. "No one wants to spend time figuring out how to set things up. They want to create an account and get going."

Much the same for users.

"For users, we wanted them to download the app, sign in and be two steps away from sending a survey," Schneider said. "No extra fluff."

For the survey themselves, the UI is based on the familar "Pain Scale" and defaults to a five-point scale.

"Response rate is so big with this product," Swann said. "And we found the more options - 'Very, extremely, positively satisfied' - the less likely someone was to actually fill it out. But we still needed enough options for the data to be relevant."

Lastly, Gunner uses a trio of technologies to make managing the backend and two seperate frontends as quick and easy as possible.

"We have a pretty standard process for building platforms," Swann said. "We use the Serverless Framework, AWS Amplify and AWS AppSync."

Swann said the Serverless Framework makes building and managing multi-stage, backend environments with AWS CloudFormation a snap while AWS Amplify did the same for the frontend while AWS AppSync provided a way to manage a flexible GraphQL API.

"The common thread here is JavaScript," Swann said. "The whole stack - JavaScript AWS Lambda Functions for the backend - React and React Native for the frontend - it's all JavaScript. Working with a single core language makes everything quicker and easier."

Management

What was the project management approach to the project?

In this case, the team knew it had approximately two 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 two 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.

Architectural Description

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 both clients.

Lessons

What did you learn from working on this project?

More so than ever, this project enforced the notion that process and platform is of the utmost importance.

SimpliSurvey would normally have been an extensive project because of the upfront requirements around the infastructure and dual clients.

However, because the Gunner team has invested in tools provided by Amazon Web Services as well as Open Source technologies like Expo, React and React Native, the developers and start coding immediately as opposed to a month or more after the project starts.

This allows our developers to do more with less without sacrificing Velocity or quality.

Why Gunner?

Why was Gunner selected for this project?

AZ Tech is a long-standing Gunner Technology partner.

Together, the companies have built several platforms and apps in the medical and social space.

AZ Tech knows Gunner will build what they need they way they need it.

Proficiencies

What tools, techniques and methodologies were used on this project?

[object Object]

Amazon API Gateway

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.

[object Object]

Amazon CloudFront

Amazon CloudFront is a content delivery network offered by Amazon Web Services.

[object Object]

Amazon CloudWatch

Monitor AWS resources and custom metrics generated by your applications and services

[object Object]

Amazon Cognito

Simple and Secure User Sign-Up, Sign-In, and Access Control

[object Object]

Amazon DynamoDB

DynamoDB is a nonrelational database for applications that need performance at any scale

[object Object]

Amazon Route 53

Amazon Route 53 is a highly available and scalable Domain Name System (DNS) web service.

[object Object]

Amazon S3

Object storage built to store and retrieve any amount of data from anywhere

[object Object]

Amazon SES

Flexible, affordable, and highly-scalable email sending and receiving platform for businesses and developers

[object Object]

Amazon SNS

SNS is Pub/Sub messaging and mobile notifications for microservices, distributed systems, and serverless applications.

[object Object]

Apollo

Apollo binds data to your UI with the ultra-flexible, community-driven GraphQL client for React, JavaScript, and native platforms.

[object Object]

AWS Amplify

AWS Amplify is a toolchain which includes a robust feature set for simplifying mobile and web application development.

[object Object]

AWS CloudFormation

Model and provision all your cloud infrastructure resources

[object Object]

AWS Lambda

AWS Lambda lets you run code without provisioning or managing servers.

[object Object]

Babel

Babel is a compiler for writing next generation JavaScript

[object Object]

CSS3

CSS3 is the latest evolution of the Cascading Style Sheets language and aims at extending CSS2.1

[object Object]

ElastiCache

Managed, Redis or Memcached-compatible in-memory data store.

[object Object]

ES6

The next version of JavaScript

[object Object]

Expo

Expo is a free and open source toolchain built around React Native to help build native iOS and Android projects using JavaScript and React.

[object Object]

Git

Fast, scalable, distributed revision control system

[object Object]

GraphQL

GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data.

[object Object]

HTML5

HTML5 is the 5th major revision of the core language of the World Wide Web

[object Object]

JavaScript

JavaScript is the world's most widespread programming language, powering the Internet.

[object Object]

Material Design

Material Design is a visual language that synthesizes the classic principles of good design with the innovation of technology and science.

[object Object]

Material UI

Material UI is a CSS Framework and a Set of React Components that Implement Google's Material Design

[object Object]

Node.js

Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications

[object Object]

React

React is a JavaScript library for building user interfaces.

[object Object]

React Native

React Native is a framework for building native mobile apps with React

[object Object]

Serverless Framework

Build web, mobile and IoT applications with serverless architectures using AWS Lambda, Azure Functions, Google CloudFunctions & more

[object Object]

Webpack

Webpack is a module bundler

[object Object]

Yarn

Yarn is a package manager for JavaScript