<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Harsh Tuli</title>
    <description>The latest articles on DEV Community by Harsh Tuli (@452harsh).</description>
    <link>https://dev.to/452harsh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4159262%2F05b9386b-5ffe-4b2e-a171-184f0463c540.png</url>
      <title>DEV Community: Harsh Tuli</title>
      <link>https://dev.to/452harsh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/452harsh"/>
    <language>en</language>
    <item>
      <title>Patternwise: Stop Grinding. Start Learning Patterns. Your Open-Source AI Interview Coach.</title>
      <dc:creator>Harsh Tuli</dc:creator>
      <pubDate>Sun, 04 Oct 2026 10:30:39 +0000</pubDate>
      <link>https://dev.to/452harsh/patternwise-the-ai-coach-that-says-dont-solve-another-problem-yet-59oc</link>
      <guid>https://dev.to/452harsh/patternwise-the-ai-coach-that-says-dont-solve-another-problem-yet-59oc</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Patternwise&lt;/strong&gt; is a DSA and System Design practice workspace with an &lt;strong&gt;AI interview coach&lt;/strong&gt; built on open-weight Gemma models. It answers one question every morning:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Given everything I've practised so far, what should I learn, revise, or practise today?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I built it for &lt;strong&gt;Nikhil&lt;/strong&gt;, a friend from my office who recently started preparing for interviews.&lt;/p&gt;

&lt;p&gt;When he started, he jumped between multiple websites and couldn't keep track of his progress across them. Some sites only cover DSA, others only System Design, but today's interviews expect &lt;strong&gt;both&lt;/strong&gt;. And even within one site, a list of hundreds of problems tells you what you've done, not what to do next: &lt;em&gt;Is sliding window still weak? Should I learn something new, or redo what I failed last week?&lt;/em&gt; It never tells you to &lt;strong&gt;stop&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So I built one place for both DSA and System Design (HLD and LLD), with an AI coach on top that looks at everything he's practised and tells him what to work on today. Now he can just open it and practise.&lt;/p&gt;

&lt;p&gt;Patternwise does three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tracks practice by pattern, not by problem.&lt;/strong&gt; There are 27 topics, 112 patterns and 364 curated LeetCode problems, plus 77 System Design concepts, 35 HLD/LLD patterns and 34 design problems. Every attempt records the result (solved, needed hints, failed), confidence, time, and your own mistake notes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Computes what matters today&lt;/strong&gt;, with a deterministic recommendation engine. Each pattern gets an explainable priority built from six signals: weakness, revisions due, time since practice, interview importance, variation coverage and recent trend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Coaches you through it&lt;/strong&gt; with Gemma. The model explains the plan using your own data, answers "why do I keep failing this?", gives progressive hints without spoiling the solution, checks your explanations, and plays a realistic interviewer that asks follow-up questions instead of teaching.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The feature I'm proudest of: &lt;strong&gt;the coach knows when &lt;em&gt;not&lt;/em&gt; to give you another problem.&lt;/strong&gt; If you keep failing the same idea across different problems, it says so:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Don't solve another problem yet.&lt;/strong&gt; You've struggled with &lt;em&gt;Variable Window: Longest Valid&lt;/em&gt; on 4 different problems recently. Spend 10 minutes on the invariant, then try one guided problem.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's the difference between a coach and a problem generator.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fygdt30b4burv5z2ip553.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fygdt30b4burv5z2ip553.png" alt="Today's plan: the coach says don't solve another problem yet" width="800" height="959"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/GUohwBH8fTg" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://patternwise.onrender.com" rel="noopener noreferrer"&gt;https://patternwise.onrender.com&lt;/a&gt; · password: &lt;code&gt;patternwise-demo&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The demo account has three weeks of realistic practice history: strong hashing, a sliding-window pattern that keeps going wrong, an overdue binary search, and a System Design concept with slipping ratings. That way you can see the coach react to real signals. Try:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI Coach → Today's Plan:&lt;/strong&gt; the priority badge shows exactly how each score was calculated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask Coach:&lt;/strong&gt; "Why do I keep struggling with sliding window?" The answer quotes the mistake notes from the history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interview Mode → System Design → Design a URL Shortener:&lt;/strong&gt; answer a few questions, then &lt;em&gt;End &amp;amp; get feedback&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk5q6tnjngqhpm1qtfoli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk5q6tnjngqhpm1qtfoli.png" alt="How a priority is calculated" width="800" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg10dwahqf4kw30sduidg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg10dwahqf4kw30sduidg.png" alt="Interviewer feedback after a mock System Design interview" width="800" height="944"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/452Harsh" rel="noopener noreferrer"&gt;
        452Harsh
      &lt;/a&gt; / &lt;a href="https://github.com/452Harsh/patternwise" rel="noopener noreferrer"&gt;
        patternwise
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Pattern-first DSA preparation workspace: curated curriculum, spaced-repetition revision and progress analytics (Next.js + MongoDB)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Patternwise&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/452Harsh/patternwise/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/452Harsh/patternwise/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A personal, pattern-first preparation workspace for &lt;strong&gt;DSA&lt;/strong&gt; (data structures and algorithms) and &lt;strong&gt;System Design&lt;/strong&gt; (HLD and LLD). It combines a curated curriculum with a tracker built around recognition, spaced-repetition revision, daily plans, notes, workspaces and analytics, plus an &lt;strong&gt;AI interview coach&lt;/strong&gt; that runs on open-weight models and answers: &lt;em&gt;"Given everything I've practised, what should I do today?"&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;It's built with Next.js 16, React 19 and TypeScript, styled with Tailwind CSS v4 and shadcn/ui on Base UI, and stores data in MongoDB. It's a single-user app that you sign in to with a password.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Most practice tracking is a checklist of problems. Patternwise is organised around the &lt;strong&gt;pattern&lt;/strong&gt; instead: how to recognise it, the core idea, a template, variations, pitfalls and where else it applies. Every solve, review and note feeds a spaced-repetition schedule, so things you're shaky on come back before you forget them. System Design gets the…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/452Harsh/patternwise" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; Next.js 16 (App Router), React 19, TypeScript, Tailwind v4 and shadcn/ui; MongoDB Atlas (data plus vector search); deployed on &lt;strong&gt;Render&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open-source AI:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Where it runs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Coaching, hints, interviewer&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Gemma 4 26B-A4B&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Google AI Studio (production)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same, fully local&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Gemma 4 E2B&lt;/strong&gt; (QAT, 4.3 GB)&lt;/td&gt;
&lt;td&gt;Ollama on my 8 GB M1, about 28 tokens/s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retrieval embeddings&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;EmbeddingGemma&lt;/strong&gt; (768-d)&lt;/td&gt;
&lt;td&gt;Hugging Face Inference (production) or Ollama (local)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The rule that shaped everything: the engine decides, the model explains
&lt;/h3&gt;

&lt;p&gt;Small open models are good at explanation and dialogue. They're bad at arithmetic over a user's history, and they'll happily invent "you've solved 12 sliding-window problems". So I split the work:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgcoz5f1ihn1gj93n8o8c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgcoz5f1ihn1gj93n8o8c.png" alt="How Patternwise works: the engine decides, Gemma explains." width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;The engine&lt;/strong&gt; (&lt;code&gt;lib/coach/&lt;/code&gt;) is plain, pure TypeScript and fully tested:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For each pattern it computes success over the last 21 days (hints count half), failures, confidence, due reviews, staleness, per-difficulty results, and variation coverage. Every curated problem teaches one variation, so "10 solved but only 1 variation" is detectable.&lt;/li&gt;
&lt;li&gt;From those facts it picks an action (&lt;em&gt;review the concept, revise, strengthen, broaden, level up, learn&lt;/em&gt;) and a difficulty move (&lt;em&gt;harder, easier, back to fundamentals&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;For System Design it also spots concepts you &lt;strong&gt;studied but never applied&lt;/strong&gt; in a design problem.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;stop rule&lt;/strong&gt; fires on 3+ shaky attempts across 2+ problems with mostly failed recent attempts. Then it recommends one guided problem, not five more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Gemma&lt;/strong&gt; gets those facts as structured text, plus retrieved curriculum. It runs under strict rules: every user-specific claim must come from the supplied data, and if the data doesn't say, it says it doesn't know. The server recomputes all facts from MongoDB on every request, so the browser can't feed the model made-up stats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RAG on MongoDB Atlas Vector Search:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Indexing:&lt;/strong&gt; 649 curriculum documents are embedded with EmbeddingGemma (patterns with signals, templates and pitfalls; problems; HLD/LLD concepts, patterns and problems). They live in a &lt;code&gt;knowledge&lt;/code&gt; collection with a &lt;code&gt;knowledge_vector&lt;/code&gt; index filtered by module.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search quality:&lt;/strong&gt; retrieval maps unseen problems to the right pattern. "Longest substring without repeating characters" lands on &lt;em&gt;Variable Window&lt;/em&gt;, and "sorted rotated array minimum" lands on &lt;em&gt;Rotated Binary Search&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fallbacks:&lt;/strong&gt; if the Atlas index isn't ready it falls back to in-memory cosine, and if the embedding model is down it falls back to keyword search. The coach never just breaks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;DSA and System Design stay separate.&lt;/strong&gt; Every coach request is scoped to one module, so a System Design answer never drags in your DSA history, and vice versa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It closes the loop.&lt;/strong&gt; Interview results, "explain it back" scores, and practice logged anywhere in the app feed straight back into tomorrow's plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Things I had to solve:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemma 4's inline reasoning:&lt;/strong&gt; on Google's endpoint it always streams its reasoning as &lt;code&gt;&amp;lt;thought&amp;gt;…&amp;lt;/thought&amp;gt;&lt;/code&gt;, and switching that off isn't supported for this model. I wrote a small stream filter that drops the block, even when a tag is split across chunks, and adds token headroom so the answer isn't cut short.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Different embedding vectors:&lt;/strong&gt; EmbeddingGemma from Ollama and from Hugging Face produce different vectors for the same text (cosine ≈ 0.71). The indexer records which embedding model built the index and flags "index needed" when the provider changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing the engine:&lt;/strong&gt; 34 checks cover the stop rule, revision priority, difficulty moves, time budgets, and that SD data never leaks into DSA. They run in &lt;strong&gt;GitHub Actions CI&lt;/strong&gt; on every push, alongside lint, type-checking, curriculum integrity checks and the production build.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;For an interview coach, open models aren't a philosophy point. They decide &lt;strong&gt;who can use it&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It runs on a laptop, for free.&lt;/strong&gt; The exact same coach runs on Gemma 4 E2B through Ollama on an 8 GB MacBook Air, with EmbeddingGemma for search and MongoDB on localhost: no API keys, no bill. A config switch moves it over, and I checked that while it answers, the app, database and model make &lt;strong&gt;zero connections outside localhost&lt;/strong&gt; (it's in the video at 2:45). Anyone who can't afford a paid prep subscription gets the same coach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your preparation data stays yours.&lt;/strong&gt; Your failures, mistake notes and mock-interview debriefs are personal. With a local model they never leave your machine. Even in the hosted version, the vector store holds &lt;strong&gt;only curriculum content&lt;/strong&gt;; progress and conversations are never indexed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swapping models is a config change, not a rewrite.&lt;/strong&gt; All model calls go through a tiny provider interface. I developed on Gemma 4 E2B locally, deployed on Gemma 4 26B-A4B, and could point it at a GPU server running E4B or 31B by changing two environment variables. No vendor lock-in, no rewrite when pricing or terms change.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The open model made the honest design possible.&lt;/strong&gt; Because I control the model and the prompt pipeline end to end, I could put a deterministic engine in charge and give Gemma a clear, checkable job. That's why every number on the screen has an explanation behind it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open models keep it free to run.&lt;/strong&gt; Open Gemma on free tiers, MongoDB Atlas and Render keep running costs at about zero. A closed API would turn a personal study tool into a monthly bill.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What Nikhil said&lt;/strong&gt; after trying it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Honestly, I really liked the concept behind [Patternwise]. Instead of just solving hundreds of random DSA questions, it focuses more on understanding the patterns. I feel that once you know the pattern, you can approach and solve a lot of different questions on your own, rather than just remembering solutions.&lt;/p&gt;

&lt;p&gt;I also liked the way the preparation is structured with a proper timeline, so it's easier to know what to focus on and when. The System Design part is also really helpful because it covers both LLD and HLD. Overall, I think it's a much more practical way to prepare for interviews instead of just going through a huge list of problems."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's exactly the shift I was going for: from &lt;em&gt;how many problems have I solved?&lt;/em&gt; to &lt;em&gt;which patterns do I actually understand?&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I built Patternwise with an AI coding agent, &lt;strong&gt;Claude Code&lt;/strong&gt;, as my pair programmer. I set the direction: what Nikhil needed, the features, the design decisions, and what to cut. I also tested every step in the browser. The agent wrote and refactored most of the code with me, ran the checks, and debugged the issues we hit along the way, like Gemma 4's inline reasoning tags and the embedding mismatch between Ollama and Hugging Face.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma:&lt;/strong&gt; Gemma 4 26B-A4B powers all coaching, hints and interviews in production; Gemma 4 E2B runs the same app fully locally; EmbeddingGemma powers retrieval.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render:&lt;/strong&gt; the whole app (the coach's front end and API) is deployed on Render as a Blueprint (&lt;code&gt;render.yaml&lt;/code&gt;). The repo also includes an optional Render Blueprint that self-hosts Gemma via Ollama behind a key-checking proxy (&lt;code&gt;deploy/render-ollama&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas:&lt;/strong&gt; Atlas is the data layer for all progress, sessions and plans, and &lt;strong&gt;Atlas Vector Search&lt;/strong&gt; retrieves the curriculum for every grounded answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of ElevenLabs:&lt;/strong&gt; the demo video's narration is generated with ElevenLabs (voice "Eric"), split per scene and timed to the footage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot:&lt;/strong&gt; GitHub Actions CI runs lint, type-checking, curriculum integrity, the 34 coach-engine checks and the production build on every push, plus a weekly job that re-verifies all 364 LeetCode links.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
      <category>hacktoberfest</category>
    </item>
  </channel>
</rss>
