FormPilot is your smart AI form assistant that automatically detects and fills web forms using intelligent semantic matching. The extension analyzes form fields, understands their meaning, and maps them to your provided data automatically.
- 🔍 Automatic Form Detection: Scans web pages and identifies all form fields
- 🧠 Semantic Matching: Intelligently maps your data to form fields using AI-powered analysis
- 📝 Sequential Filling: Fills forms in natural order (top to bottom, left to right)
- 👁️ Preview Mode: Preview what will be filled before executing
- 💾 Profile Management: Save and load multiple data profiles
- 🔒 Privacy First: All data stays local in your browser
- ⚡ Lightweight: No external API calls, runs entirely client-side
- Go to
chrome://extensions/(oredge://extensions/) - Enable "Developer mode" (top right)
- Click "Load unpacked"
- Select this folder
- Done! The extension icon appears in your toolbar
- Go to
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on"
- Select
manifest.json
-
Provide Your Data:
- Click the extension icon
- Go to the "Your Data" tab
- Enter your data as JSON (or click "Load Sample Data")
- Example:
{ "full_name": "John Doe", "email": "john@example.com", "phone": "1234567890", "address": "123 Main St", "company": "Acme Inc" }
-
Scan Form Fields:
- Navigate to a webpage with a form
- Open the extension popup
- Go to "Detected Fields" tab
- Click "🔍 Scan Current Page"
-
Review Mappings:
- Go to "Mapping" tab
- Review how your data maps to form fields
- Edit mappings manually if needed
- Click "🔄 Auto-Map Fields" to remap
-
Fill the Form:
- Click "👁️ Preview" to see what will be filled (optional)
- Click "✅ Fill Form" to execute
- Confirm the action
The extension scans the DOM for:
<input>elements (text, email, tel, date, checkbox, radio, etc.)<textarea>elements<select>dropdowns
For each field, it extracts:
- Label text (from
<label>tags, aria-labels, nearby text) - Placeholder text
- Input type and attributes
- Field name and ID
- Required status
The matching engine uses a hybrid approach combining fast rule-based matching with AI-powered semantic understanding:
- Exact Match: Direct string matching between field labels and data keys
- Partial Match: Word-by-word matching
- Type-Based Matching: Email fields match email data, phone fields match phone data
- Keyword Matching: Recognizes common variations (e.g., "full_name" → "name", "fullname")
- Common Mappings: Handles standard field variations
- Uses TensorFlow.js Universal Sentence Encoder for semantic similarity
- Activates when rule-based matching has low confidence (< 0.7)
- Understands context and meaning, not just keywords
- Handles edge cases and unusual field names
- Works entirely client-side (privacy-preserving)
Note: AI model files are optional. The extension works fully with rule-based matching, which handles 80-90% of cases effectively. AI matching requires model files to be properly bundled (see setup instructions).
How it works:
- Rule-based matching runs first (handles 80-90% of cases instantly)
- If AI model is available and confidence is low, AI semantic matching is used
- Best match is selected based on similarity scores
- UI shows which method was used (🤖 AI or ⚡ Rules)
Fields are filled sequentially:
- Determines fill order (top to bottom, left to right)
- Fills each field with appropriate method:
- Text inputs: Simulates typing
- Dropdowns: Matches by value or text
- Checkboxes/Radios: Sets checked state
- Dates: Formats appropriately
- Triggers necessary DOM events for form validation
.
├── manifest.json # Extension configuration (MV3)
├── popup.html # Extension UI
├── popup.css # UI styling
├── popup.js # UI logic and hybrid matching
├── ai-matcher.js # AI-powered semantic matching (TensorFlow.js)
├── content.js # Form detection and filling engine
├── background.js # Background service worker
├── libs/ # Bundled libraries and AI models
│ ├── tf.min.js # TensorFlow.js
│ ├── universal-sentence-encoder.min.js
│ └── use_model/ # AI model files (bundled locally)
├── icons/ # Extension icons
├── README.md # This file
├── PRIVACY_POLICY.md # Privacy policy
└── PERMISSIONS_JUSTIFICATION.md # Permissions explanation
-
Manifest Version: 3 (Chrome Extension Manifest V3)
-
Permissions:
activeTab: Access current tabstorage: Save user data and profilesscripting: Inject content scripts when needed<all_urls>: Work on any website
📋 See PERMISSIONS_JUSTIFICATION.md for detailed explanation of why each permission is needed and how your privacy is protected.
- AI-Powered: Uses TensorFlow.js Universal Sentence Encoder for semantic matching
- Hybrid Approach: Combines fast rule-based matching with AI for best accuracy
- Client-Side AI: All AI processing happens in your browser (privacy-preserving)
- Client-Side Only: All processing happens in the browser
- ✅ All data stored locally in browser storage
- ✅ No external API calls
- ✅ No data transmission
- ✅ Works offline
- ✅ Open source code for transparency
- Works best with standard HTML forms
- May have issues with heavily JavaScript-rendered forms
- Some sites may block programmatic form filling
- Complex custom form components may not be detected
Fields not detected?
- Make sure the form is fully loaded
- Some sites use custom form components that may not be detected
- Try refreshing the page and scanning again
Mappings incorrect?
- Use the "Mapping" tab to manually adjust mappings
- Ensure your data keys are descriptive (e.g., "full_name" instead of "fn")
- Check that field labels are visible on the page
Form not filling?
- Some sites validate input in real-time - try filling slower
- Check browser console for errors
- Ensure fields are not disabled or hidden
Potential improvements:
- Support for file uploads
- Multi-step form navigation
- Form validation handling
- Custom field type detection
- Integration with password managers
- Form templates for common sites
This project is open source and available for personal and commercial use.
Contributions welcome! Please feel free to submit issues or pull requests.
Note: This extension is for legitimate use cases like filling your own information on forms. Always respect website terms of service and use responsibly.