# copywriter — AI conversion-copy microservice

AI copywriting & conversion-copy microservice: generate marketing headlines, taglines/slogans, and long-form ad copy using proven direct-response formulas (AIDA attention-interest-desire-action, PAS...


Generates persuasive marketing copy from a few inputs (product, benefit, audience, features) using
proven direct-response formulas plus power-word / emotion banks. A paid "intelligent microservice":
every tool has a **deterministic template core that runs fully offline**, and the generative tools
**optionally** call an LLM (via `../_shared/llm.js`) to enrich, silently falling back to the heuristic.
Every result is tagged `mode: 'heuristic' | 'llm'`.

## Tools

| tool | what it does |
|---|---|
| `headline` | N marketing headlines from product/benefit/audience via rotating proven angles (keyword-weavable). |
| `tagline` | Short, memorable brand taglines/slogans. |
| `adCopy` | Long-form ad copy in a chosen formula: **AIDA · PAS · FAB · 4Ps · BAB**. |
| `productDescription` | SEO-flavored product description: short line + bullets + persuasive paragraph. |
| `cta` | High-converting calls-to-action (button label + microcopy). |
| `valueProps` | Turns features into benefit-driven value propositions (feature → so-that benefit). |
| `rewrite` | Rewrites/paraphrases existing copy in a chosen tone. |
| `variants` | Spins a base line into N A/B variants. |
| `powerWords` | Scores copy for power words + emotional triggers and suggests injections (or returns the banks as a catalog). |

Tones: `bold · friendly · professional · playful · luxury · urgent`.

## Usage

```js
import copywriter from './index.js';

await copywriter.adapters.headline({ product: 'FlowDesk', benefit: 'ship faster', audience: 'startup founders', count: 5 });
await copywriter.adapters.adCopy({ product: 'FlowDesk', problem: 'scattered tasks', benefit: 'one calm workspace', formula: 'pas' });
copywriter.adapters.valueProps({ product: 'FlowDesk', features: ['AI triage', 'offline sync', 'one-click reports'] });
copywriter.adapters.powerWords({ text: 'Get started free today and transform your workflow instantly.' });
```

Every call takes ONE args object (maps 1:1 to an HTTP POST body). Missing required inputs throw
`TypeError` with a clear message.

## Hybrid intelligence

Deterministic templates + banks always produce output. When an LLM is reachable (env-configured
OpenAI-compatible endpoint or a local Ollama), the generative tools (`headline`, `tagline`, `adCopy`,
`productDescription`, `rewrite`, `variants`) draft a richer result and include the heuristic as
`fallback`. A down/absent model never throws — the pack works 100% offline.

## DRY boundaries

- **Generates** copy. It does **not** audit HTML/meta tags or build sitemaps — that's `seo`.
- It does **not** reshape one piece of copy across social platforms — that's `content-repurposer`.
- It does **not** build keyword briefs/outlines — that's `seo-brief`.
- No cross-pack imports except `../_shared/llm.js`. Pure ESM, Node built-ins only, zero npm deps.


---
Source: shared/engines/adapters/domain/copywriter/README.md
Canonical: https://docs.leumas.tech/p/adapters/domain/copywriter
