Generations
From draft to approval: review captions, regenerate the image, iterate on locked fields, then push READY so the scheduler can pick it up.
A generation is one AI-produced post — captions, hashtags, CTA, image prompt — drafted from a topic. Generations are first drafts; you review, edit, and approve them before they're eligible for scheduling.
What's in a generation
A generation in VibeDay holds:
- Captions for three platforms — Instagram, Facebook, TikTok — each in that platform's idiomatic style
- Hashtags — 3–15, lowercase, no
#prefix - Call to action (optional) — one line; AI only writes one when natural for the topic
- Image — a 1024×1024 AI-illustrated PNG (via OpenAI
gpt-image-2). The image prompt is also stored so you can see what the AI illustrated from. - Trace — which model/provider produced it, the prompt used, credit cost, iteration number
- Status — DRAFT / READY / FAILED / ARCHIVED (see below)
Status lifecycle
DRAFT → READY (you approve it)
→ ARCHIVED (you discard it)
[any] → FAILED (generation hit an error)
- DRAFT — just generated, awaiting your review
- READY — approved by you; eligible for scheduling (Sprint 4+)
- FAILED — the AI call or save failed; the row exists but has no usable content
- ARCHIVED — discarded; not visible in default views
New generations always land in DRAFT. You explicitly promote to READY by clicking Approve for posting — there's no auto-approval. This is intentional: AI output is a starting point, not the final word.
Generating a post
From the Topics list, click the green Generate draft button on a topic row. A blocking modal appears with:
- A circular progress arc filling toward the expected duration (~15 seconds)
- An elapsed counter ("12s")
- Adaptive copy that flips to "Taking a little longer than usual — still working…" if it goes over
When the AI finishes you're redirected to /generations/[id] — the detail view of your new draft.
If the AI errors, the modal switches to a red error state with the underlying detail and a Dismiss button. The modal stays open until you dismiss it so you can read the message in full.
The generation detail page
The detail page (/generations/[id]) shows:
- Header — topic title, DRAFT badge (yellow) or READY badge (green), source topic link, source campaign + brand links
- Amber callout (DRAFT only) — "This is a draft. Review and edit if needed, then click Approve for posting…"
- Three platform cards — Instagram, Facebook, TikTok captions side-by-side
- Hashtags card — chips of every hashtag
- CTA card — the call to action, or "No CTA — the AI judged the topic didn't need one"
- Image card — the AI-generated illustration (1024×1024). On DRAFT, a Regenerate image button lets you try a different illustration without rewriting the captions. The prompt the AI used is collapsed under "Show the prompt the AI used".
- Footer trace — model used, credit cost, iteration number
Header actions:
- Regenerate — drafts a new variant from the same topic (always available)
When the status is DRAFT, the captions / hashtags / CTA are editable inline. Below the editable cards is an action bar with:
- Approve for posting (green) — promote the draft to READY without saving any edits. Becomes Save & approve the moment you change anything.
- Save changes (only visible when you have unsaved edits) — persist edits without changing status; stays DRAFT.
- Discard changes (only visible when you have unsaved edits) — revert to the last saved version.
When the status is READY (or FAILED / ARCHIVED), the captions / hashtags / CTA render read-only. To change anything, regenerate (which produces a new DRAFT).
Editing and approving a draft
When the status is DRAFT, you can edit any of:
- Instagram caption — recommended 80–200 words; word + character counter shown live
- Facebook caption — recommended 100–300 words; live count
- TikTok caption — recommended 40–150 words; live count
- Hashtags — comma- or space-separated, lowercase, no
#prefix. Live chip preview below the input. - Call to action — optional one-line; leave blank to omit
Validation matches what the AI produces (same min/max + format rules). If your edits are out of bounds, the save fails with a clear "Couldn't save — …" message in the modal so you can fix it.
Two paths to ready:
- Click Approve for posting without editing anything → flips to READY immediately
- Make any edit, then click Save & approve → saves your edits and flips to READY in one transaction
If you want to keep editing without committing to approving yet, click Save changes — your edits persist, but the status stays DRAFT.
Once READY, the generation is eligible for scheduling (Scheduler ships in Sprint 4). You can still regenerate a READY generation if you change your mind — that'll produce a new DRAFT linked to the same topic.
Regenerating
Click Regenerate on any generation. Same blocking modal, same wait, same result type — a fresh draft from the same topic + brand + campaign context.
The current implementation (v1) does a full regenerate: every field is re-drafted. Locked-field regen ("keep the image, just rewrite the caption") ships in Sprint 6 — you'll be able to pin specific fields from the parent before regenerating.
Regenerated drafts share lineage with their parent (iteration tree) and cost 0.5× credits vs. the original.
The Generations list
/generations is the list of every generation in your workspace. Each row shows:
- Topic title (link)
- Status badge — amber DRAFT stands out, green READY, red FAILED, grey ARCHIVED
- Brand + campaign context
- Created date
Use this view to find a specific draft, see which topics have been drafted recently, or scan for FAILED generations that need a retry.
How the AI generates a post
The AI prompt is built from:
- Brand context — voice persona, tone, tone adjectives, forbidden words (effective brand: topic > campaign > none)
- Campaign context — name + brief, if the topic has a campaign
- Topic context — title, description, AI context
The AI is instructed to:
- Write each platform caption in that platform's idiomatic style (Instagram warm/story-led, Facebook longer-form/conversational, TikTok punchy/hook-first)
- Generate 3–15 hashtags, lowercase, no spaces, no
#prefix - Write a CTA only when natural for the topic (otherwise omit)
- Draft a specific image prompt — no text-in-image instructions
Provider redundancy: if Anthropic Claude (primary) is unavailable or rate-limited, VibeDay automatically retries on OpenAI before surfacing an error. You'll see "Our AI providers are busy right now" only when both are unavailable.
What happens if the image fails
Text and image are generated in sequence. If the image step fails (timeout, content policy, provider outage), your text is still saved as a draft. The image card on the detail page will show:
No image yet. The image step didn't complete (timeout, content policy, or provider hiccup). The text of this draft is saved — retry the image when you're ready.
With a green Generate image button. Click it to retry — the AI will re-illustrate from the same prompt. You can retry as many times as needed.
You can also approve a draft without an image if you'd rather publish text-only (less optimal for engagement on visual platforms, but supported).
Tips
- Don't approve the first draft blindly. Read all three platform captions; the AI sometimes nails Instagram and misses TikTok. Regenerate if needed.
- Use Regenerate to explore. Each regen produces a different angle on the same topic. Two or three regens often gets you a great post.
- Watch the image prompt. Even before image generation ships, the image prompt is a tell — if the prompt is generic, the topic might be too vague.
- Approve drafts you might use later, not just ones you're about to publish. READY is a "good enough to schedule" signal, not "scheduled now."
Email support@vibeday.com with what you're trying to do and a screenshot if it helps — we'll write back within one business day.
- BrandsSet up brand voice, tone, forbidden words, and visual identity. Every AI generation reads this so output sounds like you.
- CampaignsGroup related topics into a campaign with shared context — useful for product launches, themed series, or seasonal pushes.
- TopicsSeed the content pipeline with topic ideas. Add 10 by hand or 50 via AI Topic Designer; each becomes a generation when you hit Generate.
- SchedulerSchedules pull from your approved-content queue and publish at the cadence you set. Pause, archive, and runway warnings included.
- NotificationsInbox for failed publishes, reauth prompts, content alerts. Configure per-type email delivery from settings.