<?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: Sanvi Naik</title>
    <description>The latest articles on DEV Community by Sanvi Naik (@sanvi_naik_34794e9b4928cb).</description>
    <link>https://dev.to/sanvi_naik_34794e9b4928cb</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%2F4158186%2F23e2e059-de78-4244-9188-48ad3ddef757.png</url>
      <title>DEV Community: Sanvi Naik</title>
      <link>https://dev.to/sanvi_naik_34794e9b4928cb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sanvi_naik_34794e9b4928cb"/>
    <language>en</language>
    <item>
      <title>CP Compass: An AI Coach That Tracks How You Solve, Not Just What You Solve</title>
      <dc:creator>Sanvi Naik</dc:creator>
      <pubDate>Sun, 04 Oct 2026 09:15:32 +0000</pubDate>
      <link>https://dev.to/sanvi_naik_34794e9b4928cb/cp-compass-an-ai-coach-that-tracks-how-you-solve-not-just-what-you-solve-4g6m</link>
      <guid>https://dev.to/sanvi_naik_34794e9b4928cb/cp-compass-an-ai-coach-that-tracks-how-you-solve-not-just-what-you-solve-4g6m</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;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;The idea for CP Compass actually started before this challenge.&lt;br&gt;
It started with a &lt;strong&gt;45-day competitive programming challenge&lt;/strong&gt; in my college's CP club. We committed to solving at least one problem every day, but we didn't just want a streak. We wanted to know whether we were actually improving.&lt;/p&gt;

&lt;p&gt;So some of us started tracking everything in spreadsheets: problem name, rating, topics, what went wrong, and what we needed to revisit. It was useful information. Maintaining it was not.&lt;/p&gt;

&lt;p&gt;After every problem came another little chore- find the problem, copy its details, add the topics, and write another row.&lt;/p&gt;

&lt;p&gt;At first, we did it sincerely. Then came &lt;em&gt;"I'll update it later."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We kept solving. The spreadsheets didn't keep up. I was guilty of it too. One friend in particular and I kept coming back to the same problem: an &lt;code&gt;Accepted&lt;/code&gt; submission doesn't tell the full story.&lt;/p&gt;

&lt;p&gt;One AC might mean I saw the idea immediately and implemented it cleanly. Another might mean I spent forty minutes stuck, needed a hint, and finally got it working.&lt;/p&gt;

&lt;p&gt;Codeforces records both as solved. But when you're trying to improve, &lt;strong&gt;that difference matters.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So when this challenge asked me to build something for a friend, I came back to that exact frustration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I decided to build the tracker that the two of us would actually keep using.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet CP Compass
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CP Compass is an AI-powered competitive programming tracker that tracks not just what you solved, but how you solved it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Enter your Codeforces handle and your solved problems, ratings, and tags are imported automatically.&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%2F5borpavq8o9awwodmc9v.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%2F5borpavq8o9awwodmc9v.png" alt=" " width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, for each problem, record the part Codeforces can't know:&lt;/p&gt;

&lt;p&gt;🟢 &lt;strong&gt;Green&lt;/strong&gt; — Solved independently and cleanly&lt;br&gt;&lt;br&gt;
🟡 &lt;strong&gt;Yellow&lt;/strong&gt; — Knew the approach, but made an implementation/logical mistake&lt;br&gt;&lt;br&gt;
🔴 &lt;strong&gt;Red&lt;/strong&gt; — Couldn't derive the core idea without help  &lt;/p&gt;

&lt;p&gt;You can also add a short reflection about what went wrong.&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%2Fr382dr8bixv13kcafn56.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%2Fr382dr8bixv13kcafn56.png" alt=" " width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CP Compass combines these reflections with problem ratings and topics and passes them to an &lt;strong&gt;open-weight Qwen model&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The AI Coach looks for patterns in &lt;em&gt;why&lt;/em&gt; you're struggling and turns them into personalized practice recommendations.&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%2Fsgwquwih3jyapvm8vy5b.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%2Fsgwquwih3jyapvm8vy5b.png" alt=" " width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So instead of just knowing &lt;strong&gt;how many problems you solved&lt;/strong&gt;, you start understanding &lt;strong&gt;what is actually holding you back.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://cp-compass-eight.vercel.app/" rel="noopener noreferrer"&gt;https://cp-compass-eight.vercel.app/&lt;/a&gt;&lt;br&gt;
Here, try out my website!&lt;/p&gt;

