One of the most powerful features of the Otesse document system is auto-fill — the ability to pre-populate document fields from a worker's profile data. This eliminates repetitive data entry, reduces errors, and dramatically speeds up document completion for workers managing dozens of forms.
How Auto-Fill Works
Auto-fill connects template fields to profile data sources. When a worker opens a document for the first time, the system reads the template's field definitions, resolves each auto-fill source against the worker's current profile, and pre-populates the form.
Auto-Fill Lifecycle
| Stage | Behavior |
|---|
| Instance creation | Fields with auto-fill sources are populated from the worker's current profile data |
| Draft editing | Auto-filled values stay in sync with profile changes (unless manually overridden) |
| Manual override | Worker can edit any auto-filled field. Overridden fields stop syncing with the profile |
| Clearing an override | If a worker clears a manually-edited field, it reverts to auto-fill behavior |
| Submission/Signing | All values are frozen. No further auto-fill sync occurs |
| Completed document | Values reflect the truth at the time of signing, even if the profile changes later |
Sync Rules by Status
| Document Status | Auto-Fill on Open | Sync on Profile Change | User Can Edit |
|---|
| Required | Yes (on first open) | N/A (no data yet) | N/A |
| Draft | Yes | Yes (mapped fields update) | Yes |
| Pending Review | No | No | No |
| Completed | No | No | No |
| Expired | No | No | No |
Available Data Sources
Auto-fill draws from four categories of worker data:
Profile Data
| Source Key | Maps To | Example |
|---|
user.firstName | Legal first name | Nathaniel |
user.lastName | Legal last name | Maddox |
user.preferredName | Display name | Nate |
user.email | Primary email | hello@otesse.com |
user.phone | Primary phone | (541) 555-0123 |
user.dateOfBirth | Date of birth | 1990-08-11 |
user.address.street | Street address | 123 Main St |
user.address.city | City | Eugene |
user.address.state | State | OR |
user.address.zip | ZIP code | 97401 |
Banking Data
| Source Key | Maps To | Example |
|---|
user.banking.bankName | Bank name | Chase |
user.banking.routingNumber | ABA routing number | 021000021 |
user.banking.accountNumber | Account number | **4567 |
user.banking.accountType | Checking or savings | checking |
Travel Data
| Source Key | Maps To | Example |
|---|
user.travel.vehicleMake | Vehicle manufacturer | Toyota |
user.travel.vehicleModel | Vehicle model | Camry |
user.travel.vehicleYear | Vehicle year | 2020 |
user.travel.licensePlate | License plate | ABC-1234 |
user.travel.insuranceProvider | Insurance company | State Farm |
user.travel.insurancePolicyNumber | Policy number | SF-98765 |
Security Data
| Source Key | Display | Storage |
|---|
user.ssn | Last 4 only (*--4567) | Full value encrypted at rest |
SSN fields receive special handling. They are always masked in the UI (showing only the last four digits), encrypted during storage, and never returned in full via API responses.
Auto-Fill Examples
| Field | Auto-Fill Source |
|---|
| Name | user.firstName + user.lastName |
| Business name | Manual entry |
| Federal tax classification | Manual entry |
| Address | user.address.street |
| City, state, ZIP | user.address.city, user.address.state, user.address.zip |
| SSN | user.ssn |
Direct Deposit Authorization
| Field | Auto-Fill Source |
|---|
| Employee name | user.firstName + user.lastName |
| Bank name | user.banking.bankName |
| Routing number | user.banking.routingNumber |
| Account number | user.banking.accountNumber |
| Account type | user.banking.accountType |
Vehicle Insurance Proof
| Field | Auto-Fill Source |
|---|
| Driver name | user.firstName + user.lastName |
| Vehicle | user.travel.vehicleMake + user.travel.vehicleModel + user.travel.vehicleYear |
| License plate | user.travel.licensePlate |
| Insurance provider | user.travel.insuranceProvider |
| Policy number | user.travel.insurancePolicyNumber |
Manual Override Behavior
Workers can override any auto-filled value by editing the field directly. The system tracks overrides using an internal flag:
- Auto-filled, not edited — Field syncs with profile changes
- Auto-filled, manually edited — Worker's manual value is preserved; profile sync skips this field
- Manually edited, then cleared — Reverts to auto-fill behavior and re-syncs with profile
This ensures that intentional corrections (like using a P.O. box instead of a home address) are preserved, while accidental blanks do not prevent auto-fill from working.
Edge Cases
- Missing profile data: If a worker's profile does not have data for a mapped field, the form field remains empty. Auto-fill never fails — it simply skips fields with no source data.
- Profile update during review: If a worker updates their profile while a document is in "pending review" status, the document is not updated. If an admin rejects the document back to draft, auto-fill sync resumes on next open.
- Multiple fields, same source: If two fields reference the same source (e.g., both "Name" and "Full Name" map to firstName + lastName), both receive the same value. Manual override on one does not affect the other.