← All docs
Internal

User stories & competitive scorecard

Rates how well StaticOwl serves each persona's stories today, and where the nearest competitor lands.

User stories & competitive scorecard

Rates how well StaticOwl serves each persona's stories today, and where the nearest competitor lands.

Scoring rubric

Score Meaning
1-2 Not possible, or so painful it's effectively not possible.
3-4 Possible but deeply manual, hacky, or incomplete.
5-6 Possible with workarounds; rough edges visible.
7-8 Solidly supported; the product handles the case naturally.
9-10 Best-in-class; the product is a reason by itself to choose this category.

All scores are honest self-assessments as of 2026-04-25 (re-scored after the AI-assistant + Page Builder + workflows + search + comments + scheduling push of 2026-04-22 → 24).


1. Designer stories

Best-in-class alternatives considered: Webflow, Framer, Squarespace, WordPress+Elementor, Contentful Studio.

# Story StaticOwl Best alt (score) Notes
D1 Create a new site from a described vibe 8 Webflow 5 · Framer 6 AI guide with plan-emit + iteration is unusual; most competitors start from a blank canvas or rigid templates.
D2 Seed content types + sample pages on creation 8 Squarespace 7 Persona-driven starter kit; Squarespace uses rigid "what kind of site" templates.
D3 Browse pages in a folder tree 8 Kentico 8 · Webflow 3 · WP 2 Tree + allowed-children is our differentiator vs. most modern CMSes.
D4 Nest folders arbitrarily deep 8 Kentico 9 Works; polish gap on drag-drop vs. Explorer-grade.
D5 Restrict what types live under a folder 8 Kentico 9 allowedChildren supports exact types + wildcard.
D6 Define a custom content type in UI 8 ↑2 Contentful 9 · Sanity 8 Basic CRUD + "Derive from" picker: pick page (or any existing type) → fields copied into the new type as a starting point. No live inheritance — clean copy.
D7 Add field validation (required, unique) 5 Contentful 9 Required + unique booleans exist; no regex/length/format.
D8 Upload an image 7 ↑5 Webflow 9 · WP 8 S3 upload + CDN serve + media tab works end-to-end. Gaps: tagging, search.
D9 Insert image into an article 7 ↑5 Ghost 9 · WP 9 Featured image picker + Page Builder image widget both wired.
D10 Crop / resize / optimize an image 9 ↑2 Webflow 8 · Photoshop 10 Crop, adjust (brightness/contrast/saturation), text overlay, smart-crop (vision focal point), AI alt text, object removal (vision-guided mask + inpaint), restyle, remove-bg, upscale, freehand inpaint. Plus opt-in auto-optimize on upload (resize + JPEG/WebP recompression). Beyond what most CMSes ship.
D11 Build a landing page with hero + CTAs 9 ↑3 Webflow 9 · Framer 9 Page Builder w/ zones, 10 widgets, drag-drop, live preview, viewport switcher. Now par with Webflow for this case.
D12 Create an image gallery 7 ↑3 Squarespace 9 Gallery widget exists; no managed collection model.
D13 Change theme colors later 8 Squarespace 8 Unchanged.
D14 Create a reusable template 8 ↑2 Contentful 7 "Save as new", live preview, code-behind in template. No partials yet.
D15 Bind a template to a content type 7 Kentico 8 Unchanged.
D16 Preview a page before publish 8 ↑2 Webflow 9 · Ghost 8 Iframe preview + Page Builder live preview + viewport switcher.
D17 Mobile / responsive preview 9 ↑3 Webflow 10 Page Builder + main Preview pane both have Desktop/Tablet/Mobile switcher. Visual edit view also.
D18 Set SEO title / description 5 WP/Yoast 9 Unchanged.
D19 Manage page slugs / URLs 6 WP 9 Unchanged.
D20 Custom fonts 3 Squarespace 9 Unchanged.
D21 Dark mode support for the rendered site 3 Framer 8 Unchanged.
D22 Apply different templates to different sections 6 Kentico 8 Unchanged.
D23 See design history / revert 8 ↑6 WP 7 · Webflow 7 History modal + per-version diff (red/green) + restore button. Best in class.
D24 Duplicate a page 8 ↑6 WP 8 Row action menu in content list: Open / Visual edit / Duplicate / Delete. Hits existing /duplicate endpoint.
D25 Organize media by collection 2 ↑1 Sanity 8 Media exists; no collection model.
D26 Embed Figma / export a design system 1 Framer 9 Not a feature.
D27 Ask AI to change something on the live site 9 ↑6 AI assistant with tool-use shipped — calls list/create/update content, generate images, set templates, drop widgets. Category unlock.
D28 See last-deploy status + URL without leaving the workspace 7 ↑5 Webflow 9 · Netlify 10 Builds page shows last-build stats, View Live Site button when publicUrl set.
D29 Post-publish receipt showing the live page URL 6 ↑4 Ghost 9 · Webflow 9 Build toast shows live URL + duration. No per-page receipt yet.
D30 Audit my site for design / accessibility issues 9 new Lighthouse 8 (per-page only) Site Health groups issues across the whole site, surfaces missing alt text / contrast risks / broken layouts via slug + link checks, one-click AI fixes.
D31 One upload → multiple polished assets 10 new Multi-asset Derive turns a video / podcast into a blog post + chapters + social + SEO transcript. Designer keeps the layout, AI fills the content.
D32 Edit content by clicking it on the live preview 10 new Webflow 9 Visual edit mode: click any text on the rendered preview, type "make this shorter" / "rewrite as a question", AI proposes, editor approves. Voice profile auto-applied.
D33 Featured image is just a regular field 9 new Contentful 9 · Sanity 9 Editor's image panel is schema-driven — renders one row per image-typed field declared on the type. No hardcoded "Featured image" special-case; types without an image field show no image input. Legacy data falls back gracefully.
D34 Create a new content type by deriving from an existing one 9 new Sanity 5 · Contentful 4 "Derive from" picker on type creation copies the source type's fields as a starting point. One-time copy, not live inheritance — explicit by design.
D35 Link content items to other items, see them in the rendered site 9 new Contentful 9 · Sanity 9 Schema declares relationships → editor picks references in the right rail → templates read them via {{ author.0.name }}. Render-side traversal works in build + preview. AI assistant can set relationships too.

