Customers and contracts
A customer record, a versioned template, a contract sealed then signed online, with its amendments and its termination.
Getting a contract signed usually takes a word processor, a PDF export, a signature service and a folder to file the result in. Here it is one screen of the admin: a customer record, a template, a contract, and a link sent by email.
Three screens, in this order
- Customers: the company and the person who signs for it - legal name, legal form, share capital, registered office, company number, VAT number, representative and their role. That is where the contract reads its particulars.
- Contract templates: the wording, written once and versioned. A body, its annexes, and tokens filled in at creation: the customer's name, their office, mine, the dates, the amounts.
- Contracts: a contract is born from a template version and keeps a copy of it. Editing the template afterwards does not rewrite what has already gone out.
A template stays a draft for as long as the wording is not settled, and a published version cannot be edited: that is what makes it possible to know, two years later, which text was signed.
What the signature guarantees
- The contract is sealed before it leaves: a SHA-256 fingerprint over its text, and a command that checks nothing has moved since.
- One public link per contract, sent by email, opened with a one-time code received at the same address.
- Signing records the date, the IP address, the browser and the name the signer typed.
- Refusal is provided for as much as agreement: its reason, its date, and a link that stays usable if the customer changes their mind.
- Automatic reminders for a contract left unanswered, with a cap that stops them.
- An amendment is a contract pointing at the one it changes, with a reference of its own: the signed contract is never rewritten.
- A termination carries two dates, the day it is served and the day it takes effect, because a notice period is exactly the gap between them.
- A retention period that is a setting, ten years by default, with a five-year floor no setting can go under, and a command that says what is still under that obligation.
The signer sees none of this: one page, the wording, a name to type, and what is being collected written out plainly. This is the module that holds my own contracts.