Because the offer is a document and the contract is another document, and somebody transcribes between them. Small differences creep in, and the two are only compared if there is a dispute.
The formal offer: salary, start date, terms and conditions, generated from the role and issued to the candidate.
The offer holds the terms as data, not just as text. On acceptance those terms become the contract terms on the personnel record — the same values, not a copy.
An offer at a particular salary with a particular start date is accepted. Payroll has the salary, onboarding has the start date, and nobody typed either a second time.
There is no e-signature. Offers are issued and acceptance recorded; how it is signed is your process.
Onboarding starts. Payroll picks up the terms. The org chart shows the position filled.
Yes, versioned, with what changed visible.
Update it on the record; onboarding and payroll follow.
Yes, per role type, with terms as fields rather than free text.
Fourteen days, every module, no card. Or half an hour with someone who will run it on your own records and tell you where it does not help.