Software Engineer
About the project:
A connected beauty technology company building a smart mirror (in-store, running proprietary software) and a mobile app on iOS and Android. Behind both sits the company’s intelligence layer, which includes an AI Skin Analyzer, a virtual makeup artist, and a routine builder. Skin analysis already runs on proprietary models — the next step is live, realistic rendering on a real face, on a phone and on a wall-mounted mirror.
The role:
This role has more ownership than most: there is no existing face-rendering team to join, and you’ll set its standards. It also has more physical hardware than most software roles — you’ll work with a real Smart Mirror and real devices, and some of the hardest problems (light, skin, cameras) only show up there.
We are hiring an engineer to own the real-time face rendering behind three products:
- Treatment Preview — previews cosmetic treatments on the user’s own face (wrinkle smoothing and brow lift for neurotoxin-style treatments, lip and cheek volume for dermal fillers);
- AR product try-on — letting a shopper see a specific lipstick, blush, or foundation shade from the catalog on their own face, live, with accurate color matching;
- Guided makeup looks — walking a user step by step through a complete makeup look rendered live on their own face, built on the same shared engine.
This is a hands-on senior IC role. You’ll be the person who knows how the face engine works, building it rather than integrating someone else’s. The Flutter app team builds the screens around your work, and ML engineers own the analysis models. You own everything between the camera frame and the pixels on screen.
What you’ll work on:
- Build a shared face-rendering engine for Android and iOS: camera frames in, face tracking, region masks and warps, GPU shading, and frames out to a Flutter texture;
- Build Treatment Preview: smoothing, warps, and volume effects rendered behind a Flutter texture, guided by a wrinkle mask that updates slower than the frame rate, keeping effects stable on a moving face;
- Build realistic makeup rendering: lips, cheeks, base, eyes, with finishes (matte, satin, gloss, shimmer) that respond to light and work across the full range of skin tones;
- Connect the product catalog to the face: a pipeline that turns a product’s shade and finish into rendering parameters, scalable to thousands of products;
- Build multi-step guided makeup looks on the new engine;
- Optimize for real hardware: modern iPhones, mid-range Android phones, and a Smart Mirror running a 4K USB camera all day in-store;
- Measure quality: stability, color accuracy against real product swatches, and failure rates by skin tone, lighting, and face angle.
Tech stack:
- Rendering: OpenGL ES 2.0/3.0 (GLSL) on Android, Metal on iOS;
- Face geometry: ML Kit face detection for capture; dense face landmarks and blendshapes for rendering;
- Image processing: C++ with OpenCV;
- Native: Kotlin and C++ on Android, Swift on iOS;
- App: Flutter (Dart) with Bloc — you’ll write the platform-channel and texture boundary, and the app team writes the UI;
- Test devices: iPhone, Galaxy-class Android, and the company’s Smart Mirror.
Requirements:
- 5+ years of professional software engineering, including substantial real-time graphics work — you have written and shipped GPU shaders (GLSL, Metal, HLSL, or similar) in a product that ran at frame rate on real devices. This is the single most important requirement;
- Hands-on work with face tracking or face geometry: landmarks, face meshes, UV mapping, region masks, warps, or morphs (AR filters, virtual try-on, avatars, and face retouching all count);
- Native mobile development on Android (Kotlin/Java, NDK/C++) or iOS (Swift/Objective-C), with willingness to work on both;
- Experience putting ML models in a real-time pipeline, designing rendering around the model being the slow part;
- Practical grasp of color and image processing: color spaces and gamma, blending, frequency separation, filtering;
- An eye for realism and the discipline to measure it;
- Comfort working in an existing codebase;
- Clear English, spoken and written, with a working style that holds up across time zones.
Will be a plus:
- Shipped a virtual makeup try-on, beauty filter, or face-retouching product;
- Flutter external textures or platform views, or embedding native rendering in any cross-platform UI framework;
- Training or fine-tuning segmentation models (face parsing, lips, skin) and building the datasets behind them;
- Physically based shading, or measuring color from real product swatches;
- Experience with inclusive evaluation across Fitzpatrick skin types, lighting conditions, and ages;
- Low-level Android camera work (Camera2, UVC/external cameras) or embedded devices;
- Knowledge of aesthetic medicine, or experience building consumer features near medical claims.
Working hours:
Our engineering team works in Central European time, and our leadership team is on the US East Coast. Your working day ends at 20:00 CET, and dependable availability through the afternoon until then is a firm requirement of this role. That’s the window where your day overlaps with the US morning, when decisions get made, priorities get set, and cross-team questions get answered.
Not required — please apply anyway if you don’t have these:
- Beauty or cosmetics domain knowledge;
- Flutter or Dart experience;
- A computer science or graphics degree.
We offer:
- Remote work;
- Legal support;
- Paid sick leaves and vacations;
- Medical insurance;
- Free English classes.