Skip to content

Epic: Amicus — AI Study Partner (v1) #1446

Description

@CraigBuckmaster

AI Study Partner (v1) — Epic

Derived from:#1352, idea #42
Priority: P1 · Size: XL · Status: Planning
Hard blocker:#1312 (R2 DB delivery architecture)
Product name:Amicus (Latin for "friend" — echoes amicus curiae, a scholarly voice offering counsel)

A persistent, RAG-grounded scholarly study partner. Knows the user's study history, asks better questions, draws exclusively from the curated Companion Study corpus. Operates as an ambient presence across three surfaces (home screen module, inline chapter card, dedicated Partner tab).

Full technical plan: ai-study-partner-plan.md (see artifact attached to planning conversation).


Locked Decisions

DecisionChoice
GroundingRAG-only with editorial meta-FAQ mitigation
ScopePrompts + reactive Q&A (persistent memory deferred to v2)
SurfacesFAB (with peek) + Home card + Partner tab
Reasoning engineHybrid — rules + pre-compute + cloud LLM + optional on-device
Cloud modelAnthropic Claude (Sonnet for tab, Haiku for inline/proactive)
PricingBase premium (300/mo cap) + Partner+ at $9.99 (1,500/mo)
PrivacyAbstract-only cloud data flow; user-inspectable profile
Corpus gap captureEvery gap → own card in Partner Gaps swim lane (switches to digest at 20K users)

Architecture (high level)

Client (React Native)
→ local retrieval (scripture.db + sqlite-vec, ~38K chunks, ~90MB)
→ compressed profile generator (deterministic, user.db → prose)
→ reasoning router (pre-compute | Apple FM | Haiku | Sonnet)
→ Cloudflare Worker AI Proxy (auth, rate limit, zero-retention)
→ Anthropic API
→ Cloudflare D1 (corpus gap capture)

Three surfaces, one engine: FAB (with peek) is always-on and context-aware — surfaces chapter-specific chips when on a chapter screen, entity-aware chips on Explore/people/debates, generic input elsewhere. Home module delivers a daily proactive insight. Amicus tab hosts full threaded conversations with persistent history and citation navigation.


Hybrid Reasoning — cost only where synthesis is needed

InteractionEngineRuntime cost
Daily home promptPre-computed + cached$0
Inline chapter chipsPre-generated at build time$0
Meta-FAQ exact matchCached static$0
Single-chunk paraphrase (iOS 18+)Apple Foundation Models$0
Single-chunk paraphrase (other)Claude Haiku~$0.002
Multi-turn conversationClaude Sonnet~$0.005
Multi-source synthesisClaude Sonnet~$0.005

Result: ~60% of interactions route to $0-cost paths.


Cost Model — three scenarios, 5% conversion

Per-user blended cost: ~$0.26/premium/month. Ratio holds at ~10% of premium revenue across all scales.

Scenario Y5Total usersPremium (5%)LLM $/mo% premium rev
Conservative150K7,500$1,95010%
Moderate590K29,500$7,67010%
Aggressive1.80M90,000$23,40010%

Cost safety rails: 300/mo soft cap on base premium prevents power-user tail risk. Partner+ tier at $9.99 pulls heavy users into a sustainable lane without subsidizing from casual fees.


Corpus Gap Capture — the feedback flywheel

Every "I don't have that in my corpus" response is a content roadmap signal. Captured in Cloudflare D1 with:

  • Raw question text (lightly scrubbed for PII)
  • Retrieval scores (distinguishes content gap vs retrieval failure)
  • Compressed profile + current chapter context
  • User feedback signals
  • Semantic deduplication via embedding similarity

Review workflow: Every gap auto-creates a GitHub issue in the Partner Gaps kanban swim lane (label corpus-gap). Dedicated lane keeps corpus-gap volume isolated from product work. Craig reviews, plans content, ships PR → gap auto-closes.

Scale trigger: At ~20K total users (~58 gaps/day), switch to digest-for-singletons + dedicated-cards-for-clusters. D1 backend unchanged — presentation-layer swap only.

See #1471 for implementation detail.


Phase Plan (15–20 weeks from Phase 1 start)

Phase 1 — Foundations (6–8 weeks)

Phase 2 — Partner Tab (4–6 weeks)

Phase 3 — FAB Peek (3–4 weeks)

Phase 4 — Home Screen + Partner+ (2–3 weeks)

Phase 5 — Polish & Optimization (ongoing)


Dependencies


