Creative Details

Quality Score: N/A

The advertisement promotes the Windsor Arms Hotel in Toronto, Canada, with a booking option through Expedia. It highlights the starting price of $428 and encourages viewers to book now.null

Creative Information

CID:22918
CRID:2eldb6v4
Domain:expedia.com
Seat:34231
Size:300x250
Bid:$0.90
Timestamp:3/12/2025, 2:53:47 PM
Declared IAB Categories:

    Analysis

    3 succeeded2 failed(60% complete)
    TaskStatusLast UpdatedDurationActions
    ad_analysisfailed: PrismaClientKnownRequestError: Invalid `s.chat.completions.create()` invocation in /var/task/dist/index.js:178:3157 175 Return the structured classification JSON as per the format. 176 `}};function k(e,a){let n=e==="creative"?Z.SUMMARY_TEXT:ee.SUMMARY_TEXT,i=!a||a.trim()===""?"NONE":a.substring(0,5e3);return{SYSTEM:n.SYSTEM,USER:`${n.USER} 177 → 178 ${i}`}}var E=async(e,a,n,i,t,s)=>{try{let g=(await s.chat.completions.create( An operation failed because it depends on one or more records that were required but not found. Expected 2 records to be connected, found only 0.3/13/2025, 4:26:23 AM16.10s
    adomain_analysisfailed: PrismaClientKnownRequestError: Invalid `e.domain.findUnique()` invocation in /var/task/dist/index.js:180:1316 177 178 ${i}`}}var E=async(e,a,n,i,t,s)=>{try{let g=(await s.chat.completions.create({...b,messages:[{role:"system",content:e.SYSTEM},{role:"user",content:[{type:"text",text:e.USER(a,n,i,t)}]}],response_format:{type:"json_schema",json_schema:{name:"contentClassification",description:"A structured JSON object containing an array of classified categories with confidence scores.",strict:!0,schema:{type:"object",properties:{classifications:{type:"array",items:{type:"object",properties:{category:{type:"string",description:"The assigned IAB or sensitive content category."},confidence:{type:"number",description:"The confidence score of the classification (0.0 - 1.0)."}},required:["category","confidence"],additionalProperties:!1}}},required:["classifications"],additionalProperties:!1}}}})).choices[0].message.content;if(!g)return[];let c=JSON.parse(g);return!c||!c.classifications||!Array.isArray(c.classifications)?[]:c.classifications.every(u=>typeof u.category=="string"&&typeof u.confidence=="number")?c.classifications:[]}catch(l){return console.error("Error in classifyContent:",l),[]}};async function v({type:e,summary:a,textFromImage:n,adomain:i,openai:t}){let s=await E(C.IAB,e,a,n,i,t);return console.log("IAB Classification: ",s),s}async function A({type:e,summary:a,textFromImage:n,adomain:i,openai:t}){let s=await E(C.IAB_AD_PRODUCT,e,a,n,i,t);return console.log("IAB Ad Product Classification: ",s),s}async function I({type:e,summary:a,textFromImage:n,adomain:i,openai:t}){let s=await E(C.SENSITIVE,e,a,n,i,t);return console.log("Sensitive Classification: ",s),s}async function te(e){let n=await(await fetch(e)).text();return n||(console.error(`Error getting HTML for ${e}`),"")}async function P(e,a,n,i="creative"){console.log("getting text and summary for type: ",i);let t=await te(a),s=k(i,t);console.log("Prompts: ",s);let l=[{type:"text",text:s.USER},{type:"image_url",image_url:{url:e}}],c=(await n.chat.completions.create({...b,messages:[{role:"system",content:s.SYSTEM},{role:"user",content:l}],response_format:{type:"json_schema",json_schema:{name:"extractedTextAndSummary",description:"A structured JSON object with extracted text and summary.",strict:!0,schema:{type:"object",properties:{extractedText:{type:"array",items:{type:"string"},description:"An array of strings, each representing a text element extracted from the image."},summary:{type:["string","null"],description:"A brief summary of the image."}},required:["extractedText","summary"],additionalProperties:!1}}}})).choices[0].message.content;if(!c)return{extractedText:[],summary:""};try{let r=JSON.parse(c);return console.log("Summary and text response-: ",i,r),r}catch(r){return console.error("Error parsing JSON response:",r,c),{extractedText:[],summary:""}}}var w=require("@aws-sdk/client-s3"),x=require("@aws-sdk/s3-request-presigner");var G=async(e,a,n)=>{let i=await e.creative.findUnique({where:{id:a},include:{auditResult:!1}});if(!i)throw console.error("Creative not found",a),new Error("Creative not found");console.log("Creative: ",i);let t=await ne({data:{creative:i,adomain:i.adomain},s3:n});return console.log("Creative analysis result:",t),await e.creative.update({where:{id:i.id},data:{summary:t.summary,iabCategories:{connect:t.iabCategoriesCodes.map(s=>({code:s.category}))},iabProducts:{connect:t.iabAdProductIds.map(s=>({id:s.id}))},tags:{connect:t.foundSensitiveTags.map(s=>({name:s.category}))}}}),t};async function ne({data:e,s3:a}){console.log("Analyzing with OpenAI:",e.creative.id);let n="creative",i=new U.default({apiKey:process.env.OPENAI_API_KEY}),{summary:t,textFromImage:s}=await ae(e,i,a),l=await v({type:n,summary:t,textFromImage:s,adomain:e.adomain,openai:i}),g=await A({type:n,summary:t,textFromImage:s,adomain:e.adomain,openai:i}),c=await I({type:n,summary:t,textFromImage:s,adomain:e.adomain,openai:i}),r=[];for(let[o,m]of Object.entries(S)){let d=l.find(p=>m.includes(p.category));d&&r.push({category:o,confidence:d.confidence})}let u=[];for(let[o,m]of Object.entries(f)){let d=g.find(p=>m===p.category);d&&u.push({id:parseInt(o),confidence:d.confidence})}return{iabCategoriesCodes:r.filter(o=>o.confidence>=.7),iabAdProductIds:u.filter(o=>o.confidence>=.5),foundSensitiveTags:c,summary:t}}async function ae(e,a,n){console.log("Getting summary and text from creative image:",e.creative.id);let i=null,t=[],s=null;if(e.creative.ad_format==="native"){let r=null,u=JSON.parse(JSON.parse(e.creative.raw_json).adm);for(let o=0;o<u.native.assets.length;o++){let m=u.native.assets[o];if(m.data&&m.data.value&&t.push(m.data.value),m.img&&m.img.url){let d=m.img.w*m.img.h;(!r||d>r.resolution)&&(r={url:m.img.url,resolution:d})}}if(r)i=r.url;else throw new Error("No image found in native creative")}t.length>0&&(s=` 179 (Parsed text from native assets: ${t.join(` → 180 - `)})`),i||(console.log("Getting non-native creative image URL"),i=await ie(e,n));let l=await se(e,n);console.log("Img URL: ",i),console.log("Html URL: ",l);let{summary:g,textFromImage:c}=await P(i,l,a,"creative");return{summary:`${g}${s}`,textFromImage:c}}async function ie(e,a){let n=`ads/${e.creative.id}/screenshot_0.jpg`,i=new w.GetObjectCommand({Bucket:process.env.R2_BUCKET||"",Key:n});try{return await(0,x.getSignedUrl)(a,i,{expiresIn:3600})}catch(t){console.error("Error getting creative image URL:",t)}return`${process.env.CDN_URL}/ads/${e.creative.id}/screenshot_0.jpg?${Math.random().toString(36).substring(2,15)}`}var se=async(e,a)=>{let n=`ads/${e.creative.id}/index.html`,i=new w.GetObjectCommand({Bucket:process.env.R2_BUCKET||"",Key:n});return await(0,x.getSignedUrl)(a,i,{expiresIn:3600})};var N=B(require("openai"));var R=require("@aws-sdk/client-s3"),D=require("@aws-sdk/s3-request-presigner");var L=async(e,a,n,i)=>{let t=null;if(n?t=await e.domain.findUnique( An operation failed because it depends on one or more records that were required but not found. Expected 3 records to be connected, found only 0.3/13/2025, 4:26:26 AM18.88s
    adomain_capturesuccess3/12/2025, 2:54:35 PM0.28s
    ad_rendersuccess3/12/2025, 2:54:30 PM27.04s
    brand_mappingsuccess3/12/2025, 2:53:52 PM3.80s

    Analysis Results

    Ad Format: banner

    Brands: Expedia

    Size:300x250
    Data Transferred:1304.20 KB
    Render Time:13.77 Seconds
    Creative Inferred IAB Categories:
    • Travel (IAB20)
    • Shopping (IAB22)
    Creative Inferred IAB Ad Products:
    • Travel and Tourism (1529)
    • Hotels and Resorts (1533)
    • Travel Agents and Online Travel Services (1541)
    Domain Inferred IAB Categories:
    • Travel (IAB20)
    • Shopping (IAB22)
    Domain Inferred IAB Ad Products:
    • Travel and Tourism (1529)
    • Travel Agents and Online Travel Services (1541)
    • Travel Packages (1542)
    Landing Page:
    Total Ad Size:1332.25 KB
    Requests Made:
    URLSize (KB)
    https://pagead2.googlesyndication.com/pagead/managed/js/activeview/current/ufs_web_display.js218.47
    https://s0.2mdn.net/879366/html_inpage_rendering_lib_200_281.js171.41
    https://s0.2mdn.net/879366/Enabler_01_252.js122.32
    https://ad.doubleclick.net/ddm/adj/N6090.284566THETRADEDESK/B26175063.390389616;dc_ver=105.309;dc_eid=40004001;sz=300x250;u_sd=1;gdpr=0;nel=1;dc_adk=1703049610;ord=532xe2;click=https%3A%2F%2Finsight.adsrvr.org%2Ftrack%2Fclk%3Fimp%3D33c4f8ff-1781-4bf5-8015-8c0e1005ba1c%26ag%3Dbzx25ki%26sfe%3D1a091fa4%26sig%3DMfbcq1mWEYB8bGja220pYrT0pPX-_Oc-4UtHRA6ghWY.%26crid%3D2eldb6v4%26cf%3D8358883%26fq%3D0%26t%3D1%26td_s%3Dslashdot.org%26rcats%3Djba%26mste%3D%26mfld%3D4%26mssi%3D%26mfsi%3D%26sv%3Dpubmatic%26uhow%3D82%26agsa%3D%26wp%3D1.000000%26rgz%3DN3A%26dt%3DPC%26osf%3DOSX%26os%3DOSX1015%26br%3DChrome%26svpid%3D162538%26rlangs%3Den%2Cos%26mlang%3Den%26did%3DPM-VKCG-4829%26rcxt%3DOther%26tmpc%3D-3.909999999999968%26vrtd%3D%26osi%3D%26osv%3D%26daid%3D%26dnr%3D0%26vpb%3D%26c%3D1~KLUv_SNa1XJFpyUDAAOFEd6XF-bLw_ThRfDdhfDt3mfnfUF8O1wh0f1f1f-QzMB6X5H_eWFlZV0b6ptpm3VRc-ZzWkPTDvw98nF-5Z4wy_3e28wazBcJ_OKxa5LKN-1lLESC4GrsEhEaI8eS6XflSRA.%26dur%3D1~KLUv_SMFoCgkv3UAAAADfACS3_PWW_D6uAIf%26durs%3DQ-eu-9%26crrelr%3D%26npt%3D%26bdc%3D22%26mk%3DApple%26testid%3Dctxmp-570-c%2520%26adpt%3Dpubo%26fpa%3D589%26pcm%3D3%26ict%3DCellularNetwork4G%26said%3D2B80651B-5BC0-497C-87C0-C7FD4FEF6440B%26auct%3D1%26tail%3D1%26r%3D;uach=WyIiLCIiLCIiLCIiLCIiLG51bGwsMCxudWxsLCIiLG51bGwsMF0.;dc_rfl=1,https%3A%2F%2Fecho-server.dangoldin.workers.dev%2F$0;xdt=0;crlt=XsJ4ocSsS3;gcsr=m;stc=1;chaa=1;sttr=473;prcl=s86.56
    https://s0.2mdn.net/dynamic/2/11194819/images.trvl-media.com/lodging/1000000/60000/53000/52918/a18b3dc8.jpg-impolicy=fcrop-w=1000-h=666-quality=medium_1740927742441_a18b3dc8.jpg83.88
    https://s0.2mdn.net/dynamic/2/11194819/images.trvl-media.com/lodging/1000000/60000/53000/52918/6e476ab0.jpg-impolicy=fcrop-w=1000-h=666-quality=medium_1740927742441_6e476ab0.jpg68.44
    https://www.googletagservices.com/dcm/impl_v105.js68.05
    https://s0.2mdn.net/sadbundle/17305305256487083057/300x250-Expedia_Properties-300x250/ReproRounded-Screen.woff63.21
    https://pagead2.googlesyndication.com/bg/h0TYAHLXMNTIyftboTf9J-S1mkrr9DGn1ULut5GTwSQ.js57.57
    https://s0.2mdn.net/ads/studio/cached_libs/gsap_3.2.4_min.js57.35

    Advertiser Domain

    Advertiser Domain

    Ad Preview

    Landing Page

    Landing Page

    Creatives