Auto-deploy: 2026-08-06 12:46:03
This commit is contained in:
+112
-10
@@ -12,7 +12,14 @@ const PROFILE_DATA = {
|
|||||||
identity: {
|
identity: {
|
||||||
fullName: 'Hamza Ayed',
|
fullName: 'Hamza Ayed',
|
||||||
primaryTitle: 'Senior Mobile Architect',
|
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',
|
location: 'Amman, Jordan',
|
||||||
phone: '+962 798 583 052',
|
phone: '+962 798 583 052',
|
||||||
email: 'hamzaayedflutter@gmail.com',
|
email: 'hamzaayedflutter@gmail.com',
|
||||||
@@ -61,12 +68,36 @@ const PROFILE_DATA = {
|
|||||||
'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.',
|
||||||
|
|
||||||
|
// ── 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: [
|
targetRoles: [
|
||||||
'Senior / Lead Mobile Engineer',
|
'Senior / Lead / Staff Mobile Engineer',
|
||||||
'Mobile Architect',
|
'Flutter Developer (any seniority at or above mid-level)',
|
||||||
'Founding Engineer (Mobility, Logistics, FinTech)',
|
'Android Developer',
|
||||||
'Senior Backend Engineer',
|
'Mobile Architect / Mobile Technical Lead',
|
||||||
'Full Stack Engineer'
|
'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.
|
// Headline metrics — ordered by how well they survive a sceptical reader.
|
||||||
@@ -255,6 +286,14 @@ const PROFILE_DATA = {
|
|||||||
// that does not.
|
// that does not.
|
||||||
boundaries: {
|
boundaries: {
|
||||||
strongIn: [
|
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',
|
'Flutter / Dart mobile architecture at production scale',
|
||||||
'Real-time systems: WebSockets, dispatching, live tracking',
|
'Real-time systems: WebSockets, dispatching, live tracking',
|
||||||
'Self-hosted geo infrastructure: tiles, routing, polylines',
|
'Self-hosted geo infrastructure: tiles, routing, polylines',
|
||||||
@@ -263,11 +302,15 @@ const PROFILE_DATA = {
|
|||||||
'PHP / Laravel / MySQL backend supporting mobile products',
|
'PHP / Laravel / MySQL backend supporting mobile products',
|
||||||
'Docker, Linux, Nginx, self-hosted CI/CD'
|
'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: [
|
limitedIn: [
|
||||||
'NO formal people management: no direct reports, no hiring, no performance reviews. ' +
|
'No formal people management yet: no direct reports, no hiring, no performance ' +
|
||||||
'Both platforms were architected and built SOLO. Leadership here is technical — ' +
|
'reviews. Leadership is technical — architecture ownership, end-to-end delivery, ' +
|
||||||
'architecture ownership, end-to-end delivery, stakeholder alignment — never headcount. ' +
|
'stakeholder alignment. Fine for Lead / Staff / Principal roles; only pure ' +
|
||||||
'Do not frame this profile for Engineering Manager roles.',
|
'headcount-management titles (Engineering Manager) are a genuine stretch.',
|
||||||
'AI is limited to INTEGRATING third-party vision/LLM APIs (KYC automation, Gemini API). ' +
|
'AI is limited to INTEGRATING third-party vision/LLM APIs (KYC automation, Gemini API). ' +
|
||||||
'No model training, no MLOps, no deep learning research.',
|
'No model training, no MLOps, no deep learning research.',
|
||||||
'Cloud experience is self-hosted/VPS-centric — not deep AWS/GCP/Azure managed-service experience.',
|
'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 rules — applied to cover letters, LinkedIn comments and posts.
|
||||||
voice: {
|
voice: {
|
||||||
tone: 'Operator-level, calm, direct, evidence-first. Writes like someone who has shipped, not someone selling.',
|
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('');
|
||||||
lines.push('TARGET ROLES: ' + p.targetRoles.join(' | '));
|
lines.push('TARGET ROLES: ' + p.targetRoles.join(' | '));
|
||||||
lines.push('');
|
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:');
|
lines.push('HEADLINE METRICS:');
|
||||||
p.headlineMetrics.forEach(m => lines.push(`- ${m.lead} ${m.rest}`));
|
p.headlineMetrics.forEach(m => lines.push(`- ${m.lead} ${m.rest}`));
|
||||||
lines.push('');
|
lines.push('');
|
||||||
|
|||||||
+69
-15
@@ -67,7 +67,8 @@ STRICT INTEGRITY RULES — VIOLATING ANY OF THESE INVALIDATES THE OUTPUT:
|
|||||||
${b.neverClaim.join(', ')}.
|
${b.neverClaim.join(', ')}.
|
||||||
4. MY GENUINE STRENGTHS (lead with these):
|
4. MY GENUINE STRENGTHS (lead with these):
|
||||||
${b.strongIn.map(s => ' • ' + s).join('\n')}
|
${b.strongIn.map(s => ' • ' + s).join('\n')}
|
||||||
5. MY HONEST LIMITS (acknowledge, never paper over):
|
5. MY HONEST LIMITS — these constrain what you may WRITE, not what I may apply
|
||||||
|
to. Never claim them; never treat them as reasons to reject a job:
|
||||||
${b.limitedIn.map(s => ' • ' + s).join('\n')}
|
${b.limitedIn.map(s => ' • ' + s).join('\n')}
|
||||||
6. Every number I use must be one of the real metrics in my profile. Do not
|
6. Every number I use must be one of the real metrics in my profile. Do not
|
||||||
round up, do not extrapolate, do not invent new ones.
|
round up, do not extrapolate, do not invent new ones.
|
||||||
@@ -76,6 +77,37 @@ ${b.limitedIn.map(s => ' • ' + s).join('\n')}
|
|||||||
${P.voice.banned.join(' / ')}.`;
|
${P.voice.banned.join(' / ')}.`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ─── Apply/skip policy, generated from the profile ──────────────────────────
|
||||||
|
// Injected ONLY into the decision-making tabs (analysis, ATS verdict, benefits,
|
||||||
|
// bulk pre-screen). Without it the model treats the CV-integrity boundaries as a
|
||||||
|
// rejection checklist and skips almost everything.
|
||||||
|
function buildApplyPolicy(P) {
|
||||||
|
const a = P.applyPolicy;
|
||||||
|
if (!a) return '';
|
||||||
|
const supporting = (P.supportingSkills && P.supportingSkills.length)
|
||||||
|
? `
|
||||||
|
SKILL vs. TARGET — do not confuse the two. Having a skill is not wanting the job:
|
||||||
|
${P.supportingSkills.map(s => ' ~ ' + s).join('\n')}
|
||||||
|
Roles I am seeking: ${P.targetRoles.join(' | ')}.
|
||||||
|
`
|
||||||
|
: '';
|
||||||
|
return `${supporting}
|
||||||
|
APPLY / SKIP POLICY — THIS GOVERNS THE VERDICT:
|
||||||
|
|
||||||
|
Default position: APPLY. The employer runs the filter; my job is to be in the pile.
|
||||||
|
Only ONE of the following justifies a "do not apply". The list is exhaustive:
|
||||||
|
${a.hardBlockers.map(s => ' ✗ ' + s).join('\n')}
|
||||||
|
|
||||||
|
The following are explicitly NOT reasons to skip. If one of these is the worst
|
||||||
|
thing about the posting, the verdict is APPLY or APPLY WITH EDITS — never skip:
|
||||||
|
${a.notBlockers.map(s => ' ✓ ' + s).join('\n')}
|
||||||
|
|
||||||
|
CALIBRATION: ${a.calibration}
|
||||||
|
|
||||||
|
A gap is something to ADDRESS in the CV and cover letter, not a veto. State the
|
||||||
|
gap, then state how to cover it — that is the useful output.`;
|
||||||
|
}
|
||||||
|
|
||||||
function buildPromptV2(tab, job, userProfile, language) {
|
function buildPromptV2(tab, job, userProfile, language) {
|
||||||
const P = (typeof PROFILE_DATA !== 'undefined') ? PROFILE_DATA : null;
|
const P = (typeof PROFILE_DATA !== 'undefined') ? PROFILE_DATA : null;
|
||||||
if (!P) {
|
if (!P) {
|
||||||
@@ -112,13 +144,14 @@ function buildPromptV2(tab, job, userProfile, language) {
|
|||||||
const prof = 'MY PROFESSIONAL PROFILE:\n' + profileText;
|
const prof = 'MY PROFESSIONAL PROFILE:\n' + profileText;
|
||||||
const co = job.company || 'this company';
|
const co = job.company || 'this company';
|
||||||
const STRICT_RULES = P ? buildIntegrityRules(P) : '';
|
const STRICT_RULES = P ? buildIntegrityRules(P) : '';
|
||||||
|
const APPLY_POLICY = P ? buildApplyPolicy(P) : '';
|
||||||
|
|
||||||
const Pr = {};
|
const Pr = {};
|
||||||
|
|
||||||
// ── TAB: Analysis (Arabic) ────────────────────────────────────────────────
|
// ── TAB: Analysis (Arabic) ────────────────────────────────────────────────
|
||||||
Pr.analysis = `You are an elite career strategist and a hiring manager who has
|
Pr.analysis = `You are my career strategist — on MY side of the table, not the
|
||||||
screened thousands of engineering CVs. Evaluate this job against my profile with
|
employer's. Your job is to get me shortlisted, not to gatekeep. Be honest, be
|
||||||
brutal honesty and EXTREME brevity.
|
brief, and be actionable.
|
||||||
|
|
||||||
${analysisLang}
|
${analysisLang}
|
||||||
|
|
||||||
@@ -130,6 +163,8 @@ Equally: do NOT inflate it into architecture-astronaut or CTO language.
|
|||||||
|
|
||||||
DO NOT recount my history or summarise my profile back to me. Be actionable.
|
DO NOT recount my history or summarise my profile back to me. Be actionable.
|
||||||
|
|
||||||
|
${APPLY_POLICY}
|
||||||
|
|
||||||
${STRICT_RULES}
|
${STRICT_RULES}
|
||||||
|
|
||||||
${prof}
|
${prof}
|
||||||
@@ -139,8 +174,10 @@ ${ctx}
|
|||||||
|
|
||||||
Respond in this EXACT structure:
|
Respond in this EXACT structure:
|
||||||
|
|
||||||
## 🎯 القرار: [تقدّم / لا تتقدّم]
|
## 🎯 القرار: [تقدّم / تقدّم بعد تعديل السيفي / لا تتقدّم]
|
||||||
[سطر واحد قصير يشرح السبب]
|
[سطر واحد قصير يشرح السبب. "لا تتقدّم" ممنوعة إلا إذا انطبق مانع صريح من قائمة
|
||||||
|
hardBlockers أعلاه — واذكر المانع بالاسم. إذا ما في مانع منها، القرار "تقدّم"
|
||||||
|
أو "تقدّم بعد تعديل السيفي" مهما كانت الفجوات.]
|
||||||
|
|
||||||
## 📊 نسبة المطابقة التقديرية: X%
|
## 📊 نسبة المطابقة التقديرية: X%
|
||||||
[سطر واحد: على أي أساس حسبتها]
|
[سطر واحد: على أي أساس حسبتها]
|
||||||
@@ -150,9 +187,9 @@ Respond in this EXACT structure:
|
|||||||
- [نقطة 2]
|
- [نقطة 2]
|
||||||
- [نقطة 3]
|
- [نقطة 3]
|
||||||
|
|
||||||
## ❌ الفجوات الحقيقية
|
## ❌ الفجوات وكيف نغطيها
|
||||||
- [فجوة 1 — ومدى خطورتها: قاتلة / قابلة للمعالجة / شكلية]
|
- [فجوة 1 — التصنيف: مانع فعلي / قابلة للمعالجة / شكلية — ثم كيف أغطيها في السيفي أو المقابلة]
|
||||||
- [فجوة 2]
|
- [فجوة 2 — نفس الشيء]
|
||||||
|
|
||||||
## 📝 تعديلات السيفي المطلوبة
|
## 📝 تعديلات السيفي المطلوبة
|
||||||
- [ما الذي يجب إبرازه]
|
- [ما الذي يجب إبرازه]
|
||||||
@@ -254,6 +291,8 @@ Respond ENTIRELY in English.
|
|||||||
|
|
||||||
${ATS_METHOD}
|
${ATS_METHOD}
|
||||||
|
|
||||||
|
${APPLY_POLICY}
|
||||||
|
|
||||||
${STRICT_RULES}
|
${STRICT_RULES}
|
||||||
|
|
||||||
${prof}
|
${prof}
|
||||||
@@ -282,11 +321,14 @@ Write as plain lines, not a markdown table — tables break ATS parsing when cop
|
|||||||
TRUE per my profile and carry a keyword copied exactly from the posting.]
|
TRUE per my profile and carry a keyword copied exactly from the posting.]
|
||||||
|
|
||||||
## DISQUALIFIERS
|
## DISQUALIFIERS
|
||||||
[Anything that would auto-reject me: location, work authorisation, hard years
|
[ONLY items from the hardBlockers list above — a legally or physically impossible
|
||||||
requirement, mandatory certification. If none, say "None detected".]
|
requirement. On-site work, relocation, a years-of-experience preference and
|
||||||
|
unfamiliar tools are NOT disqualifiers. If none, say "None detected".]
|
||||||
|
|
||||||
## VERDICT
|
## VERDICT
|
||||||
[APPLY AS-IS / APPLY AFTER EDITS / SKIP] — one sentence of reasoning.`;
|
[APPLY AS-IS / APPLY AFTER EDITS / SKIP] — one sentence of reasoning.
|
||||||
|
SKIP requires naming a hard blocker from the list. Otherwise choose one of the
|
||||||
|
first two, even at a low score.`;
|
||||||
|
|
||||||
// ── TAB: Application form Q&A ─────────────────────────────────────────────
|
// ── TAB: Application form Q&A ─────────────────────────────────────────────
|
||||||
const dynamicQuestions = (job.questions && job.questions.length > 0)
|
const dynamicQuestions = (job.questions && job.questions.length > 0)
|
||||||
@@ -353,6 +395,8 @@ RESPOND WITH ONLY THIS FORMAT (raw JSON, answering ONLY the questions listed abo
|
|||||||
Pr.benefits = `You are a career analyst specialising in tech compensation across
|
Pr.benefits = `You are a career analyst specialising in tech compensation across
|
||||||
MENA and the GCC. Respond ENTIRELY in English.
|
MENA and the GCC. Respond ENTIRELY in English.
|
||||||
|
|
||||||
|
${APPLY_POLICY}
|
||||||
|
|
||||||
${prof}
|
${prof}
|
||||||
|
|
||||||
JOB:
|
JOB:
|
||||||
@@ -398,10 +442,20 @@ MY PROFILE IN ONE LINE: ${P ? P.identity.primaryTitle : 'Senior Mobile Architect
|
|||||||
MY CORE STACK: ${coreStack}
|
MY CORE STACK: ${coreStack}
|
||||||
ROLES I WANT: ${targetRoles}
|
ROLES I WANT: ${targetRoles}
|
||||||
|
|
||||||
|
${APPLY_POLICY}
|
||||||
|
|
||||||
SCORING RULES:
|
SCORING RULES:
|
||||||
- YES → Strongly matches the ROLES I WANT (Mobile, Backend, or Full Stack) and my CORE STACK at a senior level.
|
- YES → Any Mobile / Flutter / Android / Backend / Full Stack / general software
|
||||||
- MAYBE → Adjacent roles (general senior software engineering, roles where the stack is partially matching or learnable).
|
engineering role at mid-level or above. Title need not match exactly.
|
||||||
- NO → Completely unrelated roles (e.g., pure data science, ML, QA, pure product management, junior/mid-level roles, or stacks I have zero overlap with).
|
- MAYBE → Adjacent engineering roles where the stack only partially overlaps but is
|
||||||
|
learnable, or where seniority is a stretch in either direction.
|
||||||
|
- NO → ONLY a hard blocker from the policy above: a different discipline entirely
|
||||||
|
(data science, ML, manual QA, embedded, product management), an
|
||||||
|
infrastructure- or security-titled role (DevOps, SRE, SysAdmin, Platform,
|
||||||
|
Cloud, DBA, Security/AppSec/SOC) even though I hold those skills,
|
||||||
|
junior/intern level, or an obvious scam. Nothing else earns a NO.
|
||||||
|
Judging from the title alone: when in doubt between NO and MAYBE, answer MAYBE —
|
||||||
|
the full description has not been read yet, and a wrong NO costs me the job.
|
||||||
|
|
||||||
I will give you a JSON array of jobs (Title, Company).
|
I will give you a JSON array of jobs (Title, Company).
|
||||||
|
|
||||||
|
|||||||
+45
-9
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user