<?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>Forem: Sarvesh</title>
    <description>The latest articles on Forem by Sarvesh (@sarveshofficial).</description>
    <link>https://forem.com/sarveshofficial</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3848661%2F8f53a4bb-a2f4-418b-a524-915b9c4d0cba.png</url>
      <title>Forem: Sarvesh</title>
      <link>https://forem.com/sarveshofficial</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sarveshofficial"/>
    <language>en</language>
    <item>
      <title>OpenClaw's Skills System: The npm Moment for Personal AI</title>
      <dc:creator>Sarvesh</dc:creator>
      <pubDate>Sun, 26 Apr 2026 02:35:07 +0000</pubDate>
      <link>https://forem.com/sarveshofficial/openclaws-skills-system-the-npm-moment-for-personal-ai-1ioi</link>
      <guid>https://forem.com/sarveshofficial/openclaws-skills-system-the-npm-moment-for-personal-ai-1ioi</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/openclaw-2026-04-16"&gt;OpenClaw Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  OpenClaw's Skills System: The npm Moment for Personal AI
&lt;/h1&gt;

&lt;p&gt;In 2010, npm didn't just give JavaScript a package manager. It gave &lt;br&gt;
developers a shared language for building on top of each other's work. &lt;br&gt;
Suddenly, you didn't reinvent authentication, date formatting, or HTTP &lt;br&gt;
clients — you just installed them. The ecosystem exploded overnight.&lt;/p&gt;

&lt;p&gt;I think OpenClaw's Skills system is having that exact same moment. &lt;br&gt;
Right now. And most people are sleeping on it.&lt;/p&gt;


&lt;h2&gt;
  
  
  What Are OpenClaw Skills, Really?
&lt;/h2&gt;

&lt;p&gt;On the surface, Skills sound simple: a directory with a &lt;code&gt;SKILL.md&lt;/code&gt; file &lt;br&gt;
containing metadata and instructions. That's it. No compiled binaries. &lt;br&gt;
No complex plugin APIs. Just Markdown that tells the agent what it can &lt;br&gt;
do and how to do it.&lt;/p&gt;

&lt;p&gt;But that simplicity is the point.&lt;/p&gt;

&lt;p&gt;Because Skills are plain text, anyone can write one. A developer, a &lt;br&gt;
healthcare professional, a founder who's never touched a terminal — if &lt;br&gt;
you can describe a workflow clearly, you can build a Skill. OpenClaw &lt;br&gt;
handles the execution.&lt;/p&gt;

&lt;p&gt;Here's what that looks like in practice:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-skill/
└── SKILL.md   ← instructions, metadata, tool usage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the entire surface area. Compare that to building a VS Code &lt;br&gt;
extension, an Obsidian plugin, or an npm package with proper TypeScript &lt;br&gt;
types, tests, and a publish pipeline. The barrier to contribution just &lt;br&gt;
dropped through the floor.&lt;/p&gt;




&lt;h2&gt;
  
  
  The npm Parallel
&lt;/h2&gt;

&lt;p&gt;When npm launched, it solved two problems at once:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Discovery&lt;/strong&gt; — find packages others built&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Composability&lt;/strong&gt; — chain them together into something bigger&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;OpenClaw Skills solve the same two problems for AI agents.&lt;/p&gt;

&lt;p&gt;ClawHub already hosts over 13,000 community Skills. There are Skills &lt;br&gt;
for web scraping, CRM integration, calendar management, health tracking, &lt;br&gt;
GitHub automation, and dozens of domains in between. You don't build &lt;br&gt;
from zero — you install, compose, and extend.&lt;/p&gt;

&lt;p&gt;And critically, just like npm packages, &lt;strong&gt;Skills are composable&lt;/strong&gt;. A &lt;br&gt;
well-designed Skill has clean inputs, predictable outputs, and defined &lt;br&gt;
failure modes. Chain them together and you get a workflow that would &lt;br&gt;
have taken weeks to build manually.&lt;/p&gt;

&lt;p&gt;One commenter in the OpenClaw community put it well:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Think hard about skill composability. A skill that chains cleanly &lt;br&gt;
into other skills tends to be far more useful in real agent workflows &lt;br&gt;
than a monolithic 'do everything' skill."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's npm wisdom applied to AI agents. It took the JavaScript &lt;br&gt;
ecosystem years to learn that lesson. The OpenClaw community is &lt;br&gt;
learning it in months.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why This Is Different From Every Other "Plugin System"
&lt;/h2&gt;

&lt;p&gt;Every AI product eventually builds a plugin system. ChatGPT had &lt;br&gt;
plugins. Claude has tools. Dozens of agent frameworks have their own &lt;br&gt;
extension APIs.&lt;/p&gt;

