Quickads

QuickVisual CRM, patent pending

Describe the shot. Get the exact three seconds.

QuickAds tags every moment of your footage across 237 fields, then reads what you meant, not only the words you typed. You get the clip, the timecode and the reason it matched.

237fields in the taxonomy
6 levelsfrom the file down to the moment
t0 to t1every result is a cut point, not a file
The creator spins around so you can see how the dress moves
0:12 to 0:15, score 0.91

The creator does a full 360-degree turn in the dress to show its fit and the flow of the skirt.

ad.script_beat model spins to show 360 fit card.summary twirls in a full 360-degree turn

The problem

Search looks easy. With 237 fields, it isn't.

A search box invites people to type the way they talk. The footage, meanwhile, is stored as hundreds of structured facts per moment. The work is in getting from one to the other without guessing.

One request, as a person types it. Select a phrase to see where it lands.

A woman wearing a red dress talking about this product

A woman

subject.primary = personL4Who or what the shot is about
person.count = 1L4Counted in frame, not inferred from the voice
subject.descriptionL5How she looks, never who she is

wearing a red dress

look.toppersonThe garment on the visible person, not one held on a hanger
look.top_color = redpersonA black dress is a near miss, and stays out
look.patternpersonSolid, floral or geometric

talking

moment.kind = speech lineL5A spoken line, cut on its own word timings
person.speaking = trueL5On screen and speaking, not a voiceover
person.addresspersonTo camera, or to someone else

about this product

speech.entitiesL5What the line names
product.skuL5Which product is on screen
product.prominenceL5Hero of the frame, or in the background

And the parts nobody types. Is there a clean in-point? Is a bystander or a minor in frame? Is there a talent release? Does it work as a hook, a demo or an end card? Search checks edit.clean_start, rights.bystander, rights.minor_present and ad.section on every candidate, and holds back what can't be used, with the reason.

Every video is broken down before anyone searches it

L0File› L1Video› L2Chapter› L3Scene› L4Shot› L5Moment +People and their looks, tracked across the video

Same idea, different words

People write "spins". The tags say "twirls". A keyword index treats those as strangers.

Example: spins around so you can see how the dress moves

Numbers, typos and languages

"Twenty" against "20". "Droper" against "dropper". A brief written in Spanish against tags written in English.

Example: Mujer girando con un vestido

Style lives in fields

"Black and white" and "slow motion" are rarely in a description. They are a color grade and a capture speed.

Fields: color.grade, cam.speed

Structure isn't a word

A hook, a demo, an end card. These are roles in an ad, read from what happens and when, not from vocabulary.

Fields: ad.section, hook.first_line

Saying isn't showing

A line that says "watch it twirl" is not proof the clip shows a twirl. Visual claims are checked against what was seen, not what was said.

Spoken words and on-screen text never stand in for the picture.

Knowing when to say no

The library has twirls in black and geometric dresses. Asked for a red one, the right answer is nothing, and an editor would rather hear that than scrub through near misses.

Example: A woman twirling in a red dress

Narrow 131 → 32

Every moment the account has tagged is scored on the request's words, filters and ad section. Rights holds and unusable takes drop out here.

Widen +4 phrasings

The request is rewritten into up to four alternative phrasings in the taxonomy's own vocabulary. Synonyms, translations and fixed typos pull in moments the words alone would miss.

Verify 0 to 10

A model reads each candidate's saved fields, keeps only real matches, and must quote the field values that prove each one. Nothing is returned without evidence.

Figures from the test library used on this page: 18 videos, 131 moments.

Ten live searches

Where keyword search breaks, and what comes back instead

Each request below was typed into QuickAds on 11 November 2026 against a library of 18 videos and 131 moments. The clips play the exact span that was returned. For comparison, the same requests were run as plain keyword search over the same moments' descriptions and transcripts.

For partners

The same search, as an API

QuickAds' own Create Video flow finds footage for each script beat through these endpoints. Partners can call them the same way: tag a library, search it with a line of script, and cut the moment you pick.

POST/asset-meta-tags/{asset_id}?domain_id=…

Tag one uploaded image or video. Add force=true to tag it again with the latest analysis.

GET/asset-meta-tags/{asset_id}?domain_id=…

Status (queued, processing, ready, failed), progress, and the tags once ready.

POST/video-library/moments/search

A line of script in, ranked moments out, each with a timecode, score, reason and evidence.

POST/video-library/moments/browse

Every tagged moment, narrowed by filters, with no ranking. Useful for pickers.

POST/video-library/moments/clip

Cut one moment into a ready clip in 9:16, 16:9, 1:1, 4:5, 3:4, 4:3 or 21:9. Returns a task to poll.

GET/video-library/items/{item_id}/graph

A video's full breakdown: every level, record and field with its value, confidence and source.

GET/video-library/footage-graph/taxonomy

The 237 fields, their levels and allowed values. Use these keys in want and hard.

# All paths are relative to the API base URL, /api/v1
curl -X POST "$QUICKADS_API/video-library/moments/search" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "domain_id": "cd8e258d-…",
  "text": "We make twenty ad videos for your store in one week",
  "section": "hook",
  "kind": "talk",
  "want": { "person.address": "to camera" },
  "hard": { "rights.minor_present": false },
  "duration": 4,
  "k": 10,
  "min_score": 0.6
}'

Search request fields

FieldTypeWhat it does
textstring, up to 500The line of script or description, in any language. Required unless want or hard is set.
sectionstringLimit to one ad role: hook, body: problem, body: story, body: demo, body: proof, close: offer, close: CTA, end card.
kindauto | talk | brollSomeone speaking, footage without a speaker, or whichever fits better. Voiceover over visuals counts as b-roll.
wantobjectSoft preferences as taxonomy keys, for example {"cam.shot_size": "close-up"}. They raise the score; they never exclude.
hardobjectMust-match taxonomy keys. A moment without a confident value for the key is excluded.
durationnumber, secondsTarget length for spoken lines. Lines much shorter than this are skipped.
item_idsstring[]Search only these videos. Defaults to every tagged video in the brand.
kinteger, 1 to 20How many results to return. Default 10.
min_scorenumber, 0 to 1Drop results below this ranking score. A ranking score, not a probability.

Evidence on every result

evidence quotes the saved field values that justify the match, so your UI can show why a clip came up and a reviewer can check it.

Held back, with reasons

Moments blocked by rights (minors, bystanders, missing releases) or a weak take come back in held_back with the reason and whether a person can clear it.

Timing

On the 131-moment test library, searches answered in 12 to 31 seconds. Tagging a 20 to 45 second video takes about 3 to 6 minutes.

Put footage search in your product

Partner access, authentication and base URLs are set up with the QuickAds team.

Talk to QuickAds