Business correspondence with AI: letters, replies and tone without bureaucratese

How to get letters from a model that do not sound like boilerplate: request structure, ready prompts, a company tone profile and a pre-send check.

4 min · · автоматизация · бизнес

AI for business letters saves time on the dullest part: the first draft, polite formulas and rephrasing harsh wording. But a request like "write a letter to the client" gives you an averaged template full of bureaucratese and empty courtesies. Below is a way to get letters you can send after a short edit: what a good request consists of, ready prompts for typical situations, how to lock in a consistent company tone and how to build all that into code.

What a good request consists of

The model needs five things. If any is missing, it fills the gap with an averaged version.

  1. Who writes to whom. The author's role, the addressee's role, how well they know each other.
  2. The purpose of the letter. What the addressee should do or understand after reading.
  3. Facts. Dates, amounts, order numbers, agreements. The model should build the letter only from these.
  4. Tone and length. "Restrained, without apologising every other word, under 120 words".
  5. What is off limits. Do not promise deadlines, do not admit fault, do not mention discounts.

The last item often decides everything: a model tends to promise and apologise more than needed.

Prompt templates

Substitute your data in the square brackets.

Business letter.

bash
Write a business letter from [position, company] to [position, company].
Purpose: [agree on a call / request documents / confirm deadlines].
Facts: [list of facts].
Tone: polite, to the point, no bureaucratese. Up to 120 words.
Do not add facts that are not in the list. Subject line on its own line.

Reply to a complaint.

bash
The client wrote: "[complaint text]".
Facts on our side: [what happened, what we have already done].
What we are ready to offer: [refund / replacement / inspection].
Write a reply: acknowledge the client's problem, do not make excuses, name the
next step and the deadline. Do not admit legal fault and do not mention
compensation that is not in the list. Up to 150 words.

Reminder about a payment or a reply.

bash
This is the second reminder. The first was sent on [date]. Needed: [action].
Deadline: [date]. Write a short letter: polite, no reproach,
with a clear next step. Up to 70 words.

Softening harsh text. Paste your draft and ask: "Rewrite so the meaning and requirements stay but the tone becomes calm and respectful. Show what exactly you changed." The last sentence is there so you can see whether a requirement got lost.

Editing without rewriting. For the "AI for editing texts" request, phrase it differently: "Fix errors and style but do not change the meaning or structure. List the edits." That way you control the result instead of receiving a new text.

How to keep a consistent company tone

When letters are written by different people, the tone drifts. The solution: describe the tone profile once and substitute it into every request as a system message.

bash
Company tone profile:
- address people formally, by first name and patronymic if known;
- short sentences, no phrases like "for the purpose of carrying out";
- apologise no more than once, state the reason and the deadline;
- signature: name, position, phone;
- forbidden: "dear colleagues" in letters to clients, exclamation marks,
  deadline promises without confirmation from the department.
Add 2-3 successful letters to the profile as samples.

Samples work better than rules: the model copies the intonation instead of only following prohibitions literally. More on the technique with examples: few-shot in prompts.

Code example: a draft generator with a tone profile

bash
from openai import OpenAI

client = OpenAI(base_url="https://api.zukko.pro/v1", api_key="fetch_your_key")

TONE = open("tone_profile.txt", encoding="utf-8").read()

def draft_letter(task: str, facts: str) -> str:
    resp = client.chat.completions.create(
        model="gpt-6.1-sol",
        messages=[
            {"role": "system", "content": TONE},
            {
                "role": "user",
                "content": (

The tone_profile.txt file holds the profile and samples. Do not automate sending: a draft should pass under an employee's eyes. A detailed look at sorting incoming mail and drafting replies: AI for processing email. Full endpoint description: Chat Completions.

What it costs

Russian text takes more tokens than English; in the calculation we assume 2-3 tokens per word as a rough guide, and you will see exact numbers in the "Usage" section. Assumptions: a tone profile with samples is 1,000 tokens, a request with facts 500, the letter in the output 500. Per letter that is 1,500 input tokens and 500 output. For 1,000 letters a month: 1.5M input and 0.5M output. Formula without cache: input × input price + output × output price. Prices as of October 18, 2026, $ per 1M tokens:

  • deepseek-v4.1-flash (0.013 / 0.038): 1.5 × 0.013 + 0.5 × 0.038 = 0.0195 + 0.019 = $0.0385.
  • gpt-6.1-sol (0.27 / 1.32): 1.5 × 0.27 + 0.5 × 1.32 = 0.405 + 0.66 = $1.065.
  • claude-sonnet-5-5 (0.4 / 2): 1.5 × 0.4 + 0.5 × 2 = 0.6 + 1.0 = $1.60.

The tone profile repeated at the start of every request can be cached; cache conditions differ between models, and for Claude the discount works in the Anthropic format. More: how cache reads and writes are billed.

We cannot say in advance which model will convey your intonation better: take 10 typical letters and compare two or three models blind. For mass reminders a cheap model is often enough, while for complex complaint replies you can take a stronger one. Fresh prices are always in the GET https://api.zukko.pro/v1/models response.

Check before sending

  • Do all facts in the letter match yours: amounts, dates, numbers. A model can "adjust" a figure.
  • Are there promises you did not make.
  • Is there personal data that has no business in the letter. Do not send the model extra client data: what the letter needs is enough.
  • Legally significant letters (complaints, termination, contractual notices) need a lawyer's review.

To run the script you need a fetch_... key from the dashboard. The dollar balance is topped up via SBP, a MasterCard card or cryptocurrency.

FAQ

Will recipients notice that a neural network wrote the letter?

An averaged template is noticeable. A letter with your facts, a tone profile and a human edit reads like an ordinary one. In any case you are responsible for the content.

Can I send letters automatically?

For routine reminders with rigid templates, yes; for everything else a human check is better. A mistake in an amount or an unneeded promise costs more than the minutes saved.

How do I stop the model from inventing facts?

Give a list of facts and write: "use only these, ask a question if data is missing". After getting a draft, check numbers and dates against the source.

What should I choose for editing texts?

Start with a cheap model and check the result on 10 real texts. If the meaning sometimes gets lost, move to a stronger one from the catalog.

zukko

Pay 25×
less

for Claude Code & ChatGPT

One fetch_* key and base URL api.zukko.pro — for Cursor, Claude Code, Codex, and any SDK.

Get API keyDocumentation

api.zukko.pro · fetch_*

AI for business letters: prompts, templates, tone · Zukko