👤

Language

How AI photo rating works: inside the 5-criterion rubric

Most tools in this category describe themselves as a "proprietary AI trained on millions of photos." Here is what BestPick actually does, in enough detail that you could argue with it.

By Saad Sellami · updated 2026-07-14 · figures from 2,451 scored analyses

The short version. Your photo goes to Google's Gemini — a general-purpose vision-language model — with a rubric we wrote: five criteria for your chosen goal, each scored 0–100 against published bands. Our server averages the five. Temperature is 0.2, the seed is fixed at 1337, and the response shape is enforced by the API. There is no training, no computer vision module, and no dataset of photos labelled with real-world outcomes. That last one matters more than it sounds — and we'll come back to it.

Illustrated pipeline showing a profile photo entering the AI system and being scored against 5 criteria

What happens when you press upload

1

The photo is stored. It goes to Cloudinary so we can display your result. It is not used to train anything, because there is nothing here to train.

2

One API call. The image and the rubric for your goal go to Gemini in a single request. Not seven modules, not a pipeline of detectors — one call.

3

The model reasons, then scores. The prompt requires its observations before its numbers. This ordering matters: a model that commits to a verdict first will reverse-engineer justifications for it, exactly like a person.

4

The response shape is enforced. We use the API's structured-output schema, so the model cannot return five criteria one time and four the next.

5

Our server does the arithmetic. The overall score is the mean of the five criteria, computed in Python. We do not ask a language model to average five numbers, because language models are unreliable at arithmetic and there is no reason to risk it.

Why a language model instead of a trained classifier

The honest answer is that the classifier everyone claims to have cannot exist outside of Tinder or Instagram themselves.

To train a model that predicts matches, you need photos labelled with how many matches they got. That data lives inside the dating apps. They do not sell it. So when a photo tool tells you it was "trained on millions of photos and their performance data", ask where the performance data came from. There are only three possibilities: they licensed it (nobody has), they scraped it (it isn't visible to scrape), or they are describing something they did not build.

What a vision-language model can do is answer a well-posed question about an image: is the face clearly lit? does the background compete for attention? does this expression read as warm or as posed? Those are judgements, not measurements — and a rubric with fixed scoring bands is the way to make judgements repeatable. That is the entire design.

The rubric

Five criteria per goal. They differ by goal, because what makes a photo work on LinkedIn is not what makes it work on Hinge. These are read live from our scoring data, so this table is always what the engine is actually applying:

Social / Instagram — 1,484 analyses

CriterionAverage Weakest in
Composition & Framing 56.7 28.7%
Vibe & Mood 57.5 18.3%
Visual Hook 59.5 28.0%
Aesthetic Appeal 64.2 5.7%
Authenticity 75.3 4.1%

Dating — 527 analyses

CriterionAverage Weakest in
Facial Expression & Warmth 52.3 24.8%
Background & Context 52.4 26.8%
Styling & Grooming 58.0 12.4%
Eye Contact & Confidence 58.2 8.1%
Lighting & Facial Clarity 61.6 10.7%

"Weakest in" = how often this criterion was the lowest-scoring of the five.

What a score actually means

The bands are written into the prompt and are identical for every photo:

This is why the averages look low. Across 1,484 social-goal photos the mean is 61.7 and 40.6% score below 60. A 61 is not a failing grade — it is the middle of the distribution, and the distribution is honest.

Face diagram showing the difference between Duchenne and non-Duchenne smile muscle engagement with labeled muscle groups BestPick full results panel showing all 7 scoring dimensions with bars, scores, and written explanations for each

Why the same photo scores the same twice

Language models are probabilistic: ask twice, get two answers. That is fatal for a scoring product, so four things are pinned down:

In comparisons there is one more guard: if the model names a winner that contradicts its own per-photo scores, our server overrides the name and trusts the scores.

It is still not a ruler. A different crop of the same photo can score meaningfully differently. We would rather tell you that here than have you find out and conclude we were bluffing.

What the data says

Social / Instagram — 1,484 photos, mean 61.7, 40.6% below 60. The most common weak point is Composition & Framing (28.7% of photos), and the most common strength is Authenticity (67.7%).

Dating — 527 photos, mean 54.5, 66.0% below 60. The most common weak point is Facial Expression & Warmth (24.8% of photos), and the most common strength is Lighting & Facial Clarity (34.0%).

The pattern that survives across goals: people are far better at being themselves in a photo than at framing one. Authenticity is the criterion most often scored highest; composition and background are the ones most often scored lowest. Both of those are fixable in an afternoon, which is the most useful thing this dataset has to say.

What this cannot do

Why publish any of this

Because the alternative is asking you to trust a black box on the strength of adjectives. Every number above is reproducible from our own database, every criterion is listed, every band is written down, and the limits are stated in the same voice as the capabilities.

If a competitor's page cannot survive the same treatment — name the model, publish the rubric, show the bands, admit the limits — that tells you what it is.

The full figures, the version history, and how the scoring changed between v1 and v2 are on the methodology page.

Common questions

How does AI rate a profile photo?

BestPick's AI evaluates photos against 5 criteria: expression authenticity (Duchenne smile detection), lighting quality and direction, eye contact direction, background contrast and complexity, composition and framing, technical quality (sharpness, exposure, noise), and platform-specific fit signals. Each dimension is scored and weighted to produce an overall recommendation.

Can AI accurately predict which profile photo will perform better?

The specific variables BestPick measures — expression authenticity, lighting quality, eye contact, background quality — are consistently identified in academic research on dating app engagement, recruiter behavior, and social media performance as the primary drivers of photo outcomes. BestPick's model scores these variables objectively, removing the self-perception bias that causes most people to choose the wrong photo for themselves.

What is Duchenne smile detection?

A Duchenne smile is a genuine smile that engages the orbicularis oculi muscles around the eyes, creating crow's feet wrinkles and a slight raising of the cheeks. A non-Duchenne smile engages only the zygomaticus major (mouth corners). BestPick's expression module detects which type of smile is present because research consistently shows genuine smiles are significantly more effective at triggering positive engagement responses than posed ones.

Is BestPick's AI the same as an AI headshot generator?

No. AI headshot generators create synthetic new photos of you. BestPick is an AI photo selector — it analyzes and scores your existing real photos to identify which one will perform best for a given platform. BestPick does not generate or modify photos; it evaluates and selects from the photos you already have.

Score a photo against the five criteria

You'll see each criterion, its score, and the reasoning behind it.

Try it free