<?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: Swayam Takkamore</title>
    <description>The latest articles on DEV Community by Swayam Takkamore (@swayamtakkamore).</description>
    <link>https://dev.to/swayamtakkamore</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%2F532133%2Fd8c623cb-6587-4d03-95a5-c82ecef23b36.png</url>
      <title>DEV Community: Swayam Takkamore</title>
      <link>https://dev.to/swayamtakkamore</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/swayamtakkamore"/>
    <language>en</language>
    <item>
      <title>I Built My Friend Kritika a Project Mentor That Runs on Local Gemma</title>
      <dc:creator>Swayam Takkamore</dc:creator>
      <pubDate>Mon, 05 Oct 2026 06:57:13 +0000</pubDate>
      <link>https://dev.to/swayamtakkamore/i-built-my-friend-kritika-a-project-mentor-that-runs-on-local-gemma-2amc</link>
      <guid>https://dev.to/swayamtakkamore/i-built-my-friend-kritika-a-project-mentor-that-runs-on-local-gemma-2amc</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 Line Nobody Warns You About
&lt;/h2&gt;

&lt;p&gt;You know the one. It shows up on basically every job post:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Experience with real-world projects required."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I'm a student too, so I've seen it from the inside. You can ace every exam and still have nothing to point at. Tutorials end the second the video does. Real work is messier: there are tasks, blockers, deadlines, and (if you're lucky) someone you can ask when you're stuck.&lt;/p&gt;

&lt;p&gt;That gap is what &lt;strong&gt;SkillPilot&lt;/strong&gt; is about. And I built it for my friend &lt;strong&gt;Kritika&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Short Version
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Built for&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;My friend Kritika&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;The problem&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Students have grades but nothing that looks like real project experience&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What it is&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;An AI-powered learning platform that simulates real industry workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;The open-source bit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Gemma&lt;/strong&gt;, an open-weight model, running &lt;strong&gt;locally in my backend&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Built with&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Next.js 14 · Express + TypeScript · Flutter · MongoDB Atlas&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  So What Does It Actually Do?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;If you're a student&lt;/strong&gt;, it works like a tiny, friendly workplace:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tell it what you're into and how comfortable you are.&lt;/strong&gt; It hands you a real-feeling project: a title, a description, a difficulty level, a suggested tech stack, &lt;strong&gt;5–8 concrete tasks&lt;/strong&gt; and a deadline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Work the board.&lt;/strong&gt; Tasks live on a Kanban board (To Do, In Progress, Done), and your progress updates automatically as you move cards across.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask the mentor when you're stuck.&lt;/strong&gt; It's an AI chat that knows which project you're in, so you get help with &lt;em&gt;your&lt;/em&gt; thing, not a generic answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finish and show it off.&lt;/strong&gt; When the project's done, SkillPilot writes a portfolio entry, a skills summary and &lt;strong&gt;resume-ready bullet points&lt;/strong&gt;. You get a public page at &lt;code&gt;/portfolio/[username]&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;If you're a recruiter&lt;/strong&gt;, you can browse and filter student profiles, open the projects and technologies behind them, and run an AI skill analysis that breaks a student's abilities down by category.&lt;/p&gt;

&lt;p&gt;And every bit of AI in there runs on &lt;strong&gt;Gemma, locally in my backend&lt;/strong&gt;. No closed API anywhere.&lt;/p&gt;




&lt;h2&gt;
  
  
  Poke Around the Repo
&lt;/h2&gt;

&lt;p&gt;It's a monorepo. This is what the &lt;code&gt;web/&lt;/code&gt; side looks like when I &lt;code&gt;ls&lt;/code&gt; around:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SkillPilot/web$ ls
backend  frontend

SkillPilot/web/frontend$ ls
next.config.js  next-env.d.ts  package.json  package-lock.json  postcss.config.js  src  tailwind.config.ts  tsconfig.json

