A Chrome browser extension that automatically syncs LinkedIn job postings to your JD2CV Supabase database.
- 🔄 Automatic Sync: Automatically detects when you click "Save" on LinkedIn job posts
- 📊 Supabase Integration: Direct integration with your JD2CV Supabase database
- 🎯 Smart Duplicate Detection: Prevents duplicate job entries
- ⚙️ Configurable: Easy setup with your own API endpoint and user credentials
- 🔔 Visual Feedback: Chrome notifications for sync status
- 🧪 Manual Testing: Test data extraction on any LinkedIn job page
- Download or clone this extension folder
- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode" in the top right
- Click "Load unpacked" and select the extension folder
- The extension icon should appear in your Chrome toolbar
- Click the extension icon in your Chrome toolbar
- In the popup, configure:
- API Base URL: Your Next.js application URL (e.g.,
http://localhost:3000orhttps://your-app.vercel.app) - User ID: Your Supabase user ID (UUID format)
- API Base URL: Your Next.js application URL (e.g.,
- Click "Save Settings"
- Navigate to any LinkedIn job posting page
- Click the "Save" button on LinkedIn (⭐ or bookmark icon)
- The extension automatically extracts job data and syncs to your Supabase database
- You'll receive a Chrome notification confirming the sync status
- Navigate to any LinkedIn job posting page
- Click the extension icon to open the popup
- Click "Extract Job Data" to test extraction
- Click "Manual Sync Job" to sync the extracted data
The extension syncs data to the jd_records table with these fields:
user_id: Your Supabase user IDtitle: Job titlecompany: Company namefull_job_description: Complete job description (formatted)application_stage: Set to "Saved" by defaultmatch_score: Default score of 100 (10/10 scale stored as 10-100)- Additional fields:
jd_key_sentences,keywords_from_sentences,role_group,firm_type, etc.
The extension communicates with these API routes:
POST /api/jd2cv/supabase- Create new job recordGET /api/jd2cv/supabase- Search for existing job records
- Content Script: Extracts job data from LinkedIn pages
- Background Script: Handles API communication with Supabase
- Popup: User interface for configuration and manual testing
linkedin-data-extractor.js: Monitors LinkedIn page interactionslinkedin-supabase-background.js: API calls and notification managementlinkedin-sync-popup.html/js: Configuration interface
-
"Extension context invalidated" error
- Reload the extension in
chrome://extensions/ - Refresh the LinkedIn page
- Reload the extension in
-
"User ID is required" error
- Ensure your User ID is configured in the popup settings
- Verify the User ID is in valid UUID format
-
"API request failed" error
- Check that your API Base URL is correct and accessible
- Verify your Next.js application is running
- Check browser console for detailed error messages
-
No data extracted
- Ensure you're on a LinkedIn job posting page (
linkedin.com/jobs/view/...) - Some job posts may have different HTML structure - check browser console
- Ensure you're on a LinkedIn job posting page (
Open Chrome DevTools and check:
- Console tab: Extension logging and errors
- Network tab: API requests to your backend
- Application tab > Storage: Extension settings
- v2.0.0: Complete rewrite based on JD2CV 1.0 architecture with Supabase integration
- v1.x.x: Previous Notion-based implementation
For issues and questions:
- Check browser console for detailed error messages
- Verify your API endpoint is running and accessible
- Test the API endpoints directly using tools like Postman
- Check Supabase database permissions and table structure