Skip to content

Part 2 of 7 · Offer letter generator series ~5 min read

How the agreed terms get captured

The capture step decides whether this system gets used at 11:40 on the day or at 9am three days later, which is the entire difference between it working and not. So there are two lanes, and the second one exists purely because some people will always forward an email rather than fill in a form.

Key takeaways

  • Nine fields, chosen because they are what actually varies between offers.
  • The note lane accepts a forwarded email and produces the same nine fields to confirm.
  • Salary, start date and role are never inferred from a previous offer or a job advert.
  • Every field the reader filled from a note is shown differently from one that was typed.
  • A confirmed set of terms is immutable; a change produces a new version.

Nine fields

candidate      Kwame Osei              name as it goes on the letter
role           Field service engineer   the title, exactly
basis          salaried | hourly | fixed_term
pay            38000                    per year, or per hour
hours          37.5                     per week
start_date     2026-08-28
probation      3 months                 from the clause library’s options
notice         1 month                  likewise
extras         car allowance            zero or more library clauses

Nine because that is what genuinely varies. Everything else in an offer letter — holiday, pension, place of work, the pre-employment conditions — is either identical across offers or determined by the basis, and putting it on the form makes the form long enough that people go back to writing letters by hand.

Two lanes

Three capture lanes converging on nine confirmed fieldsThree boxes stacked on the left. The form, nine fields filled in on a phone, labelled typed. A forwarded note, being the email where the offer was agreed, labelled prose. And a voice note, transcribed first, labelled spoken. All three converge on Nine confirmed fields, shown for a check and then frozen. Below that, connected by a downward arrow, is the Clause matcher, which works term by term. A note says everything ends at the same confirmation screen and nothing drafts from an unconfirmed field.The formnine fields, on a phonetypedA forwarded notethe email where itwas agreedproseA voice notetranscribed firstspokenNine confirmed fieldsshown for a check,then frozenClause matcherterm by termEverything ends at the same confirmation screen. Nothing drafts from an unconfirmed field.
Fig 1. Three ways to capture an offer and one confirmation gate. The gate is what makes the note lane safe: nothing is drafted from a field the reader inferred until a person has seen it.
  • App integration
  • Machine learning
  • Analytics
  • Front-end & mobile

The confirmation screen

Whichever lane was used, the nine fields are shown before anything is drafted, and fields the reader inferred are visually distinct from fields somebody typed. That distinction matters: a person scanning a confirmation screen will read a highlighted field and skim a plain one, and the highlighted ones are exactly where an error would be.

The screen also shows what the reader could not fill. A note that says “agreed the usual” leaves probation and notice blank, which are then two taps from the library’s options rather than a guess about what usual means for this role.

Fields that are never inferred

  • Pay. Never taken from the job advert, the salary band, or a previous offer for the same role. If the note does not state a number, the field is blank. A letter with the wrong salary in it is the single worst output this system could produce.
  • Start date. Never computed from a notice period or assumed to be the first of a month. Dates get discussed and changed, and inferring one produces a letter that contradicts a conversation.
  • Role title. Taken as agreed rather than normalised to whatever the job advert said. The title on the letter is the title, and tidying it is not the system’s business.
  • Anything in extras. A car allowance is either mentioned or it is not. Inferring one from the role would be inventing a term.

Versions

A confirmed set of terms is frozen. Offers get renegotiated — a candidate comes back on salary, a start date moves — and the natural implementation is to edit the fields and redraft. That loses the fact that a different letter went out first, which matters if the two ever have to be compared.

How a renegotiated offer produces a second versionA horizontal row of five boxes. Version one confirmed: thirty-eight thousand, starting the twenty-eighth of August. Version one sent: the document is kept. Renegotiated: forty thousand. Version two confirmed: a new version rather than an edit. Both kept: with a record of what changed. A note says editing version one would have deleted the only record that a different letter was sent.AN OFFER THAT CHANGEDv1 confirmed£38,000, 28 Augv1 sentdocument keptRenegotiated£40,000v2 confirmeda new versionBoth keptwith what changedEditing v1 would have deleted the only record that a different letter was sent.
Fig 2. How a renegotiated offer is recorded. Versioning costs nothing and preserves the fact that an earlier letter exists in somebody’s inbox.
  • Machine learning
  • Management
  • Front-end & mobile

Next: how each term finds its approved clause.

All posts