daemon03 commited on
Commit
4f90172
Β·
verified Β·
1 Parent(s): dea8d25

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +143 -75
index.html CHANGED
@@ -146,30 +146,87 @@
146
 
147
  /* ══ SLIDE 4 β€” SIGNALS ══ */
148
  #s4 { background: var(--black); }
149
- #s4 .bg-glow { width: 500px; height: 500px; background: rgba(229,9,20,.06); top: 50%; left: 60%; transform: translate(-50%,-50%); }
150
- .signals-layout { display: grid; grid-template-columns: 1fr 1.4fr; gap: 3rem; align-items: start; margin-top: 2rem; }
151
- .signal-categories { display: flex; flex-direction: column; gap: .7rem; }
152
- .sig-cat { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 1rem 1.2rem; transition: border-color .2s; }
153
- .sig-cat:hover { border-color: var(--red); }
154
- .sig-cat-label { font-family: 'JetBrains Mono', monospace; font-size: .62rem; color: var(--red); font-weight: 700; letter-spacing: .14em; text-transform: uppercase; margin-bottom: .4rem; }
155
- .sig-cat-title { font-weight: 700; font-size: .88rem; color: white; margin-bottom: .3rem; }
156
- .sig-cat-items { font-size: .76rem; color: var(--muted); line-height: 1.6; }
157
- .sig-cat-items span { color: var(--text); font-weight: 600; }
158
- .not-used { background: rgba(255,152,0,.05); border: 1px solid rgba(255,152,0,.2); border-radius: 10px; padding: .9rem 1.1rem; margin-top: .7rem; }
159
- .not-used-label { font-size: .62rem; color: var(--warn); font-family: 'JetBrains Mono', monospace; text-transform: uppercase; letter-spacing: .12em; font-weight: 700; margin-bottom: .3rem; }
160
- .not-used-desc { font-size: .78rem; color: var(--muted); line-height: 1.5; }
161
- .signal-story { }
162
- .ss-title { font-family: 'Bebas Neue', sans-serif; font-size: 2rem; color: white; margin-bottom: 1rem; line-height: 1; }
163
- .ss-title span { color: var(--red); }
164
- .signal-scenario { background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 1.4rem; margin-bottom: 1rem; position: relative; }
165
- .signal-scenario::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--red); border-radius: 3px 0 0 3px; }
166
- .sc-action { font-weight: 700; font-size: .88rem; color: white; margin-bottom: .35rem; }
167
- .sc-inference { font-size: .8rem; color: var(--muted); line-height: 1.6; }
168
- .sc-tag { margin-top: .5rem; font-size: .68rem; color: var(--red); font-family: 'JetBrains Mono', monospace; }
169
- .signals-footer { grid-column: 1 / -1; margin-top: .5rem; padding: 1rem 1.4rem; background: rgba(229,9,20,.06); border: 1px solid rgba(229,9,20,.18); border-radius: 10px; font-size: .85rem; color: var(--muted); line-height: 1.7; }
170
- .signals-footer strong { color: var(--red); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
 
172
- /* ══ SLIDE 5 β€” OBJECTIVES ══ */
173
  #s5 { background: var(--dark); }
174
  .objectives-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.2rem; margin-top: 2rem; }
175
  .obj-card { background: var(--card); border: 1px solid var(--border); border-radius: 14px; padding: 1.5rem; transition: all .25s; }
@@ -370,7 +427,8 @@
370
 
371
  /* ── RESPONSIVE ── */
372
  @media (max-width: 1024px) {
373
- .hero-grid, .signals-layout, .artwork-layout, .takeaways-layout, .coldstart-layout { grid-template-columns: 1fr; }
 
374
  .why-grid, .algo-intro, .objectives-grid, .tradeoffs-grid { grid-template-columns: 1fr 1fr; }
375
  .pipeline-steps, .pipeline-steps-row2 { grid-template-columns: 1fr 1fr; }
376
  .two-users, .profiles-grid-v3 { grid-template-columns: 1fr; }
@@ -380,6 +438,8 @@
380
  }