Finalized answers to prior open questions

  • Name: Amicus
  • Meta-FAQ authorship: LLM-drafted (chat-session workflow), Craig edits
  • Beta cohort: Pastoral network (P3 positioning synergy)
  • Embedding strategy: Server-side at launch; evaluate on-device in Phase 5

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
       blocks
      (function() {
      function addCopyButtons() {
      document.querySelectorAll('pre code').forEach(function(codeBlock) {
      if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
      codeBlock.parentElement.setAttribute('data-copy-added', 'true');
      var btn = document.createElement('button');
      btn.textContent = 'Copy';
      btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
      btn.onmouseover = function() { this.style.opacity = '1'; };
      btn.onmouseout = function() { this.style.opacity = '0.7'; };
      btn.onclick = function() {
      navigator.clipboard.writeText(codeBlock.textContent).then(function() {
      btn.textContent = 'Copied!';
      setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
      });
      };
      codeBlock.parentElement.style.position = 'relative';
      codeBlock.parentElement.appendChild(btn);
      });
      }
      addCopyButtons();
      // Re-run on dynamic content
      var observer = new MutationObserver(addCopyButtons);
      observer.observe(document.body, { childList: true, subtree: true });
      })();
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      Epic: Amicus — AI Study Partner (v1) · Issue #1446 · CraigBuckmaster/ScriptureDeepDive · GitHub
      Skip to content

      Epic: Amicus — AI Study Partner (v1) #1446

      Description

      @CraigBuckmaster

      AI Study Partner (v1) — Epic

      Derived from:#1352, idea #42
      Priority: P1 · Size: XL · Status: Planning
      Hard blocker:#1312 (R2 DB delivery architecture)
      Product name:Amicus (Latin for "friend" — echoes amicus curiae, a scholarly voice offering counsel)

      A persistent, RAG-grounded scholarly study partner. Knows the user's study history, asks better questions, draws exclusively from the curated Companion Study corpus. Operates as an ambient presence across three surfaces (home screen module, inline chapter card, dedicated Partner tab).

      Full technical plan: ai-study-partner-plan.md (see artifact attached to planning conversation).


      Locked Decisions

      DecisionChoice
      GroundingRAG-only with editorial meta-FAQ mitigation
      ScopePrompts + reactive Q&A (persistent memory deferred to v2)
      SurfacesFAB (with peek) + Home card + Partner tab
      Reasoning engineHybrid — rules + pre-compute + cloud LLM + optional on-device
      Cloud modelAnthropic Claude (Sonnet for tab, Haiku for inline/proactive)
      PricingBase premium (300/mo cap) + Partner+ at $9.99 (1,500/mo)
      PrivacyAbstract-only cloud data flow; user-inspectable profile
      Corpus gap captureEvery gap → own card in Partner Gaps swim lane (switches to digest at 20K users)

      Architecture (high level)

      Client (React Native)
      → local retrieval (scripture.db + sqlite-vec, ~38K chunks, ~90MB)
      → compressed profile generator (deterministic, user.db → prose)
      → reasoning router (pre-compute | Apple FM | Haiku | Sonnet)
      → Cloudflare Worker AI Proxy (auth, rate limit, zero-retention)
      → Anthropic API
      → Cloudflare D1 (corpus gap capture)
      

      Three surfaces, one engine: FAB (with peek) is always-on and context-aware — surfaces chapter-specific chips when on a chapter screen, entity-aware chips on Explore/people/debates, generic input elsewhere. Home module delivers a daily proactive insight. Amicus tab hosts full threaded conversations with persistent history and citation navigation.


      Hybrid Reasoning — cost only where synthesis is needed

      InteractionEngineRuntime cost
      Daily home promptPre-computed + cached$0
      Inline chapter chipsPre-generated at build time$0
      Meta-FAQ exact matchCached static$0
      Single-chunk paraphrase (iOS 18+)Apple Foundation Models$0
      Single-chunk paraphrase (other)Claude Haiku~$0.002
      Multi-turn conversationClaude Sonnet~$0.005
      Multi-source synthesisClaude Sonnet~$0.005

      Result: ~60% of interactions route to $0-cost paths.


      Cost Model — three scenarios, 5% conversion

      Per-user blended cost: ~$0.26/premium/month. Ratio holds at ~10% of premium revenue across all scales.

      Scenario Y5Total usersPremium (5%)LLM $/mo% premium rev
      Conservative150K7,500$1,95010%
      Moderate590K29,500$7,67010%
      Aggressive1.80M90,000$23,40010%

      Cost safety rails: 300/mo soft cap on base premium prevents power-user tail risk. Partner+ tier at $9.99 pulls heavy users into a sustainable lane without subsidizing from casual fees.


      Corpus Gap Capture — the feedback flywheel

      Every "I don't have that in my corpus" response is a content roadmap signal. Captured in Cloudflare D1 with:

      • Raw question text (lightly scrubbed for PII)
      • Retrieval scores (distinguishes content gap vs retrieval failure)
      • Compressed profile + current chapter context
      • User feedback signals
      • Semantic deduplication via embedding similarity

      Review workflow: Every gap auto-creates a GitHub issue in the Partner Gaps kanban swim lane (label corpus-gap). Dedicated lane keeps corpus-gap volume isolated from product work. Craig reviews, plans content, ships PR → gap auto-closes.

      Scale trigger: At ~20K total users (~58 gaps/day), switch to digest-for-singletons + dedicated-cards-for-clusters. D1 backend unchanged — presentation-layer swap only.

      See #1471 for implementation detail.


      Phase Plan (15–20 weeks from Phase 1 start)

      Phase 1 — Foundations (6–8 weeks)

      Phase 2 — Partner Tab (4–6 weeks)

      Phase 3 — FAB Peek (3–4 weeks)

      Phase 4 — Home Screen + Partner+ (2–3 weeks)

      Phase 5 — Polish & Optimization (ongoing)


      Dependencies


      Finalized answers to prior open questions

      • Name: Amicus
      • Meta-FAQ authorship: LLM-drafted (chat-session workflow), Craig edits
      • Beta cohort: Pastoral network (P3 positioning synergy)
      • Embedding strategy: Server-side at launch; evaluate on-device in Phase 5

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Epic: Amicus — AI Study Partner (v1) · Issue #1446 · CraigBuckmaster/ScriptureDeepDive · GitHub
          Skip to content

          Epic: Amicus — AI Study Partner (v1) #1446

          Description

          @CraigBuckmaster

          AI Study Partner (v1) — Epic

          Derived from:#1352, idea #42
          Priority: P1 · Size: XL · Status: Planning
          Hard blocker:#1312 (R2 DB delivery architecture)
          Product name:Amicus (Latin for "friend" — echoes amicus curiae, a scholarly voice offering counsel)

          A persistent, RAG-grounded scholarly study partner. Knows the user's study history, asks better questions, draws exclusively from the curated Companion Study corpus. Operates as an ambient presence across three surfaces (home screen module, inline chapter card, dedicated Partner tab).

          Full technical plan: ai-study-partner-plan.md (see artifact attached to planning conversation).


          Locked Decisions

          DecisionChoice
          GroundingRAG-only with editorial meta-FAQ mitigation
          ScopePrompts + reactive Q&A (persistent memory deferred to v2)
          SurfacesFAB (with peek) + Home card + Partner tab
          Reasoning engineHybrid — rules + pre-compute + cloud LLM + optional on-device
          Cloud modelAnthropic Claude (Sonnet for tab, Haiku for inline/proactive)
          PricingBase premium (300/mo cap) + Partner+ at $9.99 (1,500/mo)
          PrivacyAbstract-only cloud data flow; user-inspectable profile
          Corpus gap captureEvery gap → own card in Partner Gaps swim lane (switches to digest at 20K users)

          Architecture (high level)

          Client (React Native)
          → local retrieval (scripture.db + sqlite-vec, ~38K chunks, ~90MB)
          → compressed profile generator (deterministic, user.db → prose)
          → reasoning router (pre-compute | Apple FM | Haiku | Sonnet)
          → Cloudflare Worker AI Proxy (auth, rate limit, zero-retention)
          → Anthropic API
          → Cloudflare D1 (corpus gap capture)
          

          Three surfaces, one engine: FAB (with peek) is always-on and context-aware — surfaces chapter-specific chips when on a chapter screen, entity-aware chips on Explore/people/debates, generic input elsewhere. Home module delivers a daily proactive insight. Amicus tab hosts full threaded conversations with persistent history and citation navigation.


          Hybrid Reasoning — cost only where synthesis is needed

          InteractionEngineRuntime cost
          Daily home promptPre-computed + cached$0
          Inline chapter chipsPre-generated at build time$0
          Meta-FAQ exact matchCached static$0
          Single-chunk paraphrase (iOS 18+)Apple Foundation Models$0
          Single-chunk paraphrase (other)Claude Haiku~$0.002
          Multi-turn conversationClaude Sonnet~$0.005
          Multi-source synthesisClaude Sonnet~$0.005

          Result: ~60% of interactions route to $0-cost paths.


          Cost Model — three scenarios, 5% conversion

          Per-user blended cost: ~$0.26/premium/month. Ratio holds at ~10% of premium revenue across all scales.

          Scenario Y5Total usersPremium (5%)LLM $/mo% premium rev
          Conservative150K7,500$1,95010%
          Moderate590K29,500$7,67010%
          Aggressive1.80M90,000$23,40010%

          Cost safety rails: 300/mo soft cap on base premium prevents power-user tail risk. Partner+ tier at $9.99 pulls heavy users into a sustainable lane without subsidizing from casual fees.


          Corpus Gap Capture — the feedback flywheel

          Every "I don't have that in my corpus" response is a content roadmap signal. Captured in Cloudflare D1 with:

          • Raw question text (lightly scrubbed for PII)
          • Retrieval scores (distinguishes content gap vs retrieval failure)
          • Compressed profile + current chapter context
          • User feedback signals
          • Semantic deduplication via embedding similarity

          Review workflow: Every gap auto-creates a GitHub issue in the Partner Gaps kanban swim lane (label corpus-gap). Dedicated lane keeps corpus-gap volume isolated from product work. Craig reviews, plans content, ships PR → gap auto-closes.

          Scale trigger: At ~20K total users (~58 gaps/day), switch to digest-for-singletons + dedicated-cards-for-clusters. D1 backend unchanged — presentation-layer swap only.

          See #1471 for implementation detail.


          Phase Plan (15–20 weeks from Phase 1 start)

          Phase 1 — Foundations (6–8 weeks)

          Phase 2 — Partner Tab (4–6 weeks)

          Phase 3 — FAB Peek (3–4 weeks)

          Phase 4 — Home Screen + Partner+ (2–3 weeks)

          Phase 5 — Polish & Optimization (ongoing)


          Dependencies


          Finalized answers to prior open questions

          • Name: Amicus
          • Meta-FAQ authorship: LLM-drafted (chat-session workflow), Craig edits
          • Beta cohort: Pastoral network (P3 positioning synergy)
          • Embedding strategy: Server-side at launch; evaluate on-device in Phase 5

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Epic: Amicus — AI Study Partner (v1) · Issue #1446 · CraigBuckmaster/ScriptureDeepDive · GitHub
              Skip to content

              Epic: Amicus — AI Study Partner (v1) #1446

              Description

              @CraigBuckmaster

              AI Study Partner (v1) — Epic

              Derived from:#1352, idea #42
              Priority: P1 · Size: XL · Status: Planning
              Hard blocker:#1312 (R2 DB delivery architecture)
              Product name:Amicus (Latin for "friend" — echoes amicus curiae, a scholarly voice offering counsel)

              A persistent, RAG-grounded scholarly study partner. Knows the user's study history, asks better questions, draws exclusively from the curated Companion Study corpus. Operates as an ambient presence across three surfaces (home screen module, inline chapter card, dedicated Partner tab).

              Full technical plan: ai-study-partner-plan.md (see artifact attached to planning conversation).


              Locked Decisions

              DecisionChoice
              GroundingRAG-only with editorial meta-FAQ mitigation
              ScopePrompts + reactive Q&A (persistent memory deferred to v2)
              SurfacesFAB (with peek) + Home card + Partner tab
              Reasoning engineHybrid — rules + pre-compute + cloud LLM + optional on-device
              Cloud modelAnthropic Claude (Sonnet for tab, Haiku for inline/proactive)
              PricingBase premium (300/mo cap) + Partner+ at $9.99 (1,500/mo)
              PrivacyAbstract-only cloud data flow; user-inspectable profile
              Corpus gap captureEvery gap → own card in Partner Gaps swim lane (switches to digest at 20K users)

              Architecture (high level)

              Client (React Native)
              → local retrieval (scripture.db + sqlite-vec, ~38K chunks, ~90MB)
              → compressed profile generator (deterministic, user.db → prose)
              → reasoning router (pre-compute | Apple FM | Haiku | Sonnet)
              → Cloudflare Worker AI Proxy (auth, rate limit, zero-retention)
              → Anthropic API
              → Cloudflare D1 (corpus gap capture)
              

              Three surfaces, one engine: FAB (with peek) is always-on and context-aware — surfaces chapter-specific chips when on a chapter screen, entity-aware chips on Explore/people/debates, generic input elsewhere. Home module delivers a daily proactive insight. Amicus tab hosts full threaded conversations with persistent history and citation navigation.


              Hybrid Reasoning — cost only where synthesis is needed

              InteractionEngineRuntime cost
              Daily home promptPre-computed + cached$0
              Inline chapter chipsPre-generated at build time$0
              Meta-FAQ exact matchCached static$0
              Single-chunk paraphrase (iOS 18+)Apple Foundation Models$0
              Single-chunk paraphrase (other)Claude Haiku~$0.002
              Multi-turn conversationClaude Sonnet~$0.005
              Multi-source synthesisClaude Sonnet~$0.005

              Result: ~60% of interactions route to $0-cost paths.


              Cost Model — three scenarios, 5% conversion

              Per-user blended cost: ~$0.26/premium/month. Ratio holds at ~10% of premium revenue across all scales.

              Scenario Y5Total usersPremium (5%)LLM $/mo% premium rev
              Conservative150K7,500$1,95010%
              Moderate590K29,500$7,67010%
              Aggressive1.80M90,000$23,40010%

              Cost safety rails: 300/mo soft cap on base premium prevents power-user tail risk. Partner+ tier at $9.99 pulls heavy users into a sustainable lane without subsidizing from casual fees.


              Corpus Gap Capture — the feedback flywheel

              Every "I don't have that in my corpus" response is a content roadmap signal. Captured in Cloudflare D1 with:

              • Raw question text (lightly scrubbed for PII)
              • Retrieval scores (distinguishes content gap vs retrieval failure)
              • Compressed profile + current chapter context
              • User feedback signals
              • Semantic deduplication via embedding similarity

              Review workflow: Every gap auto-creates a GitHub issue in the Partner Gaps kanban swim lane (label corpus-gap). Dedicated lane keeps corpus-gap volume isolated from product work. Craig reviews, plans content, ships PR → gap auto-closes.

              Scale trigger: At ~20K total users (~58 gaps/day), switch to digest-for-singletons + dedicated-cards-for-clusters. D1 backend unchanged — presentation-layer swap only.

              See #1471 for implementation detail.


              Phase Plan (15–20 weeks from Phase 1 start)

              Phase 1 — Foundations (6–8 weeks)

              Phase 2 — Partner Tab (4–6 weeks)

              Phase 3 — FAB Peek (3–4 weeks)

              Phase 4 — Home Screen + Partner+ (2–3 weeks)

              Phase 5 — Polish & Optimization (ongoing)


              Dependencies


              Finalized answers to prior open questions

              • Name: Amicus
              • Meta-FAQ authorship: LLM-drafted (chat-session workflow), Craig edits
              • Beta cohort: Pastoral network (P3 positioning synergy)
              • Embedding strategy: Server-side at launch; evaluate on-device in Phase 5

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Epic: Amicus — AI Study Partner (v1) · Issue #1446 · CraigBuckmaster/ScriptureDeepDive · GitHub
                  Skip to content

                  Epic: Amicus — AI Study Partner (v1) #1446

                  Description

                  @CraigBuckmaster

                  AI Study Partner (v1) — Epic

                  Derived from:#1352, idea #42
                  Priority: P1 · Size: XL · Status: Planning
                  Hard blocker:#1312 (R2 DB delivery architecture)
                  Product name:Amicus (Latin for "friend" — echoes amicus curiae, a scholarly voice offering counsel)

                  A persistent, RAG-grounded scholarly study partner. Knows the user's study history, asks better questions, draws exclusively from the curated Companion Study corpus. Operates as an ambient presence across three surfaces (home screen module, inline chapter card, dedicated Partner tab).

                  Full technical plan: ai-study-partner-plan.md (see artifact attached to planning conversation).


                  Locked Decisions

                  DecisionChoice
                  GroundingRAG-only with editorial meta-FAQ mitigation
                  ScopePrompts + reactive Q&A (persistent memory deferred to v2)
                  SurfacesFAB (with peek) + Home card + Partner tab
                  Reasoning engineHybrid — rules + pre-compute + cloud LLM + optional on-device
                  Cloud modelAnthropic Claude (Sonnet for tab, Haiku for inline/proactive)
                  PricingBase premium (300/mo cap) + Partner+ at $9.99 (1,500/mo)
                  PrivacyAbstract-only cloud data flow; user-inspectable profile
                  Corpus gap captureEvery gap → own card in Partner Gaps swim lane (switches to digest at 20K users)

                  Architecture (high level)

                  Client (React Native)
                  → local retrieval (scripture.db + sqlite-vec, ~38K chunks, ~90MB)
                  → compressed profile generator (deterministic, user.db → prose)
                  → reasoning router (pre-compute | Apple FM | Haiku | Sonnet)
                  → Cloudflare Worker AI Proxy (auth, rate limit, zero-retention)
                  → Anthropic API
                  → Cloudflare D1 (corpus gap capture)
                  

                  Three surfaces, one engine: FAB (with peek) is always-on and context-aware — surfaces chapter-specific chips when on a chapter screen, entity-aware chips on Explore/people/debates, generic input elsewhere. Home module delivers a daily proactive insight. Amicus tab hosts full threaded conversations with persistent history and citation navigation.


                  Hybrid Reasoning — cost only where synthesis is needed

                  InteractionEngineRuntime cost
                  Daily home promptPre-computed + cached$0
                  Inline chapter chipsPre-generated at build time$0
                  Meta-FAQ exact matchCached static$0
                  Single-chunk paraphrase (iOS 18+)Apple Foundation Models$0
                  Single-chunk paraphrase (other)Claude Haiku~$0.002
                  Multi-turn conversationClaude Sonnet~$0.005
                  Multi-source synthesisClaude Sonnet~$0.005

                  Result: ~60% of interactions route to $0-cost paths.


                  Cost Model — three scenarios, 5% conversion

                  Per-user blended cost: ~$0.26/premium/month. Ratio holds at ~10% of premium revenue across all scales.

                  Scenario Y5Total usersPremium (5%)LLM $/mo% premium rev
                  Conservative150K7,500$1,95010%
                  Moderate590K29,500$7,67010%
                  Aggressive1.80M90,000$23,40010%

                  Cost safety rails: 300/mo soft cap on base premium prevents power-user tail risk. Partner+ tier at $9.99 pulls heavy users into a sustainable lane without subsidizing from casual fees.


                  Corpus Gap Capture — the feedback flywheel

                  Every "I don't have that in my corpus" response is a content roadmap signal. Captured in Cloudflare D1 with:

                  • Raw question text (lightly scrubbed for PII)
                  • Retrieval scores (distinguishes content gap vs retrieval failure)
                  • Compressed profile + current chapter context
                  • User feedback signals
                  • Semantic deduplication via embedding similarity

                  Review workflow: Every gap auto-creates a GitHub issue in the Partner Gaps kanban swim lane (label corpus-gap). Dedicated lane keeps corpus-gap volume isolated from product work. Craig reviews, plans content, ships PR → gap auto-closes.

                  Scale trigger: At ~20K total users (~58 gaps/day), switch to digest-for-singletons + dedicated-cards-for-clusters. D1 backend unchanged — presentation-layer swap only.

                  See #1471 for implementation detail.


                  Phase Plan (15–20 weeks from Phase 1 start)

                  Phase 1 — Foundations (6–8 weeks)

                  Phase 2 — Partner Tab (4–6 weeks)

                  Phase 3 — FAB Peek (3–4 weeks)

                  Phase 4 — Home Screen + Partner+ (2–3 weeks)

                  Phase 5 — Polish & Optimization (ongoing)


                  Dependencies


                  Finalized answers to prior open questions

                  • Name: Amicus
                  • Meta-FAQ authorship: LLM-drafted (chat-session workflow), Craig edits
                  • Beta cohort: Pastoral network (P3 positioning synergy)
                  • Embedding strategy: Server-side at launch; evaluate on-device in Phase 5

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Epic: Amicus — AI Study Partner (v1) · Issue #1446 · CraigBuckmaster/ScriptureDeepDive · GitHub
                      Skip to content

                      Epic: Amicus — AI Study Partner (v1) #1446

                      Description

                      @CraigBuckmaster

                      AI Study Partner (v1) — Epic

                      Derived from:#1352, idea #42
                      Priority: P1 · Size: XL · Status: Planning
                      Hard blocker:#1312 (R2 DB delivery architecture)
                      Product name:Amicus (Latin for "friend" — echoes amicus curiae, a scholarly voice offering counsel)

                      A persistent, RAG-grounded scholarly study partner. Knows the user's study history, asks better questions, draws exclusively from the curated Companion Study corpus. Operates as an ambient presence across three surfaces (home screen module, inline chapter card, dedicated Partner tab).

                      Full technical plan: ai-study-partner-plan.md (see artifact attached to planning conversation).


                      Locked Decisions

                      DecisionChoice
                      GroundingRAG-only with editorial meta-FAQ mitigation
                      ScopePrompts + reactive Q&A (persistent memory deferred to v2)
                      SurfacesFAB (with peek) + Home card + Partner tab
                      Reasoning engineHybrid — rules + pre-compute + cloud LLM + optional on-device
                      Cloud modelAnthropic Claude (Sonnet for tab, Haiku for inline/proactive)
                      PricingBase premium (300/mo cap) + Partner+ at $9.99 (1,500/mo)
                      PrivacyAbstract-only cloud data flow; user-inspectable profile
                      Corpus gap captureEvery gap → own card in Partner Gaps swim lane (switches to digest at 20K users)

                      Architecture (high level)

                      Client (React Native)
                      → local retrieval (scripture.db + sqlite-vec, ~38K chunks, ~90MB)
                      → compressed profile generator (deterministic, user.db → prose)
                      → reasoning router (pre-compute | Apple FM | Haiku | Sonnet)
                      → Cloudflare Worker AI Proxy (auth, rate limit, zero-retention)
                      → Anthropic API
                      → Cloudflare D1 (corpus gap capture)
                      

                      Three surfaces, one engine: FAB (with peek) is always-on and context-aware — surfaces chapter-specific chips when on a chapter screen, entity-aware chips on Explore/people/debates, generic input elsewhere. Home module delivers a daily proactive insight. Amicus tab hosts full threaded conversations with persistent history and citation navigation.


                      Hybrid Reasoning — cost only where synthesis is needed

                      InteractionEngineRuntime cost
                      Daily home promptPre-computed + cached$0
                      Inline chapter chipsPre-generated at build time$0
                      Meta-FAQ exact matchCached static$0
                      Single-chunk paraphrase (iOS 18+)Apple Foundation Models$0
                      Single-chunk paraphrase (other)Claude Haiku~$0.002
                      Multi-turn conversationClaude Sonnet~$0.005
                      Multi-source synthesisClaude Sonnet~$0.005

                      Result: ~60% of interactions route to $0-cost paths.


                      Cost Model — three scenarios, 5% conversion

                      Per-user blended cost: ~$0.26/premium/month. Ratio holds at ~10% of premium revenue across all scales.

                      Scenario Y5Total usersPremium (5%)LLM $/mo% premium rev
                      Conservative150K7,500$1,95010%
                      Moderate590K29,500$7,67010%
                      Aggressive1.80M90,000$23,40010%

                      Cost safety rails: 300/mo soft cap on base premium prevents power-user tail risk. Partner+ tier at $9.99 pulls heavy users into a sustainable lane without subsidizing from casual fees.


                      Corpus Gap Capture — the feedback flywheel

                      Every "I don't have that in my corpus" response is a content roadmap signal. Captured in Cloudflare D1 with:

                      • Raw question text (lightly scrubbed for PII)
                      • Retrieval scores (distinguishes content gap vs retrieval failure)
                      • Compressed profile + current chapter context
                      • User feedback signals
                      • Semantic deduplication via embedding similarity

                      Review workflow: Every gap auto-creates a GitHub issue in the Partner Gaps kanban swim lane (label corpus-gap). Dedicated lane keeps corpus-gap volume isolated from product work. Craig reviews, plans content, ships PR → gap auto-closes.

                      Scale trigger: At ~20K total users (~58 gaps/day), switch to digest-for-singletons + dedicated-cards-for-clusters. D1 backend unchanged — presentation-layer swap only.

                      See #1471 for implementation detail.


                      Phase Plan (15–20 weeks from Phase 1 start)

                      Phase 1 — Foundations (6–8 weeks)

                      Phase 2 — Partner Tab (4–6 weeks)

                      Phase 3 — FAB Peek (3–4 weeks)

                      Phase 4 — Home Screen + Partner+ (2–3 weeks)

                      Phase 5 — Polish & Optimization (ongoing)


                      Dependencies


                      Finalized answers to prior open questions

                      • Name: Amicus
                      • Meta-FAQ authorship: LLM-drafted (chat-session workflow), Craig edits
                      • Beta cohort: Pastoral network (P3 positioning synergy)
                      • Embedding strategy: Server-side at launch; evaluate on-device in Phase 5

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Epic: Amicus — AI Study Partner (v1) · Issue #1446 · CraigBuckmaster/ScriptureDeepDive · GitHub
                          Skip to content

                          Epic: Amicus — AI Study Partner (v1) #1446

                          Description

                          @CraigBuckmaster

                          AI Study Partner (v1) — Epic

                          Derived from:#1352, idea #42
                          Priority: P1 · Size: XL · Status: Planning
                          Hard blocker:#1312 (R2 DB delivery architecture)
                          Product name:Amicus (Latin for "friend" — echoes amicus curiae, a scholarly voice offering counsel)

                          A persistent, RAG-grounded scholarly study partner. Knows the user's study history, asks better questions, draws exclusively from the curated Companion Study corpus. Operates as an ambient presence across three surfaces (home screen module, inline chapter card, dedicated Partner tab).

                          Full technical plan: ai-study-partner-plan.md (see artifact attached to planning conversation).


                          Locked Decisions

                          DecisionChoice
                          GroundingRAG-only with editorial meta-FAQ mitigation
                          ScopePrompts + reactive Q&A (persistent memory deferred to v2)
                          SurfacesFAB (with peek) + Home card + Partner tab
                          Reasoning engineHybrid — rules + pre-compute + cloud LLM + optional on-device
                          Cloud modelAnthropic Claude (Sonnet for tab, Haiku for inline/proactive)
                          PricingBase premium (300/mo cap) + Partner+ at $9.99 (1,500/mo)
                          PrivacyAbstract-only cloud data flow; user-inspectable profile
                          Corpus gap captureEvery gap → own card in Partner Gaps swim lane (switches to digest at 20K users)

                          Architecture (high level)

                          Client (React Native)
                          → local retrieval (scripture.db + sqlite-vec, ~38K chunks, ~90MB)
                          → compressed profile generator (deterministic, user.db → prose)
                          → reasoning router (pre-compute | Apple FM | Haiku | Sonnet)
                          → Cloudflare Worker AI Proxy (auth, rate limit, zero-retention)
                          → Anthropic API
                          → Cloudflare D1 (corpus gap capture)
                          

                          Three surfaces, one engine: FAB (with peek) is always-on and context-aware — surfaces chapter-specific chips when on a chapter screen, entity-aware chips on Explore/people/debates, generic input elsewhere. Home module delivers a daily proactive insight. Amicus tab hosts full threaded conversations with persistent history and citation navigation.


                          Hybrid Reasoning — cost only where synthesis is needed

                          InteractionEngineRuntime cost
                          Daily home promptPre-computed + cached$0
                          Inline chapter chipsPre-generated at build time$0
                          Meta-FAQ exact matchCached static$0
                          Single-chunk paraphrase (iOS 18+)Apple Foundation Models$0
                          Single-chunk paraphrase (other)Claude Haiku~$0.002
                          Multi-turn conversationClaude Sonnet~$0.005
                          Multi-source synthesisClaude Sonnet~$0.005

                          Result: ~60% of interactions route to $0-cost paths.


                          Cost Model — three scenarios, 5% conversion

                          Per-user blended cost: ~$0.26/premium/month. Ratio holds at ~10% of premium revenue across all scales.

                          Scenario Y5Total usersPremium (5%)LLM $/mo% premium rev
                          Conservative150K7,500$1,95010%
                          Moderate590K29,500$7,67010%
                          Aggressive1.80M90,000$23,40010%

                          Cost safety rails: 300/mo soft cap on base premium prevents power-user tail risk. Partner+ tier at $9.99 pulls heavy users into a sustainable lane without subsidizing from casual fees.


                          Corpus Gap Capture — the feedback flywheel

                          Every "I don't have that in my corpus" response is a content roadmap signal. Captured in Cloudflare D1 with:

                          • Raw question text (lightly scrubbed for PII)
                          • Retrieval scores (distinguishes content gap vs retrieval failure)
                          • Compressed profile + current chapter context
                          • User feedback signals
                          • Semantic deduplication via embedding similarity

                          Review workflow: Every gap auto-creates a GitHub issue in the Partner Gaps kanban swim lane (label corpus-gap). Dedicated lane keeps corpus-gap volume isolated from product work. Craig reviews, plans content, ships PR → gap auto-closes.

                          Scale trigger: At ~20K total users (~58 gaps/day), switch to digest-for-singletons + dedicated-cards-for-clusters. D1 backend unchanged — presentation-layer swap only.

                          See #1471 for implementation detail.


                          Phase Plan (15–20 weeks from Phase 1 start)

                          Phase 1 — Foundations (6–8 weeks)

                          Phase 2 — Partner Tab (4–6 weeks)

                          Phase 3 — FAB Peek (3–4 weeks)

                          Phase 4 — Home Screen + Partner+ (2–3 weeks)

                          Phase 5 — Polish & Optimization (ongoing)


                          Dependencies


                          Finalized answers to prior open questions

                          • Name: Amicus
                          • Meta-FAQ authorship: LLM-drafted (chat-session workflow), Craig edits
                          • Beta cohort: Pastoral network (P3 positioning synergy)
                          • Embedding strategy: Server-side at launch; evaluate on-device in Phase 5

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Epic: Amicus — AI Study Partner (v1) · Issue #1446 · CraigBuckmaster/ScriptureDeepDive · GitHub
                              Skip to content

                              Epic: Amicus — AI Study Partner (v1) #1446

                              Description

                              @CraigBuckmaster

                              AI Study Partner (v1) — Epic

                              Derived from:#1352, idea #42
                              Priority: P1 · Size: XL · Status: Planning
                              Hard blocker:#1312 (R2 DB delivery architecture)
                              Product name:Amicus (Latin for "friend" — echoes amicus curiae, a scholarly voice offering counsel)

                              A persistent, RAG-grounded scholarly study partner. Knows the user's study history, asks better questions, draws exclusively from the curated Companion Study corpus. Operates as an ambient presence across three surfaces (home screen module, inline chapter card, dedicated Partner tab).

                              Full technical plan: ai-study-partner-plan.md (see artifact attached to planning conversation).


                              Locked Decisions

                              DecisionChoice
                              GroundingRAG-only with editorial meta-FAQ mitigation
                              ScopePrompts + reactive Q&A (persistent memory deferred to v2)
                              SurfacesFAB (with peek) + Home card + Partner tab
                              Reasoning engineHybrid — rules + pre-compute + cloud LLM + optional on-device
                              Cloud modelAnthropic Claude (Sonnet for tab, Haiku for inline/proactive)
                              PricingBase premium (300/mo cap) + Partner+ at $9.99 (1,500/mo)
                              PrivacyAbstract-only cloud data flow; user-inspectable profile
                              Corpus gap captureEvery gap → own card in Partner Gaps swim lane (switches to digest at 20K users)

                              Architecture (high level)

                              Client (React Native)
                              → local retrieval (scripture.db + sqlite-vec, ~38K chunks, ~90MB)
                              → compressed profile generator (deterministic, user.db → prose)
                              → reasoning router (pre-compute | Apple FM | Haiku | Sonnet)
                              → Cloudflare Worker AI Proxy (auth, rate limit, zero-retention)
                              → Anthropic API
                              → Cloudflare D1 (corpus gap capture)
                              

                              Three surfaces, one engine: FAB (with peek) is always-on and context-aware — surfaces chapter-specific chips when on a chapter screen, entity-aware chips on Explore/people/debates, generic input elsewhere. Home module delivers a daily proactive insight. Amicus tab hosts full threaded conversations with persistent history and citation navigation.


                              Hybrid Reasoning — cost only where synthesis is needed

                              InteractionEngineRuntime cost
                              Daily home promptPre-computed + cached$0
                              Inline chapter chipsPre-generated at build time$0
                              Meta-FAQ exact matchCached static$0
                              Single-chunk paraphrase (iOS 18+)Apple Foundation Models$0
                              Single-chunk paraphrase (other)Claude Haiku~$0.002
                              Multi-turn conversationClaude Sonnet~$0.005
                              Multi-source synthesisClaude Sonnet~$0.005

                              Result: ~60% of interactions route to $0-cost paths.


                              Cost Model — three scenarios, 5% conversion

                              Per-user blended cost: ~$0.26/premium/month. Ratio holds at ~10% of premium revenue across all scales.

                              Scenario Y5Total usersPremium (5%)LLM $/mo% premium rev
                              Conservative150K7,500$1,95010%
                              Moderate590K29,500$7,67010%
                              Aggressive1.80M90,000$23,40010%

                              Cost safety rails: 300/mo soft cap on base premium prevents power-user tail risk. Partner+ tier at $9.99 pulls heavy users into a sustainable lane without subsidizing from casual fees.


                              Corpus Gap Capture — the feedback flywheel

                              Every "I don't have that in my corpus" response is a content roadmap signal. Captured in Cloudflare D1 with:

                              • Raw question text (lightly scrubbed for PII)
                              • Retrieval scores (distinguishes content gap vs retrieval failure)
                              • Compressed profile + current chapter context
                              • User feedback signals
                              • Semantic deduplication via embedding similarity

                              Review workflow: Every gap auto-creates a GitHub issue in the Partner Gaps kanban swim lane (label corpus-gap). Dedicated lane keeps corpus-gap volume isolated from product work. Craig reviews, plans content, ships PR → gap auto-closes.

                              Scale trigger: At ~20K total users (~58 gaps/day), switch to digest-for-singletons + dedicated-cards-for-clusters. D1 backend unchanged — presentation-layer swap only.

                              See #1471 for implementation detail.


                              Phase Plan (15–20 weeks from Phase 1 start)

                              Phase 1 — Foundations (6–8 weeks)

                              Phase 2 — Partner Tab (4–6 weeks)

                              Phase 3 — FAB Peek (3–4 weeks)

                              Phase 4 — Home Screen + Partner+ (2–3 weeks)

                              Phase 5 — Polish & Optimization (ongoing)


                              Dependencies


                              Finalized answers to prior open questions

                              • Name: Amicus
                              • Meta-FAQ authorship: LLM-drafted (chat-session workflow), Craig edits
                              • Beta cohort: Pastoral network (P3 positioning synergy)
                              • Embedding strategy: Server-side at launch; evaluate on-device in Phase 5

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions