Nodes/Kinburg-Nodes/Criteria Builder πŸ“‹
ComfyUI Node

Criteria Builder πŸ“‹

Tick the boxes, get a judge's rubric

By KinburgΒ·Created 3 months agoΒ·Updated 6 days agoΒ· 1
Criteria Builder πŸ“‹
    • criteria
    β—„overall_qualitytrueβ–Ί
    β—„prompt_compliancetrueβ–Ί
    β—„anatomytrueβ–Ί
    β—„handsfalseβ–Ί
    β—„facefalseβ–Ί
    β—„compositionfalseβ–Ί
    β—„perspectivefalseβ–Ί
    β—„cameratrueβ–Ί
    β—„lightingfalseβ–Ί
    β—„colorfalseβ–Ί
    β—„sharpnessfalseβ–Ί
    β—„detailfalseβ–Ί
    β—„backgroundfalseβ–Ί
    β—„style_consistencyfalseβ–Ί
    β—„realismfalseβ–Ί
    β—„aestheticsfalseβ–Ί
    β—„texttrueβ–Ί
    β—„extraβ–Ί
    β—„criteria_inβ€”β–Ί

    Once you've automated image generation, the next obvious thing to automate is judging the results - and the pack's Vision LLM Judge and Ouroboros Critic Settings both take a criteria string, one name: description line per thing you want scored. Criteria Builder πŸ“‹ exists so you never have to hand-write that string. Tick criteria on the node, and it assembles the rubric for you.

    The node ships a catalog of curated criteria - overall quality, prompt compliance, anatomy, hands, face, composition, perspective, camera, lighting, color, sharpness, detail, background, style consistency, realism, aesthetics, text - each with a model-guiding description that the pack has already written. Each criterion is a toggle, so you build your rubric by switching things on. The descriptions aren't filler either: they tell the judging model what to actually look for ("correct finger count, natural shape and pose, no fused, missing or extra digits"), which measurably steers its verdicts.

    The inputs that matter:

    • The criteria toggles - most are off by default; overall_quality, prompt_compliance, anatomy, camera, and text start on. That's a sensible baseline for a first run.
    • extra - one name: description line per criterion you want that isn't in the catalog.
    • criteria_in - an optional upstream criteria string merged first, so you can chain builders or start from an existing set. Duplicates (by name) are removed.

    The output:

    • criteria - the assembled string. Wire it into Vision LLM Judge's or Ouroboros Critic Settings' criteria field via right-click β†’ Convert widget to input. Empty output = single overall score.

    Two design details are worth knowing. First, the catalog is data, not code: criteria_presets/catalog.json ships it, and dropping a catalog.user.json next to it (same shape) adds your own criteria without touching the shipped file - so your additions survive a git pull. Second, empty output is meaningful: with nothing ticked, the judge falls back to one overall score, so the node doubles as an on/off switch between "single number" and "full rubric."

    The trap to avoid is over-ticking. A rubric with twelve criteria produces twelve score fields per image, and most comparisons only need four or five. Start from the defaults, add hands if you're generating people, and resist the temptation to turn everything on.

    Install via ComfyUI Manager (search "Kinburg-Nodes") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Kinburg/Kinburg-Nodes
    

    then restart. The node itself has no dependencies - it's catalog lookups and string assembly. It earns its keep only once the Vision LLM Judge is running, which needs a vision-capable GGUF + mmproj of your own (the pack auto-installs llama-cpp-python via install.py). One-author personal pack, per-package docs, 1395 automated checks.

    CategoryKinburg-Nodes/LLM/presets

    Inputs (19)

    NameTypeDefaultDescription
    overall_qualityBOOLEANtrueoverall image quality β€” matches the intended style, no artifacts, no excess noise, correct proportions, good color reproduction
    prompt_complianceBOOLEANtruehow accurately the image follows the generation prompt β€” subjects, attributes, counts and relations are all present and correct
    anatomyBOOLEANtrueall required limbs present, no extra or missing limbs, correct joint placement, natural and proportional body
    handsBOOLEANfalsehands and fingers β€” correct finger count, natural shape and pose, no fused, missing or extra digits
    faceBOOLEANfalseface quality β€” symmetry, natural features, correct eyes and teeth, no distortion, consistent with the intended subject
    compositionBOOLEANfalsecomposition and framing β€” balanced layout, clear focal point, good use of the frame, no awkward cropping
    perspectiveBOOLEANfalseperspective and geometry β€” consistent vanishing points and scale, no warped or physically impossible structures
    cameraBOOLEANtruecamera angle and camera settings (lens, depth of field, framing) match the intent
    lightingBOOLEANfalselighting β€” believable direction and intensity, coherent shadows and highlights, matches the described mood
    colorBOOLEANfalsecolor β€” pleasing coherent palette, accurate white balance, no oversaturation or unwanted color casts
    sharpnessBOOLEANfalsesharpness and focus β€” the subject is crisp where intended, no unwanted blur and no over-sharpening halos
    detailBOOLEANfalselevel of detail β€” fine textures and small elements render cleanly, no mushy or smeared areas
    backgroundBOOLEANfalsebackground β€” coherent with the scene, no distracting artifacts, correct depth and separation from the subject
    style_consistencyBOOLEANfalsestyle consistency β€” one coherent art style throughout, no clashing rendering styles within the image
    realismBOOLEANfalsephotorealism β€” looks like a real photograph, believable materials and skin, no tell-tale AI look (use only for realistic targets)
    aestheticsBOOLEANfalseaesthetic appeal β€” overall attractiveness and visual impact, tasteful and pleasing to look at
    textBOOLEANtrueif the prompt requests text β€” present, character-accurate, correct color/font/size/placement; if the prompt has NO text, give the top score
    extraoptSTRINGExtra criteria, one per line ('name: description'), appended after the toggled ones. For anything not in the catalog.
    criteria_inoptSTRINGOptional upstream criteria string merged FIRST β€” chain builders, or start from an existing set. Duplicates (by name) are removed.

    Outputs (1)

    NameTypeDescription
    criteriaSTRINGβ€”