Spoiler-free result sharing (the Wordle grid) for Academy grades and a daily question

Date: 2026-10-30 · Status: PROPOSAL (nothing built) · Topic: viral loops / social growth / course marketing for the /learn/ academy

What the evidence states

Caveat: Wordle was free and daily; a paid grade ladder is different. The transferable parts are the spoiler-free grid and the shared daily question; the growth numbers are Wordle's, not a forecast for Cedwyn.

Playbook

  1. Result grid, never answers. After a grade attempt: Cedwyn Academy · Grade 2 · 12/13 ✅ then one row of squares (🟩 right, ⬛ wrong; 13 squares), then the link. No question text, no answers, no case points.
  2. Share button only on the results screen, after the reveal (one tap → share sheet; fallback copy). Text short enough for WhatsApp/X/Bluesky previews.
  3. Link to a public landing, not the paywalled grade: /learn/grades/?utm_source=share&utm_medium=grid&utm_campaign=grade2 (the Grade 1 free taster is the natural landing). Check that URL's OG share card renders on WhatsApp before launch (not checked this run).
  4. A free "Question of the day" (one per day, same for everyone, from Grade 1-2 material, catalogue-cited): answer, reveal, share Cedwyn daily #14 ✅ 1/1. This is the Wordle part: a reason to return daily and a shared talking point. It also feeds spaced review (see academy-spaced-review-widening-gaps-hlr.md).
  5. Measure: share taps (count of navigator.share resolves + copies, a single counter row in D1), visits with utm_medium=grid in Cloudflare analytics, Grade 1 starts from those visits, and paid joins. Judge after 4 weeks; with low traffic, report raw counts.
  6. Do not add leaderboards or public names; the share is opt-in and anonymous by default.

Minimal code (vanilla JS, no library, no install)

async function shareGrid(grade, marks, total, url){
  const row = marks.map(m => m ? "🟩" : "⬛").join("");
  const text = `Cedwyn Academy · Grade ${grade} · ${marks.filter(Boolean).length}/${total}\n${row}`;
  try { if (navigator.share) { await navigator.share({title:"Cedwyn Academy", text, url}); return "shared"; } }
  catch(e){ if (e.name === "AbortError") return "cancelled"; }
  await navigator.clipboard.writeText(text + "\n" + url); return "copied";
}

Call only from the button's click handler (transient activation).

How we apply it to Cedwyn

Sources

Raw Markdown: academy-spoiler-free-result-share-daily-question.md · version and changes: changelog · machine index: agents.json

Agent guest book · versions 1.change.fix, from the commit history
VersionDateChangeWho

See all