Auto-deploy: 2026-08-06 00:07:54

This commit is contained in:
Hamza-Ayed
2026-08-06 00:07:54 +03:00
parent 1fe694a23b
commit 71359deb75
3 changed files with 50 additions and 15 deletions
+26 -3
View File
@@ -970,7 +970,7 @@
}
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) {
alert('No job items found on this page. Scroll down to load them.');
return;
@@ -978,13 +978,36 @@
const jobsToScan = [];
listItems.forEach((item, index) => {
let title = '';
let company = '';
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');
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({
index: index,
title: titleEl.textContent.trim().replace(/\n/g, ''),
company: companyEl.textContent.trim().replace(/\n/g, ''),
title: title.replace(/\n/g, ''),
company: company.replace(/\n/g, ''),
element: item
});
}
+10 -6
View File
@@ -34,13 +34,14 @@ const PROFILE_DATA = {
'Lead Flutter Engineer',
'Mobile Technical Lead',
'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.
forbiddenTitles: [
'CTO',
'Solutions Architect',
'Senior AI Developer',
'Machine Learning Engineer',
'Data Scientist',
@@ -53,17 +54,19 @@ const PROFILE_DATA = {
// contradicts the standard (non-startup) title framing when this text is used
// as the fallback 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. ' +
'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 ' +
'infrastructure cost reduction.',
targetRoles: [
'Senior / Lead Mobile Engineer',
'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.
@@ -116,7 +119,8 @@ const PROFILE_DATA = {
'Self-Hosted Map Tiles', 'Geospatial Queries', 'High-Latency Network Optimization'
],
'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'
],
'Security & FinTech': [
+14 -6
View File
File diff suppressed because one or more lines are too long