Inspiration
Opening up Blade to get our QR code for KnightHacks and Kickstart events is very frustrating. We always forget to pull it up beforehand and then we have to sign in with Discord and it is a whole thing. We had the idea to integrate a facial recognition scan in system into Blade to eliminate this annoyance in our life. It's not the flashiest project, but it genuinely solves a problem that we face, even if it is minor.
What it does
Bladeless is an opt-in face check-in system designed as an extension of Blade. A member agrees to a clear consent screen once and enrolls a few photos of their face through their webcam. After that, a camera at the door recognizes them and greets them by name on a "Hello, Name!" screen. Anyone it doesn't recognize sees a red "Not Authorized" screen. QR and manual check-in stays available as a backup, so nobody is ever stuck or forced to give up their face.
An admin will host the scanner off of either their laptop or iPhone, their choice, with the laptop version containing a little admin dashboard to manage and enroll new members. Member ID and whether or not dues are paid are also stored but we did not take those two features very far. Past attendance is available and can easily be tracked.
Privacy is built in:
- Enrollment is strictly opt-in.
- We store number embeddings that describe a face, not photos.
- Members can delete their face data at any time.
- Dues status is shown only to officers, never on the public screen.
How we built it
We used DeepFace, an open-source face recognition library, with the Facenet512 model. It turns each face into a 512-number "embedding." To decide whether two faces match, we compare embeddings with cosine distance:
$$d(a,b) = 1 - \frac{a \cdot b}{\lVert a \rVert \, \lVert b \rVert}$$
If the closest enrolled member has a distance \( d \) below a threshold, we then assume that person is that enrolled member. Otherwise the person is unknown.
Our database is Neon (serverless Postgres), which stores member data and face embeddings. Dylan said it was cool to copy the public KnightHacks Forge GitHub repository as long as we were very clear what we added. We forked the repo and took out almost everything in Blade to ensure there was no interference and we could plop our code in. We ONLY created the facial recognition check in feature, nothing else. We did our best to match Blade's dark purple look so it feels like part of the platform instead of a separate tool. We used AI tools throughout to help fill in the other pieces we needed, like the web code, wiring, and debugging. We hosted on Vercel for now but would that would obviously change if we ever actually implemented this feature for the club.
Challenges we ran into
After we imported our first ML model Deepface, we were unhappy with the performance of the camera. It was very picky about the face looking dead center into the webcam. So, we then imported a heavier ML model 'RetinaFace.' Arron spent a few grueling hours trying to integrate it and once it finally worked the camera was super laggy. The big thing here was weighing the pros and cons of a heavier model. We ended up going back to Deepface and just accepted the lost man hours as a silly first time hackathon mistake.
- A leaked database key. We accidentally pushed our database key to GitHub. It was a stressful lesson. We replaced the key and learned to keep secrets out of the code from the start.
- Working as a team for the first time. This was the first real project any of us had built together. Splitting frontend and backend, keeping everyone's work in sync, and communicating clearly took more effort than we expected.
Accomplishments that we're proud of
Getting the first face recognized was our favorite moment. The system saw one of us, matched us correctly, and said hello. None of us had ever done a hackathon project before, and seeing it work felt amazing. We're proud of how every person pushed through confusing errors and kept going, and proud that we built something that solves a problem we all noticed.
What we learned
- Understand the problem before building. We got better at prompting AI by first working out what the problem actually was and building our own understanding. Once we knew what we were asking, the answers got much more useful.
- UI and UX are never finished. Updating the interface as we went kept the project moving forward and helped us see the product the way a real user would.
- A hackathon is a marathon, not a sprint. Pacing ourselves, sleeping, and not burning out on the first night mattered.
- How to work as a team. We learned to communicate more clearly and divide the work so each person could make progress.
What's next for Bladeless
We'd love to talk to someone at Knight Hacks about whether Bladeless could be used at future club meetings and events. Before that, we want to do it responsibly: have the club's leadership review the privacy approach, add automatic deletion of face data after each event, and strengthen the check for spoofing, like someone holding up a photo. If it's useful, we'd like to make it a real extension of Blade so the next long line is a short one.
FOR "TRY IT OUT" LINK: WE WILL SEND OUR JUDGE THE ADMIN AND PHONE KEY NEEDED FOR ACCESS TO OUR URL PHONE KEY: search up our url on iPhone browser and paste phone key ADMIN KEY: search up our url on laptop browser and paste admin key thank you!!
Built With
- amazon-web-services
- cloudflare
- css
- deepface
- facenet
- html
- javascript
- neon
- opencv
- pgvector
- postgresql
- psycopg
- python
- python-dotenv


Log in or sign up for Devpost to join the conversation.