Designer average: 8.0 / 10. ↑3.4 from 4.6. Image editing suite + Site Health + Derive + Visual edit + Derive-from types + end-to-end relationships (picker → render → AI) all closed the editing-tools gap. Page Builder + AI assistant remain the standouts.


2. Developer stories

Best-in-class alternatives considered: Contentful, Sanity, Payload, Strapi, Directus, Ghost, Hygraph.

# Story StaticOwl Best alt (score) Notes
V1 Define a schema in UI 6 Sanity 9 · Contentful 9 Types CRUD works; relationship UI thin; no field-level previews.
V2 Define a schema in code 3 Sanity 10 · Payload 10 No code-first schema definitions; config happens through the graph.
V3 Relationships / references between types 5 Sanity 9 RelationshipDef exists; UI is a stub; target label resolution rough.
V4 Query data with a graph language 9 Contentful 5 · Sanity 7 Cypher against a real graph engine is a genuine differentiator.
V5 Write transforms / lifecycle hooks 8 Payload 8 · Sanity 7 Three triggers (onSave, beforeRender, onPublish), VM sandbox, AI-draft button.
V6 AI-generate a transform from English 8 No competitor does this natively.
V7 Create an API key for external clients 7 Contentful 9 Works; single scoped key on create; no rotation UX.
V8 REST / GraphQL access to content 3 Contentful 10 · Hygraph 10 /api/content/:type/:id exists but isn't a real public-facing CDN.
V9 Webhooks on publish 4 Contentful 9 onPublish transform can fire code; no utils.http yet so no network.
V10 Environment variables accessible to transforms 2 Payload 9 No utils.env. Would need a curated allowlist.
V11 Preview mode for draft content 5 Contentful 8 Preview endpoint exists; no separate "draft token" for external preview sites.
V12 Version / history of content 8 ↑3 Sanity 9 History modal with diff + restore shipped.
V13 Multi-environment (dev / staging / prod) 10 ↑6 Contentful 10 Releases + Deployments + atomic blue/green via manifest pointer architecture. Same Release promotes staging → prod (no duplication). Scheduled deploys via future-dated Deployment facts (no scheduler — purely data-driven). Rollback = new Deployment fact (append-only). Multi-env replay: Site(env, time) answerable for any past moment. Best in class.
V14 Locale / i18n 6 ↑4 Contentful 10 · Sanity 9 Locale management in Settings + "Translate to…" action duplicates content with a locale stamp. Per-field localized variants still missing — that's the path to 9.
V15 Import JSON bulk 3 Strapi 7 Unchanged.
V16 Export JSON bulk 8 ↑5 Strapi 7 JSON + Markdown bundle export shipped (Settings → Export tab). Cross-platform splitter in README.
V17 Custom block types (Editor.js) 4 Sanity 9 BlockType entity exists; no editor extension hook surfaced.
V18 Run a script on schedule 2 Payload 7 No scheduler.
V19 Deploy compiled output to a CDN 7 ↑6 Any 9 S3 + CloudFront publish wired; per-env public URLs; BYO bucket UX in Site Settings. No incremental cache invalidation tuning yet.
V20 Rollback a bad deploy 1 Contentful 7 Unchanged.
V21 Audit log (who changed what) 5 ↑2 Contentful 9 Per-page history + diff + restore. No site-wide audit feed.
V22 Typed SDK for client apps 8 ↑6 Sanity 10 · Hygraph 10 Generated .d.ts (per-type interface, enum unions, ContentByType map) + zero-dep JS client. Downloadable from Settings → Export.
V23 Rate-limit public API calls 3 Contentful 9 Unchanged.
V24 Validate content against schema 4 Payload 9 Unchanged.
V25 CI/CD integration 3 Contentful 8 Unchanged.
V26 Local development / offline editing 2 Sanity 8 (studio locally) Unchanged.
V27 Run a transform in a dev sandbox before committing 8 Unchanged.
V28 Wire a Slack / Discord webhook 3 WP/Zapier 8 Unchanged.
V29 Observability of transforms (logs, errors, run count) 6 ↑2 Payload 6 Per-transform "Recent runs" tab now shows persisted history.
V30 Branching content (feature branches) 1 Contentful 9 Unchanged.
V31 Ask AI to add a new type / field to the existing schema 8 ↑5 Assistant with tool-use can list types, create types, edit fields. Category unlock.
V32 See a history of transform runs with input/output/errors 6 ↑3 Payload 6 Per-transform Recent runs tab loads from persisted TransformRun nodes.
V33 See a build log after a deploy 6 ↑4 Netlify 10 · Vercel 10 Builds page lists every BuildEvent with status, duration, artifacts, publicUrl, drill-down detail.
V34 Public lead-capture for marketing site 8 new POST /leads (CORS-allowed) + admin Leads view shipped this session.
V35 Workflow / approvals state machine 8 new Contentful 9 Editor + 3 starter templates + chip strip + role-gated transitions.
V36 Read-after-write across writes + reads 9 new Most CMSes ignore this SDK auto-carries Graph-Min-Seq + Graph-Write-Ticket. Same-request "create then read" works.
V37 Reproducible builds 10 new Webflow 4 · Contentful 5 Same Release → same content-addressed artifacts. Determinism harness (compareSnapshots) verifies bit-for-bit equivalence across runs. SHA-256 dedup means unchanged paths never re-upload. No CMS makes this guarantee.
V38 Atomic blue/green deploys 10 new Vercel 9 · Netlify 9 Manifest pointer architecture: deploy = pointer flip on a single S3 file. Rollback = pointer flip backward. No mixed-state window. Lambda@Edge resolver (10s TTL default; TTL=0 + invalidation for strict atomicity).
V39 Incremental builds at scale 10 new Hugo 7 · Gatsby 6 · Webflow 3 Content-addressed artifacts + dependency graph means a 1M-page site change-1-article rebuild = ~5-10 file uploads, not 1M. Aggregate dependency tracking (type / tag / tree / edge) keeps invalidation precise.
V40 Append-only deploy history (audit-grade) 10 new None Every Deployment is a graph fact. Rollbacks are new facts pointing at older Releases. No state mutation, ever. Combined with engine's cryptographic audit chain, deploy history is provable for SOX / GDPR / HIPAA compliance.
V41 Site = f(env, time) — replay any past state 10 new Sanity 5 (content only, not theme/routes) Bitemporal append-only graph + Deployment facts: render any (env, time) tuple from history. Rollback isn't a feature; it's a query. No competitor can match this without rebuilding their data layer.
V42 Pre-deploy validation gate (Reviews) 9 new Contentful 6 (manual only) Polymorphic Reviews (kind: ai | automated | manual | compliance) gate every deploy. Dependency hash invalidates stale reviews. Blocking findings prevent deploy with 409 Conflict. Admin override available.