SkillPilot/web/backend$ ls
node_modules  package.json  package-lock.json  src  tsconfig.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There's also a &lt;code&gt;mobile/&lt;/code&gt; Flutter app and a &lt;code&gt;docs/&lt;/code&gt; folder (architecture, setup, API notes) at the repo root.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A quick honesty note:&lt;/strong&gt; SkillPilot has a bit of a backstory. It began as a prototype for the TechmentorX Hackathon. What I'm writing about here is the current version, where the AI layer runs on open-weight Gemma locally in the backend.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It's Put Together
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; Next.js 16 (web)  ───┐
                      ├──►  Express + TypeScript API  ──►  AI service layer  ──►  Local Gemma
 Flutter (mobile)  ───┘              │
                                     └──►  MongoDB Atlas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The AI calls live in their own service layer in the backend, separate from the route controllers. Controllers just ask it for a &lt;em&gt;project&lt;/em&gt;, a &lt;em&gt;mentor reply&lt;/em&gt;, a &lt;em&gt;portfolio&lt;/em&gt; or a &lt;em&gt;skill score&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;What I used&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Web&lt;/td&gt;
&lt;td&gt;Next.js 14, TypeScript, Tailwind, Zustand, Framer Motion&lt;/td&gt;
&lt;td&gt;Quick dashboards, a public portfolio route, simple state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API&lt;/td&gt;
&lt;td&gt;Node.js, Express, TypeScript, Mongoose&lt;/td&gt;
&lt;td&gt;Typed all the way through, fast to iterate on&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mobile&lt;/td&gt;
&lt;td&gt;Flutter, Provider, Material 3&lt;/td&gt;
&lt;td&gt;One codebase, and students live on their phones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Database&lt;/td&gt;
&lt;td&gt;MongoDB Atlas&lt;/td&gt;
&lt;td&gt;Projects, tasks, chats and portfolios are all document-shaped&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auth&lt;/td&gt;
&lt;td&gt;JWT access + refresh tokens, bcrypt, httpOnly cookies&lt;/td&gt;
&lt;td&gt;Boring, safe defaults&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Gemma (open-weight), run locally&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Open weights I control, and no per-request cost&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The API
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/api/auth/signup&lt;/code&gt; · &lt;code&gt;/api/auth/login&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Accounts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/api/projects/generate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;AI-generated project&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PATCH&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/api/tasks/:projectId/:taskId/status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Move a Kanban card&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/api/chat/:projectId&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Project-scoped mentor chat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/api/projects/:id/portfolio&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Portfolio and resume bullets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GET&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/api/recruiter/students&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Browse talent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POST&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/api/recruiter/students/:id/skill-score&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;AI skill analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  How Gemma pulls its weight
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Project generation is a contract, not a chat.&lt;/strong&gt; The Kanban board has to render whatever the AI sends back, so the output has to follow a shape (simplified):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"difficulty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"beginner | intermediate | advanced"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"techStack"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tasks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"deadline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ISO date"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;The mentor knows where you are.&lt;/strong&gt; &lt;code&gt;POST /api/chat/:projectId&lt;/code&gt; ties every conversation to one project, so answers are about what you're actually building.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Portfolios write themselves.&lt;/strong&gt; When a project is finished, the AI looks at the project and its tasks and turns them into a summary, the skills you picked up, and resume bullets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skill scores are a starting point, not a verdict.&lt;/strong&gt; Scoring a person is the most sensitive thing SkillPilot does. The score is there to help a recruiter dig into a student's real projects, not to replace looking at them.&lt;/p&gt;




&lt;h2&gt;
  
  
  Want to Run It?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Backend&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;web/backend
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env     &lt;span class="c"&gt;# add your credentials&lt;/span&gt;
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev              &lt;span class="c"&gt;# http://localhost:5000&lt;/span&gt;

&lt;span class="c"&gt;# Frontend&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;web/frontend
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env.local
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev              &lt;span class="c"&gt;# http://localhost:3000&lt;/span&gt;

