Project Info
This project did not submit a demo video on Devpost.
Inspiration
Creative teams guess which ads work; we'd much prefer fast, explainable signals across video, image, and audio to pick winners before spend.
What it does
Extracts features from images, videos, and audio. Merges video+audio per video; outputs JSON with interpret-able metrics (shots, motion, text/CTA timing, product reveal, end-card, thumbnails, faces, color, clutter, platform fit, loop-readiness, audio speech/music).
How we built it
We created a modular pipeline: image/: visual semantics, attention maps, OCR, optional LLM captioning. videos/: per-metric modules with parallel per-video execution and dependency waves. Sub-tasks are parallelize-able audio/: separation, ASR, speech/music/text analysis. Orchestrator that runs image, and in parallel runs video and audio, then merges by filename stem.
Challenges we ran into
Hitting sub‑second per-metric latency without GPUs. Aggregation can almost entirely be parallelized so the result will only take the longest of each metric, summed if dependencies exist. Avoiding redundant computation across steps (saliency/gray/MSER reuse).
Accomplishments we're proud of
End‑to‑end, explainable feature set with per‑metric breakdowns, parallel per‑video tasking and A/V concurrency, tweakable speed/quality knobs and weights, simple JSON outputs ready for ranking/ML.
What we learned
Lightweight CV proxies (saliency/MSER/flow) are strong baselines. Caching + downsampling matter more than we expected. Clear dependency waves simplify parallelism and debugging.
What's next
We still need to add lightweight logo/face detectors and text OCR keywords for CTAs. For full functionality, we should train a learned ranker on historical performance. We also need to add web UI for previews, breakdowns, and A/B comparisons. Integrating this with AppLovin would be the ultimate step!
Ad Intelligence
Setup
- Run the setup script:
./setup.sh
- Activate the virtual environment:
source .venv/bin/activate
The setup script will automatically download the ad assets and install all required dependencies.
- Finally, install Tesseract:
brew install tesseract
TPP-Gaze Submodule Setup
Required for the attention map features.
- Install brew dependencies:
brew install wget
- Follow the setup instructions at https://github.com/phuselab/tppgaze:
git clone https://github.com/phuselab/tppgaze
cd tppgaze
pip install -r requirements.txt
- Within the adintelligence folder, run the following.
bash download_models.sh
To run Audio/Video/Image Metrics
- Checkout the relevant branch. Images are on the main branch.
git checkout [audio/videos/main]
- Activate the virtual environment and run the setup:
source .venv/bin/activate
[repeat steps above]
The setup script will automatically download the ad assets and install all required dependencies.
- Read each branch's README to see how to run the scripts. Details on what is run will be described in the provided markdown files.
Citation
This project uses the TPP-Gaze model for gaze dynamics and scanpath prediction.
If you use or build upon this component, please cite the following work:
@inproceedings{damelio2025tppgaze,
title = {TPP-Gaze: Modelling Gaze Dynamics in Space and Time with Neural Temporal Point Processes},
author = {D'Amelio, Alessandro and Cartella, Giuseppe and Cuculo, Vittorio and Lucchi, Manuele and Cornia, Marcella and Cucchiara, Rita and Boccignone, Giuseppe},
booktitle = {Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision},
year = {2025}
}
For more information, visit the official repository: https://github.com/phuselab/tppgaze
Analysis
View
Metric
- 10
- 10
- 1
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- PyTorchIn code
- ReactIn code
6 of 6 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
100 KB
Source files
26
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
qedsphere/ad-intelligence-challenge
250 files · 243.7 MB · @ d878e82
Structure
Interface
1 file · 0%Screens, components and styles rendered to the user.
Application logic
117 files · 47%Domain rules, services and shared utilities.
+19 more
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Python77%
- Markdown17%
- JavaScript3%
- CSS2%
- Shell1%
- HTML0%
- Other (1)0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
requirements.txt
pypi · 13- easyocr
- faiss-cpu
- matplotlib
- numpy
- open-clip-torch
- opencv-python
- Pillow
- pytesseract
- pytest
- torch
- torchvision
- tqdm
- ultralytics
frontend/package.json
npm · 12- axios
- react
- react-dom
- +9 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.