2025 · Case study
VisionAI Pro — Advanced Image & Content Suite
One image in, publish-ready content out.
A multi-modal vision application built on Streamlit and the official Google GenAI SDK that turns any uploaded image into structured, professional content — blog posts, per-platform social copy, accessibility ALT text and SEO metadata, e-commerce listings, and interactive visual Q&A.
- Python
- Streamlit
- Google GenAI SDK
- Gemini
- Computer Vision
- Prompt Engineering
- SEO
- Accessibility
01
The problem
Describing an image well is the same task wearing six different hats: a blog intro, an Instagram caption, an ALT tag, a product title and a research answer are all 'describe this image' — and all of them need different structure, length and tone.
Generic captioning tools give you one flat sentence and leave the rest to you.
VisionAI Pro treats the output format as a first-class input, so the same upload produces genuinely usable content per channel.
02
Architecture
The application is a Streamlit front end over the official google-genai SDK, with all prompt logic factored into a dedicated prompts.py module rather than inlined in the UI.
Each generation mode is a template: blog posts with selectable tone (Engaging, Professional, Casual, Poetic) and target length (300w / 500w / 800w+); social copy tailored per platform for Instagram captions and hashtags, LinkedIn insights and CTA, Twitter/X thread starters, and Pinterest/Facebook; an accessibility and SEO engine producing sub-125-character ALT text, detailed accessible descriptions, optimised image filenames and keyword tags; and an e-commerce merchandiser generating titles, taglines, highlight bullets, persuasive descriptions and target audience profiles.
Interactive Visual Q&A allows real-time interrogation of the image — objects, text, colours, specific details — while the Custom Prompt Studio exposes arbitrary prompts and system directives for anything the presets don't cover.
Sidebar controls expose Gemini model selection, a temperature/creativity slider, and flexible API key configuration via .env or an in-app override. A session log tracks generations with one-click Markdown/TXT export.
- Uploaded image + controls
- prompts.py — modular templates per mode
- Blog & narrative
- Social copy
- ALT text & SEO
- E-commerce listing
- Visual Q&A
- Custom prompt studio
- Gemini 2.5 Flash / 3.1 Flash-Lite / 2.5 Pro
- Session history + Markdown / TXT export
Model choice and temperature are user-selectable at runtime, so cost and creativity are tuned per task.
03
Tech stack & why
Interface
Streamlit
Immediate multi-modal upload UI with live controls and no separate front-end build.
Model access
Official google-genai SDK
First-party multi-modal support and clean model switching.
Models
gemini-2.5-flash, gemini-3.1-flash-lite, gemini-2.5-pro
Users trade cost against depth per task instead of being locked to one tier.
Prompting
Modular templates in prompts.py
Adding a generation mode is a template change, not a UI rewrite.
Config
.env or in-app sidebar key override
Runs locally or as a shared demo without hardcoding credentials.
04
Challenges & solutions
- 1
Keeping six output formats coherent
Separating prompt templates from application code kept each mode independently tunable — the SEO engine's length constraints don't leak into the blog generator.
- 2
Cost vs quality at runtime
Exposing model selection and a temperature slider lets a cheap Flash-Lite pass handle bulk ALT text while Pro handles long-form narrative.
- 3
Accessibility output that's actually compliant
ALT text generation is constrained to under 125 characters with a separate long-form accessible description, matching real accessibility guidance rather than dumping one paragraph.
05
What I'd build next
- Batch mode for processing an entire image folder into a CSV of ALT text and SEO filenames.
- Brand voice profiles so social copy inherits a consistent tone across sessions.
- Optional caching layer to avoid re-billing identical image + mode combinations.
Next case study
InvoiceWise OCR