Deployed Social Studio v3 with Brand System Pack (14 visual styles), AI-governed caption generation, 3-layer guardrails, and cross-platform publishing to Facebook, Instagram, Threads, and LinkedIn. 7 commits, ~1,800 LOC.

We had a problem: every social post we published looked like it came from a different company. The AI captions were generic. The images were stock-grade. The brand voice drifted with every prompt.
So we built a Brand Intelligence Layer — 14 locked visual styles, a 3-layer caption enforcement system, and cross-platform publishing that actually works.
Our AI captions kept using terms we explicitly banned ("comprehensive," "leverage," "revolutionary"). The prompt said "don't use these words." The AI used them anyway. Every. Single. Time.
We tried fixing it with better prompts. Did not work. The model optimizes for fluency, not compliance. So we added two more enforcement layers behind the prompt:
enforceCaption() scans every generated caption against a blocked-terms list and auto-appends a CTA if one is missing. Hard block, not a suggestion.Three layers. Prompts catch 70%. Code catches 25%. Humans catch the remaining 5%.
Threads has a 500-character hard limit. Not 500 words — 500 characters. Our first batch of posts failed silently because the API returns a success response even when the post is truncated to nothing.
The fix: server-side truncation with paragraph-break detection. If the caption exceeds 500 chars, cut at the nearest paragraph break. If no paragraph break exists, cut at the nearest sentence break. Never mid-word.
Each style locks in a color palette, composition zones, and typography treatment. "System Architecture" uses dark backgrounds with blueprint-style overlays — aimed at investors and technical founders. "Filipino Heritage" uses warm earth tones with cultural motifs — aimed at partnership audiences.
The point: the style is selected before the image is generated. No more "make it look professional" prompts that produce generic corporate imagery.