Mehdi commited on
Commit ·
7a3f6e0
1
Parent(s): e70cc5e
move: team section to Chapter 01, right after the intro
Browse files- blog/index.html +52 -52
blog/index.html
CHANGED
|
@@ -403,9 +403,54 @@ footer { position: relative; z-index: 1; max-width: 1060px; margin: 0 auto; padd
|
|
| 403 |
|
| 404 |
<p class="reveal">So we built <strong>PaperProf</strong>: drop in any course PDF and it becomes your personal professor. It reads the material, generates exam-style questions from it, grades your answers like a patient tutor, and paints you a parting image when you finish. Everything runs on free infrastructure with <strong>zero external API calls</strong>. No OpenAI key, no rate limits, no data leaving the machine.</p>
|
| 405 |
|
| 406 |
-
<section class="chapter reveal" id="
|
| 407 |
<span class="ghost" aria-hidden="true">01</span>
|
| 408 |
<span class="kicker">Chapter 01</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 409 |
<h2>What it does</h2>
|
| 410 |
</section>
|
| 411 |
|
|
@@ -419,8 +464,8 @@ footer { position: relative; z-index: 1; max-width: 1060px; margin: 0 auto; padd
|
|
| 419 |
<p class="reveal">The whole loop runs on <strong>MiniCPM4-8B</strong>, an open-weight 8B model loaded once and shared between question generation and answer evaluation. PyMuPDF extracts the text, a chunker splits it into thematic sections, and the model picks up from there.</p>
|
| 420 |
|
| 421 |
<section class="chapter reveal" id="real-story">
|
| 422 |
-
<span class="ghost" aria-hidden="true">
|
| 423 |
-
<span class="kicker">Chapter
|
| 424 |
<h2>What the git log actually says</h2>
|
| 425 |
</section>
|
| 426 |
|
|
@@ -517,8 +562,8 @@ footer { position: relative; z-index: 1; max-width: 1060px; margin: 0 auto; padd
|
|
| 517 |
<p class="reveal">And with French source PDFs, the model kept drifting into French. Polite instructions lost to the gravitational pull of the context. What finally worked: <code>IMPORTANT: Always write in English</code>, stated twice, top and bottom of the prompt. With 8B models, subtlety is wasted. Repetition is a feature.</p>
|
| 518 |
|
| 519 |
<section class="chapter reveal" id="takeaways">
|
| 520 |
-
<span class="ghost" aria-hidden="true">
|
| 521 |
-
<span class="kicker">Chapter
|
| 522 |
<h2>What we'd tell past us</h2>
|
| 523 |
</section>
|
| 524 |
|
|
@@ -531,8 +576,8 @@ footer { position: relative; z-index: 1; max-width: 1060px; margin: 0 auto; padd
|
|
| 531 |
</ol>
|
| 532 |
|
| 533 |
<section class="chapter reveal" id="stack">
|
| 534 |
-
<span class="ghost" aria-hidden="true">
|
| 535 |
-
<span class="kicker">Chapter
|
| 536 |
<h2>The stack</h2>
|
| 537 |
</section>
|
| 538 |
|
|
@@ -550,51 +595,6 @@ footer { position: relative; z-index: 1; max-width: 1060px; margin: 0 auto; padd
|
|
| 550 |
</table>
|
| 551 |
</div>
|
| 552 |
|
| 553 |
-
<section class="chapter reveal" id="team">
|
| 554 |
-
<span class="ghost" aria-hidden="true">05</span>
|
| 555 |
-
<span class="kicker">Chapter 05</span>
|
| 556 |
-
<h2>The team</h2>
|
| 557 |
-
</section>
|
| 558 |
-
|
| 559 |
-
<p class="reveal">PaperProf was built by two EPITA students who spent ten days arguing with Gradio so you don't have to.</p>
|
| 560 |
-
|
| 561 |
-
<div class="team reveal">
|
| 562 |
-
<article class="member">
|
| 563 |
-
<div class="member-photo"><img src="assets/ryad.jpg" alt="Portrait of Ryad Gazenay" loading="lazy" width="640" height="640"></div>
|
| 564 |
-
<div class="member-info">
|
| 565 |
-
<span class="role">Co-creator</span>
|
| 566 |
-
<h4>Ryad Gazenay</h4>
|
| 567 |
-
<div class="member-links">
|
| 568 |
-
<a href="https://github.com/ryadg-kura" target="_blank" rel="noopener" aria-label="Ryad Gazenay on GitHub">
|
| 569 |
-
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
|
| 570 |
-
GitHub
|
| 571 |
-
</a>
|
| 572 |
-
<a href="https://www.linkedin.com/in/ryad-gazenay/" target="_blank" rel="noopener" aria-label="Ryad Gazenay on LinkedIn">
|
| 573 |
-
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M14.5 0h-13C.67 0 0 .67 0 1.5v13c0 .83.67 1.5 1.5 1.5h13c.83 0 1.5-.67 1.5-1.5v-13c0-.83-.67-1.5-1.5-1.5zM4.74 13.64H2.38V6.04h2.36v7.6zM3.56 5c-.76 0-1.37-.62-1.37-1.38S2.8 2.25 3.56 2.25s1.37.62 1.37 1.37S4.32 5 3.56 5zm10.08 8.64h-2.36V9.94c0-.88-.02-2.02-1.23-2.02-1.23 0-1.42.96-1.42 1.95v3.77H6.27V6.04h2.27v1.04h.03c.32-.6 1.09-1.23 2.24-1.23 2.39 0 2.83 1.57 2.83 3.62v4.17z"/></svg>
|
| 574 |
-
LinkedIn
|
| 575 |
-
</a>
|
| 576 |
-
</div>
|
| 577 |
-
</div>
|
| 578 |
-
</article>
|
| 579 |
-
<article class="member">
|
| 580 |
-
<div class="member-photo"><img src="assets/mehdi.jpg" alt="Portrait of Mehdi Azouz" loading="lazy" width="640" height="640"></div>
|
| 581 |
-
<div class="member-info">
|
| 582 |
-
<span class="role">Co-creator</span>
|
| 583 |
-
<h4>Mehdi Azouz</h4>
|
| 584 |
-
<div class="member-links">
|
| 585 |
-
<a href="https://github.com/gitmehdii" target="_blank" rel="noopener" aria-label="Mehdi Azouz on GitHub">
|
| 586 |
-
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
|
| 587 |
-
GitHub
|
| 588 |
-
</a>
|
| 589 |
-
<a href="https://www.linkedin.com/in/mehdi-azouz-b3b537300/" target="_blank" rel="noopener" aria-label="Mehdi Azouz on LinkedIn">
|
| 590 |
-
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M14.5 0h-13C.67 0 0 .67 0 1.5v13c0 .83.67 1.5 1.5 1.5h13c.83 0 1.5-.67 1.5-1.5v-13c0-.83-.67-1.5-1.5-1.5zM4.74 13.64H2.38V6.04h2.36v7.6zM3.56 5c-.76 0-1.37-.62-1.37-1.38S2.8 2.25 3.56 2.25s1.37.62 1.37 1.37S4.32 5 3.56 5zm10.08 8.64h-2.36V9.94c0-.88-.02-2.02-1.23-2.02-1.23 0-1.42.96-1.42 1.95v3.77H6.27V6.04h2.27v1.04h.03c.32-.6 1.09-1.23 2.24-1.23 2.39 0 2.83 1.57 2.83 3.62v4.17z"/></svg>
|
| 591 |
-
LinkedIn
|
| 592 |
-
</a>
|
| 593 |
-
</div>
|
| 594 |
-
</div>
|
| 595 |
-
</article>
|
| 596 |
-
</div>
|
| 597 |
-
|
| 598 |
</main>
|
| 599 |
|
| 600 |
<section class="cta">
|
|
|
|
| 403 |
|
| 404 |
<p class="reveal">So we built <strong>PaperProf</strong>: drop in any course PDF and it becomes your personal professor. It reads the material, generates exam-style questions from it, grades your answers like a patient tutor, and paints you a parting image when you finish. Everything runs on free infrastructure with <strong>zero external API calls</strong>. No OpenAI key, no rate limits, no data leaving the machine.</p>
|
| 405 |
|
| 406 |
+
<section class="chapter reveal" id="team">
|
| 407 |
<span class="ghost" aria-hidden="true">01</span>
|
| 408 |
<span class="kicker">Chapter 01</span>
|
| 409 |
+
<h2>The team</h2>
|
| 410 |
+
</section>
|
| 411 |
+
|
| 412 |
+
<p class="reveal">PaperProf was built by two EPITA students who spent ten days arguing with Gradio so you don't have to.</p>
|
| 413 |
+
|
| 414 |
+
<div class="team reveal">
|
| 415 |
+
<article class="member">
|
| 416 |
+
<div class="member-photo"><img src="assets/ryad.jpg" alt="Portrait of Ryad Gazenay" width="640" height="640"></div>
|
| 417 |
+
<div class="member-info">
|
| 418 |
+
<span class="role">Co-creator</span>
|
| 419 |
+
<h4>Ryad Gazenay</h4>
|
| 420 |
+
<div class="member-links">
|
| 421 |
+
<a href="https://github.com/ryadg-kura" target="_blank" rel="noopener" aria-label="Ryad Gazenay on GitHub">
|
| 422 |
+
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
|
| 423 |
+
GitHub
|
| 424 |
+
</a>
|
| 425 |
+
<a href="https://www.linkedin.com/in/ryad-gazenay/" target="_blank" rel="noopener" aria-label="Ryad Gazenay on LinkedIn">
|
| 426 |
+
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M14.5 0h-13C.67 0 0 .67 0 1.5v13c0 .83.67 1.5 1.5 1.5h13c.83 0 1.5-.67 1.5-1.5v-13c0-.83-.67-1.5-1.5-1.5zM4.74 13.64H2.38V6.04h2.36v7.6zM3.56 5c-.76 0-1.37-.62-1.37-1.38S2.8 2.25 3.56 2.25s1.37.62 1.37 1.37S4.32 5 3.56 5zm10.08 8.64h-2.36V9.94c0-.88-.02-2.02-1.23-2.02-1.23 0-1.42.96-1.42 1.95v3.77H6.27V6.04h2.27v1.04h.03c.32-.6 1.09-1.23 2.24-1.23 2.39 0 2.83 1.57 2.83 3.62v4.17z"/></svg>
|
| 427 |
+
LinkedIn
|
| 428 |
+
</a>
|
| 429 |
+
</div>
|
| 430 |
+
</div>
|
| 431 |
+
</article>
|
| 432 |
+
<article class="member">
|
| 433 |
+
<div class="member-photo"><img src="assets/mehdi.jpg" alt="Portrait of Mehdi Azouz" width="640" height="640"></div>
|
| 434 |
+
<div class="member-info">
|
| 435 |
+
<span class="role">Co-creator</span>
|
| 436 |
+
<h4>Mehdi Azouz</h4>
|
| 437 |
+
<div class="member-links">
|
| 438 |
+
<a href="https://github.com/gitmehdii" target="_blank" rel="noopener" aria-label="Mehdi Azouz on GitHub">
|
| 439 |
+
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
|
| 440 |
+
GitHub
|
| 441 |
+
</a>
|
| 442 |
+
<a href="https://www.linkedin.com/in/mehdi-azouz-b3b537300/" target="_blank" rel="noopener" aria-label="Mehdi Azouz on LinkedIn">
|
| 443 |
+
<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M14.5 0h-13C.67 0 0 .67 0 1.5v13c0 .83.67 1.5 1.5 1.5h13c.83 0 1.5-.67 1.5-1.5v-13c0-.83-.67-1.5-1.5-1.5zM4.74 13.64H2.38V6.04h2.36v7.6zM3.56 5c-.76 0-1.37-.62-1.37-1.38S2.8 2.25 3.56 2.25s1.37.62 1.37 1.37S4.32 5 3.56 5zm10.08 8.64h-2.36V9.94c0-.88-.02-2.02-1.23-2.02-1.23 0-1.42.96-1.42 1.95v3.77H6.27V6.04h2.27v1.04h.03c.32-.6 1.09-1.23 2.24-1.23 2.39 0 2.83 1.57 2.83 3.62v4.17z"/></svg>
|
| 444 |
+
LinkedIn
|
| 445 |
+
</a>
|
| 446 |
+
</div>
|
| 447 |
+
</div>
|
| 448 |
+
</article>
|
| 449 |
+
</div>
|
| 450 |
+
|
| 451 |
+
<section class="chapter reveal" id="what-it-does">
|
| 452 |
+
<span class="ghost" aria-hidden="true">02</span>
|
| 453 |
+
<span class="kicker">Chapter 02</span>
|
| 454 |
<h2>What it does</h2>
|
| 455 |
</section>
|
| 456 |
|
|
|
|
| 464 |
<p class="reveal">The whole loop runs on <strong>MiniCPM4-8B</strong>, an open-weight 8B model loaded once and shared between question generation and answer evaluation. PyMuPDF extracts the text, a chunker splits it into thematic sections, and the model picks up from there.</p>
|
| 465 |
|
| 466 |
<section class="chapter reveal" id="real-story">
|
| 467 |
+
<span class="ghost" aria-hidden="true">03</span>
|
| 468 |
+
<span class="kicker">Chapter 03</span>
|
| 469 |
<h2>What the git log actually says</h2>
|
| 470 |
</section>
|
| 471 |
|
|
|
|
| 562 |
<p class="reveal">And with French source PDFs, the model kept drifting into French. Polite instructions lost to the gravitational pull of the context. What finally worked: <code>IMPORTANT: Always write in English</code>, stated twice, top and bottom of the prompt. With 8B models, subtlety is wasted. Repetition is a feature.</p>
|
| 563 |
|
| 564 |
<section class="chapter reveal" id="takeaways">
|
| 565 |
+
<span class="ghost" aria-hidden="true">04</span>
|
| 566 |
+
<span class="kicker">Chapter 04</span>
|
| 567 |
<h2>What we'd tell past us</h2>
|
| 568 |
</section>
|
| 569 |
|
|
|
|
| 576 |
</ol>
|
| 577 |
|
| 578 |
<section class="chapter reveal" id="stack">
|
| 579 |
+
<span class="ghost" aria-hidden="true">05</span>
|
| 580 |
+
<span class="kicker">Chapter 05</span>
|
| 581 |
<h2>The stack</h2>
|
| 582 |
</section>
|
| 583 |
|
|
|
|
| 595 |
</table>
|
| 596 |
</div>
|
| 597 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 598 |
</main>
|
| 599 |
|
| 600 |
<section class="cta">
|