false, 'message' => 'Failed to read resume file.']); exit; } // Define the AI prompt $prompt = <<, "status": "", "strengths": [ "", "" ], "weaknesses": [ "", "" ] } Here is the resume content: --- {$resumeContent} --- PROMPT; // Call the AI $response = LocalAIApi::createResponse([ 'input' => [ ['role' => 'system', 'content' => 'You are an expert ATS resume analyzer that only responds with JSON.'], ['role' => 'user', 'content' => $prompt], ], ]); if (empty($response['success'])) { error_log('AI API Error: ' . ($response['error'] ?? 'Unknown error')); echo json_encode(['success' => false, 'message' => 'AI analysis failed. Please try again later.']); exit; } $analysisJson = LocalAIApi::decodeJsonFromResponse($response); if ($analysisJson === null) { error_log('AI API JSON Decode Error: ' . LocalAIApi::extractText($response)); echo json_encode(['success' => false, 'message' => 'Failed to parse AI response. The response may not be valid JSON.']); exit; } echo json_encode(['success' => true, 'data' => $analysisJson]); } else { echo json_encode([ 'success' => false, 'message' => 'File upload failed or no file was uploaded.' ]); } ?>