Skip to content

Repository files navigation

Visual Factory Kit

Create once. Ship everywhere.

Visual Factory Kit is a deterministic image factory for marketing teams that need branded creative across every major platform without redesigning the same asset twenty different ways.

Give it a JSON request and a brand pack. It renders platform-ready PNGs for social posts, ads, thumbnails, Google Business Profile posts, Pinterest pins, carousels, Reels, Stories, OG cards, and blog headers. Every output gets a provenance file and a QA report.

No generic AI imagery. No mystery Canva resizing. No "it looked fine on my screen" creative handoff.

Example Outputs

These are generated from the included KaiCalls brand pack and showcase request.

Instagram Reel Facebook Feed Pinterest Pin
KaiCalls Instagram Reel KaiCalls Facebook Feed Square KaiCalls Pinterest Pin
LinkedIn Article Hero X Landscape Post Google Business Profile
KaiCalls LinkedIn Article Hero KaiCalls X Landscape Post KaiCalls Google Business Profile Post

The sample QA report is here:

examples/kaicalls-outputs/kaicalls-after-hours-qa-report.json

This repo uses KaiCalls as the live showcase because it is exactly the kind of brand this system was built for: a phone-first service that needs proof-backed images across every channel.

Why Marketers Use This

Most teams do not have a content problem. They have a production consistency problem.

One article, launch, offer, webinar, case study, or local promotion usually needs:

  • LinkedIn image
  • Facebook image
  • Instagram square
  • Instagram portrait
  • Reel or Story cover
  • Pinterest pin
  • X image
  • YouTube thumbnail
  • Google Business Profile post
  • OG card
  • Blog header
  • Ad variants
  • Carousel slides

That work gets slow when every size is rebuilt by hand. It gets risky when brand, proof, alt text, and calls to action drift across channels.

Visual Factory Kit turns the creative into a repeatable system:

  • Put the message in one request file.
  • Put the brand in one brand pack.
  • Render every format from a platform matrix.
  • Check QA before anything ships.

What It Makes

The platform matrix includes formats for:

  • LinkedIn article images, feed images, ads, and carousels
  • Facebook feed, cover, Story, Reel, and ad images
  • Instagram feed, Story, Reel, and carousel images
  • Meta ad square, portrait, landscape, and Story/Reel images
  • X posts, ads, and headers
  • Threads square and portrait images
  • TikTok vertical feed images
  • YouTube thumbnails and Shorts covers
  • Pinterest pins, square pins, and board covers
  • Google Business Profile square and wide posts
  • Google Display landscape and square ads
  • Blog headers and OG cards

See the full list in:

visual_factory/platform-size-matrix.json

How It Works

Visual Factory Kit has three moving parts.

  1. A visual request JSON

This contains the campaign message:

  • headline
  • subhead
  • proof label
  • proof source
  • CTA
  • phone number
  • alt text
  • output folder
  • format list

Start with the KaiCalls showcase:

examples/kaicalls-request.json

Or start from the neutral example:

examples/sample-request.json
  1. A brand pack

This contains the brand system:

brand-packs/kaicalls/
├── brand.json
├── tokens.css
└── assets/
    ├── 26-icon-v2.png
    ├── 22-after-hours.png
    └── ...

The repo includes:

  • brand-packs/kaicalls as the real showcase brand pack.
  • brand-packs/example as a tiny neutral starter pack.
  • brand-packs/fictional-lightcard and brand-packs/fictional-darkcard as fully fictional two-brand examples, showing the same token family (--firm-*) producing a light-card and a dark-card layout from one template.

Create your own brand pack by copying either pack, replacing the transparent PNG assets, and editing brand.json and tokens.css.

  1. Deterministic templates

Templates live in:

visual_factory/templates/

They are HTML/CSS templates rendered through Playwright. Important text blocks are measured in-browser and shrink-to-fit before screenshots are saved.

Quick Start

Install dependencies:

pip install -r requirements.txt
python -m playwright install chromium

Render the KaiCalls showcase:

python visual_factory\render.py render --request examples\kaicalls-request.json --brand brand-packs\kaicalls

Render the neutral example:

python visual_factory\render.py render --request examples\sample-request.json --brand brand-packs\example

Open the output folders:

examples/kaicalls-outputs/
examples/outputs/

Use the images only when the QA report says:

"passed": true

Request Example

{
  "client": "KaiCalls",
  "formats": [
    "linkedin_article_hero",
    "instagram_reel",
    "facebook_feed_square",
    "pinterest_pin",
    "google_business_post"
  ],
  "message": {
    "headline": "Missed calls do not wait for office hours.",
    "subhead": "Kai answers, remembers, acts, and briefs after the phone rings.",
    "proof_label": "64% of calls came after hours",
    "cta": "Call Kai",
    "phone_number": "(417) 386-2898"
  },
  "output": {
    "alt_text": "KaiCalls social graphic with Kai holding a retro phone beside a proof label about after-hours calls.",
    "destination_dir": "examples/kaicalls-outputs",
    "filename_prefix": "kaicalls-after-hours"
  }
}

