Auto-deploy: 2026-08-06 00:07:54
This commit is contained in:
+26
-3
@@ -970,7 +970,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function scanJobList() {
|
async function scanJobList() {
|
||||||
const listItems = document.querySelectorAll('.jobs-search-results__list-item, .job-card-container');
|
const listItems = document.querySelectorAll('.jobs-search-results__list-item, .job-card-container, [componentkey^="job-card-component-ref"], [data-job-id]');
|
||||||
if (!listItems.length) {
|
if (!listItems.length) {
|
||||||
alert('No job items found on this page. Scroll down to load them.');
|
alert('No job items found on this page. Scroll down to load them.');
|
||||||
return;
|
return;
|
||||||
@@ -978,13 +978,36 @@
|
|||||||
|
|
||||||
const jobsToScan = [];
|
const jobsToScan = [];
|
||||||
listItems.forEach((item, index) => {
|
listItems.forEach((item, index) => {
|
||||||
|
let title = '';
|
||||||
|
let company = '';
|
||||||
|
|
||||||
const titleEl = item.querySelector('.job-card-list__title, .artdeco-entity-lockup__title');
|
const titleEl = item.querySelector('.job-card-list__title, .artdeco-entity-lockup__title');
|
||||||
const companyEl = item.querySelector('.job-card-container__primary-description, .artdeco-entity-lockup__subtitle');
|
const companyEl = item.querySelector('.job-card-container__primary-description, .artdeco-entity-lockup__subtitle');
|
||||||
|
|
||||||
if (titleEl && companyEl) {
|
if (titleEl && companyEl) {
|
||||||
|
title = titleEl.textContent;
|
||||||
|
company = companyEl.textContent;
|
||||||
|
} else {
|
||||||
|
// Fallback for obfuscated classes: use innerText
|
||||||
|
const textContent = item.innerText || '';
|
||||||
|
const lines = textContent.split('\n')
|
||||||
|
.map(t => t.trim())
|
||||||
|
.filter(t => t.length > 0 && !t.includes('promoted jobs are ranked') && !t.includes('Actively reviewing'));
|
||||||
|
|
||||||
|
let startIndex = 0;
|
||||||
|
if (lines[0] === 'Promoted') startIndex = 1;
|
||||||
|
|
||||||
|
if (lines.length >= startIndex + 2) {
|
||||||
|
title = lines[startIndex].replace(/\(Verified job\)/i, '').trim();
|
||||||
|
company = lines[startIndex + 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (title && company) {
|
||||||
jobsToScan.push({
|
jobsToScan.push({
|
||||||
index: index,
|
index: index,
|
||||||
title: titleEl.textContent.trim().replace(/\n/g, ''),
|
title: title.replace(/\n/g, ''),
|
||||||
company: companyEl.textContent.trim().replace(/\n/g, ''),
|
company: company.replace(/\n/g, ''),
|
||||||
element: item
|
element: item
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-6
@@ -34,13 +34,14 @@ const PROFILE_DATA = {
|
|||||||
'Lead Flutter Engineer',
|
'Lead Flutter Engineer',
|
||||||
'Mobile Technical Lead',
|
'Mobile Technical Lead',
|
||||||
'Founding Engineer (Mobile)',
|
'Founding Engineer (Mobile)',
|
||||||
'Senior Software Engineer (Mobile)'
|
'Senior Software Engineer (Mobile)',
|
||||||
|
'Senior Backend Engineer',
|
||||||
|
'Senior Full Stack Engineer'
|
||||||
],
|
],
|
||||||
|
|
||||||
// Titles that would overstate or misrepresent the record.
|
// Titles that would overstate or misrepresent the record.
|
||||||
forbiddenTitles: [
|
forbiddenTitles: [
|
||||||
'CTO',
|
'CTO',
|
||||||
'Solutions Architect',
|
|
||||||
'Senior AI Developer',
|
'Senior AI Developer',
|
||||||
'Machine Learning Engineer',
|
'Machine Learning Engineer',
|
||||||
'Data Scientist',
|
'Data Scientist',
|
||||||
@@ -53,17 +54,19 @@ const PROFILE_DATA = {
|
|||||||
// contradicts the standard (non-startup) title framing when this text is used
|
// contradicts the standard (non-startup) title framing when this text is used
|
||||||
// as the fallback summary.
|
// as the fallback summary.
|
||||||
summary:
|
summary:
|
||||||
'Senior Mobile Architect who built and launched two production-grade ride-hailing platforms ' +
|
'Senior Mobile Architect & Full Stack Engineer who built and launched two production-grade ride-hailing platforms ' +
|
||||||
'(Tripz — Egypt, Intaleq — Syria) from zero to live operations. ' +
|
'(Tripz — Egypt, Intaleq — Syria) from zero to live operations. ' +
|
||||||
'Designed and delivered full mobility ecosystems including Rider, Driver, Admin and Customer Support ' +
|
'Designed and delivered full mobility ecosystems including Rider, Driver, Admin and Customer Support ' +
|
||||||
'applications, along with backend APIs, security layers, DevOps pipelines and fintech integrations. ' +
|
'applications, along with scalable backend APIs, security layers, DevOps pipelines and fintech integrations. ' +
|
||||||
'Specialized in real-time systems, self-hosted geo-services, high-latency optimization and ' +
|
'Specialized in real-time systems, self-hosted geo-services, high-latency optimization and ' +
|
||||||
'infrastructure cost reduction.',
|
'infrastructure cost reduction.',
|
||||||
|
|
||||||
targetRoles: [
|
targetRoles: [
|
||||||
'Senior / Lead Mobile Engineer',
|
'Senior / Lead Mobile Engineer',
|
||||||
'Mobile Architect',
|
'Mobile Architect',
|
||||||
'Founding Engineer (Mobility, Logistics, FinTech)'
|
'Founding Engineer (Mobility, Logistics, FinTech)',
|
||||||
|
'Senior Backend Engineer',
|
||||||
|
'Full Stack Engineer'
|
||||||
],
|
],
|
||||||
|
|
||||||
// Headline metrics — ordered by how well they survive a sceptical reader.
|
// Headline metrics — ordered by how well they survive a sceptical reader.
|
||||||
@@ -116,7 +119,8 @@ const PROFILE_DATA = {
|
|||||||
'Self-Hosted Map Tiles', 'Geospatial Queries', 'High-Latency Network Optimization'
|
'Self-Hosted Map Tiles', 'Geospatial Queries', 'High-Latency Network Optimization'
|
||||||
],
|
],
|
||||||
'Backend & DevOps': [
|
'Backend & DevOps': [
|
||||||
'PHP', 'Laravel', 'PostgreSQL', 'MySQL', 'Redis', 'Docker', 'Linux', 'Nginx',
|
'PHP', 'Laravel', 'Node.js', 'NestJS', 'Python', 'Django', 'Flask',
|
||||||
|
'PostgreSQL', 'MySQL', 'Redis', 'Docker', 'Linux', 'Nginx',
|
||||||
'Git', 'CI/CD (Gitea)', 'Infrastructure Cost Optimization', 'Self-Hosted Infrastructure'
|
'Git', 'CI/CD (Gitea)', 'Infrastructure Cost Optimization', 'Self-Hosted Infrastructure'
|
||||||
],
|
],
|
||||||
'Security & FinTech': [
|
'Security & FinTech': [
|
||||||
|
|||||||
+14
-6
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user