&lt;p&gt;Enter a Codeforces handle → import solved problems → add a few reflections → run the &lt;strong&gt;AI Coach&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://github.com/sanvinaik/CP-Compass" rel="noopener noreferrer"&gt;https://github.com/sanvinaik/CP-Compass&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; React + Vite • FastAPI • SQLite • Codeforces API • Qwen3-14B • Hugging Face Inference Providers&lt;/p&gt;

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

&lt;p&gt;I designed CP Compass around one simple loop:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Import → Reflect → Analyze → Improve&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Import&lt;/strong&gt; — The FastAPI backend fetches solved problems, ratings, and tags from the Codeforces API.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reflect&lt;/strong&gt; — The user adds a Green/Yellow/Red status and an optional note. These reflections are stored in SQLite.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Analyze&lt;/strong&gt; — CP Compass combines the problem metadata with the user's solve quality and reflections.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improve&lt;/strong&gt; — This structured history is sent to &lt;strong&gt;Qwen3-14B&lt;/strong&gt;, an open-weight model accessed through Hugging Face Inference Providers. The AI Coach identifies recurring weaknesses and generates personalized practice recommendations.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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%2Fkd32cwfpps2pnfii5dlq.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%2Fkd32cwfpps2pnfii5dlq.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The frontend is built with &lt;strong&gt;React + Vite&lt;/strong&gt;, the API with &lt;strong&gt;FastAPI&lt;/strong&gt;, and the deployed app uses &lt;strong&gt;Vercel + Railway&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The AI isn't there just to add a chatbot, it's what turns a collection of individual solves into patterns the user can actually act on.&lt;/p&gt;

&lt;h2&gt;
  
  
  Development Process
&lt;/h2&gt;

&lt;p&gt;CP Compass was built over the weekend with &lt;strong&gt;ChatGPT-assisted development&lt;/strong&gt;. I used ChatGPT as a coding and debugging partner while working through implementation, frontend/backend integration, and deployment.&lt;/p&gt;

&lt;p&gt;The product idea, feature decisions, reflection system, and overall direction came from my experience with the 45-day CP challenge, with each part tested and iterated into the final working application.&lt;/p&gt;

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

&lt;p&gt;CP Compass uses &lt;strong&gt;Qwen3-14B&lt;/strong&gt;, an open-weight model, as its reasoning layer.&lt;/p&gt;

&lt;p&gt;For me, the biggest advantage of using an open model is &lt;strong&gt;freedom to evolve the AI without tying the entire product to one proprietary model or API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The current version uses Qwen through Hugging Face Inference Providers so that anyone can try the deployed app easily. But because the intelligence comes from an open-weight model, future versions could swap models, fine-tune one specifically for competitive programming coaching, or even move inference locally.&lt;/p&gt;

&lt;p&gt;That matters for CP Compass because its AI has a very specific job: reason over &lt;strong&gt;problem difficulty + topics + solve quality + personal reflections&lt;/strong&gt; and turn them into useful practice advice.&lt;/p&gt;

&lt;p&gt;Open innovation means I can keep experimenting with that layer as the project grows, rather than treating the AI as a black box I can't control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The model can change. The provider can change. The core idea doesn't have to.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Back to the Friend I Built It For
&lt;/h2&gt;

&lt;p&gt;CP Compass started with a problem my friend and I experienced during that 45-day challenge, so it felt fitting that the first person I wanted to give the finished version to was them.&lt;/p&gt;

&lt;p&gt;What began as:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"We really should update that spreadsheet..."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;eventually became a tool that imports the boring parts automatically, keeps the reflection that actually matters, and uses AI to turn it into something actionable. Here's what my friend said &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;bro this is literally what we needed during that 45 day challenge 😭 I remember we just stopped updating the excel after a point. importing everything directly makes it so much easier. also the green/yellow/red thing is actually useful because just seeing AC tells you nothing about how you solved it. AI analysis was pretty cool too, especially seeing which topics I keep struggling with&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;This is only the first version.&lt;/p&gt;

&lt;p&gt;I'd like to expand CP Compass with &lt;strong&gt;contest tracking, progress visualizations, more competitive programming platforms, and better analysis across ratings and topics&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The part I'm most interested in is making the AI Coach better at distinguishing &lt;em&gt;why&lt;/em&gt; someone couldn't solve a problem- missing knowledge, difficulty finding the observation, implementation mistakes, or simply attempting problems above their current level.&lt;/p&gt;

&lt;p&gt;But for now, CP Compass solves the problem that started all of this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We can keep solving problems without maintaining another Excel sheet afterward.&lt;/strong&gt;&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Build for a friend&lt;/li&gt;
&lt;/ul&gt;

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