I Built an AI Face-Analysis Suite From Scratch — Here's What I Learned A developer built StarDoppel, an AI-powered face-analysis suite with a matching engine written in-house in Python. The tool uses facial landmark detection to measure bone and cartilage structure for celebrity look-alike matching, with no account requirement and immediate photo deletion after processing. If you've ever searched for a celebrity look-alike tool, you've probably noticed most of them fall into one of two camps: quiz-style pages that ask you five vague questions about your own face "is your jaw pointed or round?" , or apps that quietly outsource the heavy lifting to a third-party face recognition API and slap a UI on top. Neither approach sat right with me. Self-assessment is unreliable — people are bad at judging their own proportions, especially in a mirror where everything is flipped and inconsistently lit. And outsourcing the model means you're limited by whatever a generic library was trained to do. So I built StarDoppel , a suite of AI-powered face-analysis tools, with the matching engine written entirely in-house in Python rather than wrapped around an off-the-shelf face recognition library. The idea is simple in concept, harder in execution: read a photo, extract measurable structure, and turn that structure into a comparable score. Once the landmark-detection pipeline existed, extending it to other structural questions was a natural next step. StarDoppel now includes: A few choices that came up repeatedly during development: No account requirement. Every tool works with zero signup. This meant designing the backend to be fully stateless per-request — no user session tied to a stored photo, no persistence layer for images at all. Photos are deleted immediately after processing. Each image exists on the server only long enough to generate a result. This shaped a lot of the architecture: no caching of uploaded images, no logging of raw photo data, and processing pipelines that explicitly discard the file reference once a result object is returned. Handling ambiguous input gracefully. If more than one face is detected in a frame, the system doesn't try to guess which one the user meant — it returns an error and asks for a new photo. Same behavior when no face is detected at all blur, extreme angle, poor lighting . Silent wrong guesses are worse than an explicit "please try again." What doesn't break the model. Interestingly, makeup and facial hair don't meaningfully affect results, since the underlying bone/cartilage structure is what's being measured rather than surface texture. Masks are a different story — they remove too many reference points for a reliable read. The celebrity database currently reflects the actor set it was built with, sourced from IMDb — expanding and refreshing that dataset is an ongoing task, along with extending coverage beyond actors. If you're interested in the technical side of facial landmark detection, distance-based similarity scoring, or just want to see the tools in action, you can try them at stardoppel.com https://stardoppel.com . Happy to answer questions about the implementation in the comments.