The photos page, where we can send consent forms, see who is in what photo, and who interacted with the form
The users page, where we host the files we use to identify us in larger pictures
Contract template for photo subject
Dynamically generated contract document with tagged photos
Here you see how the envelopes change after Drew opens the contract that was emailed to him
Here, you see how the envelopes change to X's when Nick declines to sign the contract
Finally, you can see how the envelopes change to a check mark when Drew accepts the contract
Privacy is becoming a more important issue every day. All of us have had that experience where someone else posted an unflattering picture of us on Facebook for everyone to see. Now take that up a notch, who would want a casual photo from a walk in the park to end up in a tabloid? We all care about our privacy, and more importantly, we care about safety. Consentsus allows people to know and be in control of when their photos are released, and even allows parents to sign off for their children's photos as well. Through Consentsus, photographers can ethically manage photo release rights through a scalable platform.
What it does
Given a database of headshots/student ID's/etc for something like a large event e.g SDHacks or a school event, the photographers and organizers would upload all photos they have taken. Our app then uses AI and Computer Vision to tag an individual in multiple images, attach those images to a release form, where the user can choose to release their rights to certain photos if they desire to do so. The photographers and organizers can manage the status of every release form through a single web page.
How we built it
Our app relies heavily on the DocuSign API. They provide a platform for us to create and manage legally-binding contracts. We use this API several ways. We use their CompositeTemplate API in order to combine a server template and a locally generated document. DocuSign has some really cool features where one can anchor Tabs on words. To take advantage of this, we used white words on white background to function as anchors for our tabs. This made working with a locally generated PDF significantly easier. We also used their listStatusChanges API to provide our front-end with a live feed of document status per individual.
We are hosting our services on Amazon EC2 and hosting API's behind AWS Lambda. Our website is an Angular 2 SPA running a Node.js and Flask back-end. We started by planning our architecture and researching our ideas while developing them further. After the DocuSign workshop, we had a much better understanding of what we could build with their platform, then we got to work.
Challenges we ran into
Admittedly, the DocuSign API was a little challenging to learn at first, but once we got the hang of it we were making progress in strides. Also, we had spent a good 3-4 hours trying to figure out web hooks and DocuSign connect to absolutely no avail. Apparently, we needed an SSL certificate in order to use web hooks, we bought a domain and started the SSL verification process, but it is unfortunately still processing. We still wanted the functionality of web hooks, so we simulated a live event feed by creating a REST API behind an interface to the listStatusChanges resource in the Envelope API. As a result, we still got reliable data to our front-end to provide a good user experience.
Hosting everything and coordinating our services on AWS has been a challenge as well, but we managed to overcome it. Regardless of whether it was our front end refusing to compile or our envelope event data stream getting corrupted for no reason, we had a ton of fun and learned a lot throughout SDHacks.
Accomplishments that we're proud of
• Leveraging machine learning services in order to correctly identify an individual within a group photo in order to gain their consent for that photo's release.
• Successfully implemented a substitute for web hooks by building a REST API
• Compiling multiple Images into a PDF on the fly, then combining that document with an existing DocuSign template to create a fully customized contract.
• Being able to fully host our system in the cloud
• Doing all of this in a team of 2
What we learned
We learned how to work with commercial grade API's. We have never worked with something so robust before. We also learned how to integrate many services, languages, and platforms in a single app. Additionally, we learned a ton about facial recognition and optimization.
What's next for Consentsus
We would like to optimize the facial recognition and identification process. Currently this takes about 15 seconds to match one user against every single photo in data store. Additionally, we would like to improve our identification capabilities to be used with government ID's, it works, but is far from perfect. Also, we want to continue to improve the user experience for both the end users and photographers. Last but not least, we'd like to continue working with DocuSign! They were extremely helpful and friendly when we asked for help with an API or process.