&lt;p&gt;What makes OpenClaw Skills different is &lt;strong&gt;ownership and portability&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Your Skills live on your machine. They're not locked inside a vendor's &lt;br&gt;
marketplace, subject to approval processes or deprecation notices. You &lt;br&gt;
can write a Skill today, share it as a GitHub Gist, and someone on the &lt;br&gt;
other side of the world can install it tomorrow — no platform &lt;br&gt;
intermediary required.&lt;/p&gt;

&lt;p&gt;This is the open-source ethos applied to AI capabilities. It's what &lt;br&gt;
made npm work. It's what made the Linux ecosystem work. And it's &lt;br&gt;
exactly what the personal AI space has been missing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Inflection Point
&lt;/h2&gt;

&lt;p&gt;npm crossed 1,000 packages in 2011. It crossed 1,000,000 in 2016. The &lt;br&gt;
growth wasn't linear — it was exponential, because each new package &lt;br&gt;
made the ecosystem more useful, which attracted more developers, which &lt;br&gt;
produced more packages.&lt;/p&gt;

&lt;p&gt;OpenClaw Skills are at the 2011 moment. 13,000+ Skills sounds like a &lt;br&gt;
lot, but it's nothing compared to where this is heading. The primitives &lt;br&gt;
are right. The community is energized. The barrier to contribution is &lt;br&gt;
genuinely low.&lt;/p&gt;

&lt;p&gt;If you've been watching OpenClaw from the sidelines, the Skills system &lt;br&gt;
is the reason to stop watching and start building. Not because the &lt;br&gt;
agent runtime is impressive — it is — but because the ecosystem you &lt;br&gt;
contribute to today will compound in value for years.&lt;/p&gt;

&lt;p&gt;That's the npm lesson. And OpenClaw is living it in real time.&lt;/p&gt;




</description>
      <category>devchallenge</category>
      <category>openclawchallenge</category>
      <category>ai</category>
      <category>openclaw</category>
    </item>
    <item>
      <title>EcoChat — AI Sustainability Advisor for Earth Day 🌿</title>
      <dc:creator>Sarvesh</dc:creator>
      <pubDate>Sun, 19 Apr 2026 06:52:08 +0000</pubDate>
      <link>https://forem.com/sarveshofficial/ecochat-ai-sustainability-advisor-for-earth-day-4n77</link>
      <guid>https://forem.com/sarveshofficial/ecochat-ai-sustainability-advisor-for-earth-day-4n77</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-04-16"&gt;Weekend Challenge: Earth Day Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;EcoChat&lt;/strong&gt; is an AI-powered sustainability chatbot that gives practical, &lt;br&gt;
actionable eco-friendly advice tailored to students and residents of &lt;br&gt;
Coimbatore, Tamil Nadu, India.&lt;/p&gt;

&lt;p&gt;Most sustainability apps are built for Western audiences — tips like &lt;br&gt;
"drive an electric car" don't apply here. EcoChat knows about local &lt;br&gt;
Coimbatore markets, Tamil Nadu government schemes, and campus life at KPRIET.&lt;/p&gt;

&lt;p&gt;🌍 &lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://ecochat-rho.vercel.app" rel="noopener noreferrer"&gt;https://ecochat-rho.vercel.app&lt;/a&gt;&lt;br&gt;&lt;br&gt;
💻 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/sarveshm555/EcoChat" rel="noopener noreferrer"&gt;https://github.com/sarveshm555/EcoChat&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;Try it live at &lt;strong&gt;&lt;a href="https://ecochat-rho.vercel.app" rel="noopener noreferrer"&gt;https://ecochat-rho.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Get a free Gemini API key at &lt;a href="https://aistudio.google.com/apikey" rel="noopener noreferrer"&gt;aistudio.google.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Paste it in the bar at the top&lt;/li&gt;
&lt;li&gt;Ask "How do I reduce plastic at home?"&lt;/li&gt;
&lt;li&gt;Upload a photo of any trash item or product label 📷&lt;/li&gt;
&lt;li&gt;Click "I'll commit to this!" and watch the counter go up ✅&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/sarveshm555/EcoChat" rel="noopener noreferrer"&gt;https://github.com/sarveshm555/EcoChat&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React + Vite — frontend&lt;/li&gt;
&lt;li&gt;Google Gemini 2.5 Flash — AI responses + image analysis&lt;/li&gt;
&lt;li&gt;Vercel — deployment&lt;/li&gt;
&lt;/ul&gt;




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