The full schema is here:

visual_factory/schemas/visual-request.schema.json

QA Checks

Every render writes:

  • a PNG
  • a .provenance.json sidecar
  • a request-level QA report

The QA report checks:

  • exact platform dimensions
  • text overflow
  • mobile preview readability
  • required alt text
  • proof source presence
  • provenance sidecar presence
  • banned public-facing terms

This is useful for teams that care about claims, attribution, accessibility, and brand consistency.

Provenance

Every image gets a sidecar file that records:

  • request ID
  • content ID
  • template
  • dimensions
  • brand assets used
  • font stack
  • proof source
  • render timestamp
  • AI assistance notes
  • approval status

This makes the system easier to audit later. It also helps creative teams remember where a claim, asset, or template came from.

Brand Pack Tips

Good brand packs include:

  • a transparent logo or icon
  • a transparent product, mascot, or brand visual
  • real brand colors in tokens.css
  • a default phone number or CTA only if useful
  • enough contrast for small mobile previews

Avoid:

  • low-resolution logos
  • baked-in white backgrounds
  • circular badge wrappers around transparent assets
  • generic AI art
  • proof claims without a source file

Common Marketing Workflows

Use this for:

  • launch announcement creative
  • weekly social post batches
  • local business profile posts
  • article hero images
  • Pinterest board seeding
  • ad concept variations
  • YouTube thumbnail systems
  • founder-led LinkedIn posts
  • carousel production
  • proof-backed campaign assets

Social-Native Template Library

The factory now includes twelve differentiated, deterministic social-native layouts alongside its campaign-card formats. They are designed for thought leadership, proof, process education, event promotion, and customer stories without relying on generic generated imagery.

Format key Family Primary use
apple_notes_portrait Notes sheet Concise insight
message_thread_square Message thread Objection handling
tweet_card_square Public post card Strong point of view
search_autocomplete_portrait Search prompt Search-led education
receipt_audit_portrait Receipt audit Cost of inaction
notion_checklist_portrait Operating checklist Process proof
whiteboard_diagram_landscape Whiteboard model Framework explainer
metrics_scorecard_square Metrics scorecard Benchmarks and proof
launch_calendar_portrait Launch calendar Dates and events
testimonial_quote_square Testimonial quote Approved customer voice
inbox_alert_portrait Inbox alert Response urgency
workflow_timeline_landscape Workflow timeline Step-by-step explanation

Start with examples/social-native-request.json to render the complete library. Use fictional or approved display data for all interface-inspired formats; do not represent a real person’s private messages, inbox, receipts, reviews, or account activity.

Expanded Template Catalog

The kit now contains 36 distinct template families. In addition to its platform-oriented campaign cards, it includes social-native notes, threads, search, checklists, whiteboards, scorecards, pull quotes, and an extended library of browser, pipeline, calendar, team-update, excerpt, redline, feedback, review, map, terminal, Kanban, newspaper, pricing, chart, funnel, product-release, case-study, contrast, offer, countdown, rules, and carousel-cover formats.

Read TEMPLATE_CATALOG.md for the complete catalog and render examples/template-catalog-request.json for the 24 extended categories.

Performance-Oriented Carousel Decks

The kit now includes an original twelve-role carousel system designed around strong hooks, simple teaching slides, visible progress, proof, contrast, and a clear closing action. The roles are cover hook, pattern interrupt, problem, mistake, framework, step, checklist, proof, before/after, myth/truth, quote, and CTA. See VIRAL_CAROUSEL_PLAYBOOK.md for the design logic and examples/viral-carousel-request.json for a complete twelve-slide example deck.

Customize It

Add a platform:

  1. Add a key to visual_factory/platform-size-matrix.json.
  2. Point it at an existing template with template_file.
  3. Render the sample request.
  4. Fix template spacing until QA passes.

Add a template:

  1. Create a new HTML file in visual_factory/templates/.
  2. Use shared.css.
  3. Add data-fit to important text blocks.
  4. Add the template to the platform matrix.
  5. Render and check QA.

Add a brand:

  1. Copy brand-packs/example or brand-packs/kaicalls.
  2. Replace the transparent PNGs in assets.
  3. Edit brand.json.
  4. Edit tokens.css.
  5. Render with --brand brand-packs/your-brand.

Philosophy

This is not an AI image generator.

It is a production system for turning approved message, proof, brand assets, and templates into correctly sized marketing images. The creative direction stays human. The resizing, rendering, provenance, and QA become automatic.

License

MIT for the code in this repository. The KaiCalls brand pack and example images are included as a public showcase and marketing example. Bundled fonts are third-party assets under their own licenses. See:

visual_factory/fonts/NOTICE.md

Built and maintained by Connor Gallic — connect on LinkedIn.

About

Deterministic image factory for marketing teams. Feed it a JSON request and a brand pack; get platform-ready PNGs for social, ads, thumbnails, GBP posts, Pinterest, carousels, Stories and OG cards — each with a provenance file and a QA report.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages