Beta launching soon

Detect off-brand, slop, low quality content before it embarrasses you.

BVI
slop×12
off-brand×8
off-prompt×6
quality×27
on-prompt×19
brand pass×21
sources in · verdicts out — every video routed before it ships
Tier 01 / Capabilities

Capabilities

Capability 01

Brand extraction — the grammar engine

Point it at your videos; it learns the brand's grammar.

sends
POST /brands → refs → extract
gets
frozen brand_profile (versioned)
www.example.com
hero_film.mp4
product_02.mp4
launch_spot.mp4
BVIgrammar engine
extracted brand grammar
camera movementdolly · pan · handheld
color roles#c8503c text · #5b3a21 bg
gradesat 0.41 ±0.06
pacingmeasured, building
editing rhythm3.1 cuts / 10s
compositionclose-up 0.48 · shallow DoF
lightingsoft key, controlled
shot sizesCU · MS · WS
brand markcorner_br · ≥1.5s
typographysans, lower third
tolerancescolor w1.5 · warn 78
style promptwarm earthy palette, shallow DoF, calm camera…
negative promptno brand red in props, no whip pans, no serif body text…
camera movementdolly · pan · handheld
color roles#c8503c text · #5b3a21 bg
gradesat 0.41 ±0.06
pacingmeasured, building
editing rhythm3.1 cuts / 10s
compositionclose-up 0.48 · shallow DoF
lightingsoft key, controlled
shot sizesCU · MS · WS
brand markcorner_br · ≥1.5s
typographysans, lower third
tolerancescolor w1.5 · warn 78
style promptwarm earthy palette, shallow DoF, calm camera…
negative promptno brand red in props, no whip pans, no serif body text…
reference in · brand profile out
GET /grammar/v1/brands/b1…001/profile?version=latest
$ curl -X GET https://api.cognatelabs.io/grammar/v1/brands/b1…001/profile?version=latest \
    -H "Authorization: Bearer $CGN_KEY"

200 OK
{
  "meta": { "profile_id": "…", "extractor_version": "1.3.0",
            "reference_videos": [ { "video_id": "…", "duration_s": 24, "scene_count": 9 } ] },
  "profile": {
    "color":  { "dominant_colors": [
                  { "hex_approx": "#c8503c", "prevalence": 0.12,
                    "roles": ["text"], "is_brand_kit_color": true } ],
                "grade": { "saturation": { "mean": 0.41, "std": 0.06, "p10": 0.33, "p90": 0.5 } } },
    "motion": { "energy": { "mean": 0.38, "p10": 0.2, "p90": 0.55 },
                "energy_bucket_mix": { "calm": 0.6, "medium": 0.3, "kinetic": 0.1 } },
    "editing": { "cuts_per_10s": { "mean": 3.1 }, "transitions": [ { "type": "cut", "frequency": 0.9 } ] },
    "composition": { "closeup_ratio": 0.48, "depth_of_field": "shallow" },
    "brand_mark": { "appears": true, "placement_zone": "corner_br", "min_on_screen_s": 1.5 },
    "qualitative_rules": [
      { "rule": "Brand mark appears in the closing card, lower-right, ≥1.5s.",
        "dimension": "brand_mark", "severity": "hard", "confidence": 0.97 } ]
  },
  "tolerances": { "color": { "weight": 1.5, "warn_threshold": 78, "fail_threshold": 65 } },
  "generation_conditioning": {
    "style_prompt_fragment": "warm earthy palette, shallow DoF, calm camera…",
    "negative_prompt_fragment": "no brand red in props, no whip pans, no serif body text…" }
}
Capability 02

Quality & prompt adherence

Every cut, graded before it ships.

Post a video and its prompt — no profile needed. It scores the craft deterministically (subject and background consistency, temporal flicker, imaging quality, motion bucket) and judges prompt adherence — objects, actions, scene, spatial, text, artifacts — each a { score, status, diagnosis } with pass / warn / fail.
sends
POST /evaluations (video + prompt)
gets
quality + prompt_adherence
Video still being quality-scoredUnder review
82Quality
87Prompt adherence
deterministic craft · model-judged prompt
Quality
Subject consistencypass88
Background consistencypass84
Imaging qualitywarn76
Temporal flickerpass81
Prompt adherence
ActionsCharacter is skating, but the prompt requested 'jumping and doing tricks' — not clearly demonstrated beyond basic movement. The camera does zoom onto the shoes.not scored (warn)60
Audio qualityBackground music is prominent and speech is clear, present, and at the appropriate volume, matching prompt requirements.not scored (pass)100
Face integrityFace and hands of the person shown are anatomically plausible and free from deformation.not scored (pass)100
specimen · scorecard UI, reproduced
GET /evaluator/v1/evaluations/e3…333
$ curl -X GET https://api.cognatelabs.io/evaluator/v1/evaluations/e3…333 \
    -H "Authorization: Bearer $CGN_KEY"

