[17-Sep-2026 20:06:19 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function mb_substr() in C:\Users\Pedro Santos\Desktop\Github\Jobcal\includes\analysis_engine.php:146
Stack trace:
#0 Command line code(7): detect_role('As the Quality ...')
#1 {main}
  thrown in C:\Users\Pedro Santos\Desktop\Github\Jobcal\includes\analysis_engine.php on line 146
[17-Sep-2026 23:25:03 UTC] [job-intelligence] process-analysis.php: request received for id=01M2RV06KVD3MZ9DZ1QG
[17-Sep-2026 23:25:03 UTC] [job-intelligence] process-analysis.php: id=01M2RV06KVD3MZ9DZ1QG claimed, starting run_analysis_guarded()
[17-Sep-2026 23:25:03 UTC] [job-intelligence] call_claude: starting request to api.anthropic.com
[17-Sep-2026 23:25:12 UTC] [job-intelligence] call_claude: curl finished in 8.45s, errno=0, http=200
[17-Sep-2026 23:25:12 UTC] [job-intelligence] fetch_jooble_jobs: keywords="Commercial and Customer Engagement Team Lead" location="United States" page=1
[17-Sep-2026 23:25:13 UTC] [job-intelligence] fetch_jooble_jobs: http=200 errno=0
[17-Sep-2026 23:25:13 UTC] [job-intelligence] fetch_jooble_jobs: keywords="Commercial and Customer Engagement Team Lead" location="United States" page=2
[17-Sep-2026 23:25:13 UTC] [job-intelligence] fetch_jooble_jobs: http=200 errno=0
[17-Sep-2026 23:25:13 UTC] [job-intelligence] process-analysis.php: id=01M2RV06KVD3MZ9DZ1QG finished successfully
[28-Sep-2026 10:35:47 UTC] [job-intelligence] process-analysis.php: request received for id=01M3KSBHEMXVGEQTACBB
[28-Sep-2026 10:35:47 UTC] [job-intelligence] process-analysis.php: id=01M3KSBHEMXVGEQTACBB claimed, starting run_analysis_guarded()
[28-Sep-2026 10:35:47 UTC] [job-intelligence] call_claude: starting request to api.anthropic.com
[28-Sep-2026 10:36:09 UTC] [job-intelligence] call_claude: curl finished in 21.34s, errno=0, http=200
[28-Sep-2026 10:36:09 UTC] [job-intelligence] fetch_jooble_jobs: keywords="Medical Information Specialist" location="Portugal" page=1
[28-Sep-2026 10:36:09 UTC] [job-intelligence] fetch_jooble_jobs: http=200 errno=0
[28-Sep-2026 10:36:09 UTC] [job-intelligence] fetch_jooble_jobs: keywords="Medical Information Specialist" location="Portugal" page=2
[28-Sep-2026 10:36:09 UTC] [job-intelligence] fetch_jooble_jobs: http=200 errno=0
[28-Sep-2026 10:36:09 UTC] [job-intelligence] fetch_theirstack_jobs: keywords="Medical Information Specialist" country=PT page=0
[28-Sep-2026 10:36:12 UTC] [job-intelligence] fetch_theirstack_jobs: http=200 errno=0
[28-Sep-2026 10:36:12 UTC] [job-intelligence] fetch_theirstack_jobs: sample job keys=id,job_title,url,date_posted,has_blurred_data,company,final_url,source_url,location,short_location,long_location,state_code,latitude,longitude,postal_code,remote,hybrid,salary_string,min_annual_salary,min_annual_salary_usd,max_annual_salary,max_annual_salary_usd,avg_annual_salary_usd,salary_currency,countries,country,country_codes,country_code,cities,continents,seniority,discovered_at,closed_at,company_domain,hiring_team,reposted,date_reposted,employment_statuses,easy_apply,technology_slugs,keyword_slugs,description,company_object,locations,normalized_title,manager_roles,matching_phrases,matching_words
[28-Sep-2026 10:36:12 UTC] [job-intelligence] market data pooled: {"smartrecruiters.com":4,"hppstaffing.com":1,"TheirStack":8} (country=Portugal)
[28-Sep-2026 10:36:12 UTC] [job-intelligence] eurostat: requesting geo=PT dataset=earn_ses22_annual
[28-Sep-2026 10:36:12 UTC] [job-intelligence] eurostat: http=404 errno=0
[28-Sep-2026 10:36:12 UTC] [job-intelligence] eurostat: failed body: { "error": [{"status": 404,"id": 100,"label": "ERR_NOT_FOUND_4: EARN_SES22_ANNUAL (DATA_FLOW:ALL,1.0) is not available for dissemination."}]}
[28-Sep-2026 10:36:12 UTC] [job-intelligence] call_claude: starting request to api.anthropic.com
[28-Sep-2026 10:36:16 UTC] [job-intelligence] call_claude: curl finished in 4.04s, errno=0, http=200
[28-Sep-2026 10:36:16 UTC] [job-intelligence] reconciliation: kept 8 of 13 postings — Excluded postings 0-4 (Domino's Assistant Manager/Customer Service roles) and 2 (RT Technician) for role mismatch as they are entirely unrelated functions to Medical Information Specialist; all remaining postings are relevant medical information/communications roles located in Lisbon, Portugal, matching both role and location criteria.
[28-Sep-2026 10:36:16 UTC] [job-intelligence] call_claude: starting request to api.anthropic.com
[28-Sep-2026 10:36:17 UTC] [job-intelligence] call_claude: curl finished in 0.98s, errno=0, http=200
[28-Sep-2026 10:36:17 UTC] [job-intelligence] process-analysis.php: id=01M3KSBHEMXVGEQTACBB finished successfully
