AR capture on any iPhone
Corner tapping on ARKit world tracking, with a floor baseline and projection for walls taller than the camera can see. Results go into one room model shared by both capture paths (corner tapping and LiDAR).
iOS app · AR · on-device ML
Snug scans your room with any iPhone's camera, places real Amazon products in it at their true size, and tells you honestly whether each one fits, including when it's too close to call.
The demo runs in your browser with sample rooms. The iPhone app measures your real one.
Furniture returns are expensive and most come down to one question: will it fit, and will it look right? Snug answers it in three steps.
1
Tap the room's corners through the camera. ARKit turns them into walls, doors and windows. Pro iPhones can use LiDAR, but you don't need it.
2
Pick from real Amazon listings. Each one drops into a 3D model of your room at its listed size, in its true colors.
3
Every piece gets a fit verdict against your walls, doors and other furniture. Then buy the whole room in one list.
A phone scan isn't a laser. Snug knows its measurements can be off by a few centimeters, so it never shows a green check it can't back up. Every verdict accounts for a ±5 cm uncertainty band.
A native iOS app built end to end: capture, ML, geometry, rendering and the asset pipeline.
Corner tapping on ARKit world tracking, with a floor baseline and projection for walls taller than the camera can see. Results go into one room model shared by both capture paths (corner tapping and LiDAR).
A YOLO model fine-tuned on merged open datasets to detect 11 furniture classes at 0.74 mAP50. It runs on the phone with CoreML, so the furniture you already own shows up in your scan.
Separating-axis collision on rotated footprints, plus clearance to walls and doorways, classified against the uncertainty band. It's pure, deterministic and covered by Swift Testing.
A RealityKit diorama under neutral white light, so colors match what arrives. An offscreen renderer makes the room thumbnails and before/after share images.
Mesh simplification and compression cut the product models from 682 MB to 28 MB, small enough to download over cellular.
SwiftUI with MVVM, SwiftData with versioned schema migrations, no third-party dependencies in the app, zero compiler warnings, and CI on GitHub Actions.
The web demo runs the same fit check as the app. It's ported line for line to TypeScript, and the Swift test cases are ported with it. Drag real products around a sample room, or type in your own room's size.