# moneycanbuy.fun — Everyone has a price.

An original, 30-second, flat 2D promo film. Every frame is rebuilt from Python-generated SVG, the two supplied brand images, and the bundled Quicksand font. Music and effects are synthesized from mathematical waveforms and seeded noise. No image, video, music, or voice generation model, stock footage, stock illustration, or recorded sound is used.

## Delivered files

All six requested outputs are under `artifacts/` and are deliberately excluded from source tracking.

| File | Specification |
|---|---|
| `promo-16x9.mp4` | 1920 × 1080; 30.000 seconds; 900 frames; constant 30 fps |
| `promo-9x16.mp4` | 1080 × 1920; 30.000 seconds; 900 frames; constant 30 fps |
| `toad-rig.png` | 1800 × 1400; supplied drawing cut into parts, normal puppet, plush frog suit |
| `poster.png` | 1920 × 1080; the decoded landscape frame at exactly 23 seconds |
| `contact-sheet.png` | 2040 × 2290; decoded frames at 0, 2, 4, …, 28 seconds from **each** MP4 |
| `README.md` | This document |

Both films use H.264 High Profile, `yuv420p`, AAC LC stereo at 48 kHz, and MP4 faststart (`moov` before `mdat`). Both are under 60 MiB. The AAC-decoded sample peak is **−0.983 dBFS**, approximately the requested −1 dBFS; measured true peak is −1.0 dBTP. The original score is 120 BPM, with synchronized typing, tap, door, gasp-like noise swell, shutters, slip, stamp, buzz, coins, and ring effects. No spoken words are present. The musical ending reaches silence cleanly at the final frame.

The portrait video is an independent full-resolution render of the same animation and camera choreography, using the centre 607.5 × 1080 region of the 1920 × 1080 landscape world. There are no letterbox bars. The shared black world is intentional. Supporting bank architecture extends into the landscape wings.

## Rebuild offline

Run from the repository root:

```sh
python3 rebuild.py
```

The build uses Python 3's standard library, the host's Cairo, librsvg, Pango, and Fontconfig shared libraries, and `ffmpeg`/`ffprobe` with libx264 and AAC support. These tools were already installed on the production machine; no Python package installation is needed. The only downloaded dependency is the open font, which is bundled as ordinary source files with its license. Rebuilding uses no network and does not read `.imd/`, the original input locations, or any configuration or credentials. This job used Python 3.14.4 and FFmpeg 8.0.1 on Linux.

Both formats render concurrently by default. Use `python3 rebuild.py --sequential` on a machine with less memory. Intermediates and machine-readable check reports go to `build/`; they are disposable. A typical rebuild on this machine takes a few minutes. Exact encoded bytes can vary with FFmpeg or font-rendering library versions; the animation, seeded synthesis, shot timing, and source frames are deterministic for a fixed toolchain.

Useful individual commands:

```sh
python3 src/mascot.py
python3 src/render.py --format vertical --frame 23 --output build/portrait-preview.png
python3 src/audit_source.py
python3 src/verify.py
```

## Source map

- `src/film.py`: all shots, vector props, typography, camera movement, transitions, sprite animation, particles, and both aspect-ratio cameras.
- `src/mascot.py`: lossless source-image slicing, animated face, mouth, eyelids, body, limbs, necklace and tag; matching legs and plush suit. Original face and jewelry are retained as supplied pixels.
- `src/cast.py`: the same seven customers, handbag-carrying old lady, guard, teller, and bank throughout.
- `src/swarm.py`: 260 deterministic boids with local separation, alignment and cohesion, plus an orbital steering field. Every agent is a white square with a green eye.
- `src/audio.py`: original stereo synthesis with beat arrangement and timed effects.
- `src/svgtools.py`: small `ctypes` bridge to the installed SVG/font rasterizer; no third-party Python packages.
- `src/render.py`, `src/deliverables.py`: final encoding and extraction of actual decoded poster/contact frames.
- `src/verify.py`, `src/audit_source.py`: technical, motion, sound, typography-budget and source-hold checks.
- `src/assets/`: the supplied mark and wordmark, plus reproducible source cuts.
- `src/fonts/Quicksand.ttf`, `src/fonts/OFL.txt`: Quicksand variable font, rendered at weight 700, and its SIL Open Font License.

## Interpretation and limitations

The long dare is paged as “Walk into a bank”, “in a frog suit.”, and “Explain DeFi to the queue.” The closing slogan is likewise typed in two successive clauses. It then clears before “built on IMD” appears. This resolves the brief's conflict between a six-word maximum and simultaneously displaying the complete six-word slogan, wordmark, token coin, and three-word credit. The final held frame contains the supplied wordmark, the landed `$YOLO` coin, and “built on IMD”. The source audit counts both the brand name and `$YOLO` as words and confirms a maximum of six visible words, with `3-5` as the only numeral.

The final 45 source frames (28.5–30.0 seconds) are identical. H.264 can introduce imperceptible reconstruction differences between encoded frames, so the verifier reports both exact decoded hashes and a measured luma-difference bound. AAC has normal codec-frame padding if decoded outside its MP4 presentation timeline; both presented audio streams and both MP4 files are exactly 30.000 seconds.

The check scripts inspect formats and motion/audio measurements, not artistic merit. The contact sheet and additional boundary frames were visually reviewed; overlapping crowd members, phone text, and mascot framing were corrected before final delivery. No text is placed over a face. The brand's supplied raster edges remain raster edges when enlarged; all additional artwork and lettering are rendered from code at output resolution.

## Validation

Each MP4 was probed with `ffprobe` and decoded in full with `ffmpeg`. Checks cover 900 decoded frames, dimensions, 30 fps, exact presentation duration, H.264/yuv420p, AAC/stereo/48 kHz, faststart, file size, no frozen interval longer than one second before 28.5 seconds, the final still hold, decoded audio peak, no silent 50 ms window before 29.5 seconds, and a clean audio tail. The PNG outputs were also probed and decoded. The contact sheet contains frames extracted from the final encoded files, and the poster is extracted at 23.000 seconds.

Run the verifier to reproduce `build/verification.json` and the source audit to reproduce `build/source-audit.json`. Final measured file sizes and inspection results are recorded in `validation.json` in the source bundle.

## Rights

All new animation, additional drawings, source code, music, and sound effects were created for this job. **moneycanbuy.fun may use, modify, and publish this work and the delivered films and artwork without attribution**, including commercial use. The supplied toad and wordmark retain their existing ownership. Quicksand is distributed under the bundled SIL Open Font License; publishing the rendered films does not require a font credit. Retain `OFL.txt` when redistributing the font itself.

Supplied input SHA-256 values:

- Mark: `f36cb519912496d0a5e3240758246dabdbfebb34935e861274c488ed501fc743`
- Wordmark: `cfceb4a989fbf9636c26f6798a77bcc00bce6e332f384e4b084c46a710632ce8`
