{"chunk_id":"memory#memory-summary","doc_id":"memory","title":"Memory Summary","heading_path":["Memory Summary"],"type":"root","text":"This vault is the durable memory for a small team of AI agents that ship a SaaS product. Humans and agents both read and write here. It's compiled into the public demo at <https://nikopastore.github.io/agent-memory-site/ so you can see exactly what a real \"agent operating system\" looks like as a published bundle.","html":"<section><h2>Memory Summary</h2><p>This vault is the durable memory for a small team of AI agents that ship a SaaS product. Humans and agents both read and write here. It&#39;s compiled into the public demo at &lt;https://nikopastore.github.io/agent-memory-site/ so you can see exactly what a real &quot;agent operating system&quot; looks like as a published bundle.</p></section>","source_path":"MEMORY.md","canonical_url":"notes/memory.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["summary"],"tokens":79,"content_hash":"e197eadbadae","visibility":"public","sensitivity":"none"}
{"chunk_id":"memory#what-lives-here","doc_id":"memory","title":"Memory Summary","heading_path":["Memory Summary","What lives here"],"type":"root","text":"- projects/ — active work with goals, status, next actions - decisions/ — durable decisions and the reasoning behind them - procedures/ — repeatable workflows (incident response, deploys, weekly review) - facts/ — things an agent should never re-derive (versioned constants, defaults) - people/ — collaborators and context about them (one is intentionally private) - handoffs/ — session-to-session continuity notes","html":"<section><h2>What lives here</h2><p>- projects/ — active work with goals, status, next actions - decisions/ — durable decisions and the reasoning behind them - procedures/ — repeatable workflows (incident response, deploys, weekly review) - facts/ — things an agent should never re-derive (versioned constants, defaults) - people/ — collaborators and context about them (one is intentionally private) - handoffs/ — session-to-session continuity notes</p></section>","source_path":"MEMORY.md","canonical_url":"notes/memory.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["summary"],"tokens":104,"content_hash":"abb0bfb6331e","visibility":"public","sensitivity":"none"}
{"chunk_id":"memory#three-things-every-agent-should-know-first","doc_id":"memory","title":"Memory Summary","heading_path":["Memory Summary","Three things every agent should know first"],"type":"root","text":"1. We use the Customer Support Agent v2 for tier-1 inbound and escalate to humans through the Incident Response Handoff procedure. 2. The current data pipeline rewrite is tracked in Data Pipeline Refactor — from this vault feeds it directly. 3. Privacy posture is decided in Separate Private and Public Memory — never re-derive that boundary in a session. See Weekly Agent Memory Review for how we keep this vault tidy.","html":"<section><h2>Three things every agent should know first</h2><p>1. We use the Customer Support Agent v2 for tier-1 inbound and escalate to humans through the Incident Response Handoff procedure. 2. The current data pipeline rewrite is tracked in Data Pipeline Refactor — from this vault feeds it directly. 3. Privacy posture is decided in Separate Private and Public Memory — never re-derive that boundary in a session. See Weekly Agent Memory Review for how we keep this vault tidy.</p></section>","source_path":"MEMORY.md","canonical_url":"notes/memory.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["summary"],"tokens":105,"content_hash":"2f652fd6c1c1","visibility":"public","sensitivity":"none"}
{"chunk_id":"decisions-separate-private-and-public-memory#decision","doc_id":"decisions-separate-private-and-public-memory","title":"Separate Private and Public Memory","heading_path":["Separate Private and Public Memory","Decision"],"type":"decision","text":"Every note in this vault declares and in frontmatter. We do not rely on directory layout, file naming, or copy-paste discipline. ships only notes with . ships more, but scrubs emails / API-key shapes / JWTs / phone numbers via Redaction patterns. is the internal default.","html":"<section><h2>Decision</h2><p>Every note in this vault declares and in frontmatter. We do not rely on directory layout, file naming, or copy-paste discipline. ships only notes with . ships more, but scrubs emails / API-key shapes / JWTs / phone numbers via Redaction patterns. is the internal default.</p></section>","source_path":"decisions/separate-private-and-public-memory.md","canonical_url":"notes/decisions-separate-private-and-public-memory.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["decision","privacy","security"],"tokens":68,"content_hash":"9d2be785bd4d","visibility":"public","sensitivity":"none"}
{"chunk_id":"decisions-separate-private-and-public-memory#why-this-and-not-directories","doc_id":"decisions-separate-private-and-public-memory","title":"Separate Private and Public Memory","heading_path":["Separate Private and Public Memory","Why this and not directories"],"type":"decision","text":"- Notes move. Frontmatter survives moves; directories don't. - Wiki-links cross categories naturally. A note linking to a note shouldn't break because someone reorganized. - The compiler resolves wiki-links AFTER privacy filtering, so a public note linking to a private note collapses to — the target's title never leaks.","html":"<section><h2>Why this and not directories</h2><p>- Notes move. Frontmatter survives moves; directories don&#39;t. - Wiki-links cross categories naturally. A note linking to a note shouldn&#39;t break because someone reorganized. - The compiler resolves wiki-links AFTER privacy filtering, so a public note linking to a private note collapses to — the target&#39;s title never leaks.</p></section>","source_path":"decisions/separate-private-and-public-memory.md","canonical_url":"notes/decisions-separate-private-and-public-memory.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["decision","privacy","security"],"tokens":81,"content_hash":"2528594c2962","visibility":"public","sensitivity":"none"}
{"chunk_id":"decisions-separate-private-and-public-memory#enforcement","doc_id":"decisions-separate-private-and-public-memory","title":"Separate Private and Public Memory","heading_path":["Separate Private and Public Memory","Enforcement"],"type":"decision","text":"- runs in CI before any public deploy and refuses if a public note links to a private one. - runs in pre-commit.","html":"<section><h2>Enforcement</h2><p>- runs in CI before any public deploy and refuses if a public note links to a private one. - runs in pre-commit.</p></section>","source_path":"decisions/separate-private-and-public-memory.md","canonical_url":"notes/decisions-separate-private-and-public-memory.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["decision","privacy","security"],"tokens":28,"content_hash":"bdf5b726015d","visibility":"public","sensitivity":"none"}
{"chunk_id":"decisions-separate-private-and-public-memory#related","doc_id":"decisions-separate-private-and-public-memory","title":"Separate Private and Public Memory","heading_path":["Separate Private and Public Memory","Related"],"type":"decision","text":"- Use chunks.jsonl as the canonical RAG substrate - Customer Support Agent v2","html":"<section><h2>Related</h2><p>- Use chunks.jsonl as the canonical RAG substrate - Customer Support Agent v2</p></section>","source_path":"decisions/separate-private-and-public-memory.md","canonical_url":"notes/decisions-separate-private-and-public-memory.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["decision","privacy","security"],"tokens":20,"content_hash":"87bb4b293ff4","visibility":"public","sensitivity":"none"}
{"chunk_id":"decisions-use-chunks-as-rag-substrate#decision","doc_id":"decisions-use-chunks-as-rag-substrate","title":"Use chunks.jsonl as the canonical RAG substrate","heading_path":["Use chunks.jsonl as the canonical RAG substrate","Decision"],"type":"decision","text":"Every retrieval-augmented surface in the company (support agent, internal helpdesk, the docs chatbot) reads from the same produced by . We do not run separate per-app embedding pipelines.","html":"<section><h2>Decision</h2><p>Every retrieval-augmented surface in the company (support agent, internal helpdesk, the docs chatbot) reads from the same produced by . We do not run separate per-app embedding pipelines.</p></section>","source_path":"decisions/use-chunks-as-rag-substrate.md","canonical_url":"notes/decisions-use-chunks-as-rag-substrate.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["decision","rag","architecture"],"tokens":47,"content_hash":"34e9f5bae6c2","visibility":"public","sensitivity":"none"}
{"chunk_id":"decisions-use-chunks-as-rag-substrate#why","doc_id":"decisions-use-chunks-as-rag-substrate","title":"Use chunks.jsonl as the canonical RAG substrate","heading_path":["Use chunks.jsonl as the canonical RAG substrate","Why"],"type":"decision","text":"- One source of truth. A change to a procedure note propagates to every agent in one rebuild. - Reproducible. and stable let us cache embeddings safely and diff \"what did the agent see today vs last week\". - Auditable. Provenance metadata ( , , ) survives end-to-end, so we can answer \"where did the agent get that answer from?\" in one query. - Privacy-aware. Build modes (private/public/redacted) compose with our Separate Private and Public Memory decision — we can hand the same pipeline a public-mode call for the customer-facing chatbot and a private-mode call for the internal helpdesk.","html":"<section><h2>Why</h2><p>- One source of truth. A change to a procedure note propagates to every agent in one rebuild. - Reproducible. and stable let us cache embeddings safely and diff &quot;what did the agent see today vs last week&quot;. - Auditable. Provenance metadata ( , , ) survives end-to-end, so we can answer &quot;where did the agent get that answer from?&quot; in one query. - Privacy-aware. Build modes (private/public/redacted) compose with our Separate Private and Public Memory decision — we can hand the same pipeline a public-mode call for the customer-facing chatbot and a private-mode call for the internal helpdesk.</p></section>","source_path":"decisions/use-chunks-as-rag-substrate.md","canonical_url":"notes/decisions-use-chunks-as-rag-substrate.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["decision","rag","architecture"],"tokens":148,"content_hash":"cafb72c8b97a","visibility":"public","sensitivity":"none"}
{"chunk_id":"decisions-use-chunks-as-rag-substrate#consequences","doc_id":"decisions-use-chunks-as-rag-substrate","title":"Use chunks.jsonl as the canonical RAG substrate","heading_path":["Use chunks.jsonl as the canonical RAG substrate","Consequences"],"type":"decision","text":"- We hard-depend on . We mitigate by pinning the version and keeping a local fork-ready copy. - Embedding is currently external (per-agent). The roadmap to fold embeddings into the build is in Data Pipeline Refactor.","html":"<section><h2>Consequences</h2><p>- We hard-depend on . We mitigate by pinning the version and keeping a local fork-ready copy. - Embedding is currently external (per-agent). The roadmap to fold embeddings into the build is in Data Pipeline Refactor.</p></section>","source_path":"decisions/use-chunks-as-rag-substrate.md","canonical_url":"notes/decisions-use-chunks-as-rag-substrate.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["decision","rag","architecture"],"tokens":54,"content_hash":"40cb3ddb2287","visibility":"public","sensitivity":"none"}
{"chunk_id":"decisions-use-chunks-as-rag-substrate#supersedes","doc_id":"decisions-use-chunks-as-rag-substrate","title":"Use chunks.jsonl as the canonical RAG substrate","heading_path":["Use chunks.jsonl as the canonical RAG substrate","Supersedes"],"type":"decision","text":"- A draft proposal for per-app LlamaIndex pipelines (Q1 2026) — rejected for the same-source-of-truth reason.","html":"<section><h2>Supersedes</h2><p>- A draft proposal for per-app LlamaIndex pipelines (Q1 2026) — rejected for the same-source-of-truth reason.</p></section>","source_path":"decisions/use-chunks-as-rag-substrate.md","canonical_url":"notes/decisions-use-chunks-as-rag-substrate.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["decision","rag","architecture"],"tokens":28,"content_hash":"0bb96ac4cbcd","visibility":"public","sensitivity":"none"}
{"chunk_id":"decisions-use-chunks-as-rag-substrate#related","doc_id":"decisions-use-chunks-as-rag-substrate","title":"Use chunks.jsonl as the canonical RAG substrate","heading_path":["Use chunks.jsonl as the canonical RAG substrate","Related"],"type":"decision","text":"- Separate Private and Public Memory - Customer Support Agent v2","html":"<section><h2>Related</h2><p>- Separate Private and Public Memory - Customer Support Agent v2</p></section>","source_path":"decisions/use-chunks-as-rag-substrate.md","canonical_url":"notes/decisions-use-chunks-as-rag-substrate.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["decision","rag","architecture"],"tokens":16,"content_hash":"0f0412aea04c","visibility":"public","sensitivity":"none"}
{"chunk_id":"facts-redaction-patterns#redaction-patterns","doc_id":"facts-redaction-patterns","title":"Redaction patterns","heading_path":["Redaction patterns"],"type":"fact","text":"What catches today: | Class | Pattern | Replacement | |---|---|---| | Email | RFC-ish + unicode | | | OpenAI keys | | | | GitHub tokens | , | | | AWS access keys | | | | Slack tokens | | | | JWTs | header.payload.sig | | | Generic key/value | , | | | Private keys | | |","html":"<section><h2>Redaction patterns</h2><p>What catches today: | Class | Pattern | Replacement | |---|---|---| | Email | RFC-ish + unicode | | | OpenAI keys | | | | GitHub tokens | , | | | AWS access keys | | | | Slack tokens | | | | JWTs | header.payload.sig | | | Generic key/value | , | | | Private keys | | |</p></section>","source_path":"facts/redaction-patterns.md","canonical_url":"notes/facts-redaction-patterns.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["fact","privacy","redaction"],"tokens":68,"content_hash":"13b11ee5159f","visibility":"public","sensitivity":"none"}
{"chunk_id":"facts-redaction-patterns#with-strict-redact","doc_id":"facts-redaction-patterns","title":"Redaction patterns","heading_path":["Redaction patterns","With `--strict-redact`"],"type":"fact","text":"| Phone | US-shaped 10+ digit | | | Credit-card-ish | 13–19 digits | | | IPv4 | | |","html":"<section><h2>With `--strict-redact`</h2><p>| Phone | US-shaped 10+ digit | | | Credit-card-ish | 13–19 digits | | | IPv4 | | |</p></section>","source_path":"facts/redaction-patterns.md","canonical_url":"notes/facts-redaction-patterns.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["fact","privacy","redaction"],"tokens":21,"content_hash":"627eb91d9e43","visibility":"public","sensitivity":"none"}
{"chunk_id":"facts-redaction-patterns#per-note-deny-list","doc_id":"facts-redaction-patterns","title":"Redaction patterns","heading_path":["Redaction patterns","Per-note deny-list"],"type":"fact","text":"Add literal strings to a note's frontmatter: Anything matching is replaced with in every output artifact for that note.","html":"<section><h2>Per-note deny-list</h2><p>Add literal strings to a note&#39;s frontmatter: Anything matching is replaced with in every output artifact for that note.</p></section>","source_path":"facts/redaction-patterns.md","canonical_url":"notes/facts-redaction-patterns.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["fact","privacy","redaction"],"tokens":30,"content_hash":"6e8054fbca41","visibility":"public","sensitivity":"none"}
{"chunk_id":"facts-redaction-patterns#what-we-don-t-catch-automatically","doc_id":"facts-redaction-patterns","title":"Redaction patterns","heading_path":["Redaction patterns","What we DON'T catch automatically"],"type":"fact","text":"- Free-text names, addresses, DOBs - Customer codenames (use deny-list) - Proprietary numeric IDs (use deny-list) Trust the gate, verify the output. See Separate Private and Public Memory.","html":"<section><h2>What we DON&#39;T catch automatically</h2><p>- Free-text names, addresses, DOBs - Customer codenames (use deny-list) - Proprietary numeric IDs (use deny-list) Trust the gate, verify the output. See Separate Private and Public Memory.</p></section>","source_path":"facts/redaction-patterns.md","canonical_url":"notes/facts-redaction-patterns.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["fact","privacy","redaction"],"tokens":47,"content_hash":"1433ea57382d","visibility":"public","sensitivity":"none"}
{"chunk_id":"facts-vault-frontmatter-standard#vault-frontmatter-standard","doc_id":"facts-vault-frontmatter-standard","title":"Vault frontmatter standard","heading_path":["Vault frontmatter standard"],"type":"fact","text":"The minimum a note must have:","html":"<section><h2>Vault frontmatter standard</h2><p>The minimum a note must have:</p></section>","source_path":"facts/vault-frontmatter-standard.md","canonical_url":"notes/facts-vault-frontmatter-standard.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["fact","schema","standard"],"tokens":8,"content_hash":"add04e14bbdd","visibility":"public","sensitivity":"none"}
{"chunk_id":"facts-vault-frontmatter-standard#optional-used-by-tooling","doc_id":"facts-vault-frontmatter-standard","title":"Vault frontmatter standard","heading_path":["Vault frontmatter standard","Optional, used by tooling"],"type":"fact","text":"| Field | Used for | |---|---| | | Soft links surfaced in the dashboard | | | Per-note deny-list | | | Stronger search match weight | | | This note replaces N others; agent should prefer THIS one | | | Don't use this note; use the one in | | | Override file birthtime |","html":"<section><h2>Optional, used by tooling</h2><p>| Field | Used for | |---|---| | | Soft links surfaced in the dashboard | | | Per-note deny-list | | | Stronger search match weight | | | This note replaces N others; agent should prefer THIS one | | | Don&#39;t use this note; use the one in | | | Override file birthtime |</p></section>","source_path":"facts/vault-frontmatter-standard.md","canonical_url":"notes/facts-vault-frontmatter-standard.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["fact","schema","standard"],"tokens":68,"content_hash":"f4947351da25","visibility":"public","sensitivity":"none"}
{"chunk_id":"facts-vault-frontmatter-standard#why-this-matters","doc_id":"facts-vault-frontmatter-standard","title":"Vault frontmatter standard","heading_path":["Vault frontmatter standard","Why this matters"],"type":"fact","text":"The build emits all of these as chunk-level metadata. A downstream retrieval pipeline can filter by visibility, prefer non-superseded chunks, and de-prioritize archived content automatically.","html":"<section><h2>Why this matters</h2><p>The build emits all of these as chunk-level metadata. A downstream retrieval pipeline can filter by visibility, prefer non-superseded chunks, and de-prioritize archived content automatically.</p></section>","source_path":"facts/vault-frontmatter-standard.md","canonical_url":"notes/facts-vault-frontmatter-standard.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["fact","schema","standard"],"tokens":48,"content_hash":"8c8a2c60a201","visibility":"public","sensitivity":"none"}
{"chunk_id":"facts-vault-frontmatter-standard#related","doc_id":"facts-vault-frontmatter-standard","title":"Vault frontmatter standard","heading_path":["Vault frontmatter standard","Related"],"type":"fact","text":"- Use chunks.jsonl as the canonical RAG substrate - Separate Private and Public Memory","html":"<section><h2>Related</h2><p>- Use chunks.jsonl as the canonical RAG substrate - Separate Private and Public Memory</p></section>","source_path":"facts/vault-frontmatter-standard.md","canonical_url":"notes/facts-vault-frontmatter-standard.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["fact","schema","standard"],"tokens":22,"content_hash":"e43a46fdc80d","visibility":"public","sensitivity":"none"}
{"chunk_id":"handoffs-frontend-agent-handoff-2026-05#frontend-agent-handoff-2026-05","doc_id":"handoffs-frontend-agent-handoff-2026-05","title":"Frontend Agent Handoff — 2026-05","heading_path":["Frontend Agent Handoff — 2026-05"],"type":"handoff","text":"Pattern handoff (not a customer ticket handoff). Shows what cross-session continuity looks like in this vault.","html":"<section><h2>Frontend Agent Handoff — 2026-05</h2><p>Pattern handoff (not a customer ticket handoff). Shows what cross-session continuity looks like in this vault.</p></section>","source_path":"handoffs/frontend-agent-handoff-2026-05.md","canonical_url":"notes/handoffs-frontend-agent-handoff-2026-05.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["handoff","frontend"],"tokens":28,"content_hash":"f14adbc645be","visibility":"public","sensitivity":"none"}
{"chunk_id":"handoffs-frontend-agent-handoff-2026-05#where-we-left-off","doc_id":"handoffs-frontend-agent-handoff-2026-05","title":"Frontend Agent Handoff — 2026-05","heading_path":["Frontend Agent Handoff — 2026-05","Where we left off"],"type":"handoff","text":"Frontend agent finished migrating the customer-support-v2 chat widget from → . New widget uses MCP to call on each turn rather than embedding chunks in the prompt.","html":"<section><h2>Where we left off</h2><p>Frontend agent finished migrating the customer-support-v2 chat widget from → . New widget uses MCP to call on each turn rather than embedding chunks in the prompt.</p></section>","source_path":"handoffs/frontend-agent-handoff-2026-05.md","canonical_url":"notes/handoffs-frontend-agent-handoff-2026-05.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["handoff","frontend"],"tokens":41,"content_hash":"fc55d3dac360","visibility":"public","sensitivity":"none"}
{"chunk_id":"handoffs-frontend-agent-handoff-2026-05#verified-working","doc_id":"handoffs-frontend-agent-handoff-2026-05","title":"Frontend Agent Handoff — 2026-05","heading_path":["Frontend Agent Handoff — 2026-05","Verified working"],"type":"handoff","text":"- [x] MCP server wired: - [x] returns ≤ 8 chunks under 200ms - [x] Eval suite green on the 200-ticket cohort - [x] CSP on the embed page allows only for the agent connection","html":"<section><h2>Verified working</h2><p>- [x] MCP server wired: - [x] returns ≤ 8 chunks under 200ms - [x] Eval suite green on the 200-ticket cohort - [x] CSP on the embed page allows only for the agent connection</p></section>","source_path":"handoffs/frontend-agent-handoff-2026-05.md","canonical_url":"notes/handoffs-frontend-agent-handoff-2026-05.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["handoff","frontend"],"tokens":44,"content_hash":"112152632b99","visibility":"public","sensitivity":"none"}
{"chunk_id":"handoffs-frontend-agent-handoff-2026-05#open","doc_id":"handoffs-frontend-agent-handoff-2026-05","title":"Frontend Agent Handoff — 2026-05","heading_path":["Frontend Agent Handoff — 2026-05","Open"],"type":"handoff","text":"- [ ] Tail-latency p99 is 480ms — investigate cold-start of the MCP server when the chat widget hasn't been visited in 10+ min - [ ] Tone-of-voice eval — see [redacted-link] when it lands","html":"<section><h2>Open</h2><p>- [ ] Tail-latency p99 is 480ms — investigate cold-start of the MCP server when the chat widget hasn&#39;t been visited in 10+ min - [ ] Tone-of-voice eval — see [redacted-link] when it lands</p></section>","source_path":"handoffs/frontend-agent-handoff-2026-05.md","canonical_url":"notes/handoffs-frontend-agent-handoff-2026-05.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["handoff","frontend"],"tokens":47,"content_hash":"7d6ba2c68b3f","visibility":"public","sensitivity":"none"}
{"chunk_id":"handoffs-frontend-agent-handoff-2026-05#next-session-start-here","doc_id":"handoffs-frontend-agent-handoff-2026-05","title":"Frontend Agent Handoff — 2026-05","heading_path":["Frontend Agent Handoff — 2026-05","Next session — start here"],"type":"handoff","text":"1. Read Customer Support Agent v2 for goal + status. 2. Run and skim broken links. 3. Open the cold-start investigation under .","html":"<section><h2>Next session — start here</h2><p>1. Read Customer Support Agent v2 for goal + status. 2. Run and skim broken links. 3. Open the cold-start investigation under .</p></section>","source_path":"handoffs/frontend-agent-handoff-2026-05.md","canonical_url":"notes/handoffs-frontend-agent-handoff-2026-05.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["handoff","frontend"],"tokens":32,"content_hash":"76b5a2b1900c","visibility":"public","sensitivity":"none"}
{"chunk_id":"handoffs-frontend-agent-handoff-2026-05#related","doc_id":"handoffs-frontend-agent-handoff-2026-05","title":"Frontend Agent Handoff — 2026-05","heading_path":["Frontend Agent Handoff — 2026-05","Related"],"type":"handoff","text":"- Customer Support Agent v2 - Data Pipeline Refactor - Incident Response Handoff","html":"<section><h2>Related</h2><p>- Customer Support Agent v2 - Data Pipeline Refactor - Incident Response Handoff</p></section>","source_path":"handoffs/frontend-agent-handoff-2026-05.md","canonical_url":"notes/handoffs-frontend-agent-handoff-2026-05.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["handoff","frontend"],"tokens":20,"content_hash":"e82d8120f510","visibility":"public","sensitivity":"none"}
{"chunk_id":"people-alex-founder#alex-founder","doc_id":"people-alex-founder","title":"Alex (founder)","heading_path":["Alex (founder)"],"type":"person","text":"CEO and primary product owner. Agents should treat Alex's voice in transcripts as the authoritative tone-of-voice reference (see [redacted-link]).","html":"<section><h2>Alex (founder)</h2><p>CEO and primary product owner. Agents should treat Alex&#39;s voice in transcripts as the authoritative tone-of-voice reference (see [redacted-link]).</p></section>","source_path":"people/alex-founder.md","canonical_url":"notes/people-alex-founder.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["person","leadership"],"tokens":37,"content_hash":"808ec8143140","visibility":"public","sensitivity":"none"}
{"chunk_id":"people-alex-founder#working-style","doc_id":"people-alex-founder","title":"Alex (founder)","heading_path":["Alex (founder)","Working style"],"type":"person","text":"- Prefers bullet-point summaries over prose. - Wants citations ( ) on every retrieved fact. - Will challenge confident-but-wrong answers. Calibrate uncertainty explicitly.","html":"<section><h2>Working style</h2><p>- Prefers bullet-point summaries over prose. - Wants citations ( ) on every retrieved fact. - Will challenge confident-but-wrong answers. Calibrate uncertainty explicitly.</p></section>","source_path":"people/alex-founder.md","canonical_url":"notes/people-alex-founder.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["person","leadership"],"tokens":43,"content_hash":"6c372c9d2808","visibility":"public","sensitivity":"none"}
{"chunk_id":"people-alex-founder#hot-topics-2026-q2","doc_id":"people-alex-founder","title":"Alex (founder)","heading_path":["Alex (founder)","Hot topics (2026-Q2)"],"type":"person","text":"- Customer Support Agent v2 auto-resolve rate (target 70%) - Data Pipeline Refactor backfill timeline","html":"<section><h2>Hot topics (2026-Q2)</h2><p>- Customer Support Agent v2 auto-resolve rate (target 70%) - Data Pipeline Refactor backfill timeline</p></section>","source_path":"people/alex-founder.md","canonical_url":"notes/people-alex-founder.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["person","leadership"],"tokens":26,"content_hash":"c874a147b2c0","visibility":"public","sensitivity":"none"}
{"chunk_id":"people-alex-founder#note","doc_id":"people-alex-founder","title":"Alex (founder)","heading_path":["Alex (founder)","Note"],"type":"person","text":"This note is intentionally to demo cross-linking from public-mode builds. A real founder note would be with .","html":"<section><h2>Note</h2><p>This note is intentionally to demo cross-linking from public-mode builds. A real founder note would be with .</p></section>","source_path":"people/alex-founder.md","canonical_url":"notes/people-alex-founder.html","updated":"2026-05-24T04:31:34.093Z","created_at":"2026-05-24T04:31:34.093Z","tags":["person","leadership"],"tokens":28,"content_hash":"cc87b9f6d71d","visibility":"public","sensitivity":"none"}
{"chunk_id":"procedures-incident-response-handoff#incident-response-handoff","doc_id":"procedures-incident-response-handoff","title":"Incident Response Handoff","heading_path":["Incident Response Handoff"],"type":"procedure","text":"When the Customer Support Agent v2 decides a ticket is beyond tier-1, it writes a handoff note into and pages the on-call human.","html":"<section><h2>Incident Response Handoff</h2><p>When the Customer Support Agent v2 decides a ticket is beyond tier-1, it writes a handoff note into and pages the on-call human.</p></section>","source_path":"procedures/incident-response-handoff.md","canonical_url":"notes/procedures-incident-response-handoff.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["procedure","incident","oncall","handoff"],"tokens":32,"content_hash":"349e96e9e06d","visibility":"public","sensitivity":"none"}
{"chunk_id":"procedures-incident-response-handoff#what-the-agent-writes","doc_id":"procedures-incident-response-handoff","title":"Incident Response Handoff","heading_path":["Incident Response Handoff","What the agent writes"],"type":"procedure","text":"Body fields, in order: 1. One-sentence summary — what the customer wants. 2. What the agent tried — search queries, retrieved chunk ids, why each failed. 3. What the agent thinks is needed — best-guess root cause + which procedure (if any) applies. 4. Customer transcript — raw, redacted on emit (we ship for any artifact that leaves this vault). 5. Suggested next step — concrete, human-actionable.","html":"<section><h2>What the agent writes</h2><p>Body fields, in order: 1. One-sentence summary — what the customer wants. 2. What the agent tried — search queries, retrieved chunk ids, why each failed. 3. What the agent thinks is needed — best-guess root cause + which procedure (if any) applies. 4. Customer transcript — raw, redacted on emit (we ship for any artifact that leaves this vault). 5. Suggested next step — concrete, human-actionable.</p></section>","source_path":"procedures/incident-response-handoff.md","canonical_url":"notes/procedures-incident-response-handoff.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["procedure","incident","oncall","handoff"],"tokens":100,"content_hash":"66e3dc09eab2","visibility":"public","sensitivity":"none"}
{"chunk_id":"procedures-incident-response-handoff#what-the-on-call-human-does","doc_id":"procedures-incident-response-handoff","title":"Incident Response Handoff","heading_path":["Incident Response Handoff","What the on-call human does"],"type":"procedure","text":"1. Read the summary. 2. Skim sections 2–3 to decide if the agent's diagnosis is right. 3. Take over the ticket. Update the handoff with the actual resolution. 4. If a new pattern is emerging, file a new note under or amend an existing one — the agent learns next rebuild.","html":"<section><h2>What the on-call human does</h2><p>1. Read the summary. 2. Skim sections 2–3 to decide if the agent&#39;s diagnosis is right. 3. Take over the ticket. Update the handoff with the actual resolution. 4. If a new pattern is emerging, file a new note under or amend an existing one — the agent learns next rebuild.</p></section>","source_path":"procedures/incident-response-handoff.md","canonical_url":"notes/procedures-incident-response-handoff.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["procedure","incident","oncall","handoff"],"tokens":68,"content_hash":"4b611bfff358","visibility":"public","sensitivity":"none"}
{"chunk_id":"procedures-incident-response-handoff#related","doc_id":"procedures-incident-response-handoff","title":"Incident Response Handoff","heading_path":["Incident Response Handoff","Related"],"type":"procedure","text":"- Frontend Agent Handoff — 2026-05 - Weekly Agent Memory Review","html":"<section><h2>Related</h2><p>- Frontend Agent Handoff — 2026-05 - Weekly Agent Memory Review</p></section>","source_path":"procedures/incident-response-handoff.md","canonical_url":"notes/procedures-incident-response-handoff.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["procedure","incident","oncall","handoff"],"tokens":16,"content_hash":"6043865a3089","visibility":"public","sensitivity":"none"}
{"chunk_id":"procedures-weekly-agent-memory-review#weekly-agent-memory-review","doc_id":"procedures-weekly-agent-memory-review","title":"Weekly Agent Memory Review","heading_path":["Weekly Agent Memory Review"],"type":"procedure","text":"Friday, 60 minutes. Two humans, one agent. The point is to keep this vault from rotting.","html":"<section><h2>Weekly Agent Memory Review</h2><p>Friday, 60 minutes. Two humans, one agent. The point is to keep this vault from rotting.</p></section>","source_path":"procedures/weekly-agent-memory-review.md","canonical_url":"notes/procedures-weekly-agent-memory-review.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["procedure","ops","review"],"tokens":22,"content_hash":"9281b5804b26","visibility":"public","sensitivity":"none"}
{"chunk_id":"procedures-weekly-agent-memory-review#inputs","doc_id":"procedures-weekly-agent-memory-review","title":"Weekly Agent Memory Review","heading_path":["Weekly Agent Memory Review","Inputs"],"type":"procedure","text":"- — vault size, broken-link count, tag coverage. - — any errors, warnings, missing visibility. - This week's — patterns we should promote to procedures. - Last week's review note.","html":"<section><h2>Inputs</h2><p>- — vault size, broken-link count, tag coverage. - — any errors, warnings, missing visibility. - This week&#39;s — patterns we should promote to procedures. - Last week&#39;s review note.</p></section>","source_path":"procedures/weekly-agent-memory-review.md","canonical_url":"notes/procedures-weekly-agent-memory-review.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["procedure","ops","review"],"tokens":45,"content_hash":"d48a49666e67","visibility":"public","sensitivity":"none"}
{"chunk_id":"procedures-weekly-agent-memory-review#agenda","doc_id":"procedures-weekly-agent-memory-review","title":"Weekly Agent Memory Review","heading_path":["Weekly Agent Memory Review","Agenda"],"type":"procedure","text":"1. Validate (5 min). Run . Resolve every error before standup. 2. Backlog (15 min). Walk handoffs from the week. Promote any pattern that hit ≥2 times into a procedure or fact. 3. Stale notes (10 min). Find notes with . Update or archive ( ). 4. Broken links (10 min). Fix wiki-links → targets. 5. Privacy audit (10 min). Run . Inspect anything new. 6. Notes for next week (10 min). Capture themes, deferred items.","html":"<section><h2>Agenda</h2><p>1. Validate (5 min). Run . Resolve every error before standup. 2. Backlog (15 min). Walk handoffs from the week. Promote any pattern that hit ≥2 times into a procedure or fact. 3. Stale notes (10 min). Find notes with . Update or archive ( ). 4. Broken links (10 min). Fix wiki-links → targets. 5. Privacy audit (10 min). Run . Inspect anything new. 6. Notes for next week (10 min). Capture themes, deferred items.</p></section>","source_path":"procedures/weekly-agent-memory-review.md","canonical_url":"notes/procedures-weekly-agent-memory-review.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["procedure","ops","review"],"tokens":104,"content_hash":"2afc18cca333","visibility":"public","sensitivity":"none"}
{"chunk_id":"procedures-weekly-agent-memory-review#output","doc_id":"procedures-weekly-agent-memory-review","title":"Weekly Agent Memory Review","heading_path":["Weekly Agent Memory Review","Output"],"type":"procedure","text":"A single note in titled , with the diff vs. last week and the queue for next week.","html":"<section><h2>Output</h2><p>A single note in titled , with the diff vs. last week and the queue for next week.</p></section>","source_path":"procedures/weekly-agent-memory-review.md","canonical_url":"notes/procedures-weekly-agent-memory-review.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["procedure","ops","review"],"tokens":21,"content_hash":"1c5b87065b32","visibility":"public","sensitivity":"none"}
{"chunk_id":"procedures-weekly-agent-memory-review#related","doc_id":"procedures-weekly-agent-memory-review","title":"Weekly Agent Memory Review","heading_path":["Weekly Agent Memory Review","Related"],"type":"procedure","text":"- Incident Response Handoff - Use chunks.jsonl as the canonical RAG substrate","html":"<section><h2>Related</h2><p>- Incident Response Handoff - Use chunks.jsonl as the canonical RAG substrate</p></section>","source_path":"procedures/weekly-agent-memory-review.md","canonical_url":"notes/procedures-weekly-agent-memory-review.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["procedure","ops","review"],"tokens":20,"content_hash":"a67eefd246d1","visibility":"public","sensitivity":"none"}
{"chunk_id":"projects-customer-support-agent#goal","doc_id":"projects-customer-support-agent","title":"Customer Support Agent v2","heading_path":["Customer Support Agent v2","Goal"],"type":"project","text":"Replace v1 (rule-based zendesk macros) with a retrieval-grounded LLM that handles tier-1 inbound and escalates cleanly via the Incident Response Handoff procedure.","html":"<section><h2>Goal</h2><p>Replace v1 (rule-based zendesk macros) with a retrieval-grounded LLM that handles tier-1 inbound and escalates cleanly via the Incident Response Handoff procedure.</p></section>","source_path":"projects/customer-support-agent.md","canonical_url":"notes/projects-customer-support-agent.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["project","agent","support","rag"],"tokens":41,"content_hash":"afcf946589d1","visibility":"public","sensitivity":"none"}
{"chunk_id":"projects-customer-support-agent#status","doc_id":"projects-customer-support-agent","title":"Customer Support Agent v2","heading_path":["Customer Support Agent v2","Status"],"type":"project","text":"- [x] Index public knowledge base via this vault → (see Use chunks.jsonl as the canonical RAG substrate) - [x] Wire up Claude with for live read access - [x] Eval suite: 200 historical tickets, target 70% auto-resolve - [ ] Add tone-of-voice constraint per [redacted-link] - [ ] Ship behind feature flag","html":"<section><h2>Status</h2><p>- [x] Index public knowledge base via this vault → (see Use chunks.jsonl as the canonical RAG substrate) - [x] Wire up Claude with for live read access - [x] Eval suite: 200 historical tickets, target 70% auto-resolve - [ ] Add tone-of-voice constraint per [redacted-link] - [ ] Ship behind feature flag</p></section>","source_path":"projects/customer-support-agent.md","canonical_url":"notes/projects-customer-support-agent.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["project","agent","support","rag"],"tokens":76,"content_hash":"8b2e618ea70e","visibility":"public","sensitivity":"none"}
{"chunk_id":"projects-customer-support-agent#eval-results-last-run","doc_id":"projects-customer-support-agent","title":"Customer Support Agent v2","heading_path":["Customer Support Agent v2","Eval results (last run)"],"type":"project","text":"| Cohort | Tickets | Auto-resolve | CSAT | |---|---|---|---| | Onboarding | 80 | 78% | 4.6 | | Billing | 60 | 64% | 4.4 | | Bugs | 60 | 41% | 4.1 |","html":"<section><h2>Eval results (last run)</h2><p>| Cohort | Tickets | Auto-resolve | CSAT | |---|---|---|---| | Onboarding | 80 | 78% | 4.6 | | Billing | 60 | 64% | 4.4 | | Bugs | 60 | 41% | 4.1 |</p></section>","source_path":"projects/customer-support-agent.md","canonical_url":"notes/projects-customer-support-agent.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["project","agent","support","rag"],"tokens":37,"content_hash":"118d35359656","visibility":"public","sensitivity":"none"}
{"chunk_id":"projects-customer-support-agent#risks","doc_id":"projects-customer-support-agent","title":"Customer Support Agent v2","heading_path":["Customer Support Agent v2","Risks"],"type":"project","text":"- Public knowledge base is incomplete in the billing area; see Data Pipeline Refactor for the fix. - Privacy: customers' email addresses arrive in transcripts. We use for all chunks we re-index from transcripts (see Separate Private and Public Memory).","html":"<section><h2>Risks</h2><p>- Public knowledge base is incomplete in the billing area; see Data Pipeline Refactor for the fix. - Privacy: customers&#39; email addresses arrive in transcripts. We use for all chunks we re-index from transcripts (see Separate Private and Public Memory).</p></section>","source_path":"projects/customer-support-agent.md","canonical_url":"notes/projects-customer-support-agent.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["project","agent","support","rag"],"tokens":63,"content_hash":"fb341a3ce5a3","visibility":"public","sensitivity":"none"}
{"chunk_id":"projects-customer-support-agent#related","doc_id":"projects-customer-support-agent","title":"Customer Support Agent v2","heading_path":["Customer Support Agent v2","Related"],"type":"project","text":"- Weekly Agent Memory Review - Use chunks.jsonl as the canonical RAG substrate - Frontend Agent Handoff — 2026-05","html":"<section><h2>Related</h2><p>- Weekly Agent Memory Review - Use chunks.jsonl as the canonical RAG substrate - Frontend Agent Handoff — 2026-05</p></section>","source_path":"projects/customer-support-agent.md","canonical_url":"notes/projects-customer-support-agent.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["project","agent","support","rag"],"tokens":29,"content_hash":"4fc9b491ee8f","visibility":"public","sensitivity":"none"}
{"chunk_id":"projects-data-pipeline-refactor#goal","doc_id":"projects-data-pipeline-refactor","title":"Data Pipeline Refactor","heading_path":["Data Pipeline Refactor","Goal"],"type":"project","text":"Cut billing-area ticket-to-knowledge time from 14 days → 24 hours so the Customer Support Agent v2 has fresh context when CSAT-impacting issues land.","html":"<section><h2>Goal</h2><p>Cut billing-area ticket-to-knowledge time from 14 days → 24 hours so the Customer Support Agent v2 has fresh context when CSAT-impacting issues land.</p></section>","source_path":"projects/data-pipeline-refactor.md","canonical_url":"notes/projects-data-pipeline-refactor.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["project","data","pipeline"],"tokens":38,"content_hash":"c95b9c3d7957","visibility":"public","sensitivity":"none"}
{"chunk_id":"projects-data-pipeline-refactor#current-state","doc_id":"projects-data-pipeline-refactor","title":"Data Pipeline Refactor","heading_path":["Data Pipeline Refactor","Current state"],"type":"project","text":"Old pipeline: New pipeline:","html":"<section><h2>Current state</h2><p>Old pipeline: New pipeline:</p></section>","source_path":"projects/data-pipeline-refactor.md","canonical_url":"notes/projects-data-pipeline-refactor.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["project","data","pipeline"],"tokens":7,"content_hash":"4ca9b840c648","visibility":"public","sensitivity":"none"}
{"chunk_id":"projects-data-pipeline-refactor#status","doc_id":"projects-data-pipeline-refactor","title":"Data Pipeline Refactor","heading_path":["Data Pipeline Refactor","Status"],"type":"project","text":"- [x] Webhook receiver shipped ( ) - [x] Markdown emitter normalizes Salesforce fields to our Vault frontmatter standard - [ ] Backfill historical 18 months of billing tickets - [ ] Validate redaction quality on PII-heavy notes (see Separate Private and Public Memory)","html":"<section><h2>Status</h2><p>- [x] Webhook receiver shipped ( ) - [x] Markdown emitter normalizes Salesforce fields to our Vault frontmatter standard - [ ] Backfill historical 18 months of billing tickets - [ ] Validate redaction quality on PII-heavy notes (see Separate Private and Public Memory)</p></section>","source_path":"projects/data-pipeline-refactor.md","canonical_url":"notes/projects-data-pipeline-refactor.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["project","data","pipeline"],"tokens":67,"content_hash":"d779b0b0ff88","visibility":"public","sensitivity":"none"}
{"chunk_id":"projects-data-pipeline-refactor#why-static-compile-instead-of-live-db","doc_id":"projects-data-pipeline-refactor","title":"Data Pipeline Refactor","heading_path":["Data Pipeline Refactor","Why static compile instead of live DB"],"type":"project","text":"See the Use chunks.jsonl as the canonical RAG substrate decision. Short version: every agent reads the same bundle; reproducible across CI, prod, and local dev.","html":"<section><h2>Why static compile instead of live DB</h2><p>See the Use chunks.jsonl as the canonical RAG substrate decision. Short version: every agent reads the same bundle; reproducible across CI, prod, and local dev.</p></section>","source_path":"projects/data-pipeline-refactor.md","canonical_url":"notes/projects-data-pipeline-refactor.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["project","data","pipeline"],"tokens":40,"content_hash":"b387cd9aafa2","visibility":"public","sensitivity":"none"}
{"chunk_id":"projects-data-pipeline-refactor#related","doc_id":"projects-data-pipeline-refactor","title":"Data Pipeline Refactor","heading_path":["Data Pipeline Refactor","Related"],"type":"project","text":"- Customer Support Agent v2 - Weekly Agent Memory Review","html":"<section><h2>Related</h2><p>- Customer Support Agent v2 - Weekly Agent Memory Review</p></section>","source_path":"projects/data-pipeline-refactor.md","canonical_url":"notes/projects-data-pipeline-refactor.html","updated":"2026-05-24T04:31:34.094Z","created_at":"2026-05-24T04:31:34.094Z","tags":["project","data","pipeline"],"tokens":14,"content_hash":"cfebdebfc04e","visibility":"public","sensitivity":"none"}
