Check out architectural diagrams of this project
What was the problem to be solved?
Sexual Consent became a hot-button issue with high profile cases involving celebrities such as Harvey Weinstein and Kevin Spacey.
At the same time, some cases involving false accusations came to the fore.
At Gunner Technology, we have friends and relatives who have been victims of both.
And while a few of these cases involved bad actors, most of them arose from simple miscommunication and / or a misunderstanding.
In fact, more than half of all people report being uncomfortable talking about sex.
This lack of communication has helped create a major problem with over 50% of US states enacted affirmative consent laws or actively pursuing them.
What was the proposed solution?
Unfortunately, technology is not an absolute, and it's not going to deter bad actors from carrying out their misdeeds.
However, technology can help foster and promote communication with sexual intimacy.
With that in mind, we wanted to build an unobtrusive mobile application that partners could use to anonymously and securely clarify each party's understanding and capture consent so there can be no misunderstandings.
What challenges arose during the project?
The major challenge with uConsent was creating a way that would allow communication between different types of mobile devices (iOS and Android) without requiring the users to create accounts (so it would stay anonymous).
How could we ensure that the person granting consent was the owner of the device and how can we store that consent and tie it to a human should the need ever arise?
As this was an internal project, both budget and resources were tight.
This meant we couldn't commit a ton of cash for a standing infrastructure nor would we have a full team (designer, front-end developers for both iOS and Android, back-end engineer) dedicated to the app's development
What was the technical approach to the project?
To handle the budget and resource constraints, we used React Native for the front-end development, which allowed a single developer to create both the iOS and Android apps.
Without a designer, we relied on the Material UI design library to create a consistent UI/UX experience familiar to anyone who has used common mobile applications.
We built a Serverless architecture using AWS AppSync and MobileHub along with the Serverless framework to build an essentially free, infinitely scalable, performant and hardened infrastructure that would only escalate in cost with usage (when we would have budget).
In order to solve the functional issues - anonymity, Security and data transfer, we relied on the users' unique device id.
First, the app requires a user to open the app using their fingerprint for authentication.
After that, the device stores the id of both devices and connects them using QR scanning technology.
The location of each device at the time of consent and the location and captured, along with the exact thing that was consented to, and stored in an encrypted DynamoDB table.
This data cannot be retrieved by anyone other than Gunner Technology admins and even then, all they can see as an identifier is the id of the device which does not directly identify the user.
What was the project management approach to the project?
We started out with nothing (no mocks, no wireframes, etc), so we started with two Research Sprints.
This was followed by two design sprints in which we mocked out the UI.
However, instead of using design tools like Photoshop, we did it using React with mock data.
After we had a UI we began our usual pattern:
1) One week function sprint where we added new functionality
2) One week QA sprint
3) One week bug fix sprint
Repeat until finished.
This was absolutely necessary due to the shifting requirements and scope mentioned in the challenges section.
What platform was built for this project?
As this was a new product, we knew that initial usage would be very low and we were working with a near non-existent hosting budget, so a traditional, redundant, fault-tolerant architecture was unrealistic and wasteful.
However, using Serverless with AWS allowed for us to create a setup that will scale infinitely and immediately with no additional changes need from us. The cost will increase with usage, but at that point, the app will be generating revenue.
In the meantime, the setup runs itself for less than $15 a month.
We relied heavily on AWS AppSync to accomplish this.
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. AWS AppSync makes it easy to build collaborative mobile and web applications that deliver responsive, collaborative user experiences.
AppSync let us specify the data requirements of the application with simple code statements and iterate quickly during the prototyping and development process.
AppSync uses GraphQL, an open standard query language that makes it easy for applications to request data from the cloud.
AppSync automatically manages all the data operations for offline users. The service supports an offline programming model where application data is not only available for users who are offline, but users can also add and update app data locally as well. This makes it easy to build apps that cache important data locally for offline use, and then synchronize with the cloud when the device reconnects.
The service integrates with Amazon Cognito and AWS Identity and Access Management, allowing us to set fine-grained permissions on GraphQL operations that put strict controls on who can access the data.
AppSync makes it easy to combine data from different sources. With AppSync, we could access data in Amazon DynamoDB, trigger AWS Lambda functions, or run Amazon Elasticsearch queries and combine data from these services to provide the exact data we needed.
What did you learn from working on this project?
Most of the app was pretty standard, however, we did learn that non-over the wire communication between different types of devices is difficult.
Both Android and iOS support NFC, but not NFC that can communicate with each other.
How did this project benefit the client?
It's tough to say if uConsent has been beneficial yet.
It certainly garnered a lot of attention when it was picked up by the Wall Street Journal, which led to a media blitz that span the US and Europe.
We're hoping that uConsent will achieve enough acceptance and adoption to change the world for the better by enabling and fostering communication around sexual intimacy and behavior.
Why was Gunner selected for this project?
A Gunner Technology employee had the idea of uConsent as part of a Hackathon Competition that Gunner sponsors.
uConsent won the contest and was quickly swept up by the press.
Gunner Technology was in a unique position to create and execute this idea because we have experience creating high-performance products on shoe-string budgets and because the larger issue of sexual consent was personal to us.
Who worked on this project?