-
-
Connect your socials, let Gemini design on-brand content, and posts publish on schedule. Marketing on autopilot for small businesses.
-
Link Facebook, Instagram, Threads, LinkedIn and YouTube once, pick your Page, and Postveo remembers where every post goes
-
Gemini plans full campaigns and designs festival, offer and product posters from your brand kit — your colors, fonts and logo
-
Posts book into a smart queue and publish automatically; analytics show what works, bite-size lessons teach you why.
-
Coming next: AI-made Reels, guided brand roadmaps, a memory that learns your best posts, and built-in ads management.
Postveo — marketing on autopilot
AI marketing studio for small businesses — connect your socials once, and Gemini designs on-brand posters and campaigns that publish themselves.
Inspiration
Every small business owner we spoke to said the same thing: "I know I should post, but I don't have the time." Agencies are unaffordable, and DIY design tools still expect you to write captions, pick fonts, and remember to hit publish. Meanwhile, local businesses live on moments — festivals, launches, weekend offers — and generic templates make every shop look the same.
We wanted marketing on autopilot, in three verbs: Connect → Design → Post. Set Postveo up once, and it handles the rest.
Connect — link your socials once
Social connection is a one-time setup, per brand. Link Facebook, Instagram, Threads, LinkedIn and YouTube(counting more platforms), and — for Facebook and LinkedIn — pick the exact Page or organization to publish as; every future post carries the right destination automatically. The design is defensive by default: a brand with no enabled platform fails fast with a clear message instead of silently queuing posts, and disconnecting an account prunes all of its bindings, so stale credentials can never break tomorrow's schedule.
Design — Gemini does the creative work
Paste your website (or skip it) and upload a logo — Postveo builds a brand kit: palette, tone, offerings, even importing your catalog from a URL or a photographed menu. From that kit, Gemini plans full campaigns around your goals and local festivals, then designs the posters: photoreal scenes featuring your actual products and real logo, typography laid over them, finished in a Canva-style in-browser editor with per-aspect layouts for 1:1, 4:5 and 9:16.
The poster pipeline: brand kit → prompt brief → AI scene render → legibility scan (calm/busy) → typography overlay (SVG → PNG) → canvas editor → schedule → publish
Post — schedule, track, learn
Publishing isn't a button — it's a pipeline with guard rails at every step: slot planner → spacing guard → preflight → dispatch → reconcile → monitor.
Smart slots — campaigns, quick posts and recurring series all book into one brand-wide queue, so two features can never double-book the same moment; a spacing gate keeps posts a safe distance apart.
Preflight before dispatch — platform and media checks run before any network call, so a bad file or missing page never burns a publish attempt.
Self-healing — stalled jobs are swept automatically, failures are reconciled back into a live monitor, and every queued post supports Post now, delete, or regenerate in one tap.
Close the loop — analytics show what worked, and a built-in Learn academy teaches the why in bite-size lessons with quizzes and rewards.
How we built it A strictly layered TypeScript stack: Fastify + Prisma + Postgres on the backend (route → controller → service → repository, Zod contracts everywhere), React + Vite + Tailwind on the frontend, Cloudflare R2 for media, Razorpay for billing, and Gemini behind adapter classes for all text and image generation.
Every AI call is metered through a versioned credit tariff, and around the creative core sits a real business layer: credit wallet, UPI payments, GST invoices, roles and permissions, and a built-in support desk.
Challenges we ran into : Finding the product inside the technology. Postveo didn't start as what you see today. The first idea was virtual brand models; that evolved into an "auto-poster" engine — and as we kept adding capability, the app quietly became a maze. It could do a lot, but the experience was poor and the learning curve was steep; the people we built it for couldn't find their way through it. So we stopped building and started listening: market research and user conversations kept surfacing the same mental model, three plain verbs — Connect → Design → Post. We restructured the entire product around them, so every screen answers to one verb. The hardest fix we shipped wasn't code — it was admitting the architecture of the experience was wrong and rebuilding it around how users think.
The model changed underneath us — more than once. Everything Postveo makes flows through the model, so a model version isn't a dependency, it's the product. Mid-build, versions we relied on were deprecated and replaced by newer ones with different behavior: same prompts, different tone, different image aesthetics, different costs. Surviving that meant re-architecting — every model call moved behind an adapter, every prompt became versioned product code, and we built an eval harness that regression-tests all 20 of our generation surfaces, so a model swap ships like any other change: run the evals, compare outputs, flip one config. Costs shift with versions too, which is why our credit tariffs are versioned and repriceable without touching code.
Text on unpredictable images. Readable typography over an arbitrary AI scene took a busy/calm region detector that decides between a scrim plate and a plain ink flip, plus measuring a logo's drawn extent (transparent padding was silently shrinking logos).
Server-side font rendering. Rasterizing text into posters meant wrestling woff parsing, GSUB tables, and Indic scripts — we ended up bundling Noto fonts with our own fontconfig.
Mobile autosave races. Slow networks + IME keyboards meant a save echo could overwrite newer keystrokes mid-word. Sequence guards and caret ownership fixed it; our e2e test manufactures 600 ms latency and burst typing to prove it stays fixed.
Billing correctness. Plan switches with pro-rata credit-back, immutable tariff versions, and gap-free GST invoice numbering — boring until you get it wrong.
What we learned Simple is the hardest feature. Our journey ran virtual brand models → an auto-poster engine → Connect · Design · Post. At every step the technology got stronger and the product got harder to use. The breakthroughs were decisions that felt like losses: cutting features we were proud of, hiding power behind good defaults, collapsing the whole app into three verbs. Simplicity is where the most complex product decisions live — every screen we deleted made the product better.
Limit features to the outcome. A small business doesn't want a design tool with a thousand options; it wants tomorrow's post done. We learned to judge every feature by one question — does this shorten the path to a published post? — and to say no when it didn't.
Pricing is product design, not a spreadsheet. AI generation has real unit costs, and small-business pricing leaves no room to hide them. We rebuilt monetization as a transparent, metered credit system with versioned tariffs — so we can price honestly, reprice without code changes, and keep every plan margin-safe. Earning a shop owner's trust in AI means showing them the meter.
Model churn is existential — so we made it routine. Our entire business stands on prompts and the quality of the model's text and images, and models change underneath you; we lived through version deprecations and upgrades mid-build. The answer: treat prompts as product code — versioned, with an eval harness that regression-tests every generation surface — and keep every model behind an adapter, so a version swap is a tested configuration change, not a rewrite. Classify the failures, meter the costs, never trust a 200.
What's next
Reels support, Virtual models, guided brand roadmaps, a memory that learns from your best-performing posts, and built-in ads management with more platforms— follow along at postveo.in.
Built With
- cloudflare-r2
- docker
- fastify
- gemini
- node.js
- pino
- playwright
- postgresql
- prisma
- railway
- razorpay
- react
- sentry
- tailwindcss
- typescript
- vite
- zod
Log in or sign up for Devpost to join the conversation.