MyVoice Studio
AI personality authoring platform — voice profiles, fact management, voice training lab, and instructions hub for authentic AI-generated content
MyVoice Studio
MyVoice Studio is the control center for how AI writes as Daniel. It manages voice profiles, verified facts, special instructions, and provides a voice training lab — a “voice IDE” where you design, test, and deploy AI personalities.
Module: modules/myvoice-studio/ (standalone Express service, port 8098)
Status: ~40% complete — backend routes work, frontend basic, LLM transform and RAG explorer not wired
Vision
Every AI interaction on ArgoBox — blog generation, journal entries, public chatbot, LinkedIn posts — goes through a voice profile. MyVoice Studio is where those profiles are created, tested, and refined.
It’s powered by RAG data from 701K indexed chunks and 11M+ words of real conversation history.
The 5 Tabs
1. Voice Profiles
Browse, create, and edit voice personas. Each profile is a complete personality spec:
| Field | Description |
|---|---|
| Name | e.g., “ArgoBox Casual”, “LaForce IT Professional” |
| Voice Level | 1-10 slider (1 = formal resume, 10 = 11 PM Discord) |
| Key Phrases | Signature expressions (“Look, I’ll be honest…”) |
| Do’s | Rules to follow (use first person, include timestamps) |
| Don’ts | Rules to avoid (no “we”, no corporate transitions) |
| Example Text | Before/after transformations |
| Tone Dials | Humor, Technical Depth, Self-Deprecation, Formality, Enthusiasm, Storytelling (each 0-10) |
| System Prompt | Full system prompt injected into all AI calls |
| Formula | Writing formula pattern |
| Contexts | Where this profile applies (blog, journal, linkedin, chat) |
Current Profiles:
argobox-casual.json— Primary blog/journal voice (active)laforceit-professional.json— Professional/resume tonelinkedin.json— LinkedIn post formattingresume-formal.json— Formal documentation tone
2. Voice Lab
The creative testing ground:
- Score — Paste text, score against active profile (0-100 authenticity). Shows which sentences match and which feel “off” with inline highlighting.
- Transform — Paste generic text, click Transform, get it rewritten in the selected voice using LLM. Side-by-side before/after view.
- Compare — Same text in two different profiles side by side. “How does this read as ArgoBox vs LaForce IT?”
- Voice DNA — Analyze a text sample: sentence length distribution, vocabulary diversity, first-person percentage, hedging frequency, humor density. Radar chart visualization.
3. Facts & Identity
CRUD interface for verified facts about Daniel:
| Status | Color | Meaning |
|---|---|---|
| Verified | Green | Confirmed via ground truth interview |
| Unverified | Yellow | Not confirmed yet — use cautiously |
| Denied | Red | AI-fabricated — must NEVER be used |
Features: add/edit/archive facts, source tracking, conflict detection.
Current denied claims (hardcoded guardrails):
- the remote site is NOT “40 miles away” — distance unspecified
- Daniel has NEVER used Traefik — “463 messages” story is fabricated
- apkg was NOT “built by accident” — built intentionally
- Build swarm is 66 cores, NOT 62
4. Instructions Hub
Centralized system prompt management:
- Rich markdown editor for special instructions
- Context tags: “always”, “blog-only”, “code-only”, “professional”
- Version history with rollback
- Export formats: CLAUDE.md block, system prompt JSON, markdown
- Pull endpoint:
GET /api/instructions/latest— any AI tool can consume the latest instructions
5. RAG Explorer
Search 701K chunks for voice patterns:
- Voice search: “How do I talk about Tailscale?” → shows real examples
- Pattern extraction: recurring phrases, sentence structures, humor patterns
- Collection filter: conversations, blog posts, journal entries
- Phrase frequency: which phrases appear most in your writing
- Save to profile: found a good phrase? Add it directly to a voice profile
Architecture
MyVoice Studio (port 8098)
├── GET/POST /api/profiles — Voice profile CRUD
├── GET/POST /api/facts — Facts CRUD (verified/unverified/denied)
├── GET/POST /api/instructions — System prompt instructions CRUD
├── POST /api/lab/score — Score text against profile
├── POST /api/lab/transform — LLM-powered voice transformation (TODO)
├── GET /api/lab/rag-search — RAG proxy for voice patterns (TODO)
└── GET /api/health — Health check
SQLite Database: data/voice-studio.db
├── profiles table
├── facts table
└── instructions table
Integration with ArgoBox
MyVoice Studio feeds into every AI interaction via src/lib/myvoice-client.ts:
MyVoice Studio (port 8098)
↓ getActiveProfile()
myvoice-client.ts (5-min cache)
↓ formatVoiceForPrompt()
assistant-prompt.ts / voice-profile.ts
↓
Content-Gen API / Public Chat / Argonaut
Fallback: If MyVoice Studio is unreachable (e.g., production on Cloudflare Workers), the system uses data/active-voice-profile.json — a static snapshot synced by scripts/sync-myvoice-profile.ts.
Voice Profile Data Model
interface MyVoiceProfile {
id: string;
name: string;
description: string;
voiceLevel: number; // 1-10
active: boolean;
audience: string;
toneDials: {
humor: number; // 0-10
technicalDepth: number;
selfDeprecation: number;
formality: number;
enthusiasm: number;
storytelling: number;
};
keyPhrases: string[];
dos: string[];
donts: string[];
exampleBefore: string;
exampleAfter: string;
systemPrompt: string;
formula: string;
contexts: string[];
}
Voice Scoring Algorithm
The voice scoring engine (src/lib/voice-engine.ts) uses 4 weighted metrics:
- Sentence Length (20%) — Target: 13.2 words average (Daniel’s natural rhythm from 2,577 conversations)
- Banned Patterns (35%) — 15+ regex patterns for AI-sounding phrases
- First Person (20%) — Ratio of “I/me/my” vs “we/our/us” (target: 80%+)
- Casual Tone (25%) — Fragments + contractions + ellipsis vs semicolons + passive voice
Overall score = weighted average of all 4 metrics.
Data Sources
| Source | What It Provides | Location |
|---|---|---|
| Voice Profile | Tone dials, key phrases, dos/donts, system prompt | data/active-voice-profile.json |
| Identity Ground Truth | Verified facts about Daniel (v2.0) | data/identity-ground-truth.json |
| RAG Knowledge Base | 701K chunks from 22 collections | /mnt/AllShare/rag/databases/ |
| daniel-BLOGGER-VOICE-PROFILE.md | Data-driven metrics from conversations | Vaults backup |
| DANIEL-LAFORCE-FACTS.md | Comprehensive verified facts | Vaults backup |
| Conversation Archive | 2,992 processed conversations | Vaults/conversation-archive/ |
Replicability
MyVoice Studio is designed to be replicable — anyone can run it for their own voice cloning:
- Run the interview template (
docs/MYVOICE-INTERVIEW-TEMPLATE.md) - Deploy MyVoice Studio via Docker
- Seed profile from interview answers
- Test in Voice Lab
- Connect to any AI system via pull endpoint
Key Files
| File | Purpose |
|---|---|
modules/myvoice-studio/DESIGN.md | Full design document |
modules/myvoice-studio/src/server.ts | Express app |
modules/myvoice-studio/src/db.ts | SQLite database |
modules/myvoice-studio/src/routes/profiles.ts | Profile CRUD |
modules/myvoice-studio/src/routes/facts.ts | Facts CRUD |
modules/myvoice-studio/src/routes/instructions.ts | Instructions CRUD |
modules/myvoice-studio/src/routes/lab.ts | Voice Lab (scoring) |
modules/myvoice-studio/data/voice-profiles/ | 4 JSON profile files |
src/lib/myvoice-client.ts | ArgoBox API client |
src/lib/voice-engine.ts | Voice scoring algorithm |
src/lib/voice-profile.ts | System prompt builder |
data/active-voice-profile.json | Static profile snapshot |
scripts/sync-myvoice-profile.ts | Profile sync script |
Related
- Content Studio — The editor that consumes voice profiles
- Content Generation — How voice profiles are injected into generation
- RAG System — The knowledge base that powers fact checking and voice pattern search