&lt;h3&gt;
  
  
  Google Gemini 2.5 Flash — used in 3 ways
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Text chat with hyper-local context&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The secret sauce is the system prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You are EcoChat, a sustainability advisor for students in Coimbatore, &lt;br&gt;
Tamil Nadu. When relevant, mention local initiatives, Tamil Nadu &lt;br&gt;
government schemes, and campus-specific suggestions."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This makes every response feel genuinely useful rather than generic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Multimodal image analysis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Users can upload a photo of trash or a product label. Gemini identifies &lt;br&gt;
whether it's recyclable, how to dispose of it properly, and mentions &lt;br&gt;
local Coimbatore recycling options.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Dynamic Earth Day tip generator&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On every page load, a separate Gemini API call generates a fresh, &lt;br&gt;
surprising eco fact relevant to India — so the app always feels alive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;💬 Multi-turn AI chat with Coimbatore-specific knowledge&lt;/li&gt;
&lt;li&gt;📷 Image recognition for trash and product labels&lt;/li&gt;
&lt;li&gt;✅ Commitment tracker — "I'll commit to this!" button with live counter&lt;/li&gt;
&lt;li&gt;💡 Gemini-generated Earth Day fact on every page load&lt;/li&gt;
&lt;li&gt;📱 Fully mobile responsive&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why hyper-local?
&lt;/h3&gt;

&lt;p&gt;Generic sustainability advice ignores local context. By telling Gemini &lt;br&gt;
about Coimbatore specifically, the app gives tips like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Many Coimbatore markets accept cloth bags"&lt;/li&gt;
&lt;li&gt;"Collect AC condensate water for plants"&lt;/li&gt;
&lt;li&gt;"Use city buses for regular commutes"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes EcoChat genuinely useful for our community.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;Best Use of Google Gemini&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I used Gemini 2.5 Flash for three distinct features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-turn text chat with a custom hyper-local system prompt&lt;/li&gt;
&lt;li&gt;Multimodal image analysis of trash and product labels&lt;/li&gt;
&lt;li&gt;Dynamic Earth Day tip generation on page load&lt;/li&gt;
&lt;/ul&gt;




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

&lt;ul&gt;
&lt;li&gt;Gemini's multimodal API is surprisingly easy — image analysis took 
less than 20 lines of code&lt;/li&gt;
&lt;li&gt;Hyper-local system prompts dramatically improve response quality&lt;/li&gt;
&lt;li&gt;Small UX details like the commit button transform a passive chatbot 
into an active accountability tool&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>gemini</category>
      <category>sustainability</category>
    </item>
    <item>
      <title>Do Not Press -- an extremely important button that you should not press</title>
      <dc:creator>Sarvesh</dc:creator>
      <pubDate>Sat, 11 Apr 2026 13:17:16 +0000</pubDate>
      <link>https://forem.com/sarveshofficial/do-not-press-an-extremely-important-button-that-you-should-not-press-1hj2</link>
      <guid>https://forem.com/sarveshofficial/do-not-press-an-extremely-important-button-that-you-should-not-press-1hj2</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/aprilfools-2026"&gt;DEV April Fools Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built a button. One button. A big, red, very important button that says &lt;strong&gt;DO NOT PRESS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It does nothing. There is no easter egg. There is no secret. There is no reward. There is only the button, your poor decisions, and a Regret Level meter that fills up every time you make the wrong choice — which is every time you press it.&lt;/p&gt;

&lt;p&gt;Why did I build this? That's the wrong question. The right question is: why did YOU press it?&lt;/p&gt;

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

&lt;p&gt;🔴 &lt;strong&gt;Try it live: &lt;a href="https://sarvesh555.neocities.org/do_not_press_button" rel="noopener noreferrer"&gt;https://sarvesh555.neocities.org/do_not_press_button&lt;/a&gt;&lt;/strong&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.amazonaws.com%2Fuploads%2Farticles%2F2b8kz14vzobobb8ab4s3.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.amazonaws.com%2Fuploads%2Farticles%2F2b8kz14vzobobb8ab4s3.png" alt=" " width="727" height="789"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;The entire project is a single HTML file. No framework. No dependencies. No npm install. No build step. No CI/CD pipeline. No cloud infrastructure. Just a button, some JavaScript, and 25 handcrafted messages of escalating disappointment.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- The most important part --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"big-btn"&lt;/span&gt; &lt;span class="na"&gt;onclick=&lt;/span&gt;&lt;span class="s"&gt;"pressIt()"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;DO NOT&lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;PRESS&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;pressIt()&lt;/code&gt; function:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Increments a counter&lt;/li&gt;
&lt;li&gt;Displays a new consequence message (there are 25)&lt;/li&gt;
&lt;li&gt;Updates the Regret Level meter&lt;/li&gt;
&lt;li&gt;Judges you via an escalating verdict system&lt;/li&gt;
&lt;li&gt;Changes the page title after 10, 20, and 30 presses&lt;/li&gt;
&lt;li&gt;Files a complaint with HR on your behalf&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;HTML, CSS, and vanilla JavaScript. That's it. The most technologically complex part was deciding how many times someone would press a button they were explicitly told not to press before giving up. The answer, based on extensive research, is: way more than you'd expect.&lt;/p&gt;

