Files
ten31-database/start9/0.4/startos/versions/v0.1.0.68.ts
T
Keysat b5619d61e1 outreach: Outreach Draft Assistant — tailored LP drafts (v0.1.0:68)
First proactive-messaging build. New "Outreach" page (all authenticated users): pick an
investor + type (intro / follow-up / fund update / meeting follow-up / nurture) + optional
guidance; the agent drafts a tailored LP email in Ten31's voice, grounded in the thesis +
that investor's CRM notes and matched email history. The draft is editable + copyable;
nothing is sent (draft-only — guardrails #4, #6).

Sovereignty: the thesis is Ten31's own non-sensitive messaging (to Claude as-is); the LP
context is scrubbed through the redaction boundary before Claude, drafted with placeholders,
and re-hydrated locally — the LP list never reaches the API. Fails closed (scrub_unavailable /
claude_not_configured / rehydrate_failed quarantines a hallucinated-token draft).

Backend: mcp/outreach_agent.py (context assembly + scrub + Claude + rehydrate, reusing
architect_agent's client/thesis/voice + the Boundary); routes GET /api/outreach/investors,
POST /api/outreach/draft; logged. Test mcp/test_outreach.py (context assembly). Verified in
preview: page/selector/types/guidance render, fail-closed at the key-less Claude step (scrub
ran locally first), success rendering verified with a mocked ok draft.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 20:06:46 -05:00

22 lines
1.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { VersionInfo } from '@start9labs/start-sdk'
// Outreach Draft Assistant. Pick an investor + an outreach type (intro / follow-up /
// fund update / meeting follow-up / nurture) + optional guidance, and the agent drafts
// a tailored LP email in Ten31's voice, grounded in the thesis + that investor's CRM
// notes and email history. The investor's context is de-identified through the redaction
// boundary before Claude sees it and restored locally — the LP list never leaves Ten31.
// Draft-only: a human reviews, edits, and sends (no auto-send; guardrails #4, #6). New
// backend mcp/outreach_agent.py + routes GET /api/outreach/investors, POST /api/outreach/draft.
export const v_0_1_0_68 = VersionInfo.of({
version: '0.1.0:68',
releaseNotes: {
en_US: [
'New Outreach page: pick an investor and a type, and the Architect drafts a tailored',
'email in Ten31s voice using the thesis + that investors notes and email history. Their',
'details are de-identified before Claude sees them and restored locally. Drafts only —',
'you review, edit, and send. Nothing is sent automatically.',
].join(' '),
},
migrations: { up: async () => {}, down: async () => {} },
})