When we started building Facebloom, the model was never the hard part. Face detection and landmark measurement are well-trodden ground in computer vision, and there are solid open-source foundations to build on. The hard part was everything around the model: making a facial analysis app feel encouraging rather than clinical, keeping inference fast enough on a mid-range phone, and being honest with users about what the numbers do and don't mean.

Start with the measurement, not the model

Before writing a line of inference code, we mapped out exactly which facial measurements the ratings would be based on, symmetry, proportion, and a set of established aesthetic ratios, and validated that logic against real reference data. Only once that scoring framework was solid did we wire up OpenCV for face detection and landmark extraction. Teams that jump straight to "let's fine-tune a model" often end up with a system that's technically impressive and practically inconsistent.

On-device inference changes your architecture

Facebloom needed to feel instant, nobody wants to upload a photo and wait. That pushed us toward on-device inference using a lightweight, quantised model rather than a server round-trip. It's a harder engineering problem: you're now shipping model weights inside the app bundle, managing memory more carefully on lower-end Android devices, and testing across a much wider hardware spread than a typical backend API would need. It paid off in the reviews, users specifically called out how fast the analysis felt.

Framing matters as much as accuracy

A facial rating feature can very easily feel harsh or reductive if it's presented as a bare number. We spent real design time on how results are framed: pairing every rating with specific, constructive improvement insights rather than just a score, and being careful with copy throughout. This wasn't a cosmetic decision, it directly affected retention, because users who felt criticised uninstalled, and users who felt informed came back.

What we'd tell any team building AI features today

  • Nail the underlying logic and validation before you touch a model, the model amplifies whatever framework you give it.
  • Decide on-device vs. server inference early, it's an architectural decision, not a deployment detail.
  • Budget real design time for how AI output is communicated to users, not just how accurate it is.
  • Test on the cheapest device in your target market, not just your own phone.

The result

Facebloom shipped on iOS with a 4.5★ App Store rating, built end to end on Python, OpenCV and Flutter. If you're weighing up whether an AI feature belongs in your product, or you've got one that isn't landing with users the way you hoped, this is exactly the kind of problem our AI Agents & Automation team works on.