200 OK
{
  "quality": {                                         // deterministic scores
    "subject_consistency":    { "score": 88, "status": "pass" },
    "background_consistency": { "score": 72, "status": "warn" },
    "temporal_flicker":       { "score": 41, "status": "fail" },
    "imaging_quality":        { "score": 58, "status": "warn", "p10": 39, "min": 22 },
    "motion_bucket": "medium"                           // calm | medium | kinetic
  },
  "prompt_adherence": {                                 // model-judged
    "overall":  { "score": 64, "status": "warn" },
    "objects":  { "score": 82, "status": "pass", "diagnosis": "surfboard + van both present" },
    "actions":  { "score": 70, "status": "warn", "diagnosis": "van drives but doesn't clearly turn" },
    "spatial":  { "score": 66, "status": "warn", "diagnosis": "van centered, not entering from left" },
    "garbled_text_artifacts": { "score": 55, "status": "warn" },
    "gross_motion_artifacts": { "score": 45, "status": "fail", "diagnosis": "limbs warp; wheel detaches" }
  }
}
Capability 03

Brand adherence — the verdict

Does the cut obey the brand kit?

Supply a profile_id (or an inline profile) on the same evaluation and brand scoring turns on: color, grade, motion energy, editing pace, composition, typography, and brand-mark — each scored against the learned profile with its own distance metric, plus rule violations by timestamp. The always-present verdict carries a badge and machine-injectable recommended_corrections.
sends
POST /evaluations + profile_id
gets
brand block + verdict + corrections
Video still being checked against the brand kitUnder review
58Verdict
off_brand
hard failure: brand mark missing from the closing card
Brand
Colorwarn68
Motion energypass88
Editing pacepass83
Typographyfail60
Brand markfail30
specimen · scorecard UI, reproduced
GET /evaluator/v1/evaluations/e7…777
$ curl -X GET https://api.cognatelabs.io/evaluator/v1/evaluations/e7…777 \
    -H "Authorization: Bearer $CGN_KEY"

200 OK
{
  "meta": { "profile_id": "11…111", "profile_version": 3 },
  "brand": {                                            // null without a profile
    "color":        { "score": 68, "status": "warn", "distance_metric": "wasserstein_lab_marginals" },
    "grade":        { "score": 74, "status": "warn", "distance_metric": "grade_fingerprint_l2" },
    "motion_energy":{ "score": 88, "status": "pass", "distance_metric": "energy_distribution_overlap" },
    "editing_pace": { "score": 83, "status": "pass", "distance_metric": "shot_length_wasserstein" },
    "typography":   { "score": 60, "status": "fail", "distance_metric": "vlm_typography_rubric" },
    "brand_mark":   { "score": 30, "status": "error", "distance_metric": "vlm_brand_mark_rubric" },
    "rule_violations": [
      { "rule_id": "rule_brand_mark_closing", "severity": "hard", "timestamp_s": 29.0,
        "diagnosis": "No brand mark in the closing card (required lower-right, ≥1.5s)." } ]
  },
  "verdict": {                                          // ALWAYS present
    "overall_score": 58,
    "badge": "off_brand",                               // on_brand | review | off_brand | quality_fail
    "hard_failures": ["rule_brand_mark_closing"],
    "recommended_corrections": [
      { "dimension": "brand_mark",
        "prompt_delta": "add a closing card in the final 2s with the brand mark lower-right ≥1.5s" },
      { "dimension": "typography",
        "prompt_delta": "render captions sans-serif, lower third, <3s; no serif or full-frame text" } ]
  }
}
Tier 02 / Beta

Sign up for the waitlist.

We’re onboarding teams in waves. Tell us who you are and roughly how much video you run — a few fields, no demo call to book.

Which best describes you?
Which scores matter to you? — pick any