🦄 Unicorn.Land ▸ docs/superpowers/specs/2026-06-27-oannes-dm-shareability-design.md
updated 2026-06-27

Oannes DM-Shareability Re-engineering — Design

Date: 2026-06-27 Status: Approved (brainstorming → spec) Project: Oannes Content Engine (oannes-engine/)

Goal

Retune content generation so every post is built to be forwarded in a DM — Instagram’s top ranking signal for reaching non-followers is sends-per-reach (confirmed in the 2026-06-27 deep research, from Mosseri Jan 2025), ranked above likes, with watch time the other dominant factor. Our content currently gives a viewer no reason to forward it, which maps directly to our near-zero IG reach. This is roadmap item #1 (highest-confidence lever).

Two mechanisms: (a) forwardable hooks — lead with the most “you have to see this” angle of the claim; (b) explicit direct share-CTAs — Joshua chose the blunt approach: tell the viewer to send/tag.

Scope

Content-generation prompt + render tweak only. No new modules. The reel video itself does not change; the reel’s share-CTA lives in its caption (the feed text on IG/FB/YT). Carousels get an on-slide share treatment because that’s where it’s expected and cheap.

Out of scope (YAGNI): a spoken/on-screen share-CTA inside the reel video — it would break the existing VO↔caption timing for marginal gain. Caption-level CTA is sufficient for reels until there’s evidence otherwise.

Changes

1. src/script/reelscript.tsbuildReelPrompt

2. src/script/carouselscript.tsbuildCarouselPrompt + CarouselScript

3. src/render/Carousel.tsxcta slide branch

Components touched

File Change
src/script/reelscript.ts prompt: forwardable hook + share-CTA caption
src/script/carouselscript.ts prompt + shareCta field + slidesFromScript wiring
src/render/Carousel.tsx cta slide renders the share line
tests assert the new prompt instructions + shareCta on the CTA slide

Error handling

shareCta is required in the carousel schema — a malformed model response fails zod parse, which generateDaily‘s existing try/catch treats as a carousel-build failure (reel still publishes). No new failure modes.

Testing (TDD, tsc-gated via npm test)

Success criteria

Generated reels and carousels consistently (a) open with a forwardable hook and (b) end with a direct “send/tag” CTA; the carousel’s last slide shows the share line. Whether this actually lifts IG sends-per-reach is measured downstream via the existing metrics loop (we already track per-platform stickiness; IG reach climbing off ~0 is the signal to watch over ~2 weeks).

Out of scope (later roadmap items, not this spec)