{
  "schema": "leumas.docs.page/1",
  "id": "adapter:domain/brand-voice",
  "slug": "adapters/domain/brand-voice",
  "kind": "capabilities",
  "bucket": "package",
  "title": "brand-voice",
  "name": "Brand Voice",
  "eyebrow": null,
  "chip": null,
  "summary": "Brand-voice & tone-of-voice intelligence microservice for content teams: analyze any sample text into a structured voice profile (tone, formality, sentence-length/reading-level, warmth, energy, and...",
  "keywords": [
    "brand-voice",
    "tone-of-voice",
    "warmth",
    "traits",
    "empathetic",
    "salesy",
    "minimalist",
    "per-dimension"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "# brand-voice\n\nA tone-of-voice intelligence microservice for content teams. Deterministic lexical/statistical cores\nrun fully offline; `rewrite` (and `analyze`'s tone label) also try an optional LLM via\n`../_shared/llm.js` and silently fall back. Results are tagged `mode: 'heuristic' | 'llm'`.\n\nVoice **profiles are passed in the args object** — `analyze` produces one, the other tools consume it.\n(DB-backed profile persistence lands later.)\n\n## Tools\n\n| Tool | Args | What it does |\n|---|---|---|\n| `analyze` | `{ text }` | Turns sample text into a structured voice profile: `tone`, `formality`/`energy`/`warmth` (0–1), `readingLevel` (Flesch-Kincaid), `avgSentenceLength`, detected `traits` (playful, authoritative, technical, empathetic, salesy, minimalist, bold…), and a distinctive `lexicon`. Hybrid (LLM refines the tone label). |\n| `rewrite` | `{ text, profile? \\| target?, strength? }` | Rewrites copy to match a supplied profile (or a named `target` tone). Rule-based diction/formality/energy shifts offline; LLM does a full on-brand rewrite when available. Hybrid. |\n| `guidelines` | `{ profile? \\| target? }` | Renders a do/don't style-guide sheet from a profile, plus signature phrases and a target reading level. |\n| `checkConsistency` | `{ text, profile? \\| target? }` | Scores new text against a profile (0–100 `score` + verdict), with per-dimension deviations and flagged off-brand phrases. |\n\nA `target` name (`professional`, `casual`, `playful`, `authoritative`, `empathetic`, `minimalist`,\n`technical`, `bold`) can stand in for a full profile in `rewrite`/`guidelines`/`checkConsistency`.\n\n## Example\n\n```js\nimport pack from './index.js';\nconst { ...profile } = await pack.adapters.analyze({ text: 'Hey! We're gonna make your day awesome. Let's go!' });\npack.adapters.guidelines({ profile });\npack.adapters.checkConsistency({ text: 'Pursuant to the foregoing, kindly proceed.', profile });\nawait pack.adapters.rewrite({ text: 'We utilize advanced systems.', target: 'casual' });\n```\n\n## DRY boundaries\n\n- Generic tokenizing/sentiment/readability of arbitrary prose → `nlp` / `a-text`. This pack owns\n  brand-voice modeling (profile vector, on-brand rewriting, consistency scoring).\n- No cross-pack imports except `../_shared/llm.js`.\n",
  "source": {
    "path": "shared/engines/adapters/domain/brand-voice/README.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 2452,
    "hash": "bcfdbcbd0f11c2a41a955215b187312189cbae25"
  },
  "urls": {
    "html": "/p/adapters/domain/brand-voice",
    "json": "/docs/adapters/domain/brand-voice.json",
    "md": "/docs/adapters/domain/brand-voice.md"
  },
  "links": {
    "composes": [],
    "usedBy": [],
    "product": [],
    "howTo": [],
    "skills": []
  }
}
