@idriszade/a3-llm-personalization
v0.1.0
Published
Atom A3 — LLM personalization. Brand-voice grounded outbound message draft per prospect via OpenAI gpt-5.4-mini. Sprint 1 M1 GTM Engine v0.
Downloads
81
Maintainers
Readme
A3 — LLM Personalization
Sprint 1 atom. Pipeline:
ProspectInput + brand-voice corpus (Supabase) → process-extract (OpenAI gpt-5.4-mini)
→ PersonalizedMessage (subject/body/cta + fixture provenance)Tool surface
runA3(input, deps?)— imperative shellcreateA3McpServe(deps?)— MCP-tool wrapper for marketplace exposurefetchBrandVoiceFromSupabase()— reusable corpus reader
Cost moat
gpt-5.4-miniat ~$0.75/M input + $4.50/M output → ~$0.0015 per personalized draft- vs. $0.10-0.50/draft on legacy "AI personalization" SaaS (Lavender, Octopus, etc.)
- 30-99% cost cut at production volume
Brand voice
Three sources, in priority order:
- Inline override (
input.brandVoice) — highest precedence; for one-off campaigns - Supabase corpus — table
gtm_brand_voice_fixtureskeyed onkind+ optionalsegment - Defaults (
DEFAULT_BRAND_VOICE_FIXTURES) — cold-start safety net
Schema enforcement
Output runs through PersonalizedMessageSchema via process-extract's strict-JSON retry-on-fail loop (max 2 reattempts). Per feedback_pydantic_boundary_coercion.md: input fields use .catch() defaults to coerce-not-reject; output uses tight bounds (subject 1-120, body 20-2000) with retry to keep the model honest.
Dependencies
openai(peer-loaded by@idriszade/process-extract)@idriszade/process-extractfor provider-abstraction (OpenAI / Anthropic / Gemini interchangeable)- Supabase REST API (no SDK; native fetch)
License
MIT.
