Overview
When our team joined the Brow Magic project, the handheld eyebrow printer still struggled with reliability. Long scan times, inconsistent brow measurements, and frequent SDK crashes stood between L’Oréal and a public demo. The goal was clear: make the technology dependable in weekly sprints, without rebuilding the entire app.
The challenge: three main blockers
- Unstable brow length: Earlier builds took brow points from ARKit’s default mesh, leading to uneven results.
- Slow scans: Processing full‑frame depth data for every capture took up to 40 seconds, far too long for a consumer product.
- Virtual try‑on lag: The Modiface overlay stuttered when users adjusted control points, reducing the sense of quality.
Edge cases, like glasses, dim lighting, and sudden SDK crashes, needed solutions as well.
Project tech stack we chose
insert-tech
Key decisions
1. Replace mesh sampling with custom math We converted 2D brow landmarks from Modiface into precise 3D points using camera intrinsics and depth data. This removed guesswork and smoothed measurements.
2. Switch to side‑face captures 7 photos from each side locked the outer brow tip in place, improving accuracy even though the total photo count remained similar.
3. Process only essential pixels Rather than rebuilding the full depth map, we handled only the eight brow points per frame. Scan time dropped from around 40 seconds to roughly 3-4 seconds.
4. Trim the Bluetooth payload The printer needs only a vector outline, not the selfie. Sending this lightweight file through Prinker’s SDK reduced latency and protected privacy.
5. Stabilize the Modiface pipeline We cached static layers and requested only delta updates, eliminating most of the drag‑and‑drop lag.
6. Maintain a weekly proof cycle Every sprint ended with one approved build and a plain‑text changelog, keeping design and engineering in sync and avoiding unnecessary churn.
Impact at a glance
insert-stats
Takeaway
By focusing on targeted fixes, owning the critical math, trimming data processing, and simplifying communication with hardware we turned an almost‑ready prototype into a demo‑ready product. The foundation is now solid for future feature work.