381
  @media (max-width: 640px) {
382
  .nav-links button { font-size: .55rem; padding: .22rem .38rem; }
 
 
383
  .why-grid, .algo-intro, .objectives-grid, .tradeoffs-grid, .pipeline-steps, .pipeline-steps-row2 { grid-template-columns: 1fr; }
384
  .thumb-showcase { grid-template-columns: repeat(2, 1fr); }
385
  .ee-cols { grid-template-columns: 1fr; }
@@ -528,62 +588,70 @@
528
 
529
  <!-- ══════════════ SLIDE 4: SIGNALS ══════════════ -->
530
  <section class="slide" id="s4">
531
- <div class="bg-glow"></div>
532
- <div class="content" style="width:100%;max-width:1200px;margin:0 auto;">
533
  <div class="slide-tag">Decode the Tech Β· Inputs to the System</div>
534
- <h2 class="sec">WHAT GOES<br><span>INTO THE SYSTEM</span></h2>
535
- <p class="subtitle">Netflix's recommendations are shaped by four categories of signals β€” interaction, collaborative, content, and context. Its public explanation also states that demographic attributes like age and gender are not part of the recommendation decision.</p>
536
- <div class="signals-layout">
537
- <div>
538
- <div class="signal-categories">
539
- <div class="sig-cat">
540
- <div class="sig-cat-label">Interaction</div>
541
- <div class="sig-cat-title">What You Actually Do</div>
542
- <div class="sig-cat-items"><span>Watch history</span>, <span>completion rate</span>, <span>rewatches</span>, <span>thumbs feedback</span>, <span>searches</span>, <span>browse clicks</span>, <span>watch duration</span>, <span>session-to-session recency</span></div>
543
- </div>
544
- <div class="sig-cat">
545
- <div class="sig-cat-label">Collaborative</div>
546
- <div class="sig-cat-title">Patterns from Similar Members</div>
547
- <div class="sig-cat-items">What members with <span>similar taste patterns</span> watched, finished, replayed, or ignored β€” useful for recommending titles you have never seen before</div>
548
- </div>
549
- <div class="sig-cat">
550
- <div class="sig-cat-label">Content</div>
551
- <div class="sig-cat-title">What the Title Is</div>
552
- <div class="sig-cat-items"><span>Genre</span>, <span>cast and creators</span>, <span>release year</span>, <span>language</span>, <span>maturity profile</span>, <span>format</span>, <span>metadata tags</span>, <span>learned title representations</span></div>
553
- </div>
554
- <div class="sig-cat">
555
- <div class="sig-cat-label">Context</div>
556
- <div class="sig-cat-title">When the Request Happens</div>
557
- <div class="sig-cat-items"><span>Device type</span>, <span>time of day</span>, <span>member language</span>, <span>current session state</span>, <span>recent actions</span>, <span>request-time context</span></div>
558
- </div>
559
- </div>
560
- <div class="not-used">
561
- <div class="not-used-label">⚠ Not used in recommendations</div>
562
- <div class="not-used-desc">According to Netflix's public explanation, <strong style="color:var(--text);">age and gender are not used as recommendation inputs.</strong> The emphasis is on behavior, title information, similar-member patterns, and viewing context.</div>
563
- </div>
564
  </div>
565
- <div class="signal-story">
566
- <div class="ss-title">WHAT NETFLIX <span>INFERS</span><br>FROM YOUR SIGNALS</div>
567
- <div class="signal-scenario">
568
- <div class="sc-action">You finish three tense crime episodes in one night</div>
569
- <div class="sc-inference">The system infers short-term intent, high current appetite, and strong affinity for that viewing mode. Similar titles and rows gain weight in the next request.</div>
570
- <div class="sc-tag">SESSION INTENT β†’ RE-RANK</div>
571
- </div>
572
- <div class="signal-scenario">
573
- <div class="sc-action">You stop a slow series early but fully finish fast-paced thrillers</div>
574
- <div class="sc-inference">The model updates your profile away from slow-burn pacing and toward tighter, faster narrative patterns β€” even across unseen titles.</div>
575
- <div class="sc-tag">IMPLICIT NEGATIVE + POSITIVE SIGNALS</div>
576
- </div>
577
- <div class="signal-scenario">
578
- <div class="sc-action">You browse on phone at lunch and on TV at night</div>
579
- <div class="sc-inference">Context changes the recommendation surface. The same member can receive different rows, orderings, and emphasis depending on device, time, and recent session behavior.</div>
580
- <div class="sc-tag">REQUEST-TIME CONTEXT MATTERS</div>
581
- </div>
 
 
 
 
 
 
 
 
 
 
582
  </div>
583
- <div class="signals-footer">
584
- <strong>The key insight:</strong> Netflix learns from both explicit actions and implicit behavior. The system combines long-term taste, short-term session intent, title metadata, and request-time context to decide what to surface next.
 
 
 
 
585
  </div>
586
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
587
  </div>
588
  </section>
589
 
 
146
 
147
  /* ══ SLIDE 4 β€” SIGNALS ══ */
148
  #s4 { background: var(--black); }
149
+ #s4 .bg-glow:nth-child(1) { width: 480px; height: 480px; background: rgba(229,9,20,.06); top: 10%; left: 8%; }
150
+ #s4 .bg-glow:nth-child(2) { width: 560px; height: 560px; background: rgba(229,9,20,.05); bottom: -18%; right: -8%; }
151
+ .signals-rail { display: grid; grid-template-columns: repeat(6, 1fr); gap: 1rem; margin-top: 2rem; }
152
+ .signal-rail-card {
153
+ position: relative; min-height: 26.5rem; padding: 1rem 1rem 1.15rem; border-radius: 18px;
154
+ border: 1px solid rgba(255,255,255,.09); background: linear-gradient(180deg, rgba(10,10,12,.96), rgba(6,6,8,.98));
155
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.03), 0 12px 32px rgba(0,0,0,.32); overflow: hidden;
156
+ display: flex; flex-direction: column; justify-content: flex-start;
157
+ }
158
+ .signal-rail-card::after {
159
+ content: ''; position: absolute; inset: 0; pointer-events: none;
160
+ background: linear-gradient(180deg, rgba(229,9,20,.04), transparent 32%, rgba(255,255,255,.01));
161
+ }
162
+ .signal-rail-card.rail-active {
163
+ border-color: rgba(229,9,20,.95);
164
+ box-shadow: 0 0 0 1px rgba(229,9,20,.32), 0 20px 44px rgba(229,9,20,.12), inset 0 1px 0 rgba(255,255,255,.04);
165
+ }
166
+ .signal-visual {
167
+ height: 9.75rem; border-radius: 14px; margin-bottom: 1rem; border: 1px solid rgba(255,255,255,.05);
168
+ background-size: cover; background-position: center; position: relative; overflow: hidden;
169
+ }
170
+ .sv-interaction {
171
+ background:
172
+ radial-gradient(circle at 20% 30%, rgba(229,9,20,.95) 0 2px, transparent 3px),
173
+ radial-gradient(circle at 58% 28%, rgba(255,72,72,.9) 0 3px, transparent 4px),
174
+ radial-gradient(circle at 72% 66%, rgba(229,9,20,.9) 0 2px, transparent 3px),
175
+ radial-gradient(circle at 35% 70%, rgba(255,82,82,.9) 0 2px, transparent 3px),
176
+ linear-gradient(135deg, rgba(229,9,20,.18), rgba(20,0,0,.92));
177
+ }
178
+ .sv-interaction::before {
179
+ content:''; position:absolute; inset:0;
180
+ background:
181
+ linear-gradient(45deg, transparent 48%, rgba(255,50,50,.28) 49%, rgba(255,50,50,.28) 51%, transparent 52%),
182
+ linear-gradient(-18deg, transparent 43%, rgba(255,50,50,.16) 44%, rgba(255,50,50,.16) 46%, transparent 47%),
183
+ linear-gradient(75deg, transparent 40%, rgba(255,50,50,.14) 41%, rgba(255,50,50,.14) 43%, transparent 44%);
184
+ opacity:.95;
185
+ }
186
+ .sv-collab { background: linear-gradient(180deg, rgba(0,0,0,.18), rgba(0,0,0,.7)), linear-gradient(135deg, rgba(33,33,40,.72), rgba(10,10,12,.95)); }
187
+ .sv-collab::before {
188
+ content:''; position:absolute; inset:0; opacity:.9;
189
+ background-image: linear-gradient(rgba(255,255,255,.02), rgba(255,255,255,.02)), linear-gradient(90deg, rgba(255,255,255,.04) 0 1px, transparent 1px), linear-gradient(rgba(255,255,255,.04) 0 1px, transparent 1px);
190
+ background-size: 100% 100%, 34px 34px, 34px 34px;
191
+ }
192
+ .sv-content { background: radial-gradient(circle at 70% 72%, rgba(229,9,20,.35), transparent 24%), linear-gradient(180deg, rgba(11,19,34,.96), rgba(6,10,18,.98)); }
193
+ .sv-content::before {
194
+ content:''; position:absolute; inset:14px; border-radius:12px; opacity:.95;
195
+ background: linear-gradient(90deg, rgba(255,255,255,.07) 0 1px, transparent 1px), linear-gradient(rgba(255,255,255,.06) 0 1px, transparent 1px);
196
+ background-size: 28px 28px;
197
+ }
198
+ .sv-context { background: linear-gradient(180deg, rgba(229,9,20,.14), transparent 30%), linear-gradient(90deg, rgba(0,0,0,.1), rgba(0,0,0,.45)), linear-gradient(180deg, rgba(35,5,5,.95), rgba(8,8,10,.98)); }
199
+ .sv-context::before {
200
+ content:''; position:absolute; inset:0;
201
+ background: repeating-linear-gradient(90deg, transparent 0 26px, rgba(255,255,255,.025) 26px 27px), linear-gradient(180deg, transparent 0 20%, rgba(255,80,80,.28) 48%, transparent 52%, transparent 100%);
202
+ }
203
+ .sv-intent { background: radial-gradient(circle at 50% 50%, rgba(28,87,255,.22), transparent 28%), radial-gradient(circle at 50% 50%, rgba(255,255,255,.08) 0 1px, transparent 2px), linear-gradient(180deg, rgba(6,16,30,.96), rgba(5,8,15,.98)); }
204
+ .sv-intent::before {
205
+ content:''; position:absolute; inset:14px; border-radius:50%; border:1px solid rgba(92,144,255,.22);
206
+ box-shadow: 0 0 0 22px rgba(92,144,255,.05), 0 0 0 44px rgba(92,144,255,.03);
207
+ }
208
+ .sv-guardrails { background: linear-gradient(180deg, rgba(0,0,0,.28), rgba(0,0,0,.78)), linear-gradient(135deg, rgba(25,25,30,.75), rgba(9,9,12,.96)); }
209
+ .sv-guardrails::before {
210
+ content:''; position:absolute; inset:0; opacity:.72;
211
+ background-image: linear-gradient(90deg, rgba(255,255,255,.035) 0 1px, transparent 1px), linear-gradient(rgba(255,255,255,.03) 0 1px, transparent 1px);
212
+ background-size: 40px 40px;
213
+ }
214
+ .signal-icon { color: var(--red); font-size: 2rem; line-height: 1; margin-bottom: .95rem; position: relative; z-index: 1; }
215
+ .signal-card-title { font-size: 1.95rem; font-weight: 900; line-height: .98; letter-spacing: -.03em; position: relative; z-index: 1; }
216
+ .signal-card-line { width: 2.2rem; height: 4px; border-radius: 999px; background: var(--red); margin: 1rem 0 1rem; position: relative; z-index: 1; }
217
+ .signal-card-desc { color: var(--muted); font-size: .96rem; line-height: 1.62; position: relative; z-index: 1; }
218
+ .signals-dots { display:flex; justify-content:center; gap:.55rem; margin: 1rem 0 1.1rem; }
219
+ .signals-dots .dot { width: 8px; height: 8px; border-radius: 999px; background: rgba(255,255,255,.18); }
220
+ .signals-dots .dot.active { background: var(--red); }
221
+ .signals-summary-bar {
222
+ display:flex; align-items:center; gap:1rem; border-radius: 16px; border: 1px solid rgba(255,255,255,.08);
223
+ background: linear-gradient(180deg, rgba(11,11,13,.96), rgba(7,7,9,.98)); padding: 1rem 1.25rem;
224
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.03), 0 12px 36px rgba(0,0,0,.24);
225
+ }
226
+ .summary-icon { color: var(--red); font-size: 2rem; line-height: 1; }
227
+ .summary-copy { color: var(--muted); font-size: 1.02rem; line-height: 1.6; }
228
 
229
+ /* ══ SLIDE 5 β€” OBJECTIVES ══ */
230
  #s5 { background: var(--dark); }
231
  .objectives-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.2rem; margin-top: 2rem; }
232
  .obj-card { background: var(--card); border: 1px solid var(--border); border-radius: 14px; padding: 1.5rem; transition: all .25s; }
 
427
 
428
  /* ── RESPONSIVE ── */
429
  @media (max-width: 1024px) {
430
+ .hero-grid, .artwork-layout, .takeaways-layout, .coldstart-layout { grid-template-columns: 1fr; }
431
+ .signals-rail { grid-template-columns: repeat(2, 1fr); }
432
  .why-grid, .algo-intro, .objectives-grid, .tradeoffs-grid { grid-template-columns: 1fr 1fr; }
433
  .pipeline-steps, .pipeline-steps-row2 { grid-template-columns: 1fr 1fr; }
434
  .two-users, .profiles-grid-v3 { grid-template-columns: 1fr; }
 
438
  }
439
  @media (max-width: 640px) {
440
  .nav-links button { font-size: .55rem; padding: .22rem .38rem; }
441
+ .signals-rail { grid-template-columns: 1fr; }
442
+ .signals-summary-bar { flex-direction: column; align-items: flex-start; }
443
  .why-grid, .algo-intro, .objectives-grid, .tradeoffs-grid, .pipeline-steps, .pipeline-steps-row2 { grid-template-columns: 1fr; }
444
  .thumb-showcase { grid-template-columns: repeat(2, 1fr); }
445
  .ee-cols { grid-template-columns: 1fr; }
 
588
 
589
  <!-- ══════════════ SLIDE 4: SIGNALS ══════════════ -->
590
  <section class="slide" id="s4">
591
+ <div class="bg-glow"></div><div class="bg-glow"></div>
592
+ <div class="content" style="width:100%;max-width:1320px;margin:0 auto;">
593
  <div class="slide-tag">Decode the Tech Β· Inputs to the System</div>
594
+ <h2 class="sec">WHAT GOES INTO<br><span>THE SYSTEM</span></h2>
595
+ <p class="subtitle">The recommendation stack learns from multiple signal families at once. Together they help Netflix estimate taste, intent, context, and uncertainty before ranking the homepage.</p>
596
+
597
+ <div class="signals-rail">
598
+ <div class="signal-rail-card rail-active">
599
+ <div class="signal-visual sv-interaction"></div>
600
+ <div class="signal-icon">↻</div>
601
+ <div class="signal-card-title">Interaction<br>Signals</div>
602
+ <div class="signal-card-line"></div>
603
+ <div class="signal-card-desc">Watch history, completion, rewatches, searches, skips, and watch duration reveal what members actually do β€” not just what they say.</div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
604
  </div>
605
+ <div class="signal-rail-card">
606
+ <div class="signal-visual sv-collab"></div>
607
+ <div class="signal-icon">β—Ž</div>
608
+ <div class="signal-card-title">Collaborative<br>Patterns</div>
609
+ <div class="signal-card-line"></div>
610
+ <div class="signal-card-desc">The system compares you with members who behave similarly and uses those patterns to surface titles you have not discovered yet.</div>
611
+ </div>
612
+ <div class="signal-rail-card">
613
+ <div class="signal-visual sv-content"></div>
614
+ <div class="signal-icon">β–³</div>
615
+ <div class="signal-card-title">Content<br>Metadata</div>
616
+ <div class="signal-card-line"></div>
617
+ <div class="signal-card-desc">Genre, cast, language, release year, format, and learned title representations help the model understand what a title actually is.</div>
618
+ </div>
619
+ <div class="signal-rail-card">
620
+ <div class="signal-visual sv-context"></div>
621
+ <div class="signal-icon">β—Œ</div>
622
+ <div class="signal-card-title">Request-Time<br>Context</div>
623
+ <div class="signal-card-line"></div>
624
+ <div class="signal-card-desc">Device, time of day, current session state, and recent actions shape what makes sense for this exact request β€” not just for the user overall.</div>
625
+ </div>
626
+ <div class="signal-rail-card">
627
+ <div class="signal-visual sv-intent"></div>
628
+ <div class="signal-icon">✦</div>
629
+ <div class="signal-card-title">Session Intent<br>Inference</div>
630
+ <div class="signal-card-line"></div>
631
+ <div class="signal-card-desc">A burst of similar plays, quick abandonment, or repeated rewatches helps infer short-term intent and re-rank the next page in real time.</div>
632
  </div>
633
+ <div class="signal-rail-card">
634
+ <div class="signal-visual sv-guardrails"></div>
635
+ <div class="signal-icon">⌁</div>
636
+ <div class="signal-card-title">Negative Signals<br>& Guardrails</div>
637
+ <div class="signal-card-line"></div>
638
+ <div class="signal-card-desc">Skipping, dropping, or ignoring recommendations matters too. Netflix also says age and gender are not used as recommendation inputs.</div>
639
  </div>
640
  </div>
641
+
642
+ <div class="signals-dots" aria-hidden="true">
643
+ <span class="dot active"></span>
644
+ <span class="dot"></span>
645
+ <span class="dot"></span>
646
+ <span class="dot"></span>
647
+ <span class="dot"></span>
648
+ <span class="dot"></span>
649
+ </div>
650
+
651
+ <div class="signals-summary-bar">
652
+ <div class="summary-icon">⌘</div>
653
+ <div class="summary-copy">Netflix combines long-term taste, short-term behavior, title understanding, and request-time context to decide what to rank now β€” while also learning what not to show next.</div>
654
+ </div>
655
  </div>
656
  </section>
657