diff --git a/backend/routers/stats.py b/backend/routers/stats.py
index 06b70b3..0a7f36c 100644
--- a/backend/routers/stats.py
+++ b/backend/routers/stats.py
@@ -85,7 +85,7 @@ def get_stats(
avg_completion = db.execute(
text("""
SELECT AVG(uv.completion_percent) AS avg_pct,
- COUNT(CASE WHEN uv.completion_percent >= 90 THEN 1 END) AS finished_count,
+ COUNT(CASE WHEN uv.completion_percent >= 75 THEN 1 END) AS finished_count,
COUNT(CASE WHEN uv.completion_percent < 20 AND uv.completion_percent IS NOT NULL THEN 1 END) AS bailed_count,
SUM(uv.rewatch_count) AS total_rewatches,
COUNT(CASE WHEN uv.rewatch_count > 0 THEN 1 END) AS rewatched_videos
diff --git a/backend/routers/videos.py b/backend/routers/videos.py
index 1dc34fc..bdc69fb 100644
--- a/backend/routers/videos.py
+++ b/backend/routers/videos.py
@@ -999,10 +999,10 @@ def update_progress(
if pct < 0.20:
_update_affinity(db, current_user.id, video, -0.5)
- # Backend safety net: auto-mark watched at ≥90% completion even if the frontend
+ # Backend safety net: auto-mark watched at ≥75% completion even if the frontend
# didn't send watched=True (e.g. browser closed before debounce fired)
if (not prev_watched and not uv.watched
- and uv.completion_percent is not None and uv.completion_percent >= 90
+ and uv.completion_percent is not None and uv.completion_percent >= 75
and video.duration_seconds and video.duration_seconds > 60):
uv.watched = True
_update_affinity(db, current_user.id, video, +2.0)
diff --git a/frontend/src/components/VideoPlayer.jsx b/frontend/src/components/VideoPlayer.jsx
index ae70df0..7f32e1d 100644
--- a/frontend/src/components/VideoPlayer.jsx
+++ b/frontend/src/components/VideoPlayer.jsx
@@ -158,7 +158,7 @@ export default function VideoPlayer() {
saveTimerRef.current = setTimeout(() => {
if (video?.id) {
const duration = video.duration_seconds ?? 0;
- const watched = duration > 0 && secs >= duration * 0.9;
+ const watched = duration > 0 && secs >= duration * 0.75;
updateProgress(video.id, { watch_progress_seconds: secs, watched });
}
}, 10_000);
diff --git a/frontend/src/pages/Stats.jsx b/frontend/src/pages/Stats.jsx
index 306bd95..a566cff 100644
--- a/frontend/src/pages/Stats.jsx
+++ b/frontend/src/pages/Stats.jsx
@@ -87,7 +87,7 @@ export default function Stats() {