Applifai is a Chrome Extension + web dashboard that eliminates the repetitive work of filling out repetitive forms.
- Build your profile once on the dashboard — personal info, education, work experience, skills
- Browse to any form — on any site (Greenhouse, Lever, Workday, Google Forms, etc.)
- Click the extension icon — Applifai detects the form fields and offers to fill them instantly
- Branching: Work on
extensionbranch, then bridge tomain. - Merge Restriction: Crucial: The AI agent must never merge the
extensionbranch intomain. The AI should only push changes toextension. The USER will handle PRs and merges tomainon GitHub. - Privacy: The
context/folder is ignored by Git. It contains brainstorming and sensitive data that must remain local and never be committed.
User clicks extension icon
│
▼
Is user logged in?
├── No → Opens login tab (chrome-extension://.../index.html)
└── Yes → Injects overlay onto the active page
│
▼
Scanning State (1s)
Multi-signal field detection runs:
autocomplete → label text → name/id → placeholder → nearby DOM text
│
├── 0 fields matched → "No Form Detected" (refresh / report)
└── ≥1 fields matched → "Ready to Autofill"
│
▼
Autofill executes
(fills fields from stored profile)
- Node.js ≥ 18
- A Firebase project with Authentication and Firestore enabled
- A Google Cloud OAuth 2.0 Client ID (for extension Google Sign-In)
git clone https://github.com/lilithfactor/applifai.git
cd applifai
npm installCreate .env.local at the root:
VITE_FIREBASE_API_KEY=your_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_project.appspot.com
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_GOOGLE_CLIENT_ID=your_oauth_client_id.apps.googleusercontent.comThe Chrome extension uses static JS files that do not support environment variables directly. Before loading the extension:
- Firebase Config: Open
public/firebase_config.jsand replaceYOUR_FIREBASE_API_KEYandYOUR_FIREBASE_PROJECT_IDwith your own credentials. - GenAI (Optional): If you are using the Gemini-powered detection features, open
public/genai_config.jsand paste yourGENAI_API_KEY.
Warning
Do NOT commit these files back to source control once you have added your real keys. These files are tracked as templates only.
npm run devStarts at http://localhost:5173.
python execution/package_extension.pyThis builds the app and creates applifai_extension_<timestamp>.zip.
Load in Chrome:
- Go to
chrome://extensions - Enable Developer mode
- Click Load unpacked → select the
dist/folder
(or use Load packed → select the.zip)
Note: The extension ID is locked via the
keyfield inmanifest.json. Your Google OAuth redirect URI must behttps://<extension-id>.chromiumapp.org/.
| Section | What you store |
|---|---|
| Profile | Name, email, phone, address, LinkedIn, GitHub, portfolio, cover letter |
| Education | School, degree, major, GPA, graduation year |
| Experience | Company, role, dates, description, salary |
| Skills | Technical skills, tools, certifications |
The extension uses a multi-signal scoring engine to classify form fields into profile categories:
| Signal | Weight | Example |
|---|---|---|
autocomplete attribute |
4 | autocomplete="email" |
<label> text / aria-labelledby |
3 | <label>Email Address</label> |
name / id attribute |
2 | name="applicant_email" |
placeholder / aria-label |
1 | placeholder="Enter email" |
| Nearby DOM text (parent traversal) | 3 | Question title in sibling <div> |
| Fuzzy Dice matching (≥0.7 threshold) | 2 | "Emal Adress" → email |
Detected fields and their CSS locators are stored in chrome.storage.local under last_scan for the autofill step.
Debug: Open the browser console on any page after clicking the extension icon — you'll see:
[Applifai] Detection complete in 12ms. Candidates: 8, Matched: 6 {profile: 4, education: 0, experience: 2, skills: 0}
And a console.table breakdown per matched field.
| Layer | Tech |
|---|---|
| Frontend | React 18 + TypeScript + Vite |
| Styling | Tailwind CSS |
| Auth | Firebase Authentication (Google OAuth + Email/Password) |
| Database | Cloud Firestore |
| Extension | Chrome MV3 — Vanilla JS content script, no framework |
| Extension Auth | chrome.identity.launchWebAuthFlow (MV3-compliant) |
| Packaging | Python script (execution/package_extension.py) |
Follows Semantic Versioning. See CHANGELOG.md for release history and context/versioning.md for the full versioning policy.
Current version: v1.0.0
applifai/
├── public/ # Chrome extension files
│ ├── background.js # Service worker — click handler, auth check
│ ├── content.js # Injected overlay — detection engine + UI
│ ├── manifest.json # MV3 manifest
│ └── icons/ # Extension icons
├── components/ # React dashboard components
├── context/ # Specs, learnings, agent directives
├── execution/ # Python build/packaging scripts
├── db/ # Firestore data layer
├── services/ # Firebase service wrappers
├── CHANGELOG.md
└── RELEASE_NOTES.md
Private — all rights reserved © Applifai 2026