Created
February 6, 2026 20:53
-
-
Save serenaf/4a7b1422b10ac92d80514b8862988371 to your computer and use it in GitHub Desktop.
Fin Hackathon Insights Report - serenafritsch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Fin Hackathon Insights - serenafritsch</title> | |
| <style> | |
| :root { | |
| --bg-primary: #0f172a; | |
| --bg-secondary: #1e293b; | |
| --bg-card: #334155; | |
| --text-primary: #f8fafc; | |
| --text-secondary: #94a3b8; | |
| --accent-blue: #3b82f6; | |
| --accent-green: #22c55e; | |
| --accent-orange: #f97316; | |
| --accent-purple: #a855f7; | |
| } | |
| * { box-sizing: border-box; margin: 0; padding: 0; } | |
| body { | |
| font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; | |
| background: var(--bg-primary); | |
| color: var(--text-primary); | |
| line-height: 1.6; | |
| padding: 2rem; | |
| } | |
| .container { max-width: 1200px; margin: 0 auto; } | |
| .hero { | |
| text-align: center; | |
| padding: 3rem 2rem; | |
| background: linear-gradient(135deg, var(--bg-secondary) 0%, var(--bg-card) 100%); | |
| border-radius: 1rem; | |
| margin-bottom: 2rem; | |
| } | |
| .hero h1 { font-size: 2.5rem; margin-bottom: 0.5rem; } | |
| .hero .subtitle { color: var(--text-secondary); font-size: 1.2rem; } | |
| .stats-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); | |
| gap: 1rem; | |
| margin: 2rem 0; | |
| } | |
| .stat-card { | |
| background: var(--bg-secondary); | |
| padding: 1.5rem; | |
| border-radius: 0.75rem; | |
| text-align: center; | |
| } | |
| .stat-value { | |
| font-size: 2.5rem; | |
| font-weight: bold; | |
| color: var(--accent-blue); | |
| } | |
| .stat-label { | |
| color: var(--text-secondary); | |
| font-size: 0.9rem; | |
| margin-top: 0.5rem; | |
| } | |
| .score-breakdown { | |
| display: flex; | |
| justify-content: center; | |
| gap: 2rem; | |
| margin-top: 1rem; | |
| } | |
| .score-box { | |
| background: var(--bg-card); | |
| padding: 1rem 2rem; | |
| border-radius: 0.5rem; | |
| } | |
| .score-box .label { color: var(--text-secondary); font-size: 0.8rem; } | |
| .score-box .value { font-size: 1.5rem; font-weight: bold; } | |
| .score-box.simple .value { color: var(--accent-green); } | |
| .score-box.complex .value { color: var(--accent-purple); } | |
| section { | |
| background: var(--bg-secondary); | |
| border-radius: 1rem; | |
| padding: 2rem; | |
| margin-bottom: 2rem; | |
| } | |
| section h2 { | |
| font-size: 1.5rem; | |
| margin-bottom: 1.5rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .section-intro { | |
| color: var(--text-secondary); | |
| margin-bottom: 1.5rem; | |
| font-size: 1rem; | |
| } | |
| .achievements-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); | |
| gap: 1rem; | |
| } | |
| .achievement { | |
| background: var(--bg-card); | |
| padding: 1rem; | |
| border-radius: 0.5rem; | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 1rem; | |
| } | |
| .achievement.locked { opacity: 0.4; } | |
| .achievement.silly { border: 1px dashed var(--accent-orange); } | |
| .achievement .icon { font-size: 2rem; } | |
| .achievement .details h3 { font-size: 1rem; margin-bottom: 0.25rem; } | |
| .achievement .details .quip { | |
| color: var(--text-secondary); | |
| font-size: 0.85rem; | |
| font-style: italic; | |
| } | |
| .roast-section { | |
| background: linear-gradient(135deg, #7c2d12 0%, #451a03 100%); | |
| border: 1px solid #f97316; | |
| } | |
| .roast-item { | |
| padding: 1rem; | |
| margin-bottom: 1rem; | |
| background: rgba(0,0,0,0.2); | |
| border-radius: 0.5rem; | |
| } | |
| .roast-item:last-child { margin-bottom: 0; } | |
| .footer { | |
| text-align: center; | |
| color: var(--text-secondary); | |
| padding: 2rem; | |
| font-size: 0.9rem; | |
| } | |
| /* CSS Bar Charts */ | |
| .chart-card { | |
| background: var(--bg-card); | |
| border-radius: 0.5rem; | |
| padding: 1rem; | |
| margin-bottom: 1rem; | |
| } | |
| .chart-title { | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| color: var(--text-secondary); | |
| text-transform: uppercase; | |
| margin-bottom: 0.75rem; | |
| } | |
| .bar-row { | |
| display: flex; | |
| align-items: center; | |
| margin-bottom: 0.4rem; | |
| } | |
| .bar-label { | |
| width: 120px; | |
| font-size: 0.75rem; | |
| color: var(--text-secondary); | |
| flex-shrink: 0; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .bar-track { | |
| flex: 1; | |
| height: 6px; | |
| background: var(--bg-secondary); | |
| border-radius: 3px; | |
| margin: 0 0.5rem; | |
| } | |
| .bar-fill { | |
| height: 100%; | |
| border-radius: 3px; | |
| } | |
| .bar-value { | |
| width: 50px; | |
| font-size: 0.75rem; | |
| font-weight: 500; | |
| color: var(--text-secondary); | |
| text-align: right; | |
| } | |
| /* Score Journey Table */ | |
| .score-table { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.5rem; | |
| } | |
| .score-row { | |
| display: flex; | |
| align-items: center; | |
| padding: 0.5rem; | |
| background: var(--bg-card); | |
| border-radius: 0.4rem; | |
| } | |
| .score-row.header { | |
| background: transparent; | |
| font-weight: 600; | |
| font-size: 0.75rem; | |
| color: var(--text-secondary); | |
| text-transform: uppercase; | |
| } | |
| .score-row.best { | |
| background: rgba(34, 197, 94, 0.15); | |
| border: 1px solid var(--accent-green); | |
| } | |
| .score-row-label { | |
| width: 200px; | |
| flex-shrink: 0; | |
| font-size: 0.85rem; | |
| } | |
| .score-bars { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 0.25rem; | |
| } | |
| .score-row.header .score-bars { | |
| flex-direction: row; | |
| justify-content: space-between; | |
| padding: 0 1rem; | |
| } | |
| .simple-label { color: var(--accent-green); } | |
| .complex-label { color: var(--accent-purple); } | |
| .score-bar { | |
| height: 1.25rem; | |
| border-radius: 0.25rem; | |
| display: flex; | |
| align-items: center; | |
| justify-content: flex-end; | |
| padding-right: 0.5rem; | |
| font-size: 0.75rem; | |
| font-weight: 600; | |
| color: white; | |
| } | |
| .score-bar.simple { background: var(--accent-green); } | |
| .score-bar.complex { background: var(--accent-purple); } | |
| .fun-ending { | |
| background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%); | |
| border: 1px solid #fbbf24; | |
| border-radius: 1rem; | |
| padding: 1.5rem 2rem; | |
| margin-top: 2rem; | |
| text-align: center; | |
| } | |
| .fun-headline { | |
| font-size: 1.1rem; | |
| font-weight: 600; | |
| color: #78350f; | |
| margin-bottom: 0.5rem; | |
| } | |
| .fun-detail { | |
| font-size: 0.9rem; | |
| color: #92400e; | |
| } | |
| /* Architecture Section */ | |
| .arch-section { | |
| background: linear-gradient(135deg, #1e3a5f 0%, #0f172a 100%); | |
| border: 1px solid var(--accent-blue); | |
| } | |
| .arch-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); | |
| gap: 1.5rem; | |
| } | |
| .arch-card { | |
| background: rgba(0,0,0,0.3); | |
| border-radius: 0.5rem; | |
| padding: 1rem; | |
| } | |
| .arch-card h3 { | |
| font-size: 0.9rem; | |
| color: var(--accent-blue); | |
| margin-bottom: 0.75rem; | |
| display: flex; | |
| align-items: center; | |
| gap: 0.5rem; | |
| } | |
| .arch-card ul { | |
| list-style: none; | |
| padding: 0; | |
| } | |
| .arch-card li { | |
| padding: 0.25rem 0; | |
| font-size: 0.85rem; | |
| color: var(--text-secondary); | |
| } | |
| .arch-card li.strength { color: var(--accent-green); } | |
| .arch-card li.concern { color: var(--accent-orange); } | |
| .arch-card li::before { margin-right: 0.5rem; } | |
| .arch-card li.strength::before { content: ""; } | |
| .arch-card li.concern::before { content: ""; } | |
| .pattern-tags { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 0.5rem; | |
| } | |
| .pattern-tag { | |
| background: var(--bg-card); | |
| padding: 0.25rem 0.5rem; | |
| border-radius: 0.25rem; | |
| font-size: 0.75rem; | |
| color: var(--text-secondary); | |
| } | |
| .git-stats { | |
| display: flex; | |
| gap: 2rem; | |
| margin-bottom: 1rem; | |
| } | |
| .git-stat { | |
| text-align: center; | |
| } | |
| .git-stat .value { | |
| font-size: 1.5rem; | |
| font-weight: bold; | |
| color: var(--accent-blue); | |
| } | |
| .git-stat .label { | |
| font-size: 0.75rem; | |
| color: var(--text-secondary); | |
| } | |
| .at-a-glance { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); | |
| gap: 1rem; | |
| margin-bottom: 1.5rem; | |
| } | |
| .glance-card { | |
| background: var(--bg-card); | |
| padding: 1rem; | |
| border-radius: 0.5rem; | |
| } | |
| .glance-card h3 { | |
| font-size: 0.85rem; | |
| color: var(--accent-blue); | |
| margin-bottom: 0.5rem; | |
| } | |
| .glance-card p { | |
| font-size: 0.9rem; | |
| color: var(--text-secondary); | |
| } | |
| .experiment-list { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); | |
| gap: 1rem; | |
| } | |
| .experiment-card { | |
| background: var(--bg-card); | |
| padding: 1rem; | |
| border-radius: 0.5rem; | |
| } | |
| .experiment-card.helped { | |
| border-left: 3px solid var(--accent-green); | |
| } | |
| .experiment-card.hurt { | |
| border-left: 3px solid #ef4444; | |
| } | |
| .experiment-card h4 { | |
| font-size: 0.9rem; | |
| margin-bottom: 0.5rem; | |
| } | |
| .experiment-card .delta { | |
| font-size: 0.8rem; | |
| margin-bottom: 0.25rem; | |
| } | |
| .experiment-card .delta.positive { color: var(--accent-green); } | |
| .experiment-card .delta.negative { color: #ef4444; } | |
| .experiment-card .note { | |
| font-size: 0.8rem; | |
| color: var(--text-secondary); | |
| font-style: italic; | |
| } | |
| .hidden { display: none; } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="container"> | |
| <header class="hero"> | |
| <h1>Fin Hackathon Insights</h1> | |
| <p class="subtitle">serenafritsch's journey</p> | |
| <div class="stats-grid"> | |
| <div class="stat-card"> | |
| <div class="stat-value">15.07</div> | |
| <div class="stat-label">Best Total Score</div> | |
| </div> | |
| <div class="stat-card"> | |
| <div class="stat-value">30+</div> | |
| <div class="stat-label">Hypotheses Tested</div> | |
| </div> | |
| <div class="stat-card"> | |
| <div class="stat-value">5</div> | |
| <div class="stat-label">Sessions</div> | |
| </div> | |
| <div class="stat-card"> | |
| <div class="stat-value">52</div> | |
| <div class="stat-label">Commits</div> | |
| </div> | |
| </div> | |
| <div class="score-breakdown"> | |
| <div class="score-box simple"> | |
| <div class="label">Best Simple</div> | |
| <div class="value">8.06</div> | |
| </div> | |
| <div class="score-box complex"> | |
| <div class="label">Best Complex</div> | |
| <div class="value">7.30</div> | |
| </div> | |
| </div> | |
| <p style="margin-top: 1.5rem; color: var(--text-secondary);"> | |
| "The scientific approach to RAG optimization: 30 hypotheses, 15 principles, and one glorious spreadsheet." | |
| </p> | |
| </header> | |
| <section> | |
| <h2>At a Glance</h2> | |
| <div class="at-a-glance"> | |
| <div class="glance-card"> | |
| <h3>What's Working</h3> | |
| <p>Your semantic weight boost to 0.50 nailed it for simple questions (8.06). The "assertive, no hedging" prompt style delivers consistent gains across both question types (+0.68 simple, +0.99 complex). Temperature 0.8 found the sweet spot.</p> | |
| </div> | |
| <div class="glance-card"> | |
| <h3>What Backfired</h3> | |
| <p>You discovered 16 ways to make things worse! Highlights: 1000 char snippets (-0.83 simple), 35 candidates to reranker (-0.86 complex), and the "enhanced synthesis rule" that spectacularly backfired (-0.51 complex). Sometimes less is more.</p> | |
| </div> | |
| <div class="glance-card"> | |
| <h3>Key Insight</h3> | |
| <p>Over-constraining the LLM hurts more than it helps. Every additional prompt rule, extra context, or stricter guideline degraded performance. The model works best when given room to synthesize naturally.</p> | |
| </div> | |
| <div class="glance-card"> | |
| <h3>The Journey</h3> | |
| <p>Started with structured experiments, systematically tested retrieval weights, context sizes, and prompt variations. Built a comprehensive CLAUDE.md documenting every finding. Reached 8.0+ simple by trusting semantics over keywords.</p> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="arch-section"> | |
| <h2>Architecture Review</h2> | |
| <p class="section-intro">You didn't just call an API - you built a real RAG pipeline.</p> | |
| <div class="arch-grid"> | |
| <div class="arch-card"> | |
| <h3>Retrieval Stack</h3> | |
| <ul> | |
| <li>Hybrid retrieval: semantic + TF-IDF + title + entity matching</li> | |
| <li>Multi-chunk scoring (70% best + 30% second-best)</li> | |
| <li>Language detection with same-language boost</li> | |
| <li>Custom tokenization for BM25</li> | |
| </ul> | |
| </div> | |
| <div class="arch-card"> | |
| <h3>Re-ranking</h3> | |
| <ul> | |
| <li>Cross-encoder re-ranking (ms-marco-MiniLM)</li> | |
| <li>25 candidates narrowed to top 7</li> | |
| <li>Confidence threshold for low-match detection</li> | |
| </ul> | |
| </div> | |
| <div class="arch-card"> | |
| <h3>Answer Generation</h3> | |
| <ul> | |
| <li>Conditional two-pass refinement (artifact detection)</li> | |
| <li>LLM artifact cleaning with regex fallback</li> | |
| <li>Citation validation for source attribution</li> | |
| <li>Temperature tuning per question type</li> | |
| </ul> | |
| </div> | |
| <div class="arch-card"> | |
| <h3>Question Analysis</h3> | |
| <ul> | |
| <li>Multi-turn conversation extraction</li> | |
| <li>Query normalization (filler removal)</li> | |
| <li>Intent classification (on/off topic)</li> | |
| <li>Complexity detection heuristics</li> | |
| <li>Tone detection (formal/casual/neutral)</li> | |
| </ul> | |
| </div> | |
| <div class="arch-card"> | |
| <h3>Strengths</h3> | |
| <ul> | |
| <li class="strength">Excellent documentation in CLAUDE.md - a scientific record of experiments</li> | |
| <li class="strength">Systematic approach: baseline, hypothesis, measure, document</li> | |
| <li class="strength">Clean separation of retrieval, ranking, and generation</li> | |
| <li class="strength">Multiple fallback paths for robustness</li> | |
| </ul> | |
| </div> | |
| <div class="arch-card"> | |
| <h3>Friendly Suggestions</h3> | |
| <ul> | |
| <li class="concern">complexity routing didn't match ground truth - maybe LLM-based detection?</li> | |
| <li class="concern">Could try different embedding models for semantic search</li> | |
| <li class="concern">The off-topic detector is quite conservative</li> | |
| </ul> | |
| </div> | |
| </div> | |
| <p style="margin-top: 1rem; color: var(--text-secondary); font-style: italic;"> | |
| "You built INTERCOM_ENTITIES with 35 product terms, wrote score_paragraph() with stemming and phrase matching, and even implemented simple_stem() for suffix stripping. That's commitment to the craft." | |
| </p> | |
| </section> | |
| <section> | |
| <h2>Score Journey</h2> | |
| <p class="section-intro">Your scores evolved through experimentation. Simple (green) was more stable; Complex (purple) was your battleground.</p> | |
| <div class="score-table"> | |
| <div class="score-row header"> | |
| <div class="score-row-label">Experiment</div> | |
| <div class="score-bars"> | |
| <span class="simple-label">Simple</span> | |
| <span class="complex-label">Complex</span> | |
| </div> | |
| </div> | |
| <div class="score-row"> | |
| <div class="score-row-label">Baseline (7 articles, 1500 char)</div> | |
| <div class="score-bars"> | |
| <div class="score-bar simple" style="width: 78.4%;">7.84</div> | |
| <div class="score-bar complex" style="width: 71.6%;">7.16</div> | |
| </div> | |
| </div> | |
| <div class="score-row best"> | |
| <div class="score-row-label">Semantic weight 0.50</div> | |
| <div class="score-bars"> | |
| <div class="score-bar simple" style="width: 80.1%;">8.01</div> | |
| <div class="score-bar complex" style="width: 70.1%;">7.01</div> | |
| </div> | |
| </div> | |
| <div class="score-row best"> | |
| <div class="score-row-label">Temperature 0.8</div> | |
| <div class="score-bars"> | |
| <div class="score-bar simple" style="width: 80.6%;">8.06</div> | |
| <div class="score-bar complex" style="width: 66.4%;">6.64</div> | |
| </div> | |
| </div> | |
| <div class="score-row"> | |
| <div class="score-row-label">Temp routing 1.0/0.3</div> | |
| <div class="score-bars"> | |
| <div class="score-bar simple" style="width: 79.3%;">7.93</div> | |
| <div class="score-bar complex" style="width: 73.0%;">7.30</div> | |
| </div> | |
| </div> | |
| <div class="score-row"> | |
| <div class="score-row-label">35 candidates (disaster)</div> | |
| <div class="score-bars"> | |
| <div class="score-bar simple" style="width: 77.2%;">7.72</div> | |
| <div class="score-bar complex" style="width: 61.6%;">6.16</div> | |
| </div> | |
| </div> | |
| <div class="score-row"> | |
| <div class="score-row-label">1000 char snippets (oops)</div> | |
| <div class="score-bars"> | |
| <div class="score-bar simple" style="width: 70.0%;">7.00</div> | |
| <div class="score-bar complex" style="width: 68.4%;">6.84</div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <section> | |
| <h2>The Experiment Lab</h2> | |
| <p class="section-intro">30+ hypotheses tested. Here are the highlights.</p> | |
| <h3 style="color: var(--accent-green); margin: 1.5rem 0 1rem;">What Helped</h3> | |
| <div class="experiment-list"> | |
| <div class="experiment-card helped"> | |
| <h4>Assertive prompt (no hedging)</h4> | |
| <div class="delta positive">Simple: +0.68 | Complex: +0.99</div> | |
| <div class="note">Major improvement from baseline - confidence matters</div> | |
| </div> | |
| <div class="experiment-card helped"> | |
| <h4>Tone OFF + no artifact rule</h4> | |
| <div class="delta positive">Simple: +0.32 | Complex: +0.09</div> | |
| <div class="note">Best combined effect - less constraints = better</div> | |
| </div> | |
| <div class="experiment-card helped"> | |
| <h4>Semantic weight 0.50</h4> | |
| <div class="delta positive">Simple: +0.17 | Complex: -0.15</div> | |
| <div class="note">NEW BEST for simple! Trade-off accepted.</div> | |
| </div> | |
| <div class="experiment-card helped"> | |
| <h4>7 articles (vs 5)</h4> | |
| <div class="delta positive">Complex: +0.70</div> | |
| <div class="note">Complex questions need more context</div> | |
| </div> | |
| </div> | |
| <h3 style="color: #ef4444; margin: 1.5rem 0 1rem;">What Hurt</h3> | |
| <div class="experiment-list"> | |
| <div class="experiment-card hurt"> | |
| <h4>1000 char snippets</h4> | |
| <div class="delta negative">Simple: -0.83 | Complex: -0.33</div> | |
| <div class="note">Loses critical context - don't skimp on snippets</div> | |
| </div> | |
| <div class="experiment-card hurt"> | |
| <h4>35 candidates to reranker</h4> | |
| <div class="delta negative">Simple: -0.29 | Complex: -0.86</div> | |
| <div class="note">More candidates = more noise for reranker</div> | |
| </div> | |
| <div class="experiment-card hurt"> | |
| <h4>Enhanced synthesis rule</h4> | |
| <div class="delta negative">Simple: -0.17 | Complex: -0.51</div> | |
| <div class="note">Over-specifying backfires badly</div> | |
| </div> | |
| <div class="experiment-card hurt"> | |
| <h4>Sonnet instead of Opus</h4> | |
| <div class="delta negative">Simple: -0.44 | Complex: -0.43</div> | |
| <div class="note">Quality matters. Opus wins decisively.</div> | |
| </div> | |
| <div class="experiment-card hurt"> | |
| <h4>Minimal 5-rule prompt</h4> | |
| <div class="delta negative">Simple: -0.47 | Complex: -0.57</div> | |
| <div class="note">Went too minimal - lost important guardrails</div> | |
| </div> | |
| </div> | |
| </section> | |
| <section> | |
| <h2>Battle Stats</h2> | |
| <div class="stats-grid"> | |
| <div class="stat-card"> | |
| <div class="stat-value">52</div> | |
| <div class="stat-label">Git Commits</div> | |
| </div> | |
| <div class="stat-card"> | |
| <div class="stat-value">5</div> | |
| <div class="stat-label">Active Days</div> | |
| </div> | |
| <div class="stat-card"> | |
| <div class="stat-value">121</div> | |
| <div class="stat-label">Messages Across Sessions</div> | |
| </div> | |
| <div class="stat-card"> | |
| <div class="stat-value">15</div> | |
| <div class="stat-label">Key Principles Documented</div> | |
| </div> | |
| </div> | |
| <div class="chart-card"> | |
| <div class="chart-title">Activity by Day</div> | |
| <div class="bar-row"> | |
| <div class="bar-label">Jan 27</div> | |
| <div class="bar-track"><div class="bar-fill" style="width: 42%; background: var(--accent-blue);"></div></div> | |
| <div class="bar-value">10 commits</div> | |
| </div> | |
| <div class="bar-row"> | |
| <div class="bar-label">Jan 28</div> | |
| <div class="bar-track"><div class="bar-fill" style="width: 67%; background: var(--accent-blue);"></div></div> | |
| <div class="bar-value">16 commits</div> | |
| </div> | |
| <div class="bar-row"> | |
| <div class="bar-label">Feb 5</div> | |
| <div class="bar-track"><div class="bar-fill" style="width: 100%; background: var(--accent-green);"></div></div> | |
| <div class="bar-value">24 commits</div> | |
| </div> | |
| <div class="bar-row"> | |
| <div class="bar-label">Feb 6</div> | |
| <div class="bar-track"><div class="bar-fill" style="width: 4%; background: var(--accent-blue);"></div></div> | |
| <div class="bar-value">1 commit</div> | |
| </div> | |
| </div> | |
| </section> | |
| <section> | |
| <h2>Achievements</h2> | |
| <p class="section-intro">Badges earned through blood, sweat, and LLM tokens.</p> | |
| <div class="achievements-grid"> | |
| <div class="achievement"> | |
| <div class="icon">π§ͺ</div> | |
| <div class="details"> | |
| <h3>Hypothesis Machine</h3> | |
| <div class="quip">"Science is just organized curiosity." - 30+ approaches tested</div> | |
| </div> | |
| </div> | |
| <div class="achievement"> | |
| <div class="icon">π¬</div> | |
| <div class="details"> | |
| <h3>Score Surgeon</h3> | |
| <div class="quip">"Precision improvements, one decimal at a time." - 5+ score improvements</div> | |
| </div> | |
| </div> | |
| <div class="achievement"> | |
| <div class="icon">π</div> | |
| <div class="details"> | |
| <h3>Prompt Whisperer</h3> | |
| <div class="quip">"Words matter. Yours mattered more." - 10+ prompt variations</div> | |
| </div> | |
| </div> | |
| <div class="achievement"> | |
| <div class="icon">π</div> | |
| <div class="details"> | |
| <h3>Marathon Runner</h3> | |
| <div class="quip">"Persistence beats resistance." - 52 commits across 5 days</div> | |
| </div> | |
| </div> | |
| <div class="achievement silly"> | |
| <div class="icon">π</div> | |
| <div class="details"> | |
| <h3>Scope Creep Survivor</h3> | |
| <div class="quip">"TF-IDF? BM25? Embeddings? Cross-encoder? Yes." - You tried it all</div> | |
| </div> | |
| </div> | |
| <div class="achievement silly"> | |
| <div class="icon">π</div> | |
| <div class="details"> | |
| <h3>Confidence Destroyer</h3> | |
| <div class="quip">"Sometimes you have to go backwards to... keep going backwards." - 35 candidates experiment (-0.86)</div> | |
| </div> | |
| </div> | |
| </div> | |
| </section> | |
| <section class="roast-section"> | |
| <h2>The Roast Corner</h2> | |
| <div class="roast-item"> | |
| <strong>The Documentation Obsession</strong><br> | |
| You documented 15 "key principles" and created detailed tables for every experiment outcome. Your CLAUDE.md is longer than some people's entire codebase. At some point, you stopped optimizing the bot and started optimizing the spreadsheet. | |
| </div> | |
| <div class="roast-item"> | |
| <strong>The Great Candidate Massacre</strong><br> | |
| You bumped candidates from 25 to 35 thinking "more options = better answers" and watched Complex scores plummet by 0.86 points. That's not a hypothesis test, that's a controlled demolition. | |
| </div> | |
| <div class="roast-item"> | |
| <strong>The Semantic Weight Journey</strong><br> | |
| 0.40... 0.50... 0.55... back to 0.50. You spent two days discovering that 0.50 was pretty good all along. But hey, at least now you KNOW it's good. | |
| </div> | |
| </section> | |
| <div class="fun-ending"> | |
| <div class="fun-headline">The Verdict</div> | |
| <div class="fun-detail"> | |
| You approached this hackathon like a real ML engineer: systematic experimentation, rigorous documentation, and the wisdom to know when "good enough" is actually optimal. Your CLAUDE.md is now a reference guide for "how to not destroy your RAG scores." That's real contribution. | |
| </div> | |
| </div> | |
| <footer class="footer"> | |
| <p>Generated by fin-hackathon-insights | 2026-02-06 20:51:29</p> | |
| <p>Good luck in the hackathon!</p> | |
| </footer> | |
| </div> | |
| </body> | |
| </html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment