Salesforce CRM Data Extractor -- 2

Job ID: 40152169

Budget: ₹600 – ₹1,500 INR

Technical Assessment: Salesforce CRM Data
Extractor
Timeline : Before 17 Jan 11:59 IST | Submit: GitHub repo + 3-5 min demo video
Overview
Build a Chrome Extension that extracts data from Salesforce CRM objects (Leads, Contacts,
Accounts, Opportunities, Tasks), stores them locally, and displays them in a popup dashboard.
This tests your ability to work with Chrome Extension APIs, DOM manipulation, React UI, and
local storage architecture.
Technology Requirements
• Chrome Manifest V3 (service worker + content scripts)
• React.js with TailwindCSS for popup UI
• Shadow DOM for any injected page UI (extraction indicators)
• chrome.storage.local for all persistence
• chrome.tabs, chrome.runtime, chrome.storage APIs Module 1: Data Extraction Engine
Content script must extract data from Salesforce's standard objects:
Leads: name, company, email, phone, lead source, lead status, lead owner
Contacts: name, email, phone, account name, title, contact owner, mailing address
Accounts: account name, website, phone, industry, type, account owner, annual revenue
Opportunities: opportunity name, amount, stage, probability (%), close date, forecast category,
opportunity owner, associated account
Tasks: subject, due date, status, priority, related to (opportunity/account/contact), assigned to
Key extraction challenges to address:
• Salesforce uses Lightning Experience — handle dynamic DOM rendering
• Extract opportunity stages (Prospecting, Qualification, Proposal, Negotiation, Closed
Won/Lost)
• Handle List Views vs Record Detail pages vs Kanban View • Detect which object the user is currently viewing
• Handle related lists (e.g., Contacts related to an Account)
Module 2: Storage Layer
Define a clear storage schema. Example structure:
{
"salesforce_data": {
"leads": [{ "id": "...", "name": "...", "company": "...", "email": "...",
"status": "...", "owner": "..." }],
"contacts": [{ "id": "...", "name": "...", "email": "...", "phone": "...",
"account": "...", "owner": "..." }],
"accounts": [{ "id": "...", "name": "...", "industry": "...", "revenue": ...,
"owner": "..." }],
"opportunities": [{ "id": "...", "name": "...", "amount": ..., "stage": "...",
"probability": ..., "closeDate": "...", "account": "..." }],
"tasks": [{ "id": "...", "subject": "...", "due": "...", "status": "...",
"relatedTo": "...", "assignee": "..." }],
"lastSync": 1234567890
}
}Requirements: Handle deduplication, updates, deletions. Manage race conditions if multiple
tabs extract simultaneously.
Module 3: Popup Dashboard
Clicking the extension icon opens a React dashboard:
• Tabs for Leads, Contacts, Accounts, Opportunities (grouped by stage), Tasks
• Search/filter across all extracted data
• Delete individual records
• "Extract Current Object" button that triggers content script on active tab
• Show last sync timestamp per object type
• For Opportunities: display stage and probabilityModule 4: Visual Feedback (Shadow DOM)
When extraction runs, inject a small status indicator into the page using Shadow DOM for style
isolation. Show extraction progress/success/failure state. Indicate which object was detected.
Bonus Features
1. Real-time sync across tabs using chrome.storage.onChanged
2. Export data as CSV or JSON
3. Handle Salesforce's pagination automatically
4. Detect object type automatically and extract appropriate fields
5. Support extraction from Kanban View (Pipeline Inspection)
6. Extract related records (e.g., Contacts under an Account)Submission Requirements
1. Public GitHub repo with clear folder structure
2. README with: install steps, DOM selection strategy explanation, storage schema
docs
3. 3-5 min demo video showing: extraction from Opportunities (multiple stages), Leads,
Contacts, Accounts, page refresh persistence, popup dashboard, delete functionalityEvaluation Criteria
• Correct extraction from multiple objects (Leads, Contacts, Accounts, Opportunities,
Tasks)
• Proper handling of opportunity stages and probability
• Clean code architecture and separation of concerns
• Proper Manifest V3 patterns (service worker, message passing)
• Storage schema design and data integrity
• Error handling and edge cases
Note: Focus on DOM scraping—API/SOQL integration not required.
Related categories: React.js Data Extraction Tailwind CSS