BrandMov ships changes weekly. Everything below is either live, in flight, or committed. Newest first.
On deck for the next few releases. Move up or down as usage tells us what to prioritize.
The clone flow now reads a saved brand profile so generated variants mimic your voice out of the gate. Power users can wire their own OpenAI key for zero-quota generation.
Fixed a JSON serialization bug that could 500 when saving an ad with certain timestamp shapes. All swipe files affected have been re-mirrored to permanent storage.
Groundwork so agents can obtain scoped access without pasting long-lived API keys. Existing bm_live_* keys continue to work.
More coverage across DTC, B2B SaaS, and lifestyle. The daily Top Ads mix now pulls from a broader inventory without diluting the quality filter.
Hit a race between the analysis writer and the render path. Patched with a read-through cache; no more 'Adapt my brand' failures under load.
A hardcoded US default meant tracked EU / IN brands were pulling the wrong regional feed. Country now flows end-to-end and stuck rows have been requeued.
Cards now surface days-live, refresh cadence, distinctiveness score, and estimated spend tier — the four signals we found actually predict a winner.
Lead the story with the suite, keep swipe as pillar #2. Made room for the ad-manager, short links, and MCP pillars to earn visits from the homepage.
Ad copy analysis no longer blocks the scrape loop; batch API cut a full night's job from 88 hours back down to 8.
The Ad Intelligence search box was silently returning empty for some brands when the upstream request was throttled. Now retries transparently.
Every short link now supports a custom branded root — not just brndm.link. QR codes render with the branded URL baked in.