Auto-deploy: 2026-08-06 12:46:03

This commit is contained in:
Hamza-Ayed
2026-08-06 12:46:03 +03:00
parent fd6498091d
commit f9b9016c22
3 changed files with 226 additions and 34 deletions
+112 -10
View File
@@ -12,7 +12,14 @@ const PROFILE_DATA = {
identity: {
fullName: 'Hamza Ayed',
primaryTitle: 'Senior Mobile Architect',
positioningLine: 'Ride-Hailing & Real-Time Systems · FinTech in Emerging Markets',
// Ride-hailing is the flagship, not the fence. The earlier line named only
// the two mobility platforms, and every downstream prompt read that as the
// whole scope — so full-stack backend, native Android, security and DevOps
// work (30+ shipped apps across e-commerce, delivery, healthcare, news)
// silently stopped counting toward any match score.
positioningLine:
'End-to-End Product Engineer · Flutter & Native Mobile · PHP/Laravel, Node.js & Python Backends · ' +
'Real-Time Geo Systems · Security & DevOps · 38+ production apps shipped',
location: 'Amman, Jordan',
phone: '+962 798 583 052',
email: 'hamzaayedflutter@gmail.com',
@@ -61,12 +68,36 @@ const PROFILE_DATA = {
'Specialized in real-time systems, self-hosted geo-services, high-latency optimization and ' +
'infrastructure cost reduction.',
// ── Roles I actually apply to ─────────────────────────────────────────────
// These are PRODUCT-ENGINEERING roles: something ships to users. My security,
// server and DevOps work is real, but it is infrastructure I built in service
// of products I owned — it is not a career track I am pursuing. See
// `supportingSkills` below, which exists to stop the analyser from reading a
// skill as a target.
targetRoles: [
'Senior / Lead Mobile Engineer',
'Mobile Architect',
'Founding Engineer (Mobility, Logistics, FinTech)',
'Senior Backend Engineer',
'Full Stack Engineer'
'Senior / Lead / Staff Mobile Engineer',
'Flutter Developer (any seniority at or above mid-level)',
'Android Developer',
'Mobile Architect / Mobile Technical Lead',
'Founding Engineer (Mobility, Logistics, FinTech, any early-stage product)',
'Senior Backend Engineer (PHP / Laravel, Node.js, Python)',
'Full Stack Engineer',
'Maps / Geospatial / Location Platform Engineer',
'Software Engineer (general product engineering)'
],
// Genuine, provable skills that are NOT job targets. They belong in the CV as
// supporting evidence of end-to-end ownership — never as the headline, and
// never as a reason to surface or recommend a job built around them.
supportingSkills: [
'Application & API security (HMAC, anti-tampering, RASP, Fake GPS detection) — ' +
'secured the products I built; not applying for Security Engineer / AppSec / ' +
'Penetration Testing / SOC / Cybersecurity roles',
'Server administration and infrastructure (Linux, Nginx, Docker, VPS, self-hosted ' +
'CI/CD) — ran the infrastructure my own products needed; not applying for ' +
'SysAdmin / DevOps Engineer / SRE / Platform Engineer / Cloud Engineer roles',
'Data analytics certifications (IBM, Google) — background knowledge only; not ' +
'applying for Data Analyst / Data Scientist roles'
],
// Headline metrics — ordered by how well they survive a sceptical reader.
@@ -255,6 +286,14 @@ const PROFILE_DATA = {
// that does not.
boundaries: {
strongIn: [
// Sole ownership used to sit under limitedIn, where every prompt read it
// as a deficiency and scored down roles that asked for teamwork. It is
// the opposite: shipping four apps plus a backend alone is the rarest
// thing on this CV.
'Sole end-to-end ownership: took two platforms from empty repo to live ' +
'commercial operations alone — product, mobile, backend, infra, release',
'Breadth across the whole stack: mobile, backend, database, servers, ' +
'security and deployment — no hand-off needed to ship a product',
'Flutter / Dart mobile architecture at production scale',
'Real-time systems: WebSockets, dispatching, live tracking',
'Self-hosted geo infrastructure: tiles, routing, polylines',
@@ -263,11 +302,15 @@ const PROFILE_DATA = {
'PHP / Laravel / MySQL backend supporting mobile products',
'Docker, Linux, Nginx, self-hosted CI/CD'
],
// SCOPE OF THIS LIST: it exists to stop the CV/cover-letter generator from
// CLAIMING things that are not true. It is NOT a list of reasons to skip a
// job. Anything here that a posting merely mentions is a learning curve, not
// a disqualifier — see `applyPolicy` below, which governs apply/skip.
limitedIn: [
'NO formal people management: no direct reports, no hiring, no performance reviews. ' +
'Both platforms were architected and built SOLO. Leadership here is technical — ' +
'architecture ownership, end-to-end delivery, stakeholder alignment — never headcount. ' +
'Do not frame this profile for Engineering Manager roles.',
'No formal people management yet: no direct reports, no hiring, no performance ' +
'reviews. Leadership is technical — architecture ownership, end-to-end delivery, ' +
'stakeholder alignment. Fine for Lead / Staff / Principal roles; only pure ' +
'headcount-management titles (Engineering Manager) are a genuine stretch.',
'AI is limited to INTEGRATING third-party vision/LLM APIs (KYC automation, Gemini API). ' +
'No model training, no MLOps, no deep learning research.',
'Cloud experience is self-hosted/VPS-centric — not deep AWS/GCP/Azure managed-service experience.',
@@ -282,6 +325,60 @@ const PROFILE_DATA = {
]
},
// ── Apply / skip policy ───────────────────────────────────────────────────
// Separate from `boundaries` on purpose. `boundaries` protects CV honesty;
// this governs the apply decision. Before it existed, the analysis tab read
// the boundaries list as a rejection checklist and returned "لا تتقدّم" on
// almost everything — including plain Flutter roles.
applyPolicy: {
// A verdict of "do not apply" is only ever justified by one of these.
hardBlockers: [
'Requires a security clearance, or citizenship/residency I cannot obtain',
'Explicitly no visa sponsorship AND requires being already resident/authorised in that country',
'The core discipline is one I have never practised: pure Data Science, ML/model ' +
'training, pure QA/manual testing, embedded/firmware, game engines, ' +
'Salesforce/SAP/blockchain',
// Distinct from the line above: these ARE things I can do, but they are not
// the career I am building. A posting whose PRIMARY deliverable is
// infrastructure or security — rather than a product that ships to users —
// is a skip even at a high skills match.
'The role\'s primary deliverable is infrastructure or security rather than a ' +
'product: Security Engineer, AppSec, Penetration Tester, SOC/Cybersecurity ' +
'Analyst, SysAdmin, DevOps Engineer, SRE, Platform Engineer, Cloud/Network ' +
'Engineer, Database Administrator. These skills support my product work; ' +
'they are not the job I am looking for.',
'Native-only iOS role demanding Swift/SwiftUI as the primary daily language',
'Junior/intern/graduate level, or pay clearly below market floor',
'Unpaid, equity-only, or an obvious scam posting'
],
// These are the things the analyser kept mistaking for blockers.
notBlockers: [
'ON-SITE or hybrid anywhere in GCC/MENA/Europe — relocation is welcome, not an obstacle',
'A location not yet decided, or an office in a city I do not live in',
'Asking for team/collaboration experience — solo delivery plus stakeholder work covers it',
'Asking for 1-3 more years than I have, or a higher title than my last one',
'Naming 2-4 tools I have not used, when the core stack is one I know',
'AWS / GCP / Azure named in a posting whose core is application engineering — ' +
'self-hosted Docker/Linux/Nginx/CI-CD transfers directly',
'A domain I have not worked in (health, e-commerce, edtech, logistics, banking)',
'React Native / Kotlin / Java-first mobile roles — Flutter and native Android transfer',
'A degree preference in CS (BSc Mathematics is accepted in practice)',
'Backend-only or full-stack roles — PHP/Laravel, Node.js and Python are all real experience',
// The mirror image of the infrastructure blocker: security and DevOps duties
// listed INSIDE a product role are a plus, not a reason to skip.
'A mobile / backend / full-stack role that also lists security, CI/CD, Docker or ' +
'server duties among its responsibilities — that combination is my strongest fit'
],
// The intended distribution of verdicts across a normal LinkedIn feed.
calibration:
'On a typical mobile/backend job feed, roughly 60% of postings should be APPLY, ' +
'30% APPLY WITH EDITS, and at most 10% SKIP. If more than 1 in 5 comes back SKIP, ' +
'the bar is being set wrong — re-read the hardBlockers list, which is exhaustive. ' +
'Missing skills are a cover-letter problem, not a reason to stay home. ' +
'A 60% match with a real strength in the core requirement is worth applying to: ' +
'the employer decides the shortlist, not the candidate.'
},
// Voice rules — applied to cover letters, LinkedIn comments and posts.
voice: {
tone: 'Operator-level, calm, direct, evidence-first. Writes like someone who has shipped, not someone selling.',
@@ -313,6 +410,11 @@ function renderProfileText(p = PROFILE_DATA) {
lines.push('');
lines.push('TARGET ROLES: ' + p.targetRoles.join(' | '));
lines.push('');
if (p.supportingSkills && p.supportingSkills.length) {
lines.push('SUPPORTING SKILLS (real, but NOT roles I am seeking):');
p.supportingSkills.forEach(s => lines.push(`- ${s}`));
lines.push('');
}
lines.push('HEADLINE METRICS:');
p.headlineMetrics.forEach(m => lines.push(`- ${m.lead} ${m.rest}`));
lines.push('');