{"template_id":"tmpl_scaffold_creative_dna","name":"Decode your ad creative","manifest_yaml":"version: '1.0'\nmetadata:\n  name: Decode your ad creative\n  description: 'Make your ad library searchable along the axes that predict performance: creative style, on-screen text, and\n    audio. Includes DNA clusters, a campaign taxonomy skeleton, and multi-axis retriever presets.'\nnamespaces:\n- name: creative_dna\n  description: 'Make your ad library searchable along the axes that predict performance: creative style, on-screen text, and\n    audio. Includes DNA clusters, a campaign taxonomy skeleton, and multi-axis retriever presets.'\n  feature_extractors:\n  - name: universal_extractor\n    version: v1\n  - name: scrolling_text_extractor\n    version: v1\n  - name: audio_fingerprint_extractor\n    version: v1\n  - name: text_extractor\n    version: v1\n  payload_indexes:\n  - field_name: metadata.advertiser\n    type: keyword\n  - field_name: metadata.vertical\n    type: keyword\n  - field_name: metadata.campaign\n    type: keyword\n  - field_name: metadata.funnel_stage\n    type: keyword\n  - field_name: metadata.title\n    type: text\n  auto_create_indexes: false\nstorage_connections: []\nbuckets:\n- name: ad_library\n  namespace: creative_dna\n  description: Ad creatives with campaign metadata\n  schema:\n    properties:\n      video:\n        type: video\n        description: Ad creative video (MP4, MOV, WebM)\n      metadata:\n        type: object\n        description: Campaign metadata\n        properties:\n          title:\n            type: string\n            description: Creative title\n          advertiser:\n            type: string\n            description: Advertiser / brand\n          vertical:\n            type: string\n            description: Industry vertical\n          campaign:\n            type: string\n            description: Campaign identifier\n          funnel_stage:\n            type: string\n            description: prospecting | retargeting | brand_awareness\n          format:\n            type: string\n            description: Aspect ratio, e.g. 16:9\n          duration_seconds:\n            type: integer\n            description: Duration\n- name: campaign_nodes\n  namespace: creative_dna\n  description: Campaign taxonomy node definitions (text)\n  schema:\n    properties:\n      content:\n        type: text\n        description: Node label + description text\n      metadata:\n        type: object\n        description: Node metadata\n        properties:\n          label:\n            type: string\n            description: Node display label\n          class_id:\n            type: string\n            description: Stable node identifier\nbucket_syncs: []\ncollections:\n- name: ad_creatives_video\n  namespace: creative_dna\n  description: 'Creative DNA base axis: scene-level video embeddings'\n  source:\n    type: bucket\n    bucket: ad_library\n  feature_extractor:\n    name: universal_extractor\n    version: v1\n    input_mappings:\n      content: video\n  enabled: true\n- name: ad_onscreen_text\n  namespace: creative_dna\n  description: On-screen/scrolling text extracted from ad creatives\n  source:\n    type: bucket\n    bucket: ad_library\n  feature_extractor:\n    name: scrolling_text_extractor\n    version: v1\n    input_mappings:\n      video: video\n  enabled: true\n- name: ad_audio_fingerprint\n  namespace: creative_dna\n  description: CLAP audio embeddings for soundtrack similarity\n  source:\n    type: bucket\n    bucket: ad_library\n  feature_extractor:\n    name: audio_fingerprint_extractor\n    version: v1\n    input_mappings:\n      video: video\n  enabled: true\n- name: campaign_node_embeddings\n  namespace: creative_dna\n  description: Text embeddings of campaign taxonomy nodes (funnel stages + hook archetypes)\n  source:\n    type: bucket\n    bucket: campaign_nodes\n  feature_extractor:\n    name: text_extractor\n    version: v1\n    input_mappings:\n      text: content\n  enabled: true\nretrievers:\n- name: creative_style_search\n  namespace: creative_dna\n  description: 'Multi-stage creative search: broad scene-axis recall, then MMR diversification so results span distinct creative\n    styles rather than near-duplicate scenes from the same ad.'\n  collections:\n  - ad_creatives_video\n  input_schema:\n    query:\n      type: text\n      description: Describe the creative style or content you want\n      required: true\n      default: energetic product launch with bold on-screen text\n      examples:\n      - energetic product launch with bold on-screen text\n      - candidate speaking directly to camera\n      - testimonial with emotional music\n  stages:\n  - stage_name: style_recall\n    stage_id: feature_search\n    parameters:\n      searches:\n      - feature_uri: mixpeek://universal_extractor@v1/gemini-embedding-2\n        query:\n          input_mode: text\n          text: '{{INPUT.query}}'\n        top_k: 50\n      final_top_k: 25\n  - stage_name: diversify\n    stage_id: mmr\n    parameters:\n      lambda_param: 0.7\n      top_k: 12\n- name: campaign_node_search\n  namespace: creative_dna\n  description: 'Taxonomy classifier retriever: match text against the campaign taxonomy nodes'\n  collections:\n  - campaign_node_embeddings\n  input_schema:\n    content_text:\n      type: text\n      description: Text to classify against taxonomy nodes\n      required: true\n  stages:\n  - stage_name: node_search\n    stage_id: feature_search\n    parameters:\n      searches:\n      - feature_uri: mixpeek://text_extractor@v1/multilingual_e5_large_instruct_v1\n        query:\n          input_mode: text\n          text: '{{INPUT.content_text}}'\n        top_k: 5\n      final_top_k: 3\nclusters:\n- name: dna_style_clusters\n  namespace: creative_dna\n  source_collections:\n  - ad_creatives_video\n  cluster_type: vector\n  vector_config:\n    feature_uri: mixpeek://universal_extractor@v1/gemini-embedding-2\n    clustering_method: kmeans\n    algorithm_params:\n      n_clusters: 6\n  llm_labeling:\n    enabled: true\ntaxonomies:\n- name: campaign_taxonomy\n  namespace: creative_dna\n  description: 'Campaign taxonomy skeleton: funnel stages + hook archetypes (PRD §5.2)'\n  config:\n    taxonomy_type: flat\n    retriever: campaign_node_search\n    input_mappings:\n    - input_key: content_text\n      source_type: payload\n      path: text\n    source_collection:\n      collection: campaign_node_embeddings\n      enrichment_fields:\n      - field_path: text\n        merge_mode: replace\n        target_field: campaign_node_text\ntriggers: []\nwebhooks: []\n","manifest":{"version":"1.0","metadata":{"name":"Decode your ad creative","description":"Make your ad library searchable along the axes that predict performance: creative style, on-screen text, and audio. Includes DNA clusters, a campaign taxonomy skeleton, and multi-axis retriever presets."},"namespaces":[{"name":"creative_dna","description":"Make your ad library searchable along the axes that predict performance: creative style, on-screen text, and audio. Includes DNA clusters, a campaign taxonomy skeleton, and multi-axis retriever presets.","feature_extractors":[{"name":"universal_extractor","version":"v1"},{"name":"scrolling_text_extractor","version":"v1"},{"name":"audio_fingerprint_extractor","version":"v1"},{"name":"text_extractor","version":"v1"}],"payload_indexes":[{"field_name":"metadata.advertiser","type":"keyword"},{"field_name":"metadata.vertical","type":"keyword"},{"field_name":"metadata.campaign","type":"keyword"},{"field_name":"metadata.funnel_stage","type":"keyword"},{"field_name":"metadata.title","type":"text"}],"auto_create_indexes":false}],"storage_connections":[],"buckets":[{"name":"ad_library","namespace":"creative_dna","description":"Ad creatives with campaign metadata","schema":{"properties":{"video":{"type":"video","description":"Ad creative video (MP4, MOV, WebM)"},"metadata":{"type":"object","description":"Campaign metadata","properties":{"title":{"type":"string","description":"Creative title"},"advertiser":{"type":"string","description":"Advertiser / brand"},"vertical":{"type":"string","description":"Industry vertical"},"campaign":{"type":"string","description":"Campaign identifier"},"funnel_stage":{"type":"string","description":"prospecting | retargeting | brand_awareness"},"format":{"type":"string","description":"Aspect ratio, e.g. 16:9"},"duration_seconds":{"type":"integer","description":"Duration"}}}}}},{"name":"campaign_nodes","namespace":"creative_dna","description":"Campaign taxonomy node definitions (text)","schema":{"properties":{"content":{"type":"text","description":"Node label + description text"},"metadata":{"type":"object","description":"Node metadata","properties":{"label":{"type":"string","description":"Node display label"},"class_id":{"type":"string","description":"Stable node identifier"}}}}}}],"bucket_syncs":[],"collections":[{"name":"ad_creatives_video","namespace":"creative_dna","description":"Creative DNA base axis: scene-level video embeddings","source":{"type":"bucket","bucket":"ad_library"},"feature_extractor":{"name":"universal_extractor","version":"v1","input_mappings":{"content":"video"}},"enabled":true},{"name":"ad_onscreen_text","namespace":"creative_dna","description":"On-screen/scrolling text extracted from ad creatives","source":{"type":"bucket","bucket":"ad_library"},"feature_extractor":{"name":"scrolling_text_extractor","version":"v1","input_mappings":{"video":"video"}},"enabled":true},{"name":"ad_audio_fingerprint","namespace":"creative_dna","description":"CLAP audio embeddings for soundtrack similarity","source":{"type":"bucket","bucket":"ad_library"},"feature_extractor":{"name":"audio_fingerprint_extractor","version":"v1","input_mappings":{"video":"video"}},"enabled":true},{"name":"campaign_node_embeddings","namespace":"creative_dna","description":"Text embeddings of campaign taxonomy nodes (funnel stages + hook archetypes)","source":{"type":"bucket","bucket":"campaign_nodes"},"feature_extractor":{"name":"text_extractor","version":"v1","input_mappings":{"text":"content"}},"enabled":true}],"retrievers":[{"name":"creative_style_search","namespace":"creative_dna","description":"Multi-stage creative search: broad scene-axis recall, then MMR diversification so results span distinct creative styles rather than near-duplicate scenes from the same ad.","collections":["ad_creatives_video"],"input_schema":{"query":{"type":"text","description":"Describe the creative style or content you want","required":true,"default":"energetic product launch with bold on-screen text","examples":["energetic product launch with bold on-screen text","candidate speaking directly to camera","testimonial with emotional music"]}},"stages":[{"stage_name":"style_recall","stage_id":"feature_search","parameters":{"searches":[{"feature_uri":"mixpeek://universal_extractor@v1/gemini-embedding-2","query":{"input_mode":"text","text":"{{INPUT.query}}"},"top_k":50}],"final_top_k":25}},{"stage_name":"diversify","stage_id":"mmr","parameters":{"lambda_param":0.7,"top_k":12}}]},{"name":"campaign_node_search","namespace":"creative_dna","description":"Taxonomy classifier retriever: match text against the campaign taxonomy nodes","collections":["campaign_node_embeddings"],"input_schema":{"content_text":{"type":"text","description":"Text to classify against taxonomy nodes","required":true}},"stages":[{"stage_name":"node_search","stage_id":"feature_search","parameters":{"searches":[{"feature_uri":"mixpeek://text_extractor@v1/multilingual_e5_large_instruct_v1","query":{"input_mode":"text","text":"{{INPUT.content_text}}"},"top_k":5}],"final_top_k":3}}]}],"clusters":[{"name":"dna_style_clusters","namespace":"creative_dna","source_collections":["ad_creatives_video"],"cluster_type":"vector","vector_config":{"feature_uri":"mixpeek://universal_extractor@v1/gemini-embedding-2","clustering_method":"kmeans","algorithm_params":{"n_clusters":6}},"llm_labeling":{"enabled":true}}],"taxonomies":[{"name":"campaign_taxonomy","namespace":"creative_dna","description":"Campaign taxonomy skeleton: funnel stages + hook archetypes (PRD §5.2)","config":{"taxonomy_type":"flat","retriever":"campaign_node_search","input_mappings":[{"input_key":"content_text","source_type":"payload","path":"text"}],"source_collection":{"collection":"campaign_node_embeddings","enrichment_fields":[{"field_path":"text","merge_mode":"replace","target_field":"campaign_node_text"}]}}}],"triggers":[],"webhooks":[]}}