Profile Management
Create reusable data profiles for instant form filling across multiple forms
Overview
Profile Management stores structured entity data — for a person, business, or client — that the autofill engine can apply to any form in a workspace. When a form filling session starts, profile files are asynchronously copied into the session source list before autofill_db_fields() runs, so the profile data is available to the same field-matching logic that handles uploaded documents.
A profile differs from a source document: a source is an unstructured file (PDF, Word, image) that the AI must parse and interpret; a profile is already structured field data that maps directly to form fields without a parsing step. In practice, many sessions use both — a profile supplies the standard identity fields (name, address, SSN, date of birth) while source documents supply case-specific detail (prior-year tax return, employment verification letter).
Profiles are scoped to a workspaceId. Every read and write query includes a workspaceId filter, so a profile created in one workspace is never visible to another. Profile names are generated automatically by the GENERATE_PROFILE_NAME model when the user does not supply a name manually.
When profile content changes (new files added, field values updated), the system exposes POST /api/profiles/{profile_id}/update-vectors to regenerate the profile's vector embeddings so semantic search against the profile returns accurate results in subsequent autofill sessions.
Real-World Example: A teleradiology practice automated hospital credentialing by creating physician profiles with licensing, education, and insurance information. They reduced credentialing time from 6 hours to 20 minutes per physician, processing 50+ credentialing packages monthly.
Key Capabilities
- Structured Data Storage: Store information in organized field categories (personal, contact, employment, financial, etc.)
- Multiple Profiles: Create profiles for different individuals, businesses, or clients within a workspace
- Async Session Integration: Profile files are copied into the session source list before
autofill_db_fields()runs, so they participate in the same autofill pass as uploaded documents - Vector Embedding Refresh:
POST /api/profiles/{profile_id}/update-vectorsregenerates embeddings after profile content changes - AI-Generated Profile Names: When no name is provided, the
GENERATE_PROFILE_NAMEmodel derives a name from the profile content - Workspace Scoping: All profile queries include a
workspaceIdfilter — profiles do not cross workspace boundaries - Batch Upload: Up to 10 files per batch upload request into a profile
- Team Profiles: Share profiles across workspace members (e.g., employer information shared with all HR users)
- Partial Profiles: A profile does not need to cover every form field; unmatched fields remain blank or are filled from other sources
- Custom Fields: Add organization-specific fields beyond the standard profile template
- Data Validation: Enforce format requirements (SSN format, phone patterns, email structure)
How It Works
Create Profile: Click "New Profile" and choose a template:
- Individual: Personal information (name, DOB, SSN, contact info)
- Business: Company details (EIN, address, officers, incorporation date)
- Client: Client-specific information for service providers
- Custom: Build a profile with your own field structure
Fill Profile Fields: Enter information by category:
- Personal Info: Name, DOB, SSN, gender
- Contact: Address, phone, email
- Employment: Employer name, position, salary, dates
- Financial: Bank info, income, assets
- Medical: Insurance info, medical history (HIPAA-secured)
- Custom: Any additional fields your workflow requires
Upload Supporting Files (optional): Attach up to 10 files per batch upload request. These files are stored with the profile and copied into each session's source list when the profile is applied.
Name the Profile: Enter a descriptive name, or leave it blank and let the
GENERATE_PROFILE_NAMEmodel assign one based on the profile content.Apply to Forms:
- Start a form filling session
- Click "Apply Profile" and select from the workspace profile library
- Profile files are asynchronously copied into the session source list
autofill_db_fields()runs, matching profile fields to form fields- Review results and fill any remaining fields manually or via additional source documents
Refresh Embeddings After Updates: After adding files or editing field values, call
POST /api/profiles/{profile_id}/update-vectorsto regenerate the profile's vector embeddings so the updated data is available for semantic matching in future sessions.Update Profiles: When information changes (new address, updated employer):
- Edit the profile to update the relevant fields
- Changes apply to all future form sessions
- Historical sessions reference the data that was active when they ran
Use Cases
Profiles are most valuable for anyone who fills multiple form types with the same entity data over time. Job seekers create one profile with their full work history and contact details to autofill applications on any career portal. Insurance agents maintain a profile per client to quickly populate new policy forms — W-4, COBRA election notices, and benefits enrollment forms all draw on the same client record. Estate planning attorneys store client asset and beneficiary data in a profile and reuse it across wills, trusts, and power-of-attorney forms without re-entering the same information.
Real-World Example: Kona Ice automated permit applications across multiple locations by maintaining a profile for each franchise unit, filling state permit forms in seconds rather than hours.
Prepopulated Form Fields with Static Data
For form fields that never change across sessions — company name, office address, attorney bar number, standard disclosures — Instafill.ai lets you permanently fill those fields at the form template level. This hybrid approach reduces the amount of data a profile needs to carry and eliminates the risk of inconsistent static values across submissions.
What is Prepopulation?
Standard Profile Filling: Every session applies a profile that contains all data, including fields that are always identical (company EIN, office address). The same static values are filled from the profile on every run.
Prepopulation: Static fields are filled once in the form template. When a session starts from that template:
- Prepopulated fields: Already filled and optionally locked against overwrite
- Dynamic fields: Filled from the active profile on a per-session basis
Example — Employment Application for a Large Company:
Without prepopulation, a profile for every employee must include 20 company-information fields (legal name, EIN, HR contact, corporate address, etc.) in addition to 80 applicant-specific fields. With prepopulation, the 20 company fields are baked into the template; employee profiles carry only the 80 variable fields.
Common Prepopulation Use Cases
1. Company/Organization Information
Fields to prepopulate in templates used by employees or clients:
- Legal company name, EIN, corporate address
- HR or benefits contact information
- Standard company disclosures
Example forms: W-2, 1099, W-9 (employer identification sections), benefits enrollment forms, vendor agreements.
2. Professional Service Provider Information
Attorneys, CPAs, and financial advisors prepopulate their firm details (firm name, address, bar/license numbers, standard engagement disclosures) into the form templates they reuse with clients. Client profiles then carry only client- and matter-specific data.
3. Recurring Boilerplate and Disclosures
HIPAA consent forms, privacy notices, and terms-and-conditions pages that never change across patients or clients can be prepopulated so the session only needs to collect signatures and dates.
4. Reference Information
Medical practices prepopulate CPT codes and standard fees into superbill templates. Each visit session fills only patient demographics and selected procedure codes.
How to Prepopulate Form Fields
Method 1: Via Form Template Editor
- Open the form template in Instafill.ai
- Enter Field Management mode
- Select the fields to prepopulate (company name, address, etc.)
- Set default values and optionally mark fields as "Locked" (prevents profile data from overwriting them)
- Save the template — future sessions using this template will have those fields pre-filled
Method 2: Fill-Once-Use-Forever
- Create a form filling session with a blank form
- Manually fill the static fields (company info, boilerplate text)
- Leave the dynamic fields empty
- Save the session as a new form template and mark static fields as locked
Method 3: Import from Existing Filled Form
- Upload a completed form that already has static fields filled (e.g., a prior submission with company info)
- The system detects filled fields and asks whether to prepopulate them
- Mark which fields to lock vs. leave dynamic, then save as a template
Prepopulation + Profiles: The Optimal Workflow
- Prepopulate the form template with all static organizational data
- Create minimal profiles that contain only per-entity variable data
- Start a session using the prepopulated template, apply the profile
- Static fields are already present; the profile fills the dynamic fields; the form is complete
Example — Law Firm Client Intake:
Prepopulated in the template: firm name, address, attorney name and bar number, contact phone and email.
Sourced from the client profile at session time: client name, DOB, SSN, address, case details, matter number.
The profile needs 15 fields instead of 25. The firm's identifying information is guaranteed consistent across every client form.
Advanced Prepopulation Strategies
Conditional Prepopulation: An insurance agency creates separate templates for auto, home, and life insurance lines — each with the relevant disclosure language prepopulated for that product type.
Multi-Office Organizations: Create per-location template variants (Boston template, NYC template) with the corresponding office address prepopulated. Staff use the template for their location.
Version Control for Compliance: When a company address changes, update the prepopulated value in the template. All future sessions use the new address; historical sessions preserve the old address in their output PDFs.
Partial Prepopulation: Prepopulate the most common value (e.g., State = "California") but leave the field unlocked so staff can override it for the ~10% of submissions from other states.
Benefits of Prepopulation
- Consistency: Static data entered once, so company name, EIN, and address cannot differ between documents
- Smaller Profiles: Profiles carry only variable data, reducing maintenance when static values change
- Team Efficiency: New team members do not need to know the company's EIN or bar numbers — the template already has them
- Compliance: Standard disclosures are always present; they cannot be omitted if the field is locked
When to Use Prepopulation vs Profiles
| Use Prepopulation For... | Use Profiles For... |
|---|---|
| Company/organization info | Personal information |
| Static boilerplate text | Variable case details |
| Standard disclosures | Client-specific data |
| Fee schedules | Transaction amounts |
| Office addresses | Customer addresses |
| Attorney bar numbers | Client SSNs |
| Form version/edition info | Submission dates |
| Invariant reference data | Dynamic calculations |
If the data is the same across 90%+ of sessions, prepopulate it. If it varies per session, store it in a profile.
Important Considerations
Locked vs Unlocked Prepopulation:
- Locked: The field cannot be overwritten by a profile or manual edit (use for legal name, EIN)
- Unlocked: The field has a default value but can be overridden (use for office address in multi-location organizations)
Profile Conflicts: If a profile contains a value for a locked prepopulated field, the prepopulated value takes precedence. This prevents accidental overwrites of critical static data.
Template Updates: Updating a prepopulated value creates a new template version. Existing sessions reference the version used when they were created; new sessions use the updated template.
Benefits
- Reduced Repetitive Entry: Profile data for fields like name, address, SSN, and employer is entered once and reused across W-4, I-9, I-485, benefits enrollment, and any other form in the workspace
- Consistent Output: Because
autofill_db_fields()applies the same profile data each time, the same field on different forms is filled identically - Async Integration: Profile files are copied into each session's source list before autofill runs, so profile documents and uploaded source documents are processed together in a single pass
- Vector-Backed Accuracy:
POST /api/profiles/{profile_id}/update-vectorskeeps semantic search current after profile edits, so field matching uses up-to-date embeddings - Team-Scale Sharing: Workspace-scoped profiles let all members of an HR team, law firm, or insurance agency share common client or employer data without duplicating entries
- Partial Coverage: A profile does not need to cover all form fields; it fills what it can, and the session handles the rest from sources or manual input
Real-World Example: Organizations using field flagging can mark critical profile fields for manual review, combining automation speed with human accuracy checks on sensitive data.
Security & Privacy
Data is scoped to workspaceId and protected via the shared JWT authentication middleware running in both the .NET and Python service layers. All profile queries include a workspaceId filter — no profile or its files are accessible outside the workspace that created it.
Profile field values and uploaded files are encrypted using handle_text_encryption() (PyCryptodome 3.19.0) with workspace-scoped keys stored in Azure Key Vault. Encryption applies both at rest and when profile content is passed between the .NET API layer and the Python processing service.
Access control distinguishes private profiles (visible only to the creator) from shared profiles (visible to designated workspace members). Role-based permissions control who can view vs. edit a profile. For medical profiles containing PHI, HIPAA-level audit logging tracks every read and write event, with Business Associate Agreements available upon request.
Common Questions
What's the difference between profiles and sources?
Profiles:
- Structured field data stored in the database
- Copied asynchronously into the session source list before
autofill_db_fields()runs - Best for: Repetitive identity data (name, address, SSN, employer info)
- Application: Direct field mapping without a parsing step
Sources:
- Unstructured documents (PDF, Word, image) uploaded to a session
- AI extracts and interprets content before mapping to form fields
- Best for: Complex documents (contracts, medical records, resumes, prior-year tax returns)
- Application: AI finds relevant data scattered across the document
Use Together: Apply a profile for standard identity fields, then add source documents for complex case-specific data. Most sessions use both — the profile handles the ~70% of fields that are repetitive; sources handle the remaining 30% that require extraction from documents.
Real-World Example: Teams using n8n integration combine profiles with automated source fetching from CRMs. When a new client is added, n8n creates a profile and triggers form filling automatically.
Can I create profiles for my clients or family members?
Yes. Create one profile per entity within the workspace. Common patterns:
- Individual: Separate profiles for yourself, spouse, children, or elderly parents (for healthcare or financial POA forms)
- Clients: One profile per client for service providers (attorneys, accountants, insurance agents)
- Business entities: Separate profiles for each legal entity (parent company, subsidiaries, joint ventures)
All profiles are private by default. Share a profile with specific workspace members by granting them access. Clients do not have access to their own profiles.
Use Case — Accountant: Creates a profile for each tax client including SSN, filing status, prior-year AGI, and dependent information. At tax time, the profile fills W-4, Schedule C, and state return forms in seconds.
How do I update a profile without affecting old forms?
Edit the profile and save. The system stores the updated values for future sessions. Historical sessions — and the PDFs they produced — are not altered; they captured the profile data as it existed when those sessions ran.
After editing a profile, call POST /api/profiles/{profile_id}/update-vectors to regenerate vector embeddings. Without this step, semantic field matching in new sessions may still use outdated embeddings from before the edit.
Example: A client moves in April. Update their address in the profile, refresh embeddings, and all sessions from April onward use the new address. Forms filled in January through March still show the original address, which is correct for those documents.
Can I import data to create profiles automatically?
Yes, through multiple import methods:
Batch File Upload: Upload up to 10 files per request when creating or updating a profile. Useful for importing a resume, prior tax return, and employment verification letter into a single profile at once.
API Integration: Use the RESTful API to create or update profiles programmatically from an HRIS, CRM, or any data source. Follow up with POST /api/profiles/{profile_id}/update-vectors to refresh embeddings after programmatic updates.
Form Extraction: Upload a completed form (PDF or image) during profile creation; the AI extracts field values and pre-fills the profile fields. Review and confirm before saving.
Use Case — HR Department: Export new hire data from the HRIS, create profiles via API for each new employee, then use those profiles to fill I-9, W-4, direct deposit authorization, and benefits enrollment forms during onboarding — without manual re-entry of the same data across four different forms.
Can profiles handle complex data like employment history or dependents?
Yes. Profiles support repeating data structures for fields that occur multiple times:
- Employment History: Multiple jobs, each with employer name, position, salary, start and end dates, and duties
- Education: Multiple degrees with institution, field of study, graduation date, and GPA
- Dependents: Multiple children or dependents, each with name, DOB, SSN, and relationship
- Addresses: Current, previous, and mailing addresses as separate entries
- References: Multiple references with complete contact information
Form Application: When autofill_db_fields() encounters a form with an employment history table (common on I-485 immigration applications or federal employment forms), it maps the first employment history record to the first table row, the second to the second row, and so on. The Table & List Field Processing logic handles the row-level mapping.