
sales.prepare-offer·version 1.0.0·draft2 to verify
The customer has a numbered offer PDF with a fixed scope, price, validity and payment terms, and a follow-up task is set.
A customer or qualified prospect has asked what the work or product costs, and the answer must be a document, not a chat message. Not for a lead that has not been qualified — run sales.qualify-lead first. Not for chasing an offer already sent — use sales.follow-up-offer. Not for a one-line price answer with no scope; a number without scope becomes the scope.
Any step can wait until a date and reopens by itself; every closed step leaves evidence (a note, a link, a number).
Write 2–4 lines: what the customer wants, by when, any constraints they named. Send it to the requester for a one-word confirm ("yes").
Done when the requester has confirmed the restatement.
⛔ An offer built on a half-remembered call prices the wrong thing.
Previous offers and invoices to this customer, prices given to similar customers, anything owed (bc mail search <customer> for the correspondence).
Done when the offer file notes prior prices and open items, or "none found".
Fixed sections, in this order: scope (what is included and what is explicitly not), deliverables and dates, price per line, payment terms, validity date, the company's legal details. Number it OFFER-<year>-<seq>.
Done when the draft exists in the documents module with that number.
⛔ Write exclusions ("does not include hosting, translation, …") — silence is read as inclusion.
Recompute every line and the total by hand; apply the VAT rule for the buyer's country (⚠ verify rate and reverse-charge wording — vid.gov.lv for LV, or the buyer's tax authority); check margin against the discount rules.
Done when a second computation matches the total and the margin is inside the standing rules or flagged.
Approval · S5 · owner — the run stops until a named person records the decision
Present the draft with the margin and any flagged discount.
Done when the owner has approved the version, or named changes that go back through S3.
Export the approved version to PDF from the documents module; check the render (totals, dates, legal details, no placeholder text).
Done when the PDF of the approved version number exists and reads clean.
Approval · S7 · owner — the run stops until a named person records the decision
Show the final PDF and the recipient address.
Done when the owner has named the recipient and approved sending.
Send the PDF to the approved recipient from the company address. Record in the pipeline: offer sent, date, amount, validity date. bc tasks add a follow-up at half the validity period (e.g. day 7 of 14).
Done when the sent copy is in the documents module, the pipeline shows "offer sent", and the follow-up task exists.
| Symptom | Response |
|---|---|
| Wrong total or VAT found after sending | Issue a corrected offer with a new version number the same day; do not annotate the old one; note which check in S4 failed. |
| Customer asks for scope beyond the offer | Do not renegotiate by e-mail thread; write a revised offer through S3–S7. |
| Owner unavailable at S5/S7 | Offer waits; record the blocker date. Never send on an oral approval without a named person and date. |
| Offer expires with no answer | Run sales.follow-up-offer; if still silent, close as lost and run sales.lost-deal-review. |
| Customer asks for a big discount | Take it back through S5 with the margin impact shown; never quote a new number in the thread. |
Offer number and version · the approved draft and the sent PDF · the owner's approval in S5 and S7 (who, when, which version) · send date and recipient · the follow-up task id · the pipeline entry.
After every 10 offers ask: how long from ask to sent, and which step waited? How many first versions were approved unchanged (target: most)? Did any sent offer need a correction, and which check in S4 or S6 should have caught it? Did any offer expire with no follow-up having fired? A new version changes the step that caused the wait or the miss, and says so in its change note.
Obligātās sīkdatnes tur sarunu kopā. Analītika ir izslēgta, līdz tu atļauj — tā neliek nevienu sīkdatni un neglabā ierīces identifikatoru.Necessary storage keeps your conversation together. Analytics is off until you allow it — it sets no cookie and stores no device identifier. Ko mēs glabājamWhat we store