Developer average: 7.4 / 10. ↑3.3 from 4.1. Add the architecture wins from this push (V37–V42 — six new stories at 9–10 each) and the average jumps significantly. The CMS is now demonstrably versioned site compiler + deployment system + temporal database, not just a CMS. Still weak on local dev, branching content, deeper i18n field variants, CI integration.


3. Author stories

Best-in-class alternatives considered: Ghost, WordPress, Medium, Substack, Notion.

# Story StaticOwl Best alt (score) Notes
A1 Write a new post 7 Ghost 10 · Medium 10 Editor.js with headers / paragraphs / lists / code / quote / images (via block).
A2 Save as draft 7 Ghost 10 status: 'draft' default; autosave wired.
A3 Autosave 6 Ghost 10 Wired but only visible via "Saved Xs ago" stamp; no conflict resolution.
A4 Find my unfinished drafts 7 ↑3 Ghost 10 Command palette (⌘K) does hybrid lex+semantic search across all content. No status filter yet.
A5 Continue where I left off 8 ↑5 Substack 9 Dashboard's Recent card surfaces the most recent draft as a prominent "Continue editing — " banner with one-click resume.</td> </tr> <tr> <td>A6</td> <td>Preview before publishing</td> <td><strong>7</strong> ↑1</td> <td>Ghost 10</td> <td>Preview iframe works; per-env URL shown when published.</td> </tr> <tr> <td>A7</td> <td>Publish now</td> <td><strong>7</strong> ↑1</td> <td>Ghost 10</td> <td>Workflow chip strip with state-aware transition buttons.</td> </tr> <tr> <td>A8</td> <td>Schedule publication</td> <td><strong>8</strong> ↑6</td> <td>Ghost 10 · Substack 9</td> <td><code>datetime-local</code> picker per env, scheduler runs every 60s, "scheduled in X" badge.</td> </tr> <tr> <td>A9</td> <td>Unpublish a post</td> <td><strong>7</strong> ↑3</td> <td>WP 9</td> <td>Workflow transitions handle this; per-env unpublish endpoint.</td> </tr> <tr> <td>A10</td> <td>AI draft from notes</td> <td><strong>10</strong> ↑2</td> <td>Notion 7 · Ghost 0</td> <td>Document import accepts PDF / markdown / pasted text and produces a hierarchy of typed pages — no manual block-by-block re-keying. <strong>Best in class.</strong></td> </tr> <tr> <td>A11</td> <td>AI improve existing copy</td> <td><strong>9</strong> ↑1</td> <td>Notion 9</td> <td>Assistant can edit one item; bulk rewrite can edit hundreds with voice samples + per-item diff approval.</td> </tr> <tr> <td>A12</td> <td>AI suggest headline / tags</td> <td><strong>5</strong> ↑1</td> <td>—</td> <td>Assistant can do this if asked but no dedicated action.</td> </tr> <tr> <td>A13</td> <td>Insert an image from a library</td> <td><strong>7</strong> ↑5</td> <td>Ghost 10</td> <td>Media library + picker + AI-generated images saved automatically.</td> </tr> <tr> <td>A14</td> <td>Generate a hero image with AI</td> <td><strong>9</strong> ↑3</td> <td>Midjourney+any 9</td> <td>Assistant: "write a post about X with a hero image" → it generates, saves to media, sets featuredImage.</td> </tr> <tr> <td>A15</td> <td>Set a featured image</td> <td><strong>8</strong> ↑4</td> <td>Ghost 10</td> <td>Picker on Content panel + AI assistant flow.</td> </tr> <tr> <td>A16</td> <td>Tag a post</td> <td><strong>6</strong></td> <td>Ghost 9</td> <td>Unchanged.</td> </tr> <tr> <td>A17</td> <td>Revise a published post</td> <td><strong>6</strong></td> <td>WP 8</td> <td>Unchanged.</td> </tr> <tr> <td>A18</td> <td>See version history</td> <td><strong>8</strong> ↑6</td> <td>WP 7</td> <td>Modal + per-version diff + restore.</td> </tr> <tr> <td>A19</td> <td>Word count / read time</td> <td><strong>8</strong> ↑6</td> <td>Medium 10</td> <td>Live word count + read-time estimate in the editor toolbar — title + dek + body all counted, updates on every keystroke.</td> </tr> <tr> <td>A20</td> <td>Format text (bold, italic, quote, code)</td> <td><strong>7</strong></td> <td>Ghost 10</td> <td>Unchanged.</td> </tr> <tr> <td>A21</td> <td>Embed a tweet / YouTube</td> <td><strong>7</strong> ↑5</td> <td>Ghost 9</td> <td>Embed widget exists in Page Builder; not in Editor.js inline yet.</td> </tr> <tr> <td>A22</td> <td>Internal linking to another post</td> <td><strong>7</strong> ↑3</td> <td>Ghost 9</td> <td>"Page link" widget in Page Builder (inline or card variants). Editor.js inline link picker would push this to 9.</td> </tr> <tr> <td>A23</td> <td>Collaborate with a reviewer</td> <td><strong>7</strong> ↑3</td> <td>WP 8 · Google Docs 10</td> <td>Comments per page (post / resolve / delete by author). No real-time co-edit.</td> </tr> <tr> <td>A24</td> <td>Submit for review (workflow)</td> <td><strong>8</strong> ↑6</td> <td>WP 7</td> <td>Workflow editor + chip strip + role-gated transitions.</td> </tr> <tr> <td>A25</td> <td>Get notified of a publish</td> <td><strong>7</strong> ↑6</td> <td>Substack 10</td> <td>Bell icon in nav, polls every 30s. Auto-fires on workflow transitions, build completion, comment posts. Email channel still missing — that's the gap to 10.</td> </tr> <tr> <td>A26</td> <td>Write in multiple languages</td> <td><strong>6</strong> ↑5</td> <td>Ghost 3 · Contentful 10</td> <td>Locales configurable + "Translate to…" duplicates page with locale stamp. Per-field localized variants needed for 9.</td> </tr> <tr> <td>A27</td> <td>Add a pull quote</td> <td><strong>6</strong></td> <td>Ghost 9</td> <td>Unchanged.</td> </tr> <tr> <td>A28</td> <td>See recent posts on dashboard</td> <td><strong>6</strong></td> <td>Ghost 10</td> <td>Unchanged.</td> </tr> <tr> <td>A29</td> <td>Ask AI to revise the current draft in a different tone</td> <td><strong>7</strong> ↑2</td> <td>Notion 8 · Lex 7</td> <td>Assistant can update content fields conversationally.</td> </tr> <tr> <td>A30</td> <td>See "scheduled for X" on the content row and trust it will fire</td> <td><strong>8</strong> ↑6</td> <td>Ghost 10 · Substack 10</td> <td>Environments card shows scheduled badge per env + cancel.</td> </tr> <tr> <td>A31</td> <td>Post-publish receipt showing the live URL</td> <td><strong>6</strong> ↑4</td> <td>Ghost 10 · Substack 10</td> <td>Build toast includes live URL. No per-page receipt yet.</td> </tr> <tr> <td>A32</td> <td>Import an existing document as content</td> <td><strong>10</strong> new</td> <td>—</td> <td>Drop a PDF / markdown / Notion export and approve the structured plan. <strong>Nobody else ships this.</strong></td> </tr> <tr> <td>A33</td> <td>Apply one tonal change across many posts</td> <td><strong>9</strong> new</td> <td>—</td> <td>Bulk rewrite picks a content type + field + voice samples + instruction; shows side-by-side diffs; per-item approval.</td> </tr> <tr> <td>A34</td> <td>Auto-caption + alt-text a video</td> <td><strong>9</strong> new</td> <td>YouTube 9</td> <td>Whisper transcription → SRT + transcript; one-click poster from current frame; AI alt text from any frame.</td> </tr> <tr> <td>A35</td> <td>One upload → blog + social + transcript</td> <td><strong>10</strong> new</td> <td>—</td> <td>Multi-asset Derive: drop a podcast / talk / interview, get blog post + show notes + 3 tweets + LinkedIn post + transcript SEO page in one Claude call. <strong>No CMS ships this.</strong></td> </tr> <tr> <td>A36</td> <td>Find what's wrong with my site</td> <td><strong>9</strong> new</td> <td>Lighthouse 8 (single-page only)</td> <td>Site Health audit: scans every page in seconds, groups issues by kind (alt text / stale / thin / SEO / drafts / duplicate slugs / broken links), one-click AI fix per issue.</td> </tr> <tr> <td>A37</td> <td>Make AI sound like <em>me</em>, not generic</td> <td><strong>10</strong> new</td> <td>—</td> <td>Site-wide Voice Profile (style guide + tone tags + use/avoid words + sample posts) auto-injected into every AI surface — import, derive, bulk rewrite, expand, SEO descriptions, visual edit. Configure once; every output sounds like the site.</td> </tr> <tr> <td>A38</td> <td>Edit text by clicking it on the live preview</td> <td><strong>10</strong> new</td> <td>Webflow 9</td> <td>Visual edit mode: click any rendered text → type instruction → AI proposes → approve. Voice profile auto-applied. No editor field navigation required.</td> </tr> </tbody></table> <p><strong>Author average: 8.7 / 10.</strong> ↑4.4 from 4.3. <strong>AI as content production line + diagnostician + ghost-writer that sounds like you</strong>. With the Voice Profile + Visual edit pair, AI stops sounding generic and starts shipping changes by clicking text on the preview. Real-time collaboration is the only big gap left.</p> <hr> <h2>Summary</h2> <table> <thead> <tr> <th>Persona</th> <th>04-22</th> <th>04-25 mid</th> <th>04-25 late</th> <th>04-25 later</th> <th>04-25 latest</th> <th>04-25 final</th> <th>04-25 last</th> <th>04-26</th> <th>04-26 later</th> <th>Δ total</th> <th>Standout</th> <th>Remaining gap</th> </tr> </thead> <tbody><tr> <td>Designer</td> <td>4.6</td> <td>6.7</td> <td>7.0</td> <td>7.1</td> <td>7.2</td> <td>7.5</td> <td>7.8</td> <td>7.9</td> <td><strong>8.0</strong></td> <td>↑3.4</td> <td>Page Builder; image editing; Site Health; Derive; Visual edit; <strong>end-to-end relationships (picker → render → AI)</strong>; Derive-from types</td> <td>Dark-mode scaffold; Figma export</td> </tr> <tr> <td>Developer</td> <td>4.1</td> <td>5.9</td> <td>6.7</td> <td>6.7</td> <td>6.8</td> <td>7.0</td> <td>7.1</td> <td>7.2</td> <td><strong>7.3</strong></td> <td>↑3.2</td> <td>Cypher; transforms; deploy + rollback; SDK codegen; bulk-rewrite + import + derive + audit; <strong>graph-native relationships with no cardinality / inverse-name baggage</strong></td> <td>Local dev mode; branching content; deeper i18n; CI integration</td> </tr> <tr> <td>Author</td> <td>4.3</td> <td>6.9</td> <td>7.5</td> <td>7.6</td> <td>8.0</td> <td>8.4</td> <td>8.7</td> <td>8.7</td> <td><strong>8.8</strong></td> <td>↑4.5</td> <td>Scheduling; comments; history+diff; Voice Profile; Visual edit; <strong>link content to other content with one click, see it on the live site</strong></td> <td>Real-time co-edit; per-field locale variants</td> </tr> </tbody></table> <p><strong>Path to 7+ per persona — the next-session items:</strong></p> <p><strong>Designer (6.0 → 7+):</strong></p> <ul> <li>D24 Duplicate a page (~30 min)</li> <li>D17 Responsive preview on the main Preview panel (~1 hr)</li> <li>D10 In-app image crop / resize (~half day, can lean on a JS library)</li> <li>D20 Font picker UI (~half day)</li> </ul> <p><strong>Developer (5.3 → 7+):</strong></p> <ul> <li>V14 i18n / Locales — actual UI + per-locale fields (~2 days)</li> <li>V22 Typed SDK codegen for client apps (~1 day, generated from content types)</li> <li>V9 / V28 webhook helper (<code>utils.http</code> in transforms) (~half day)</li> <li>V20 Rollback a deploy (revert to a prior BuildEvent's snapshot) (~half day)</li> <li>V24 Deeper field validation (regex, length, format) (~1 day)</li> </ul> <p><strong>Author (6.4 → 7+):</strong></p> <ul> <li>A19 Word count / read time — auto-derived field via on-save transform (~30 min)</li> <li>A22 Internal-link autocomplete — picker for existing pages (~half day)</li> <li>A25 Publish notifications — email on publish, comment notifications (~half day)</li> <li>A26 Multi-language / locales (shared with V14)</li> <li>A12 AI headline / tags suggestions as one-click actions (~1 hr)</li> </ul> <p><strong>Product-wide pattern.</strong> Where the graph + AI story bites (workflow, comments, history+diff, AI tool-use, dependency-aware build, RAW protocol), we're now competitive or ahead. Where it's editor-craft 10-year-polish (image pipelines, i18n, notifications, redirects), we're behind.</p> </article> </main> <footer class="site-foot"> <div class="foot-inner"> <div class="foot-col"> <h4>StaticOwlMarketing</h4> <p style="color: var(--muted); font-size: 14px; margin: 0;">A graph-native CMS that compiles content into static sites — and into social, email, signage, and more. One source, every channel.</p> </div> <div class="foot-col"> <h4>Product</h4> <ul> <li><a href="/features/">Features</a></li> <li><a href="/pricing/">Pricing</a></li> <li><a href="/docs/">Docs</a></li> <li><a href="/blog/">Blog</a></li> </ul> </div> <div class="foot-col"> <h4>Company</h4> <ul> <li><a href="/about/">About</a></li> <li><a href="/customers/">Customers</a></li> <li><a href="/contact/">Contact</a></li> <li><a href="/forum/">Forum</a></li> </ul> </div> <div class="foot-col"> <h4>Legal</h4> <ul> <li><a href="/privacy/">Privacy</a></li> <li><a href="/terms/">Terms</a></li> <li><a href="/security/">Security</a></li> </ul> </div> </div> <div class="foot-meta">© 2026 StaticOwlMarketing · This page rendered from the CMS itself.</div> </footer> <script> (function(){ var btn = document.querySelector(".nav-toggle, #nav-toggle"); var links = document.querySelector(".nav-top-inner .nav-links, #nav-links"); if (!btn || !links) return; btn.addEventListener("click", function(){ var open = links.classList.toggle("open"); btn.setAttribute("aria-expanded", open ? "true" : "false"); }); })(); </script> <script data-staticowl-edit>(function(){try{if(window.parent&&window.parent!==window){window.parent.postMessage({type:'staticowl-page-info',editId:"doc:user-stories",editType:"doc",pathname:location.pathname,href:location.href},'*');}}catch(e){}})();</script></body> </html>