&lt;span class="c"&gt;# Mobile&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;mobile
flutter pub get
flutter run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;More detailed setup lives in &lt;code&gt;docs/setup.md&lt;/code&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%2Fcoma9nif8lfp52ga978t.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%2Fcoma9nif8lfp52ga978t.png" alt=" " width="800" height="460"&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%2Fhix0bi26xrb7yfpbs5s6.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%2Fhix0bi26xrb7yfpbs5s6.png" alt=" " width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Open (and Local) Matters Here
&lt;/h2&gt;

&lt;p&gt;The challenge asks where going open actually beats going closed. For SkillPilot, it's these five things.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The AI lives on my backend, not someone else's.&lt;/strong&gt;&lt;br&gt;
People think twice about sharing unfinished project ideas, "why doesn't my code work?" questions, and skill scores with their name on them. With Gemma, &lt;strong&gt;inference happens on hardware I control&lt;/strong&gt;, so those prompts and answers don't get sent to a third-party model API. To be precise, the app's data is stored in MongoDB Atlas. Local Gemma keeps the &lt;em&gt;model side&lt;/em&gt; in my hands, and I'd rather claim exactly that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Students can't pay per token.&lt;/strong&gt;&lt;br&gt;
A mentor is only useful if you can ask the hundredth question without watching a meter. Local inference means &lt;strong&gt;no per-request cost and no model API key to rotate or leak.&lt;/strong&gt; It doesn't get pricier when more students show up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The model isn't wired into everything.&lt;/strong&gt;&lt;br&gt;
Since the AI calls sit in one service layer, upgrading or swapping the model stays contained to one place. I'm not at the mercy of one vendor's pricing, deprecations or surprise model updates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Scoring people deserves something you can inspect.&lt;/strong&gt;&lt;br&gt;
A system that evaluates students for recruiters should sit on something you can examine and test. Open weights let me poke at how the scorer behaves instead of treating it as a black box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. The honest trade-off.&lt;/strong&gt;&lt;br&gt;
A local open model is smaller than the biggest hosted ones. I'm fine with that for a product aimed at students: cheaper, more private on the model side, and fully in my control.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Closed API&lt;/th&gt;
&lt;th&gt;Local Gemma (SkillPilot)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Prompts leave my backend&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost per request&lt;/td&gt;
&lt;td&gt;Per token&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Swap or upgrade the model&lt;/td&gt;
&lt;td&gt;Vendor decides&lt;/td&gt;
&lt;td&gt;I decide&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Needs a model API key&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Raw capability ceiling&lt;/td&gt;
&lt;td&gt;Higher&lt;/td&gt;
&lt;td&gt;Lower&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Where I'd Take It Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Get SkillPilot in front of more students and fix whatever confuses them.&lt;/li&gt;
&lt;li&gt;Show recruiters &lt;em&gt;why&lt;/em&gt; a skill score came out the way it did.&lt;/li&gt;
&lt;li&gt;Try other open models behind the same AI service layer.&lt;/li&gt;
&lt;/ul&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, an open-weight model &lt;strong&gt;run locally in my backend&lt;/strong&gt;, powers every AI feature: project generation, the project-scoped mentor, portfolio writing and skill scoring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas:&lt;/strong&gt; Atlas is the data layer behind an app built on an open-weight model. It stores users, projects, task state, chat history and portfolios.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Before You Go
&lt;/h2&gt;

&lt;p&gt;Building for one person is a good constraint. Every feature has to earn its place by being useful to someone real, and for SkillPilot that someone is Kritika.&lt;/p&gt;

&lt;p&gt;If you've mentored a junior, or you &lt;em&gt;were&lt;/em&gt; the student with the empty portfolio, I'd love to hear what finally got you from "I've learned things" to "I've built something." Tell me in the comments. 👇&lt;/p&gt;

&lt;p&gt;Did this project with my friend as a teammate - &lt;a class="mentioned-user" href="https://dev.to/aniket937"&gt;@aniket937&lt;/a&gt; &lt;/p&gt;

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