&lt;p&gt;The regret meter starts red, turns amber at 70%, and goes fully dark red at 100% -- a subtle UX touch to indicate that you have gone too far, and yet here you are.&lt;/p&gt;

&lt;p&gt;Total build time: less than an hour. Total usefulness: zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Community Favorite&lt;/strong&gt; -- because nothing brings a community together like being told not to do something and then all doing it anyway.&lt;/p&gt;

&lt;p&gt;This button is a mirror. What does it say about you that you pressed it?&lt;/p&gt;

&lt;p&gt;Press it and find out.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>418challenge</category>
      <category>showdev</category>
    </item>
    <item>
      <title>AI Study Planner — Groq AI + Notion MCP</title>
      <dc:creator>Sarvesh</dc:creator>
      <pubDate>Sun, 29 Mar 2026 04:47:45 +0000</pubDate>
      <link>https://forem.com/sarveshofficial/ai-study-planner-groq-ai-notion-mcp-f1h</link>
      <guid>https://forem.com/sarveshofficial/ai-study-planner-groq-ai-notion-mcp-f1h</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/notion-2026-03-04"&gt;Notion MCP Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;I built an &lt;strong&gt;AI Study Planner&lt;/strong&gt; that generates personalized day-by-day study schedules using Groq AI and automatically syncs them to Notion via Notion MCP.&lt;/p&gt;

&lt;p&gt;Students enter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📖 Exam name (e.g. JEE Mains, GATE, MBA)&lt;/li&gt;
&lt;li&gt;📅 Number of study days&lt;/li&gt;
&lt;li&gt;⏰ Hours available per day&lt;/li&gt;
&lt;li&gt;🗓 Exam date&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AI (Groq LLaMA 3.3) generates a smart topic-by-topic study plan and pushes it directly into a Notion database — creating structured entries with Task, Date, Exam Date, Hours, and Subject columns filled automatically.&lt;/p&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/uVJzYMWJ9ew"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Show us the code
&lt;/h2&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/sarveshm555/ai-study-planner" rel="noopener noreferrer"&gt;https://github.com/sarveshm555/ai-study-planner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. User fills the form&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://localhost:5000/add-task&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;days&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;hours&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;examDate&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Groq AI generates the study plan&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;aiResponse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;groq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;llama-3.3-70b-versatile&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
    &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Create a &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;days&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;-day study plan for &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;subject&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;. 
    Return ONLY a JSON array with day, topic, description.`&lt;/span&gt;
  &lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Notion MCP creates pages automatically&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;notion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;parent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;database_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;DATABASE_ID&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Day &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;day&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;topic&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}]&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;start&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;taskDate&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Exam Date&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;date&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;start&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;examDate&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;Hours&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;number&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;parseInt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;hours&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;Subject&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;rich_text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;subject&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;}]&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How I Used Notion MCP
&lt;/h2&gt;

&lt;p&gt;Notion MCP is the &lt;strong&gt;core output layer&lt;/strong&gt; of this project:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;✅ Connects to Notion workspace database&lt;/li&gt;
&lt;li&gt;✅ Creates structured pages for each study day&lt;/li&gt;
&lt;li&gt;✅ Fills Task, Date, Exam Date, Hours, Subject columns&lt;/li&gt;
&lt;li&gt;✅ Adds AI-generated descriptions inside each page&lt;/li&gt;
&lt;li&gt;✅ Everything happens automatically — zero manual work!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Groq AI (LLaMA 3.3)&lt;/td&gt;
&lt;td&gt;Generate smart study topics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notion MCP&lt;/td&gt;
&lt;td&gt;Auto-sync plans to Notion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Node.js + Express&lt;/td&gt;
&lt;td&gt;Backend server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTML/CSS/JS&lt;/td&gt;
&lt;td&gt;Beautiful dark UI&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;ul&gt;
&lt;li&gt;How to integrate Notion MCP with AI workflows&lt;/li&gt;
&lt;li&gt;How to structure AI prompts to return clean JSON&lt;/li&gt;
&lt;li&gt;How to build a full-stack AI automation tool&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  👨‍💻 Team Details
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Solo Submission&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name:&lt;/strong&gt; Sarvesh M&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DEV Username:&lt;/strong&gt; &lt;a class="mentioned-user" href="https://dev.to/sarveshofficial"&gt;@sarveshofficial&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/sarveshm555" rel="noopener noreferrer"&gt;https://github.com/sarveshm555&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built with ❤️ from India 🇮🇳&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>notionchallenge</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
