Inspiration
Airport security is slow and annoying. We've all stood in that line while the belt stops because one bag needs a second look. Then we thought about the officer behind the screen, looking at X-rays for hours with a few seconds per bag. That's tiring, and tired people miss and slow things. So we built a tool that spots the risky bags for them, so the line moves faster and they can focus on the bags that matter.
What it does
- Upload X-ray scans, and two AI models check each one for knives, blades and scissors.
- Each scan becomes a bag on a 3D belt. Clear bags keep moving. Flagged bags get pushed aside: red for a likely threat, orange for "look closer."
- Click a held bag to see a 3D view of the scan and the owner's info.
- The officer makes the final call, and every decision is saved to History.
How we built it
- AI: We trained a YOLO26s model on Roboflow and paired it with an open-source YOLOv8s model. We merge their results so one catches what the other misses.
- In the browser: Both models run locally with onnxruntime-web, so scans never leave the computer.
- 3D: three.js for the belt and the scan view.
- App: React + TypeScript, with a small Node/Express backend for History.
Challenges we ran into
- Our dataset named five classes just "0" to "4," so we had to figure out what each one was.
- The model isn't perfect yet. Its precision is around 80–90%, and it still misses some prohibited items.
- We ran out of credits for training our models.
- At first, the 3D belt and the Console didn't agree on which bags were flagged. We rebuilt it so both use the same result.
- Our first UI was confusing, so we started over with a cleaner one.
Accomplishments that we're proud of
- As an all-freshman team, we built a working product, not a mockup.
- Trained two AI models running fully in the browser.
- A 3D lane that makes the AI's decisions easy to see at a glance.
- A good-looking and easy to understand UI/X
What we learned
- Data matters more than model choice. Labels, class names and preprocessing (stretch vs. letterbox resizing) changed our results more than switching architectures.
- How to export models to ONNX and run them in the browser with WebAssembly.
- 3D on the web with three.js, from a moving conveyor belt to a height map of a scan.
- Good UX for high-stakes work means being calm and clear, not flashy. Showing uncertainty honestly builds more trust than pretending to be sure.
What's next for GILGAMESH
- Train on larger, more varied X-ray datasets, and add more threat types (guns, batteries, liquids over the limit).
- Use dual-view X-rays (top and side), the way real airport scanners do, for better 3D reconstruction.
- Learn from officer feedback, so every Clear and Hold decision improves the model.
- Add a real database and officer accounts.
Built With
- claude
- css
- cursor
- html
- html5
- javascript
- node.js
- onnxruntime-web
- python
- pytorch
- roboflow
- three.js
- typescript
- ultralytics
- vite
- yolo
Log in or sign up for Devpost to join the conversation.