// prompts.js — All AI prompts v3 // LANGUAGE RULES: Analysis = match job language. Everything else = ENGLISH ALWAYS. function buildPromptV2(tab, job, userProfile, language) { // Force Arabic for the analysis tab to ensure full comprehension const analysisLang = 'Respond ENTIRELY in Arabic. All headings, explanations, and bullets MUST be in Arabic. and RTL'; const ctx = [ 'Job Title: ' + (job.jobTitle || 'Not specified'), 'Company: ' + (job.company || 'Not specified'), 'Location: ' + (job.location || 'Not specified'), 'Type: ' + (job.jobType || 'Not specified'), 'Description:\n' + (job.description || 'No description available'), job.skills.length ? 'Required Skills: ' + job.skills.join(', ') : '' ].filter(Boolean).join('\n'); const prof = 'MY PROFESSIONAL PROFILE:\n' + userProfile; const co = job.company || 'this company'; const loc = job.location || 'Middle East'; const STRICT_RULES = ` STRICT INTEGRITY RULES — VIOLATING THESE IS FORBIDDEN: 1. NEVER invent skills, tools, frameworks, or certifications not explicitly listed in MY PROFESSIONAL PROFILE. 2. If the job requires a skill I do not have (e.g., TensorFlow, PyTorch, Scikit-learn, Spark, Hadoop, Kubernetes, deep NLP, generative AI model training), ACKNOWLEDGE THE GAP honestly. Do NOT fabricate experience. 3. My AI experience is LIMITED to: AI vision models for document processing (Musadaq), AI smart responder (Nabih), Gemini API integration (LinkedIn extension), and Python backend automation. I do NOT have MLOps pipeline experience, model training, or deep learning research. 4. My TRUE core stack is: PHP (Workerman), Node.js, NestJS, Python (FastAPI/Flask), PostgreSQL/PostGIS, Docker, Flutter — NOT data science or ML engineering. 5. Always prioritize my REAL architecture achievements (IntaleqMaps, Tripz, 25+ apps, $10K/month savings) over generic AI buzzwords.`; const P = {}; P.analysis = `You are an elite career strategist. ${analysisLang} Evaluate this job against my profile with brutal honesty and EXTREME brevity. DO NOT recount my history, military background, or summarize my profile. Keep it actionable and short. CRITICAL RULE: The user is an elite Solutions Architect and Tech Lead targeting Senior/Lead engineering roles in the GCC Enterprise market. Position his 0-to-1 experience as a massive advantage for scaling systems, not as a risk. Do NOT downgrade his executive presence. ${STRICT_RULES} ${prof} JOB POSTING: ${ctx} Respond in this EXACT concise structure: ## 🎯 VERDICT: [YES - APPLY / NO - SKIP] [One short sentence explaining why] ## ✅ WHY IT FITS (If Yes) - [Bullet point 1] - [Bullet point 2] - [Bullet point 3] ## ❌ WHY IT MIGHT NOT FIT (If No or Maybe) - [Bullet point 1 - e.g. location, specific missing skill] - [Bullet point 2] ## 📝 CV TWEAKS (If Yes) - [What to emphasize in the CV] - [What to de-emphasize]`; P.coverletter = `You are an expert career writer. Write a COMPLETE, READY-TO-SEND cover letter. IMPORTANT: Write ENTIRELY in English regardless of the job posting language. ${STRICT_RULES} ${prof} JOB: ${ctx} FORMAT — follow EXACTLY: Dear ${co} Team, [PARAGRAPH 1 — HOOK (3 sentences max): Compelling connection between my background and this role. Mention the company by name. NO generic "I am writing to apply" openers.] [PARAGRAPH 2 — PROOF (4-5 sentences): Match 3-4 job requirements to my REAL achievements with NUMBERS. Use "At Intaleq, I..." or "When building Tripz, I..." Be concrete.] [PARAGRAPH 3 — CLOSE (2-3 sentences): Enthusiasm for THIS company. Confident call to action requesting an interview.] Best regards, Hamza Ayed hamzaayed.dev@gmail.com +962 79 858 3052 CRITICAL RULES: - MUST be in English - NO brackets or placeholders — use ACTUAL names and data - Every sentence specific to THIS job at ${co} - Under 300 words total - Tone MUST be highly professional, McKinsey-style, and executive. Focus on enterprise-scale impact and technical architecture. DO NOT mention military history. DO NOT use buzzwords like "sanctioned markets", "serving millions", "disruptive".`; P.cvtips = `You are a LinkedIn optimization expert and ATS specialist. IMPORTANT: Respond ENTIRELY in English regardless of the job posting language. ${STRICT_RULES} ${prof} JOB: ${ctx} Respond EXACTLY: ## LINKEDIN HEADLINE [One headline, EXACTLY under 80 characters, ATS-optimized. Format like: Senior Backend Engineer & Systems Architect | PHP, NestJS, GIS | CTO at Intaleq] ## PROFESSIONAL SUMMARY [3-4 sentences tailored summary ready to paste — in English. CRITICAL: Use a McKinsey-style, executive, and highly professional tone. Focus purely on technical architecture, enterprise-scale impact, and business value. DO NOT mention military history. DO NOT use buzzwords like "sanctioned markets", "serving millions", "solo-adapted", "disruptive", "cutting-edge". DO NOT invent industries like "banking" unless they are in MY PROFILE.] ## ATS KEYWORDS TO ADD - [10-15 specific keywords from this job that MUST appear in CV] ## EXPERIENCE TO LEAD WITH - [Which role first and which 3-4 bullet points to highlight] ## REMOVE OR MINIMIZE - [What to de-emphasize for this application] ## SKILLS SECTION (priority order) 1. [Most important skill] 2. [Second] 3. [Continue 8-10 skills] ## NEW BULLET POINTS TO ADD - [2-3 new achievement bullets ready to paste into CV — in English]`; const dynamicQuestions = job.questions && job.questions.length > 0 ? job.questions.map((q, i) => `${i + 1}. "${q.question}" [type: ${q.type}]`).join('\n') : '1. "Why are you interested in this role?" [type: text]\n2. "What is your relevant experience?" [type: text]\n3. "What are your salary expectations?" [type: text]\n4. "When can you start?" [type: text]\n5. "Do you require visa sponsorship?" [type: text]'; P.qa = `You are a form-filling assistant. Your ONLY job is to answer application form questions. STRICT RULES: - Return ONLY a raw JSON object. Nothing else. - Do NOT write cover letters, introductions, paragraphs, or markdown. - Do NOT use headers like "###" or "##". - Do NOT use code blocks like \`\`\`json. - For number/numeric questions: answer with JUST a number (e.g. "6"). - For yes/no or select questions: answer with JUST "Yes" or "No". - For salary questions: Output ONLY a number. IMPORTANT: Adapt the number intelligently to the job's likely currency (e.g., if UAE/Saudi: ~30000 AED/SAR. If remote USD: ~6000 USD). - For text questions: answer in 1 short sentence max. - Keys must be the EXACT question text. MY PERSONAL DETAILS & PREFERENCES (Use these for answers): - Location: Amman, Jordan - Phone / Country Code: +962 - Notice Period / Start Date: Available Immediately - Salary Expectations: Competitive / Negotiable (If forced to give a number, calculate based on the job's currency as instructed above). MY PROFILE: ${userProfile} JOB: ${ctx} QUESTIONS TO ANSWER: ${dynamicQuestions} RESPOND WITH ONLY THIS FORMAT (raw JSON, no wrapping, answering ONLY the questions listed above): { "question 1 text here": "concise answer", "question 2 text here": "concise answer" }`; P.benefits = `You are a career analyst specializing in tech compensation in MENA. IMPORTANT: Respond ENTIRELY in English regardless of the job posting language. ${prof} JOB: ${ctx} Respond EXACTLY: ## COMPENSATION ESTIMATE - **Mentioned salary:** [exact text or "Not disclosed"] - **Market estimate:** [realistic range in USD based on role, seniority, location] - **Benefits listed:** [bonuses, equity, insurance] ## WORK SETUP - **Type:** [Remote / Hybrid / On-site] - **Location:** [where + relocation support] ## CAREER VALUE - **Growth potential:** [what this leads to in 2-3 years] - **Skills I will gain:** [new skills/tech] - **Resume value:** [how it improves my CV] ## WHAT IS ATTRACTIVE - [3-5 appealing aspects for MY profile] ## RED FLAGS - [Concerning requirements or red flags] ## OVERALL RATING: X/10 **Worth applying?** [YES / MAYBE / NO] [2-3 sentence honest assessment]`; P.list_analysis = `You are an AI pre-screening jobs. I will give you a JSON array of jobs (Title, Company). My stack: Flutter, Python (FastAPI), PHP, Node.js, GIS, Technical Architect. I am actively seeking Senior Engineer, Tech Lead, or Architect roles. Reject Java, C#, C++, .NET, or pure Product Management roles. JOBS LIST: ${job.listData} Respond ONLY with a raw JSON array of objects, one for each job, containing: [ { "index": number, "verdict": "YES" | "NO" | "MAYBE", "reason": "Short reason" } ] Do not wrap in markdown \`\`\`json blocks.`; return P[tab] || P.analysis; }