+
+
+
+ {phase === "done" ? (
+
+ ) : (
+
+ )}
+
+
+
+ {phase === "done"
+ ? "Batch analysis complete"
+ : "Analyzing your resume..."}
+
+
+ {completedCount + failedCount} of {totalCount} jobs processed
+
+
+
+ {phase === "done" && batchId && (
+
+ )}
+
+
+
+
0
+ ? "bg-gradient-to-r from-indigo-500 to-amber-400"
+ : "bg-gradient-to-r from-indigo-500 to-emerald-500"
+ : "bg-gradient-to-r from-indigo-500 to-indigo-400",
+ )}
+ style={{
+ width: `${((completedCount + failedCount) / totalCount) * 100}%`,
+ }}
+ />
+
+
+
+
+ {jobs.map((job, index) => {
+ const result = results.get(index);
+ const status = result?.status || "pending";
+
+ return (
+
+
+
+
+ Job {index + 1}
+
+
+ {job.jobTitle || "Untitled"}
+
+ {job.companyName && (
+
+ {job.companyName}
+
+ )}
+
+
+
+ {status === "analyzing" && (
+
+
+
+ )}
+ {status === "success" && result?.overallScore !== undefined && (
+
= 80
+ ? "bg-emerald-100 text-emerald-700"
+ : result.overallScore >= 60
+ ? "bg-amber-100 text-amber-700"
+ : "bg-red-100 text-red-700",
+ )}
+ >
+ {result.overallScore}
+
+ )}
+ {status === "error" && (
+
+ )}
+
+
+
+ {status === "success" && result?.resumeId && (
+
+ )}
+
+ {status === "error" && result?.error && (
+
{result.error}
+ )}
+
+ );
+ })}
+
+
+ {phase === "done" && (
+
+
+
+ )}
+
+
+
+
+ 1
+
+
+ Upload your resume
+
+
+
+ One resume, analyzed against every job below.
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+ Add target jobs
+
+
+ {jobs.length}/10
+
+
+
+
+ Add 2-10 job descriptions to compare your resume against.
+
+
+
+ {jobs.map((job, index) => (
+
+
+
+ {index + 1}
+
+
+
+
+
+
+
+
+ {jobs.length > 2 && (
+
+ )}
+
+
+ ))}
+
+ {jobs.length < 10 && (
+
+ )}
+
+
+
+
+
+
+ {file
+ ? `${jobs.length} job${jobs.length !== 1 ? "s" : ""} queued`
+ : "Upload a resume to start"}
+
+
+