Evaluate Image Candidates (Mock)
Deterministic scores that are quietly meaningless — and that's fine
- candidate_images
- candidate_set
- evaluations
- evaluation_json
This node scores every candidate image with five quality dimensions and a pass/fail-ish decision, and it does it without looking at a single pixel. That sounds like a scam until you understand the game: the scores are derived from a SHA-256 hash of each candidate's ID. Deterministic, zero-cost, and completely blind. The value isn't the numbers - it's the contract they teach you.
Let me be precise about what it does, because the difference matters. For each candidate, the mock provider hashes the candidate ID to pull a stable score out of a plausible range (garment fidelity in the 70–98 band, anatomy, identity, aesthetics, and technical quality each in their own band). It then computes final_score as a weighted blend - 45% garment fidelity, 20% anatomy, 15% model identity, 10% aesthetics, 10% technical quality - and stamps a decision: pass when fidelity clears 82, otherwise manual_review. Candidate #2 gets a small fidelity bonus for no reason other than that the code says so.
That weighting is the real information here, and it's the pack's core opinion stated in arithmetic: garment fidelity is worth more than everything else combined. "Product fidelity takes priority over creative quality," the README says, and this formula is how that belief becomes a number.
Inputs are just candidate_images and candidate_set - the batch and its metadata from Virtual Try-On Candidates (Mock). Outputs are evaluations (the AFS_EVALUATION_SET object) and evaluation_json. The evaluations output is what you feed into Rank Candidates, and evaluation_json is where you can actually read each candidate's five scores, issues list, and decision before the ranker collapses them into a winner.
So why would you run a scoring node whose scores come from a hash? Three honest reasons. First, it's free - the pack's whole mock slice exists so the orchestration can be built and tested without an API key, and this node is that testing. Second, it exercises the exact data contract the real judge uses: if your workflow handles this node's AFS_EVALUATION_SET, it will handle the one produced by AFS_EvaluateImageCandidates (the paid gpt-5.5 judge) with zero rewiring - same type, same fields, same downstream. Third, it gives you a stable, reproducible graph for debugging: same inputs, same scores, every run, so when something breaks you can trust it's not randomness.
The trap is the opposite direction. Because the scores are reproducible, it's tempting to tune your product text or seeds to push mock fidelity above 82 and feel like you've optimized something. You haven't - the score hashes the ID, not the image. If the mock says "pass", it means the plumbing works, not that the garment would survive a real try-on. For judging actual quality you need the live judge, and the pack itself tells you the mock "does not predict the visual quality of real virtual try-on."
It sits under AI Fashion Studio / Mock MVP and needs nothing to run - no key, no models. Install the pack however you like (Manager, or clone into custom_nodes), and it just works. Use it to rehearse the pipeline, learn the contract, and keep the celebration for the day a real VTO provider lands.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| candidate_images | IMAGE | — | |
| candidate_set | AFS_CANDIDATE_SET | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| evaluations | AFS_EVALUATION_SET | — |
| evaluation_json | STRING | — |