diff --git a/JobTrackerApi/Controllers/GmailController.cs b/JobTrackerApi/Controllers/GmailController.cs
index 7383ba3..57ac4f9 100644
--- a/JobTrackerApi/Controllers/GmailController.cs
+++ b/JobTrackerApi/Controllers/GmailController.cs
@@ -641,12 +641,17 @@ public sealed class GmailController : ControllerBase
var threadMessages = await _gmail.ListThreadMessagesAsync(ownerUserId, request.ThreadId.Trim(), cancellationToken);
var distinctMessageIds = threadMessages.Select(message => message.Id).Where(static id => !string.IsNullOrWhiteSpace(id)).Distinct(StringComparer.Ordinal).ToList();
+ // Batch the "already imported?" check with a single query instead of one
+ // AnyAsync per message (N+1), mirroring RelinkThread below.
+ var existingMessageIds = await _db.Correspondences
+ .Where(message => message.JobApplicationId == job.Id && message.ExternalMessageId != null && distinctMessageIds.Contains(message.ExternalMessageId))
+ .Select(message => message.ExternalMessageId!)
+ .ToListAsync(cancellationToken);
var imported = 0;
var skipped = 0;
foreach (var messageId in distinctMessageIds)
{
- var existing = await _db.Correspondences.AnyAsync(message => message.JobApplicationId == job.Id && message.ExternalMessageId == messageId, cancellationToken);
- if (existing)
+ if (existingMessageIds.Contains(messageId, StringComparer.Ordinal))
{
skipped++;
continue;
diff --git a/job-tracker-ui/public/mockups/dashboard.svg b/job-tracker-ui/public/mockups/dashboard.svg
new file mode 100644
index 0000000..fe80080
--- /dev/null
+++ b/job-tracker-ui/public/mockups/dashboard.svg
@@ -0,0 +1,82 @@
+
diff --git a/job-tracker-ui/public/mockups/pipeline.svg b/job-tracker-ui/public/mockups/pipeline.svg
new file mode 100644
index 0000000..9ab1131
--- /dev/null
+++ b/job-tracker-ui/public/mockups/pipeline.svg
@@ -0,0 +1,55 @@
+
diff --git a/job-tracker-ui/public/mockups/workspace.svg b/job-tracker-ui/public/mockups/workspace.svg
new file mode 100644
index 0000000..3c90a99
--- /dev/null
+++ b/job-tracker-ui/public/mockups/workspace.svg
@@ -0,0 +1,102 @@
+
diff --git a/job-tracker-ui/src/pages/LandingPage.tsx b/job-tracker-ui/src/pages/LandingPage.tsx
index ce326c4..70f674d 100644
--- a/job-tracker-ui/src/pages/LandingPage.tsx
+++ b/job-tracker-ui/src/pages/LandingPage.tsx
@@ -114,6 +114,26 @@ export default function LandingPage() {
+ {/* Product preview */}
+
+
+ SEE IT IN ACTION
+ Your whole search, at a glance
+
+
+
+
+
+
+
+
+
+
+
+
+ Interface preview.
+
+
{/* Features */}