🛠 IN-FLIGHT
20260530-identity-body-multiface-v1
No SUMMARY.md in this run dir. An operator landing here can't tell what the run was about without digging through the files below. To fix, drop a
SUMMARY.md following the template.
Images (56)
Data (1)
manifest.json
{
"sweep": "identity-body-multiface-v1",
"date": "2026-05-30T01:07:30.640394",
"goal": "Multi-face validation of identity-preserving full-body vendors. Vendor PROCEEDS at >= 14/18 cells PASS (4-axis judge).",
"faces": [
{
"id": "FA",
"desc": "blonde woman, mid-20s, light eyes, white tank, neutral studio bg",
"path": "/Users/claude/Projects/ikatomi-workspace/ikatomi-labs/runs/20260530-identity-body-multiface-v1/face_source_a.jpeg"
},
{
"id": "FB",
"desc": "brown-haired man, mid-30s, fair skin, grey tee, neutral grey bg (cropped from production marketing fixture preview-pants.jpg)",
"path": "/Users/claude/Projects/ikatomi-workspace/ikatomi-labs/runs/20260530-identity-body-multiface-v1/face_source_b.jpeg"
}
],
"prompts": [
{
"id": "P0-front-full",
"prompt": "Full-body professional model standing in a neutral pose, front view, clean light grey studio background, photorealistic, sharp focus, soft studio lighting, wearing a plain white tank top and grey shorts."
},
{
"id": "P1-back-full",
"prompt": "Full-body professional model standing in a neutral pose, back view turned away from camera, clean light grey studio background, photorealistic."
},
{
"id": "P2-upper-front",
"prompt": "Upper body portrait of a professional model, head and shoulders framing, front view, clean light grey studio background, photorealistic, soft studio lighting, wearing a plain white tank top."
}
],
"seeds": [
42,
7301,
19023
],
"vendors": [
{
"name": "FLUXPLD",
"endpoint": "fal-ai/flux-pulid",
"usd_per_call": 0.1,
"notes": "PuLID over FLUX backbone. Best identity preservation among fal.ai face-conditioning candidates tested for headshots in v1 sweep (5/6 = 83%). Multi-face test: does it generalise."
},
{
"name": "PULID",
"endpoint": "fal-ai/pulid",
"usd_per_call": 0.05,
"notes": "SDXL-backbone PuLID. 50% on prior single-face headshot probe; retest with body framing and multi-face."
},
{
"name": "IPAFID",
"endpoint": "fal-ai/ip-adapter-face-id",
"usd_per_call": 0.05,
"notes": "IP-Adapter Face ID on SDXL-v2-plus. 67% on prior single-face probe. Cheap; tested for completeness."
}
],
"judge_model": "claude-sonnet-4-6",
"judge_axes": [
"face_is_source_identity",
"body_framing_matches_prompt",
"clean_studio_bg",
"looks_photographic"
],
"pass_bars": {
"per_cell": "all 4 axes = Y",
"per_vendor": ">= 75% pass rate"
},
"outcomes": [
{
"vendor": "FLUXPLD",
"endpoint": "fal-ai/flux-pulid",
"pass_count": 5,
"total_cells": 18,
"pass_rate": 0.2777777777777778,
"proceeds": false,
"fal_cost": 1.8000000000000005,
"judge_in_tokens": 29517,
"judge_out_tokens": 1381,
"judge_usd": 0.109266,
"judges": [
{
"label": "FLUXPLD-FA-P0-front-full-S42",
"face_id": "FA",
"prompt_id": "P0-front-full",
"seed": 42,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 4,
"verdict": "pass",
"ok": true,
"observation": "The render shows a full-body front view of a woman who closely matches the reference's facial structure, jawline, and blonde wavy hair, against a clean light studio background with photographic quality.",
"image_path": "FLUXPLD-FA-P0-front-full-S42.png"
},
{
"label": "FLUXPLD-FA-P0-front-full-S7301",
"face_id": "FA",
"prompt_id": "P0-front-full",
"seed": 7301,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 4,
"verdict": "pass",
"ok": true,
"observation": "The render shows a full-body front view of a blonde woman with similar facial structure, jawline, and features to the reference, against a clean light studio background with photographic quality.",
"image_path": "FLUXPLD-FA-P0-front-full-S7301.png"
},
{
"label": "FLUXPLD-FA-P0-front-full-S19023",
"face_id": "FA",
"prompt_id": "P0-front-full",
"seed": 19023,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 4,
"verdict": "pass",
"ok": true,
"observation": "The render shows a full-body front view of a blonde woman with matching facial structure, jawline, and features to the reference, against a clean light studio backdrop with photographic realism.",
"image_path": "FLUXPLD-FA-P0-front-full-S19023.png"
},
{
"label": "FLUXPLD-FA-P1-back-full-S42",
"face_id": "FA",
"prompt_id": "P1-back-full",
"seed": 42,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q1, Q4",
"ok": false,
"observation": "The render shows a featureless white mannequin with no facial identity preserved and an obviously artificial/plastic appearance rather than a photographic human likeness.",
"image_path": "FLUXPLD-FA-P1-back-full-S42.png"
},
{
"label": "FLUXPLD-FA-P1-back-full-S7301",
"face_id": "FA",
"prompt_id": "P1-back-full",
"seed": 7301,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q1, Q4",
"ok": false,
"observation": "The render is a featureless white mannequin/3D sculpture with no face, hair, or any photographic qualities, bearing no resemblance to the reference person.",
"image_path": "FLUXPLD-FA-P1-back-full-S7301.png"
},
{
"label": "FLUXPLD-FA-P1-back-full-S19023",
"face_id": "FA",
"prompt_id": "P1-back-full",
"seed": 19023,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q1, Q4",
"ok": false,
"observation": "The render shows a featureless mannequin/3D sculpture with no hair, skin texture, or recognizable facial features, bearing no resemblance to the reference person.",
"image_path": "FLUXPLD-FA-P1-back-full-S19023.png"
},
{
"label": "FLUXPLD-FA-P2-upper-front-S42",
"face_id": "FA",
"prompt_id": "P2-upper-front",
"seed": 42,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The render is noticeably blurry/soft-focus with plasticky, over-smoothed skin that lacks the photographic sharpness and natural texture of a real photograph.",
"image_path": "FLUXPLD-FA-P2-upper-front-S42.png"
},
{
"label": "FLUXPLD-FA-P2-upper-front-S7301",
"face_id": "FA",
"prompt_id": "P2-upper-front",
"seed": 7301,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q1, Q4",
"ok": false,
"observation": "The rendered face has a different bone structure (narrower, more angular jaw, different nose, heavier brows) than the reference, and the image is noticeably blurry/soft with plasticky skin typical of a failed AI render.",
"image_path": "FLUXPLD-FA-P2-upper-front-S7301.png"
},
{
"label": "FLUXPLD-FA-P2-upper-front-S19023",
"face_id": "FA",
"prompt_id": "P2-upper-front",
"seed": 19023,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q1, Q4",
"ok": false,
"observation": "The render shows a different person with a narrower face, more prominent cheekbones, and shorter hair, and the image is heavily blurred/soft-focus giving it an unnatural non-photographic appearance.",
"image_path": "FLUXPLD-FA-P2-upper-front-S19023.png"
},
{
"label": "FLUXPLD-FB-P0-front-full-S42",
"face_id": "FB",
"prompt_id": "P0-front-full",
"seed": 42,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 4,
"verdict": "pass",
"ok": true,
"observation": "The render shows the same dark-haired man with matching facial structure, jawline, and features in a clean full-body front-view studio shot that looks photographic.",
"image_path": "FLUXPLD-FB-P0-front-full-S42.png"
},
{
"label": "FLUXPLD-FB-P0-front-full-S7301",
"face_id": "FB",
"prompt_id": "P0-front-full",
"seed": 7301,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The render is noticeably blurred/soft-focus throughout, giving it an artificial, non-photographic quality rather than the crispness of a real photograph.",
"image_path": "FLUXPLD-FB-P0-front-full-S7301.png"
},
{
"label": "FLUXPLD-FB-P0-front-full-S19023",
"face_id": "FB",
"prompt_id": "P0-front-full",
"seed": 19023,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 4,
"verdict": "pass",
"ok": true,
"observation": "The render shows the same dark-haired man with matching facial structure, jawline and nose in a clean full-body front-view pose against a neutral studio backdrop that looks photographic.",
"image_path": "FLUXPLD-FB-P0-front-full-S19023.png"
},
{
"label": "FLUXPLD-FB-P1-back-full-S42",
"face_id": "FB",
"prompt_id": "P1-back-full",
"seed": 42,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q1, Q4",
"ok": false,
"observation": "The render shows a featureless white mannequin/sculpture with no discernible face or identity, bearing no resemblance to the reference person and looking entirely non-photographic.",
"image_path": "FLUXPLD-FB-P1-back-full-S42.png"
},
{
"label": "FLUXPLD-FB-P1-back-full-S7301",
"face_id": "FB",
"prompt_id": "P1-back-full",
"seed": 7301,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q1, Q4",
"ok": false,
"observation": "The render is a featureless white mannequin/statue with no discernible facial features or skin texture, making identity verification impossible and the image clearly non-photographic.",
"image_path": "FLUXPLD-FB-P1-back-full-S7301.png"
},
{
"label": "FLUXPLD-FB-P1-back-full-S19023",
"face_id": "FB",
"prompt_id": "P1-back-full",
"seed": 19023,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q1, Q4",
"ok": false,
"observation": "The render shows a full-body back view on a clean studio background, but the figure appears as a plasticky, mannequin-like model with unrealistically smooth skin rather than a photographic human, and the slim build and body proportions do not match the more athletic reference subject.",
"image_path": "FLUXPLD-FB-P1-back-full-S19023.png"
},
{
"label": "FLUXPLD-FB-P2-upper-front-S42",
"face_id": "FB",
"prompt_id": "P2-upper-front",
"seed": 42,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The render has plasticky, overly smooth skin with a slightly artificial sheen that makes it look like a stylised AI-generated image rather than a real photograph.",
"image_path": "FLUXPLD-FB-P2-upper-front-S42.png"
},
{
"label": "FLUXPLD-FB-P2-upper-front-S7301",
"face_id": "FB",
"prompt_id": "P2-upper-front",
"seed": 7301,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The render has plasticky, over-smoothed skin with an artificial sheen and overly symmetric lighting typical of AI stylisation rather than a real photograph.",
"image_path": "FLUXPLD-FB-P2-upper-front-S7301.png"
},
{
"label": "FLUXPLD-FB-P2-upper-front-S19023",
"face_id": "FB",
"prompt_id": "P2-upper-front",
"seed": 19023,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The render has noticeably plasticky, over-smoothed skin with a slightly artificial sheen that makes it look like a stylised AI render rather than a genuine photograph.",
"image_path": "FLUXPLD-FB-P2-upper-front-S19023.png"
}
],
"render_errors": []
},
{
"vendor": "PULID",
"endpoint": "fal-ai/pulid",
"pass_count": 5,
"total_cells": 18,
"pass_rate": 0.2777777777777778,
"proceeds": false,
"fal_cost": 0.9000000000000002,
"judge_in_tokens": 29517,
"judge_out_tokens": 1438,
"judge_usd": 0.110121,
"judges": [
{
"label": "PULID-FA-P0-front-full-S42",
"face_id": "FA",
"prompt_id": "P0-front-full",
"seed": 42,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 4,
"verdict": "pass",
"ok": true,
"observation": "The render shows a full-body front view of a blonde woman whose facial structure, jawline, and overall features closely match the reference, against a clean grey studio backdrop with photographic realism.",
"image_path": "PULID-FA-P0-front-full-S42.png"
},
{
"label": "PULID-FA-P0-front-full-S7301",
"face_id": "FA",
"prompt_id": "P0-front-full",
"seed": 7301,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 3,
"verdict": "fail: Q1",
"ok": false,
"observation": "The rendered face shows a different woman with shorter blonde hair, a narrower facial structure, and distinct features that don't match the reference's broader jaw, fuller lips, and specific nose shape.",
"image_path": "PULID-FA-P0-front-full-S7301.png"
},
{
"label": "PULID-FA-P0-front-full-S19023",
"face_id": "FA",
"prompt_id": "P0-front-full",
"seed": 19023,
"face_is_source_identity": false,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 2,
"verdict": "fail: Q1, Q2",
"ok": false,
"observation": "The render shows a short-bobbed blonde with noticeably different facial structure (wider jaw, different nose, blue eyes vs. the reference's longer face and softer features), and the body is cropped at mid-thigh with feet not visible.",
"image_path": "PULID-FA-P0-front-full-S19023.png"
},
{
"label": "PULID-FA-P1-back-full-S42",
"face_id": "FA",
"prompt_id": "P1-back-full",
"seed": 42,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 4,
"verdict": "pass",
"ok": true,
"observation": "The render shows a plausible identity match with similar facial structure, blonde wavy hair, and comparable features; the body is full-length with a back-turned pose, feet visible, against a clean grey studio backdrop, with a photographic appearance throughout.",
"image_path": "PULID-FA-P1-back-full-S42.png"
},
{
"label": "PULID-FA-P1-back-full-S7301",
"face_id": "FA",
"prompt_id": "P1-back-full",
"seed": 7301,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 3,
"verdict": "fail: Q1",
"ok": false,
"observation": "The rendered figure has shorter bob-style hair, a narrower face, and different facial structure compared to the reference's long wavy blonde hair and distinctive jawline/features.",
"image_path": "PULID-FA-P1-back-full-S7301.png"
},
{
"label": "PULID-FA-P1-back-full-S19023",
"face_id": "FA",
"prompt_id": "P1-back-full",
"seed": 19023,
"face_is_source_identity": true,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 3,
"verdict": "fail: body_framing_matches_prompt",
"ok": false,
"observation": "The render shows a full-body side/three-quarter view with the face visible toward camera, not a back view with the subject turned away as prompted.",
"image_path": "PULID-FA-P1-back-full-S19023.png"
},
{
"label": "PULID-FA-P2-upper-front-S42",
"face_id": "FA",
"prompt_id": "P2-upper-front",
"seed": 42,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 3,
"verdict": "fail: Q1",
"ok": false,
"observation": "The render shows a different person \u2014 shorter bob haircut, more angular jaw, deeper tan, and distinctly different eye color compared to the reference's long wavy hair, softer features, and lighter complexion.",
"image_path": "PULID-FA-P2-upper-front-S42.png"
},
{
"label": "PULID-FA-P2-upper-front-S7301",
"face_id": "FA",
"prompt_id": "P2-upper-front",
"seed": 7301,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q1, Q4",
"ok": false,
"observation": "The render shows a different person with distinctly blue eyes, a more angular jawline, shorter hair, and overly smoothed plasticky skin compared to the softer-featured, hazel-eyed reference.",
"image_path": "PULID-FA-P2-upper-front-S7301.png"
},
{
"label": "PULID-FA-P2-upper-front-S19023",
"face_id": "FA",
"prompt_id": "P2-upper-front",
"seed": 19023,
"face_is_source_identity": false,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 2,
"verdict": "fail: Q1, Q2",
"ok": false,
"observation": "The rendered face is a visibly different person (stronger jaw, blue eyes, shorter hair, more angular features) and the body is posed at a 3/4 angle rather than a front-facing view.",
"image_path": "PULID-FA-P2-upper-front-S19023.png"
},
{
"label": "PULID-FB-P0-front-full-S42",
"face_id": "FB",
"prompt_id": "P0-front-full",
"seed": 42,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 4,
"verdict": "pass",
"ok": true,
"observation": "The render preserves the source's facial structure, jawline, and dark hair convincingly, shows a full head-to-feet front view against a clean grey studio backdrop, and reads as photographic in quality.",
"image_path": "PULID-FB-P0-front-full-S42.png"
},
{
"label": "PULID-FB-P0-front-full-S7301",
"face_id": "FB",
"prompt_id": "P0-front-full",
"seed": 7301,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 4,
"verdict": "pass",
"ok": true,
"observation": "The render preserves the source's facial structure, jawline, and dark hair convincingly, shows a full head-to-feet front view against a clean grey studio backdrop, and looks photographic in quality.",
"image_path": "PULID-FB-P0-front-full-S7301.png"
},
{
"label": "PULID-FB-P0-front-full-S19023",
"face_id": "FB",
"prompt_id": "P0-front-full",
"seed": 19023,
"face_is_source_identity": true,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 3,
"verdict": "fail: Q2",
"ok": false,
"observation": "The face identity is well preserved and the image looks photographic on a clean studio background, but the render is cropped at mid-shin and the feet are not visible, failing the head-to-feet full-body framing requirement.",
"image_path": "PULID-FB-P0-front-full-S19023.png"
},
{
"label": "PULID-FB-P1-back-full-S42",
"face_id": "FB",
"prompt_id": "P1-back-full",
"seed": 42,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The render has a plasticky, over-smoothed quality with unnaturally glossy fabric shading and slightly artificial skin on the partially visible face, betraying its AI-generated origin rather than looking like a real photograph.",
"image_path": "PULID-FB-P1-back-full-S42.png"
},
{
"label": "PULID-FB-P1-back-full-S7301",
"face_id": "FB",
"prompt_id": "P1-back-full",
"seed": 7301,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 4,
"verdict": "pass",
"ok": true,
"observation": "The render shows a full-body back view of a man whose dark hair, facial profile, jawline, and overall build are consistent with the reference, set against a clean grey studio backdrop with photographic realism.",
"image_path": "PULID-FB-P1-back-full-S7301.png"
},
{
"label": "PULID-FB-P1-back-full-S19023",
"face_id": "FB",
"prompt_id": "P1-back-full",
"seed": 19023,
"face_is_source_identity": true,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q2, Q4",
"ok": false,
"observation": "The render shows a side/three-quarter view with the face turned toward camera rather than a true back view turned away, and the image has a plasticky, over-smooth AI render quality inconsistent with real photography.",
"image_path": "PULID-FB-P1-back-full-S19023.png"
},
{
"label": "PULID-FB-P2-upper-front-S42",
"face_id": "FB",
"prompt_id": "P2-upper-front",
"seed": 42,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The skin has an over-smoothed, plasticky sheen and the muscle definition appears artificially enhanced, giving the render a stylised AI look rather than a natural photograph.",
"image_path": "PULID-FB-P2-upper-front-S42.png"
},
{
"label": "PULID-FB-P2-upper-front-S7301",
"face_id": "FB",
"prompt_id": "P2-upper-front",
"seed": 7301,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The render has plasticky, over-smoothed skin with an artificial sheen and hyper-stylised hair highlights that make it look like a CGI illustration rather than a real photograph.",
"image_path": "PULID-FB-P2-upper-front-S7301.png"
},
{
"label": "PULID-FB-P2-upper-front-S19023",
"face_id": "FB",
"prompt_id": "P2-upper-front",
"seed": 19023,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The skin has a plasticky, overly smoothed appearance with artificial catchlights and hyper-defined muscle rendering that looks like a stylised AI render rather than a real photograph.",
"image_path": "PULID-FB-P2-upper-front-S19023.png"
}
],
"render_errors": []
},
{
"vendor": "IPAFID",
"endpoint": "fal-ai/ip-adapter-face-id",
"pass_count": 0,
"total_cells": 18,
"pass_rate": 0.0,
"proceeds": false,
"fal_cost": 0.9000000000000002,
"judge_in_tokens": 29517,
"judge_out_tokens": 1439,
"judge_usd": 0.11013600000000001,
"judges": [
{
"label": "IPAFID-FA-P0-front-full-S42",
"face_id": "FA",
"prompt_id": "P0-front-full",
"seed": 42,
"face_is_source_identity": false,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 2,
"verdict": "fail: Q1, Q2",
"ok": false,
"observation": "The render shows a different person (heavier brow, different nose/jawline) cropped at the torso rather than showing the required head-to-feet full body view.",
"image_path": "IPAFID-FA-P0-front-full-S42.png"
},
{
"label": "IPAFID-FA-P0-front-full-S7301",
"face_id": "FA",
"prompt_id": "P0-front-full",
"seed": 7301,
"face_is_source_identity": false,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 2,
"verdict": "fail: Q1, Q2",
"ok": false,
"observation": "The render shows a different person (heavier brow ridge, more angular jaw, fuller lips, darker skin tone) cropped at the waist rather than showing the full head-to-feet body as requested.",
"image_path": "IPAFID-FA-P0-front-full-S7301.png"
},
{
"label": "IPAFID-FA-P0-front-full-S19023",
"face_id": "FA",
"prompt_id": "P0-front-full",
"seed": 19023,
"face_is_source_identity": true,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 3,
"verdict": "fail: body_framing_matches_prompt",
"ok": false,
"observation": "The render shows only an upper-body/torso shot with feet not visible, failing the required head-to-feet full-body framing.",
"image_path": "IPAFID-FA-P0-front-full-S19023.png"
},
{
"label": "IPAFID-FA-P1-back-full-S42",
"face_id": "FA",
"prompt_id": "P1-back-full",
"seed": 42,
"face_is_source_identity": true,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 3,
"verdict": "fail: body_framing_matches_prompt",
"ok": false,
"observation": "The render shows only an upper-body/torso crop with the subject turned and glancing back, not a full head-to-feet back view as requested.",
"image_path": "IPAFID-FA-P1-back-full-S42.png"
},
{
"label": "IPAFID-FA-P1-back-full-S7301",
"face_id": "FA",
"prompt_id": "P1-back-full",
"seed": 7301,
"face_is_source_identity": true,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q2, Q4",
"ok": false,
"observation": "The render shows only an upper-body/torso crop with no feet visible, and the image has an over-smoothed, plasticky AI render appearance rather than looking like a genuine photograph.",
"image_path": "IPAFID-FA-P1-back-full-S7301.png"
},
{
"label": "IPAFID-FA-P1-back-full-S19023",
"face_id": "FA",
"prompt_id": "P1-back-full",
"seed": 19023,
"face_is_source_identity": true,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 3,
"verdict": "fail: body_framing_matches_prompt",
"ok": false,
"observation": "The render shows a upper-body three-quarter view with the face visible looking back over the shoulder, rather than a full head-to-feet back view with the subject turned away.",
"image_path": "IPAFID-FA-P1-back-full-S19023.png"
},
{
"label": "IPAFID-FA-P2-upper-front-S42",
"face_id": "FA",
"prompt_id": "P2-upper-front",
"seed": 42,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 3,
"verdict": "fail: Q1",
"ok": false,
"observation": "The rendered face has blue eyes, a wider/flatter facial structure, and heavier brow arch compared to the reference's green/hazel eyes, softer features, and distinctly different nose \u2014 a visibly different person.",
"image_path": "IPAFID-FA-P2-upper-front-S42.png"
},
{
"label": "IPAFID-FA-P2-upper-front-S7301",
"face_id": "FA",
"prompt_id": "P2-upper-front",
"seed": 7301,
"face_is_source_identity": false,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q1, Q4",
"ok": false,
"observation": "The render shows a different person with a broader jaw, heavier brows, fuller lips, and more prominent bone structure than the reference, and the skin has an over-smoothed, plasticky AI appearance with artificially sharp hair strands.",
"image_path": "IPAFID-FA-P2-upper-front-S7301.png"
},
{
"label": "IPAFID-FA-P2-upper-front-S19023",
"face_id": "FA",
"prompt_id": "P2-upper-front",
"seed": 19023,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The skin has an over-smoothed, plasticky sheen with exaggerated contouring highlights that make the render look like a stylised AI image rather than a real photograph.",
"image_path": "IPAFID-FA-P2-upper-front-S19023.png"
},
{
"label": "IPAFID-FB-P0-front-full-S42",
"face_id": "FB",
"prompt_id": "P0-front-full",
"seed": 42,
"face_is_source_identity": true,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q2, Q4",
"ok": false,
"observation": "The render shows only an upper-body crop (feet not visible) and has a plasticky, over-smoothed AI render quality rather than a genuine photograph.",
"image_path": "IPAFID-FB-P0-front-full-S42.png"
},
{
"label": "IPAFID-FB-P0-front-full-S7301",
"face_id": "FB",
"prompt_id": "P0-front-full",
"seed": 7301,
"face_is_source_identity": true,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 2,
"verdict": "fail: Q2, Q4",
"ok": false,
"observation": "The render shows only an upper-body/torso crop rather than the required head-to-feet full-body view, and the skin and overall image have a plasticky, over-smoothed AI render quality rather than a photographic look.",
"image_path": "IPAFID-FB-P0-front-full-S7301.png"
},
{
"label": "IPAFID-FB-P0-front-full-S19023",
"face_id": "FB",
"prompt_id": "P0-front-full",
"seed": 19023,
"face_is_source_identity": false,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 2,
"verdict": "fail: Q1, Q2",
"ok": false,
"observation": "The rendered face is visibly older, more angular, and resembles a different person (notably Tom Cruise-like features), and the image is cropped at the waist rather than showing the full head-to-feet body framing.",
"image_path": "IPAFID-FB-P0-front-full-S19023.png"
},
{
"label": "IPAFID-FB-P1-back-full-S42",
"face_id": "FB",
"prompt_id": "P1-back-full",
"seed": 42,
"face_is_source_identity": false,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 1,
"verdict": "fail: Q1, Q2, Q4",
"ok": false,
"observation": "The render shows a different-looking man with a narrower, more angular face facing the camera in a 3/4 upper-body shot \u2014 not the source identity, not a full-body back view, and the skin has a plasticky over-rendered AI appearance.",
"image_path": "IPAFID-FB-P1-back-full-S42.png"
},
{
"label": "IPAFID-FB-P1-back-full-S7301",
"face_id": "FB",
"prompt_id": "P1-back-full",
"seed": 7301,
"face_is_source_identity": true,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 3,
"verdict": "fail: body_framing_matches_prompt",
"ok": false,
"observation": "The render shows only an upper-body three-quarter back view with feet not visible, rather than the required full head-to-feet back view.",
"image_path": "IPAFID-FB-P1-back-full-S7301.png"
},
{
"label": "IPAFID-FB-P1-back-full-S19023",
"face_id": "FB",
"prompt_id": "P1-back-full",
"seed": 19023,
"face_is_source_identity": true,
"body_framing_matches_prompt": false,
"clean_studio_bg": true,
"looks_photographic": true,
"axes_passed": 3,
"verdict": "fail: body_framing_matches_prompt",
"ok": false,
"observation": "The render shows an upper-body three-quarter front-facing view with the face looking at camera, rather than a full head-to-feet back/turned-away shot as requested.",
"image_path": "IPAFID-FB-P1-back-full-S19023.png"
},
{
"label": "IPAFID-FB-P2-upper-front-S42",
"face_id": "FB",
"prompt_id": "P2-upper-front",
"seed": 42,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The skin has a slightly plasticky, over-smoothed quality typical of AI renders, lacking natural pore texture and photographic realism.",
"image_path": "IPAFID-FB-P2-upper-front-S42.png"
},
{
"label": "IPAFID-FB-P2-upper-front-S7301",
"face_id": "FB",
"prompt_id": "P2-upper-front",
"seed": 7301,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The skin has an overly smooth, plasticky quality with artificially perfect lighting that makes the render look like a retouched CGI image rather than a real photograph.",
"image_path": "IPAFID-FB-P2-upper-front-S7301.png"
},
{
"label": "IPAFID-FB-P2-upper-front-S19023",
"face_id": "FB",
"prompt_id": "P2-upper-front",
"seed": 19023,
"face_is_source_identity": true,
"body_framing_matches_prompt": true,
"clean_studio_bg": true,
"looks_photographic": false,
"axes_passed": 3,
"verdict": "fail: Q4",
"ok": false,
"observation": "The skin has a plasticky, over-smoothed quality with slightly artificial lighting that gives the render a CGI appearance rather than a genuine photograph.",
"image_path": "IPAFID-FB-P2-upper-front-S19023.png"
}
],
"render_errors": []
}
],
"winner": null,
"total_cost_usd": 3.929523000000001,
"hard_cap_usd": 6.0,
"notes": []
}
Notes (1)
RECOMMENDATION.md
# Identity-preserving body-vendor MULTI-FACE sweep — Verdict: ESCALATE — no fal.ai vendor reached the 75% multi-face bar
**Run**: `20260530-identity-body-multiface-v1/`
**Date**: 2026-05-30T01:07:30.638370
**Faces tested**: 2 identities (FA blonde-W / FB balding-M)
**Vendors tested**: fal-ai/flux-pulid, fal-ai/pulid, fal-ai/ip-adapter-face-id
**Matrix per vendor**: 2 faces × 3 prompts × 3 seeds = 18 cells
**Prompts**: ['P0-front-full', 'P1-back-full', 'P2-upper-front']
**Seeds**: [42, 7301, 19023]
**Cost**: $3.93 actual (hard cap $6.00)
**Judge model**: `claude-sonnet-4-6`
**Pass bars**: per-cell ALL 4 axes Y; per-vendor >= 75% pass rate (>= 14/18).
## Headline
No vendor cleared 75% on the multi-face bar. Identity-preserving full-body generation on fal.ai is not currently viable for the production contract. Recommend escalation to off-platform candidates (Replicate, HuggingFace Inference) or a hybrid pipeline.
## Per-vendor results
| Vendor | Endpoint | Pass (4/4) | Face-ID | Framing | Pass rate | Proceeds | fal $ | judge $ |
|--------|----------|-----------:|--------:|--------:|----------:|:--------:|------:|--------:|
| FLUXPLD | `fal-ai/flux-pulid` | 5/18 | 10/18 | 18/18 | 28% | no | $1.80 | $0.109 |
| PULID | `fal-ai/pulid` | 5/18 | 12/18 | 13/18 | 28% | no | $0.90 | $0.110 |
| IPAFID | `fal-ai/ip-adapter-face-id` | 0/18 | 12/18 | 6/18 | 0% | no | $0.90 | $0.110 |
## Per-face × per-vendor breakdown
| Vendor | Face | Pass (4/4) | Face-ID | Framing |
|--------|------|-----------:|--------:|--------:|
| FLUXPLD | FA | 3/9 | 4/9 | 9/9 |
| FLUXPLD | FB | 2/9 | 6/9 | 9/9 |
| PULID | FA | 2/9 | 3/9 | 6/9 |
| PULID | FB | 3/9 | 9/9 | 7/9 |
| IPAFID | FA | 0/9 | 5/9 | 3/9 |
| IPAFID | FB | 0/9 | 7/9 | 3/9 |
## Per-axis breakdown
| Vendor | face_is_source | body_framing | clean_bg | photographic |
|--------|---------------:|-------------:|---------:|-------------:|
| FLUXPLD | 10/18 | 18/18 | 18/18 | 5/18 |
| PULID | 12/18 | 13/18 | 18/18 | 12/18 |
| IPAFID | 12/18 | 6/18 | 18/18 | 9/18 |
## Per-cell breakdown
| Cell | Vendor | Face | Prompt | Seed | face_id | framing | bg | photo | axes/4 | ok |
|------|--------|------|--------|-----:|:-------:|:-------:|:--:|:-----:|:------:|:--:|
| FLUXPLD-FA-P0-front-full-S42 | FLUXPLD | FA | P0-front-full | 42 | Y | Y | Y | Y | 4/4 | Y |
| FLUXPLD-FA-P0-front-full-S7301 | FLUXPLD | FA | P0-front-full | 7301 | Y | Y | Y | Y | 4/4 | Y |
| FLUXPLD-FA-P0-front-full-S19023 | FLUXPLD | FA | P0-front-full | 19023 | Y | Y | Y | Y | 4/4 | Y |
| FLUXPLD-FA-P1-back-full-S42 | FLUXPLD | FA | P1-back-full | 42 | N | Y | Y | N | 2/4 | N |
| FLUXPLD-FA-P1-back-full-S7301 | FLUXPLD | FA | P1-back-full | 7301 | N | Y | Y | N | 2/4 | N |
| FLUXPLD-FA-P1-back-full-S19023 | FLUXPLD | FA | P1-back-full | 19023 | N | Y | Y | N | 2/4 | N |
| FLUXPLD-FA-P2-upper-front-S42 | FLUXPLD | FA | P2-upper-front | 42 | Y | Y | Y | N | 3/4 | N |
| FLUXPLD-FA-P2-upper-front-S7301 | FLUXPLD | FA | P2-upper-front | 7301 | N | Y | Y | N | 2/4 | N |
| FLUXPLD-FA-P2-upper-front-S19023 | FLUXPLD | FA | P2-upper-front | 19023 | N | Y | Y | N | 2/4 | N |
| FLUXPLD-FB-P0-front-full-S42 | FLUXPLD | FB | P0-front-full | 42 | Y | Y | Y | Y | 4/4 | Y |
| FLUXPLD-FB-P0-front-full-S7301 | FLUXPLD | FB | P0-front-full | 7301 | Y | Y | Y | N | 3/4 | N |
| FLUXPLD-FB-P0-front-full-S19023 | FLUXPLD | FB | P0-front-full | 19023 | Y | Y | Y | Y | 4/4 | Y |
| FLUXPLD-FB-P1-back-full-S42 | FLUXPLD | FB | P1-back-full | 42 | N | Y | Y | N | 2/4 | N |
| FLUXPLD-FB-P1-back-full-S7301 | FLUXPLD | FB | P1-back-full | 7301 | N | Y | Y | N | 2/4 | N |
| FLUXPLD-FB-P1-back-full-S19023 | FLUXPLD | FB | P1-back-full | 19023 | N | Y | Y | N | 2/4 | N |
| FLUXPLD-FB-P2-upper-front-S42 | FLUXPLD | FB | P2-upper-front | 42 | Y | Y | Y | N | 3/4 | N |
| FLUXPLD-FB-P2-upper-front-S7301 | FLUXPLD | FB | P2-upper-front | 7301 | Y | Y | Y | N | 3/4 | N |
| FLUXPLD-FB-P2-upper-front-S19023 | FLUXPLD | FB | P2-upper-front | 19023 | Y | Y | Y | N | 3/4 | N |
| PULID-FA-P0-front-full-S42 | PULID | FA | P0-front-full | 42 | Y | Y | Y | Y | 4/4 | Y |
| PULID-FA-P0-front-full-S7301 | PULID | FA | P0-front-full | 7301 | N | Y | Y | Y | 3/4 | N |
| PULID-FA-P0-front-full-S19023 | PULID | FA | P0-front-full | 19023 | N | N | Y | Y | 2/4 | N |
| PULID-FA-P1-back-full-S42 | PULID | FA | P1-back-full | 42 | Y | Y | Y | Y | 4/4 | Y |
| PULID-FA-P1-back-full-S7301 | PULID | FA | P1-back-full | 7301 | N | Y | Y | Y | 3/4 | N |
| PULID-FA-P1-back-full-S19023 | PULID | FA | P1-back-full | 19023 | Y | N | Y | Y | 3/4 | N |
| PULID-FA-P2-upper-front-S42 | PULID | FA | P2-upper-front | 42 | N | Y | Y | Y | 3/4 | N |
| PULID-FA-P2-upper-front-S7301 | PULID | FA | P2-upper-front | 7301 | N | Y | Y | N | 2/4 | N |
| PULID-FA-P2-upper-front-S19023 | PULID | FA | P2-upper-front | 19023 | N | N | Y | Y | 2/4 | N |
| PULID-FB-P0-front-full-S42 | PULID | FB | P0-front-full | 42 | Y | Y | Y | Y | 4/4 | Y |
| PULID-FB-P0-front-full-S7301 | PULID | FB | P0-front-full | 7301 | Y | Y | Y | Y | 4/4 | Y |
| PULID-FB-P0-front-full-S19023 | PULID | FB | P0-front-full | 19023 | Y | N | Y | Y | 3/4 | N |
| PULID-FB-P1-back-full-S42 | PULID | FB | P1-back-full | 42 | Y | Y | Y | N | 3/4 | N |
| PULID-FB-P1-back-full-S7301 | PULID | FB | P1-back-full | 7301 | Y | Y | Y | Y | 4/4 | Y |
| PULID-FB-P1-back-full-S19023 | PULID | FB | P1-back-full | 19023 | Y | N | Y | N | 2/4 | N |
| PULID-FB-P2-upper-front-S42 | PULID | FB | P2-upper-front | 42 | Y | Y | Y | N | 3/4 | N |
| PULID-FB-P2-upper-front-S7301 | PULID | FB | P2-upper-front | 7301 | Y | Y | Y | N | 3/4 | N |
| PULID-FB-P2-upper-front-S19023 | PULID | FB | P2-upper-front | 19023 | Y | Y | Y | N | 3/4 | N |
| IPAFID-FA-P0-front-full-S42 | IPAFID | FA | P0-front-full | 42 | N | N | Y | Y | 2/4 | N |
| IPAFID-FA-P0-front-full-S7301 | IPAFID | FA | P0-front-full | 7301 | N | N | Y | Y | 2/4 | N |
| IPAFID-FA-P0-front-full-S19023 | IPAFID | FA | P0-front-full | 19023 | Y | N | Y | Y | 3/4 | N |
| IPAFID-FA-P1-back-full-S42 | IPAFID | FA | P1-back-full | 42 | Y | N | Y | Y | 3/4 | N |
| IPAFID-FA-P1-back-full-S7301 | IPAFID | FA | P1-back-full | 7301 | Y | N | Y | N | 2/4 | N |
| IPAFID-FA-P1-back-full-S19023 | IPAFID | FA | P1-back-full | 19023 | Y | N | Y | Y | 3/4 | N |
| IPAFID-FA-P2-upper-front-S42 | IPAFID | FA | P2-upper-front | 42 | N | Y | Y | Y | 3/4 | N |
| IPAFID-FA-P2-upper-front-S7301 | IPAFID | FA | P2-upper-front | 7301 | N | Y | Y | N | 2/4 | N |
| IPAFID-FA-P2-upper-front-S19023 | IPAFID | FA | P2-upper-front | 19023 | Y | Y | Y | N | 3/4 | N |
| IPAFID-FB-P0-front-full-S42 | IPAFID | FB | P0-front-full | 42 | Y | N | Y | N | 2/4 | N |
| IPAFID-FB-P0-front-full-S7301 | IPAFID | FB | P0-front-full | 7301 | Y | N | Y | N | 2/4 | N |
| IPAFID-FB-P0-front-full-S19023 | IPAFID | FB | P0-front-full | 19023 | N | N | Y | Y | 2/4 | N |
| IPAFID-FB-P1-back-full-S42 | IPAFID | FB | P1-back-full | 42 | N | N | Y | N | 1/4 | N |
| IPAFID-FB-P1-back-full-S7301 | IPAFID | FB | P1-back-full | 7301 | Y | N | Y | Y | 3/4 | N |
| IPAFID-FB-P1-back-full-S19023 | IPAFID | FB | P1-back-full | 19023 | Y | N | Y | Y | 3/4 | N |
| IPAFID-FB-P2-upper-front-S42 | IPAFID | FB | P2-upper-front | 42 | Y | Y | Y | N | 3/4 | N |
| IPAFID-FB-P2-upper-front-S7301 | IPAFID | FB | P2-upper-front | 7301 | Y | Y | Y | N | 3/4 | N |
| IPAFID-FB-P2-upper-front-S19023 | IPAFID | FB | P2-upper-front | 19023 | Y | Y | Y | N | 3/4 | N |
## Vendor schema notes (verbatim input shape)
### FLUXPLD — `fal-ai/flux-pulid`
- **Contract**: PuLID over FLUX backbone. Best identity preservation among fal.ai face-conditioning candidates tested for headshots in v1 sweep (5/6 = 83%). Multi-face test: does it generalise.
- **Per-call cost**: ~$0.10
- **Cells judged**: 18
- **All-4-axes pass**: 5/18 (28%)
**fal.subscribe input mapping:**
```json
{
"reference_image_url": "<face crop CDN URL>",
"prompt": "<body framing prompt>",
"id_weight": 1.0,
"num_inference_steps": 20,
"guidance_scale": 4,
"image_size": "portrait_4_3",
"negative_prompt": "blurry, low quality, deformed, distorted, bad anatomy, cropped face, close-up of face only",
"seed": 42
}
```
### PULID — `fal-ai/pulid`
- **Contract**: SDXL-backbone PuLID. 50% on prior single-face headshot probe; retest with body framing and multi-face.
- **Per-call cost**: ~$0.05
- **Cells judged**: 18
- **All-4-axes pass**: 5/18 (28%)
**fal.subscribe input mapping:**
```json
{
"reference_images": [
{
"image_url": "<face crop CDN URL>"
}
],
"prompt": "<body framing prompt>",
"id_scale": 1.2,
"mode": "fidelity",
"num_inference_steps": 8,
"guidance_scale": 1.2,
"num_images": 1,
"seed": 42,
"image_size": "portrait_4_3"
}
```
### IPAFID — `fal-ai/ip-adapter-face-id`
- **Contract**: IP-Adapter Face ID on SDXL-v2-plus. 67% on prior single-face probe. Cheap; tested for completeness.
- **Per-call cost**: ~$0.05
- **Cells judged**: 18
- **All-4-axes pass**: 0/18 (0%)
**fal.subscribe input mapping:**
```json
{
"face_image_url": "<face crop CDN URL>",
"prompt": "<body framing prompt>",
"model_type": "SDXL-v2-plus",
"num_samples": 1,
"num_inference_steps": 30,
"guidance_scale": 5.0,
"width": 768,
"height": 1024,
"seed": 42,
"face_id_det_size": 640
}
```
## Judge observations
### FLUXPLD-FA-P0-front-full-S42 — axes 4/4 — pass
The render shows a full-body front view of a woman who closely matches the reference's facial structure, jawline, and blonde wavy hair, against a clean light studio background with photographic quality.
### FLUXPLD-FA-P0-front-full-S7301 — axes 4/4 — pass
The render shows a full-body front view of a blonde woman with similar facial structure, jawline, and features to the reference, against a clean light studio background with photographic quality.
### FLUXPLD-FA-P0-front-full-S19023 — axes 4/4 — pass
The render shows a full-body front view of a blonde woman with matching facial structure, jawline, and features to the reference, against a clean light studio backdrop with photographic realism.
### FLUXPLD-FA-P1-back-full-S42 — axes 2/4 — fail: Q1, Q4
The render shows a featureless white mannequin with no facial identity preserved and an obviously artificial/plastic appearance rather than a photographic human likeness.
### FLUXPLD-FA-P1-back-full-S7301 — axes 2/4 — fail: Q1, Q4
The render is a featureless white mannequin/3D sculpture with no face, hair, or any photographic qualities, bearing no resemblance to the reference person.
### FLUXPLD-FA-P1-back-full-S19023 — axes 2/4 — fail: Q1, Q4
The render shows a featureless mannequin/3D sculpture with no hair, skin texture, or recognizable facial features, bearing no resemblance to the reference person.
### FLUXPLD-FA-P2-upper-front-S42 — axes 3/4 — fail: Q4
The render is noticeably blurry/soft-focus with plasticky, over-smoothed skin that lacks the photographic sharpness and natural texture of a real photograph.
### FLUXPLD-FA-P2-upper-front-S7301 — axes 2/4 — fail: Q1, Q4
The rendered face has a different bone structure (narrower, more angular jaw, different nose, heavier brows) than the reference, and the image is noticeably blurry/soft with plasticky skin typical of a failed AI render.
### FLUXPLD-FA-P2-upper-front-S19023 — axes 2/4 — fail: Q1, Q4
The render shows a different person with a narrower face, more prominent cheekbones, and shorter hair, and the image is heavily blurred/soft-focus giving it an unnatural non-photographic appearance.
### FLUXPLD-FB-P0-front-full-S42 — axes 4/4 — pass
The render shows the same dark-haired man with matching facial structure, jawline, and features in a clean full-body front-view studio shot that looks photographic.
### FLUXPLD-FB-P0-front-full-S7301 — axes 3/4 — fail: Q4
The render is noticeably blurred/soft-focus throughout, giving it an artificial, non-photographic quality rather than the crispness of a real photograph.
### FLUXPLD-FB-P0-front-full-S19023 — axes 4/4 — pass
The render shows the same dark-haired man with matching facial structure, jawline and nose in a clean full-body front-view pose against a neutral studio backdrop that looks photographic.
### FLUXPLD-FB-P1-back-full-S42 — axes 2/4 — fail: Q1, Q4
The render shows a featureless white mannequin/sculpture with no discernible face or identity, bearing no resemblance to the reference person and looking entirely non-photographic.
### FLUXPLD-FB-P1-back-full-S7301 — axes 2/4 — fail: Q1, Q4
The render is a featureless white mannequin/statue with no discernible facial features or skin texture, making identity verification impossible and the image clearly non-photographic.
### FLUXPLD-FB-P1-back-full-S19023 — axes 2/4 — fail: Q1, Q4
The render shows a full-body back view on a clean studio background, but the figure appears as a plasticky, mannequin-like model with unrealistically smooth skin rather than a photographic human, and the slim build and body proportions do not match the more athletic reference subject.
### FLUXPLD-FB-P2-upper-front-S42 — axes 3/4 — fail: Q4
The render has plasticky, overly smooth skin with a slightly artificial sheen that makes it look like a stylised AI-generated image rather than a real photograph.
### FLUXPLD-FB-P2-upper-front-S7301 — axes 3/4 — fail: Q4
The render has plasticky, over-smoothed skin with an artificial sheen and overly symmetric lighting typical of AI stylisation rather than a real photograph.
### FLUXPLD-FB-P2-upper-front-S19023 — axes 3/4 — fail: Q4
The render has noticeably plasticky, over-smoothed skin with a slightly artificial sheen that makes it look like a stylised AI render rather than a genuine photograph.
### PULID-FA-P0-front-full-S42 — axes 4/4 — pass
The render shows a full-body front view of a blonde woman whose facial structure, jawline, and overall features closely match the reference, against a clean grey studio backdrop with photographic realism.
### PULID-FA-P0-front-full-S7301 — axes 3/4 — fail: Q1
The rendered face shows a different woman with shorter blonde hair, a narrower facial structure, and distinct features that don't match the reference's broader jaw, fuller lips, and specific nose shape.
### PULID-FA-P0-front-full-S19023 — axes 2/4 — fail: Q1, Q2
The render shows a short-bobbed blonde with noticeably different facial structure (wider jaw, different nose, blue eyes vs. the reference's longer face and softer features), and the body is cropped at mid-thigh with feet not visible.
### PULID-FA-P1-back-full-S42 — axes 4/4 — pass
The render shows a plausible identity match with similar facial structure, blonde wavy hair, and comparable features; the body is full-length with a back-turned pose, feet visible, against a clean grey studio backdrop, with a photographic appearance throughout.
### PULID-FA-P1-back-full-S7301 — axes 3/4 — fail: Q1
The rendered figure has shorter bob-style hair, a narrower face, and different facial structure compared to the reference's long wavy blonde hair and distinctive jawline/features.
### PULID-FA-P1-back-full-S19023 — axes 3/4 — fail: body_framing_matches_prompt
The render shows a full-body side/three-quarter view with the face visible toward camera, not a back view with the subject turned away as prompted.
### PULID-FA-P2-upper-front-S42 — axes 3/4 — fail: Q1
The render shows a different person — shorter bob haircut, more angular jaw, deeper tan, and distinctly different eye color compared to the reference's long wavy hair, softer features, and lighter complexion.
### PULID-FA-P2-upper-front-S7301 — axes 2/4 — fail: Q1, Q4
The render shows a different person with distinctly blue eyes, a more angular jawline, shorter hair, and overly smoothed plasticky skin compared to the softer-featured, hazel-eyed reference.
### PULID-FA-P2-upper-front-S19023 — axes 2/4 — fail: Q1, Q2
The rendered face is a visibly different person (stronger jaw, blue eyes, shorter hair, more angular features) and the body is posed at a 3/4 angle rather than a front-facing view.
### PULID-FB-P0-front-full-S42 — axes 4/4 — pass
The render preserves the source's facial structure, jawline, and dark hair convincingly, shows a full head-to-feet front view against a clean grey studio backdrop, and reads as photographic in quality.
### PULID-FB-P0-front-full-S7301 — axes 4/4 — pass
The render preserves the source's facial structure, jawline, and dark hair convincingly, shows a full head-to-feet front view against a clean grey studio backdrop, and looks photographic in quality.
### PULID-FB-P0-front-full-S19023 — axes 3/4 — fail: Q2
The face identity is well preserved and the image looks photographic on a clean studio background, but the render is cropped at mid-shin and the feet are not visible, failing the head-to-feet full-body framing requirement.
### PULID-FB-P1-back-full-S42 — axes 3/4 — fail: Q4
The render has a plasticky, over-smoothed quality with unnaturally glossy fabric shading and slightly artificial skin on the partially visible face, betraying its AI-generated origin rather than looking like a real photograph.
### PULID-FB-P1-back-full-S7301 — axes 4/4 — pass
The render shows a full-body back view of a man whose dark hair, facial profile, jawline, and overall build are consistent with the reference, set against a clean grey studio backdrop with photographic realism.
### PULID-FB-P1-back-full-S19023 — axes 2/4 — fail: Q2, Q4
The render shows a side/three-quarter view with the face turned toward camera rather than a true back view turned away, and the image has a plasticky, over-smooth AI render quality inconsistent with real photography.
### PULID-FB-P2-upper-front-S42 — axes 3/4 — fail: Q4
The skin has an over-smoothed, plasticky sheen and the muscle definition appears artificially enhanced, giving the render a stylised AI look rather than a natural photograph.
### PULID-FB-P2-upper-front-S7301 — axes 3/4 — fail: Q4
The render has plasticky, over-smoothed skin with an artificial sheen and hyper-stylised hair highlights that make it look like a CGI illustration rather than a real photograph.
### PULID-FB-P2-upper-front-S19023 — axes 3/4 — fail: Q4
The skin has a plasticky, overly smoothed appearance with artificial catchlights and hyper-defined muscle rendering that looks like a stylised AI render rather than a real photograph.
### IPAFID-FA-P0-front-full-S42 — axes 2/4 — fail: Q1, Q2
The render shows a different person (heavier brow, different nose/jawline) cropped at the torso rather than showing the required head-to-feet full body view.
### IPAFID-FA-P0-front-full-S7301 — axes 2/4 — fail: Q1, Q2
The render shows a different person (heavier brow ridge, more angular jaw, fuller lips, darker skin tone) cropped at the waist rather than showing the full head-to-feet body as requested.
### IPAFID-FA-P0-front-full-S19023 — axes 3/4 — fail: body_framing_matches_prompt
The render shows only an upper-body/torso shot with feet not visible, failing the required head-to-feet full-body framing.
### IPAFID-FA-P1-back-full-S42 — axes 3/4 — fail: body_framing_matches_prompt
The render shows only an upper-body/torso crop with the subject turned and glancing back, not a full head-to-feet back view as requested.
### IPAFID-FA-P1-back-full-S7301 — axes 2/4 — fail: Q2, Q4
The render shows only an upper-body/torso crop with no feet visible, and the image has an over-smoothed, plasticky AI render appearance rather than looking like a genuine photograph.
### IPAFID-FA-P1-back-full-S19023 — axes 3/4 — fail: body_framing_matches_prompt
The render shows a upper-body three-quarter view with the face visible looking back over the shoulder, rather than a full head-to-feet back view with the subject turned away.
### IPAFID-FA-P2-upper-front-S42 — axes 3/4 — fail: Q1
The rendered face has blue eyes, a wider/flatter facial structure, and heavier brow arch compared to the reference's green/hazel eyes, softer features, and distinctly different nose — a visibly different person.
### IPAFID-FA-P2-upper-front-S7301 — axes 2/4 — fail: Q1, Q4
The render shows a different person with a broader jaw, heavier brows, fuller lips, and more prominent bone structure than the reference, and the skin has an over-smoothed, plasticky AI appearance with artificially sharp hair strands.
### IPAFID-FA-P2-upper-front-S19023 — axes 3/4 — fail: Q4
The skin has an over-smoothed, plasticky sheen with exaggerated contouring highlights that make the render look like a stylised AI image rather than a real photograph.
### IPAFID-FB-P0-front-full-S42 — axes 2/4 — fail: Q2, Q4
The render shows only an upper-body crop (feet not visible) and has a plasticky, over-smoothed AI render quality rather than a genuine photograph.
### IPAFID-FB-P0-front-full-S7301 — axes 2/4 — fail: Q2, Q4
The render shows only an upper-body/torso crop rather than the required head-to-feet full-body view, and the skin and overall image have a plasticky, over-smoothed AI render quality rather than a photographic look.
### IPAFID-FB-P0-front-full-S19023 — axes 2/4 — fail: Q1, Q2
The rendered face is visibly older, more angular, and resembles a different person (notably Tom Cruise-like features), and the image is cropped at the waist rather than showing the full head-to-feet body framing.
### IPAFID-FB-P1-back-full-S42 — axes 1/4 — fail: Q1, Q2, Q4
The render shows a different-looking man with a narrower, more angular face facing the camera in a 3/4 upper-body shot — not the source identity, not a full-body back view, and the skin has a plasticky over-rendered AI appearance.
### IPAFID-FB-P1-back-full-S7301 — axes 3/4 — fail: body_framing_matches_prompt
The render shows only an upper-body three-quarter back view with feet not visible, rather than the required full head-to-feet back view.
### IPAFID-FB-P1-back-full-S19023 — axes 3/4 — fail: body_framing_matches_prompt
The render shows an upper-body three-quarter front-facing view with the face looking at camera, rather than a full head-to-feet back/turned-away shot as requested.
### IPAFID-FB-P2-upper-front-S42 — axes 3/4 — fail: Q4
The skin has a slightly plasticky, over-smoothed quality typical of AI renders, lacking natural pore texture and photographic realism.
### IPAFID-FB-P2-upper-front-S7301 — axes 3/4 — fail: Q4
The skin has an overly smooth, plasticky quality with artificially perfect lighting that makes the render look like a retouched CGI image rather than a real photograph.
### IPAFID-FB-P2-upper-front-S19023 — axes 3/4 — fail: Q4
The skin has a plasticky, over-smoothed quality with slightly artificial lighting that gives the render a CGI appearance rather than a genuine photograph.
## Webapp recommendation
**No fal.ai vendor cleared the 75% multi-face bar.** Native identity-preserving body generation is not viable through fal.ai with the vendors tested at the multi-face bar.
### Ranked next options
1. **Off-platform — Replicate.com PuLID/PhotoMaker variants** — richer parameter surfaces (more inference steps, tunable face_attention weights). Run same 4-axis judge against same fixtures and prompts.
2. **HuggingFace Inference — PhotoMaker-V2 / FlashFace / Face0** — purpose-built single-face conditioning models with better SOTA on full-body framing.
3. **Hybrid pipeline (lowest engineering risk)** — FASHN model-create for body, then FASHN `/edit` masking face region with the Kontext face crop as image_context. Same vendor; deterministic identity rescue. Confirm with Thor whether 'same-vendor edit pass' counts as 'no post-process'.
4. **Self-host PuLID or PhotoMaker-V2 on ComfyUI / Modal** — highest engineering cost; unlocks LoRA stack tuning.
## Defaults documented
- **Face A**: cropped from webapp marketing fixture `preview-models.jpg` — blonde woman, mid-20s, light eyes, white tank.
- **Face B**: cropped from webapp marketing fixture `preview-pants.jpg` — brown-haired man, mid-30s, light eyes, grey tee. Production-template aligned per Thor's brief.
- **Prompts**: 3 framings — front full-body, back full-body, upper-body front.
- **Seeds**: [42, 7301, 19023].
- **Per-cell PASS bar**: all 4 axes Y — face identity is LOAD-BEARING.
- **Per-vendor PROCEED bar**: >= 75% of cells (>= 14/18).
- **Judge**: Claude `claude-sonnet-4-6`, two-image vision call.
- **Vendor priority**: FLUXPLD → PULID → IPAFID. Early-stop at first PROCEED.
- **Hard budget cap**: $6.00 (fal + judge).
---
_Per `feedback_labs_results_need_thor_review_before_port` — DO NOT port to webapp until Thor reviews this RECOMMENDATION.md (+ `validate.html`) and explicitly directs which (if any) vendor to apply._