Inspiration
Law enforcement officers often need to quickly identify vehicles of interest in dynamic, high-pressure environments. Current systems usually rely on manual checks, which can slow down response times and limit situational awareness. We wanted to create a lightweight, wearable solution that integrates seamlessly into an officer’s natural field of vision so they can stay focused, informed, and safe in the field.
What it does
The system uses Snap Spectacles to continuously scan the user’s entire field of view for license plates. It then displays a 2D heads-up interface listing all scanned plates along with real-time data such as outstanding warrants, expired registrations, or stolen vehicle reports from central databases.
For more precision, users can use a crop feature to select a narrow slice of their field of view to focus on a single license plate, which is then anchored in 3D space. This allows the officer to track that specific vehicle as it moves, ensuring real-time updates and maintaining full situational awareness without losing focus on the environment.
How we built it
For our image processing pipeline, we build a custom api endpoint that received an image from the Spectacles, sent the image to ChatGPT which returned an array of detected license plate numbers. These numbers were run against a sample database we created to mimic government/dmv central databases about car and driver information. For the interactive component, we used Snap Lens Studio, a unity-like application creation suite. We took an existing template and rearchitected it to introduce the cropping FOV to information overlay feature, and then added an entirely new system to periodically save the entire field of view as a 64 bit string and sent it to a different endpoint to handle multiple license plates in one image.
Challenges we ran into
Learning Lens Studio from scratch was a very difficult task. Our initial idea involved more 3d visualization and tracking components, as well as an ML model for plate recognition. After a brutal first 10 hours with very little progress as we attempted to wrap our brains around Snap Lens Studio, we decided to pivot and offload the plate recognition to an endpoint hosted in Vercel. We also reengineered some of the features originally proposed to make them easier to implement within the timeframe without losing functionality.
Also, we are disappointed to report that it took us over an hour to clone the sample repo because we did not know what gitLFS was :(.
Accomplishments that we're proud of
First and foremost, we are proud of this idea. We believe this is a legitimate real work use case that a law enforcement officer could use. Many of our initial ideas in our brainstorming session felt gimmicky, and beyond the fact that it was cool because of AR, we couldn't envision a user repeatedly using our application after the novelty wore off. When we began ideating on EnforcAR, we felt that it could be used day after day to accomplish real world, necessary tasks in much more convenient ways than currently exist.
Secondly, we are proud of the fact that we were able to create something using a tech stack so unfamiliar to us. We had initially planned on doing a SvelteKit + LLM web app, but after seeing the Spectacle demo decided to completely pivot and took a massive leap out of our comfort zones. Though times in the night felt bleak, we rode the learning curve like gladiators until a working product materialized before us.
What we learned
In a technical sense, we learned about the world of AR and Snap Lens studio. We learned about its component system, rendering loops, scripting, and 3d tracking. From a managerial perspective, we learned about constantly being on our toes, pivoting when necessary, and persevering through with an idea.
What's next for EnforcAR
Some of the features we wanted to implement were a more 3d display rather than a 2d hud for the autoscanning feature. We also thought about adding live cloud backup video feed to act as a replacement/alternative for a bodycam.
Built With
- docker
- fastapi
- lens-studio
- python
- snapos
- typescript

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