Onboarding a client used to mean a form in one tool, a contract in another, and the same company name, contact, and scope typed into both. I built ClienTell so a single client record carries the work from first brief to signed agreement.
What I built
- A brief clients can finish on their own time. Clients sign in with their contact email and a 6-digit PIN instead of creating an account. Answers autosave on a visible 30-second countdown, and a forgot-PIN flow means they never have to email me to get back in.
- Question sets I can reuse. I build sets once from seven field types, assign one to a client, and track each brief as unfinished or completed. I can resend, cancel, or reset a PIN from the admin console.
- Contracts generated from the brief. The client record feeds a design services agreement, a statement of work with deliverables and milestones, and an optional confidentiality addendum. Clients sign in the browser, and the contract exports as a branded PDF that matches its Figma layout.
- Deploys that can’t wipe client data. Schema changes ship as additive D1 migrations, and the destructive
db:pushcommand is blocked by default.
Results
| One record | 3 documents | 0 accounts |
|---|---|---|
| From brief to signed contract | Agreement, SOW, and addendum generated per client | Clients need only an email and a PIN |