Three fields stay with a person: price, deadline, liability. Unit prices set 6 percent too low on a 14,000 euro job cost 840 euros, cutting an 8 percent margin to 2 percent. Sign-off takes six checks, two minutes, 1.32 euros of working time.
A quote binds you, a draft does not
The difference is legal, never linguistic. Submit a quote, then section 145 of the German Civil Code holds you to it unless you expressly ruled out being bound. The model that wrote the text carries none of that.
So the division of labour follows liability, never effort. AI may write anything correctable later: task descriptions, ordering, cover letter, translation. It may set nothing that binds you in a dispute.
Three fields qualify: price, deadline, liability. Everything else in a quote is legwork, legwork being the one thing a language model reliably brings.
The price field: a 6 percent slip costs three quarters of the margin
An underpriced quote is the error nobody reports. Suppose the draft sets unit prices 6 percent too low, the job runs to 14,000 euros net, your costing carries an 8 percent margin. That leaves 840 euros missing, cutting the margin from 1,120 to 280 euros, so from 8 percent to 2 percent.
Renegotiating is off the table. Accept inside the deadline you set, the contract stands, because section 148 ties acceptance to that deadline alone. Set no deadline, then you hang on the open-ended rule of section 147(2): acceptance stays possible until you could ordinarily have expected a reply.
Selling to consumers adds a second duty. Under section 3 of the German Price Indication Ordinance you must state total prices, and highlight the total whenever a price is broken down. A line-item list without a highlighted total, exactly what models like to produce, fails that test.
The deadline field: two deadlines that merge in a draft
A quote carries two deadlines, entirely unrelated to each other. The acceptance deadline caps how long you stay bound. Payment terms decide when money falls due. Templates print 14 days in both places, those same templates being what the model read.
Payment terms sit inside a statutory frame. Under section 286(3) of the German Civil Code a debtor owing payment defaults at the latest 30 days after the claim falls due and the invoice arrives, though against a consumer only where the invoice points out that consequence. Leave the pointer to a model, so one day it quietly disappears.
Construction contracts carry a third deadline, one with no place in a quote. Section 650b(2) lets the client order a change in text form 30 days after requesting it, absent agreement. So check whether a deadline belongs in this field at all, never only whether the number is right.
The liability field: what your terms may never say
Here a model writes sentences that are void. Excluding liability for injury to life, body or health is void in standard terms under section 309 no. 7 of the German Civil Code, as is excluding liability for gross negligence. The same provision bans price-increase clauses covering work delivered within four months of contract.
Void is worse than harmless. The clause drops out, statutory liability stays, so you have protected yourself against nothing while the document still shows a paragraph about it. Copy phrasing from foreign-language templates, where broad liability caps are normal, then that is precisely what you build in.
The fix is unglamorous. Liability, warranty, payment terms live as a fixed block in your template, cleared by someone qualified. The model may neither write that block nor rephrase it nor shorten it.
The prompt: placeholders instead of inventions
A model fills every gap unless you stop it. Copy the prompt below: it bans the three fields outright, forcing visible placeholders in square brackets.
Placeholders are no formality; they are the search function of your sign-off. A draft still showing PRICE in brackets cannot go out by accident. Over an API you can enforce more: OpenAI's Structured Outputs guarantees a response matching the JSON schema you supply, so required fields exist, ready to be machine-checked before anything lands in your template.
- Task: turn the enquiry below into a quote draft for my firm. You write task descriptions, ordering, cover letter.
- Ban 1: set no prices, no unit prices, no totals. Write the placeholder PRICE in square brackets into every price field.
- Ban 2: set no deadlines, no dates. Write ACCEPTANCE DEADLINE and PAYMENT TERMS as placeholders in square brackets.
- Ban 3: write no liability, warranty or payment clauses. Write only STANDARD TERMS BLOCK in square brackets there.
- Required: under a heading ASSUMPTIONS, list everything you guessed from the enquiry, each with the passage you relied on.
- Output: cover letter, line-item table with quantity and unit of measure, then ASSUMPTIONS. No total, no sign-off, no date.
Sign-off in six checks, two minutes
The list is built for twenty seconds a line. Six checks make two minutes, costing exactly 1.32 euros at labour costs of 39.60 euros per hour worked in German construction. Against that sit the 840 euros from section two.
Only check six costs any thought. The other five are mechanical, workable by somebody who has never seen the costing. File the signed-off draft straight away, so you also satisfy section 257 of the German Commercial Code, requiring sent business letters to be kept six years, counted from the end of the calendar year of sending.
- 1. No placeholder left in the document. Search for the square bracket, do not read.
- 2. Total present and highlighted. Mandatory for consumers under the Price Indication Ordinance.
- 3. Acceptance deadline filled in as a date, never as a period.
- 4. Payment terms filled in, for consumers alongside the default-consequence notice.
- 5. The liability and warranty block comes unchanged from the template.
- 6. ASSUMPTIONS read through, every assumption confirmed or struck.
What I would do in your position
An AI draft pays off on repeating line items. So yes when your quotes hold the same tasks each time and a current price list exists. The model takes the writing, you keep the arithmetic, sign-off stays at two minutes per quote.
No when every quote is its own costing: bespoke fabrication, project business, anything with a long supply chain and price escalation clauses. There the text is the smallest part of the job, so a draft full of placeholders gets you nowhere.
No as well when nobody signs off by name. A checklist without a named person is a file. Name one person who signs off, name a second for holidays, then write both names into the template.
Frequently asked questions
- May I put the customer name into the prompt? Not on a first run. Redact name, address, job number using our free tool for redacting prompts, then read up on the four patterns that catch most of it.
- What if the customer accepts with changes? Then no acceptance happened. Under section 150(2) of the German Civil Code an acceptance adding, limiting or otherwise altering terms counts as a rejection combined with a fresh offer, leaving the decision back with you.
- Must I disclose that a model helped write it? For quote text you sign off on, no rule requires it. The text becomes yours the moment you release it.
- How do I protect the price field technically? Through a required schema field accepting only figures from your price list, or through a plain search for the square bracket before sending.
- What if quotes start out on site? Then the route runs through dictation, described in AI quote drafting in the trades.
Your next step
Mark three kinds of field in red. Open your quote template, marking every field that touches price, deadline or liability; most templates hold four to seven. Those fields go into the prompt as placeholders, everything else the model may write.
Then push a real but closed customer enquiry through the prompt from section five, checking the draft against the list from section six. One run tells you whether two minutes holds. Anyone wanting draft, sign-off and archiving wired together finds the matching services under automating internal processes.
Sources and status
Sources last checked: 27 September 2026. Vendor statements and our own reading of them are kept apart in the text.
- § 145 BGB, Bindung an den Antrag
- § 147 BGB, Annahmefrist
- § 148 BGB, Bestimmung einer Annahmefrist
- § 150 BGB, Verspätete und abändernde Annahme
- § 286 BGB, Verzug des Schuldners
- § 309 BGB, Klauselverbote ohne Wertungsmöglichkeit
- § 650b BGB, Änderung des Vertrags
- § 3 Preisangabenverordnung, Pflicht zur Angabe des Gesamtpreises
- § 257 HGB, Aufbewahrung von Unterlagen
- OpenAI: Structured Outputs
- Statistisches Bundesamt: Eine Arbeitsstunde kostete im Jahr 2025 durchschnittlich 45,00 Euro
Corrections: [email protected].
What does this mean for your business?
We go through one concrete workflow with you and check whether AI can help.
Book a free first call →