AI Writing Assistant
Standard vs. Expert mode, transparent credit costs, and the two-phase reserve/commit credit flow.
AI Writing Assistant
An "Improve with AI" control embedded throughout the editors — select text or a section, choose Standard or Expert mode (different credit costs), optionally give free-text direction, and review the AI's draft before choosing to replace the field or discard it.
Cost is always shown before you spend it
The credit cost for the selected mode is shown on the mode buttons themselves, and again on the Generate button before you commit to spending credits. Generated content also never silently overwrites your work — replacing a field is always an explicit action.
What it can do
Underlying AI actions cover:
- Rewriting short text or whole sections.
- Generating a cover letter.
- Tailoring a resume to a specific job description.
- Generating portfolio copy (bio/headline/section copy — used by the Portfolio product).
The model/route chosen per request is dynamically selected across Anthropic Claude and OpenAI GPT models to balance quality against cost — this routing is intentional and not surfaced as a user-facing setting.
Credits, not a simple on/off
AI access is backed by a full credit ledger, not a boolean:
- Standard vs Expert cost tiers — Expert mode costs more credits per action.
- Two-phase reserve → commit/release flow — credits are reserved when a generation starts and either committed (on success) or released (on failure), so a failed generation doesn't burn credits.
- FIFO multi-grant allocation — if you have multiple active credit grants (e.g. a subscription grant plus a leftover top-up), a debit draws from the soonest-to-expire grant first, via a dedicated allocation table that records exactly which grant(s) funded each transaction.
See Billing & Credits for the full credit-wallet model.
Where costs come from
Per-action prompts, model selection, token limits, and credit costs for both modes live in a
private AI policy loaded from configuration at boot (AI_ACTIONS_POLICY_PATH or
AI_ACTIONS_POLICY_JSON), not in application code. GET /api/v1/ai/actions exposes only the public
slice of that policy — the Standard and Expert credit cost of each action — which is what the editor
renders on the mode buttons.
The ATS feature keeps its own separate policies (ATS_AI_POLICY_* for the analysis prompts and
pricing, ATS_ENGINE_POLICY_* for the deterministic scoring rules), so AI writing and ATS scoring
can be configured and rotated independently. See
Environment Variables.
In production the server validates at boot that a policy exists and defines both a standard and an
expert tier for every action, and refuses to start otherwise. A deployment without
AI_API_KEY has AI disabled rather than silently broken.
Rate limiting
AI endpoints have their own window and limit (AI_RATE_LIMIT_WINDOW_MS / AI_RATE_LIMIT_MAX_REQUESTS,
default 20 requests per minute) layered on top of credit and quota enforcement, plus a per-request
timeout (AI_TIMEOUT_MS, default 120 seconds).
Developer access
The ai:write API-key scope is real and fully issuable — create a key with it at /api-keys in
Studio and call POST /api/v1/ai/generate programmatically. Generation through an API key spends the
owning account's credits exactly as the in-app flow does, so scope it deliberately. See
API Keys.
API
See the AI API reference for the /actions (available actions and their costs)
and /generate endpoints.