<?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: Himanshu Kumar</title>
    <description>The latest articles on Forem by Himanshu Kumar (@himanshu_748).</description>
    <link>https://forem.com/himanshu_748</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%2F3226847%2F8b999f0b-76e8-4a5b-a87d-449ab82832bc.png</url>
      <title>Forem: Himanshu Kumar</title>
      <link>https://forem.com/himanshu_748</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/himanshu_748"/>
    <language>en</language>
    <item>
      <title>My PR Merged Into a Graveyard: On the Rise of Antigravity and the Fall of Open Source</title>
      <dc:creator>Himanshu Kumar</dc:creator>
      <pubDate>Wed, 20 May 2026 16:37:14 +0000</pubDate>
      <link>https://forem.com/himanshu_748/my-pr-merged-into-a-graveyard-on-the-rise-of-antigravity-and-the-fall-of-open-source-5cpd</link>
      <guid>https://forem.com/himanshu_748/my-pr-merged-into-a-graveyard-on-the-rise-of-antigravity-and-the-fall-of-open-source-5cpd</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/google-io-writing-2026-05-19"&gt;Google I/O Writing Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Last week, I got the little green banner. &lt;em&gt;Pull request merged.&lt;/em&gt; A small contribution to Gemini CLI — a fix I'd been meaning to submit for months — finally made it in. I closed my laptop feeling quietly satisfied.&lt;/p&gt;

&lt;p&gt;Twenty-four hours later, Google announced Gemini CLI is being sunsetted.&lt;/p&gt;

&lt;p&gt;I'm not going to pretend my PR was significant. It wasn't. But the timing felt like a metaphor so on-the-nose that I almost laughed. And the more I sat with it, the less funny it became.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Actually Happened at I/O 2026
&lt;/h2&gt;

&lt;p&gt;At Google I/O 2026, Google unveiled &lt;strong&gt;Antigravity CLI&lt;/strong&gt; — a new, Go-built, agent-first terminal tool that replaces Gemini CLI. The pitch is compelling on paper: faster execution, asynchronous multi-agent workflows, a unified architecture shared with the Antigravity 2.0 desktop app. Your complex refactors run in the background. Multiple specialized sub-agents split up the work. It's Gemini CLI, but grown up.&lt;/p&gt;

&lt;p&gt;The hard cutoff lands on &lt;strong&gt;June 18, 2026&lt;/strong&gt;. After that date, Gemini CLI stops serving requests for Google AI Pro and Ultra users. Enterprise and paid API key holders get to keep the lights on a little longer, but the message is clear: the community project is done.&lt;/p&gt;

&lt;p&gt;Gemini CLI ended its life with 100,000+ GitHub stars, 6,000 merged pull requests, and hundreds of external contributors. A genuinely impressive open-source run for something barely a year old.&lt;/p&gt;

&lt;p&gt;Mine was PR number... well, somewhere in those 6,000.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bait-and-Switch Pattern We Keep Accepting
&lt;/h2&gt;

&lt;p&gt;Here's what I keep returning to: Gemini CLI was launched as an open-source project. Google invited the world in. Developers (myself included) filed issues, wrote fixes, argued in discussion threads, and built their workflows around it. The community did what communities do — they made it better than Google could have alone.&lt;/p&gt;

&lt;p&gt;And then, when it proved the concept and outgrew its usefulness as a scrappy open tool, Google replaced it with a closed, proprietary successor that ships as a standalone desktop application tied to Google Cloud.&lt;/p&gt;

&lt;p&gt;This isn't a new story. We've seen it play out before:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Reader&lt;/strong&gt; built a loyal community of RSS power users, then shut down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Stadia&lt;/strong&gt; courted game developers with open promises, then folded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Firebase's open-source adjacency&lt;/strong&gt; slowly drifted toward lock-in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The pattern is: open source as &lt;em&gt;acquisition funnel&lt;/em&gt;, not as &lt;em&gt;philosophy&lt;/em&gt;. Launch something generous, gather contributors, validate the idea, close the door.&lt;/p&gt;

&lt;p&gt;What stings about Gemini CLI specifically is that Google's own blog post &lt;em&gt;thanks&lt;/em&gt; the community. It cites the 6,000 PRs. It acknowledges hundreds of contributors helped shape the product. And then it announces that all of that community investment is being handed off to a closed platform that, crucially, you cannot self-host in the same way.&lt;/p&gt;




&lt;h2&gt;
  
  
  To Be Fair to Antigravity
&lt;/h2&gt;

&lt;p&gt;I want to be honest here, because I'm genuinely torn.&lt;/p&gt;

&lt;p&gt;Antigravity CLI is technically impressive. The argument Google makes — that your terminal tool and your desktop agent need to share a unified backend to handle multi-agent complexity - is a real argument. When you're orchestrating five sub-agents doing parallel refactors, coordinating through a shared, hardened infrastructure matters. A loose open-source repo maintained by community weekends isn't the right home for that.&lt;/p&gt;

&lt;p&gt;The Go rewrite is also a genuine quality-of-life improvement. Gemini CLI, for all its strengths, had latency that you &lt;em&gt;felt&lt;/em&gt;. A snappier, more responsive tool isn't a marketing claim; it's real.&lt;/p&gt;

&lt;p&gt;And for enterprise users — the ones Google is clearly most interested in — the Google Cloud integration, credential masking, and sandboxing are features that actually matter. A Fortune 500 company isn't going to run a community-maintained TypeScript CLI to push production code. Antigravity CLI is built for the people who pay the bills.&lt;/p&gt;

&lt;p&gt;I get it. I just don't have to love it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What We Actually Lost
&lt;/h2&gt;

&lt;p&gt;When Gemini CLI was open source, I could:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Read exactly what it was doing&lt;/strong&gt; when it touched my codebase&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fork it&lt;/strong&gt; and add behavior my team needed without filing a feature request&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit&lt;/strong&gt; how it handled my code before trusting it with a production repo&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contribute&lt;/strong&gt; and know that my fix would persist&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Antigravity CLI, I can use it. I can give feedback in a community forum. I can file feature requests and hope someone at Google agrees with me. That's a fundamentally different relationship with a tool.&lt;/p&gt;

&lt;p&gt;The dev community spent the better part of a decade learning to be suspicious of black-box AI tools that touch their codebases. Gemini CLI, by being open, offered an answer to that suspicion. Antigravity CLI doesn't.&lt;/p&gt;

&lt;p&gt;For a tool that wants to "orchestrate agents across your entire workflow" — touching your files, your Git history, your credentials — the closed-source decision feels like exactly the wrong call.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Larger Shift I/O 2026 Is Signaling
&lt;/h2&gt;

&lt;p&gt;Step back and look at what Google announced this year as a whole:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gemini Spark&lt;/strong&gt; is a "24/7 personal agent" that accesses your Gmail, Calendar, and Tasks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Antigravity 2.0&lt;/strong&gt; is a desktop app that steers agents across your projects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Managed Agents in the Gemini API&lt;/strong&gt; provisions full agent infrastructure for you&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Antigravity CLI&lt;/strong&gt; handles your terminal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's a coherent vision here, and it's not an open ecosystem. It's &lt;em&gt;Google as the substrate&lt;/em&gt;. Every agentic workflow you build runs on infrastructure Google controls, through interfaces Google designs, against models Google hosts. The Antigravity SDK lets you "customize the agent," but you're still hosting it on Google's harness.&lt;/p&gt;

&lt;p&gt;This is Google's answer to Microsoft's Copilot+ and Anthropic's Claude Code: a vertically integrated agentic platform. And it's probably going to be very good. That's sort of the problem.&lt;/p&gt;

&lt;p&gt;The best agentic tools are becoming the ones most deeply locked into vendor ecosystems. The open alternatives - still worth rooting for, but always a step behind - can't match the integration depth that comes with a single company owning the whole stack.&lt;/p&gt;




&lt;h2&gt;
  
  
  What This Means for You (And for Me)
&lt;/h2&gt;

&lt;p&gt;If you're a developer, the practical advice is boring: Antigravity CLI will probably be the better tool by August. Learn it. Use it. Enjoy the async workflows.&lt;/p&gt;

&lt;p&gt;But keep asking the uncomfortable questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What happens to your workflows when Antigravity gets deprecated in 2028 for &lt;em&gt;Supersymmetry CLI&lt;/em&gt;?&lt;/li&gt;
&lt;li&gt;Where does your code go when it passes through a closed agent harness?&lt;/li&gt;
&lt;li&gt;Who owns the institutional knowledge these tools build about how your codebase works?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Google I/O keynote ended with the line: &lt;em&gt;"We're bringing the models, infrastructure, and platforms together across Google to help you build anything you can imagine."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That sentence is doing a lot of work. &lt;em&gt;Across Google.&lt;/em&gt; Building &lt;em&gt;on Google.&lt;/em&gt; Anything &lt;em&gt;you&lt;/em&gt; can imagine - so long as Google's infrastructure agrees.&lt;/p&gt;




&lt;p&gt;My PR #19881 is sitting in a deprecated repo. The fix still works - remove unsafe type assertion suppressions in error utils, if you want to go look. The code is there, archived and frozen.&lt;/p&gt;

&lt;p&gt;And somewhere in a Mountain View conference room, someone is presenting a roadmap slide that doesn't have Gemini CLI on it anywhere.&lt;/p&gt;

&lt;p&gt;That's fine. That's how this industry moves. I just think it's worth naming it clearly, before we all sign up for the next open-source launch and start filing pull requests again.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Follow me here on dev.to if you want more takes on developer tooling, open-source sustainability, and the occasional misadventure in AI-assisted coding.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleiochallenge</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>Stop Writing API Docs by Hand — Let Notion MCP Do It</title>
      <dc:creator>Himanshu Kumar</dc:creator>
      <pubDate>Fri, 27 Mar 2026 17:50:57 +0000</pubDate>
      <link>https://forem.com/himanshu_748/stop-writing-api-docs-by-hand-let-notion-mcp-do-it-39h3</link>
      <guid>https://forem.com/himanshu_748/stop-writing-api-docs-by-hand-let-notion-mcp-do-it-39h3</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;&lt;strong&gt;APIVault&lt;/strong&gt; — a local FastAPI app that turns raw route code or plain-English API descriptions into full API documentation, then stores everything in Notion through the Notion MCP.&lt;/p&gt;

&lt;p&gt;The idea is simple: you point APIVault at a router file (or just describe an endpoint in plain English), and it generates structured documentation and pushes it directly into a Notion workspace it sets up for you — no copy-pasting, no manual page creation.&lt;/p&gt;

&lt;p&gt;The frontend is a vanilla HTML/CSS/JS dashboard with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live search&lt;/strong&gt; across your documented endpoints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation preview&lt;/strong&gt; pane&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source vs. generated toggle&lt;/strong&gt; so you can diff your raw code against what was documented&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's also a CLI tool (&lt;code&gt;vault.py&lt;/code&gt;) for batch-documenting entire files without opening the UI.&lt;/p&gt;

&lt;h3&gt;
  
  
  Endpoints
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Route&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;&lt;code&gt;POST /api/setup&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Creates (or reuses) the APIVault Notion workspace — an &lt;code&gt;📖 API Reference&lt;/code&gt; database, a &lt;code&gt;🏷️ Services&lt;/code&gt; database, and an &lt;code&gt;📚 API Docs&lt;/code&gt; hub page&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST /api/document-endpoint&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Documents a single endpoint, writes it to Notion, returns the generated content + the Notion page URL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST /api/document-collection&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Splits a router/controller file into individual endpoints and documents them in parallel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;POST /api/generate-readme&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Generates a &lt;code&gt;📄 [Service] — README&lt;/code&gt; Notion page from endpoints already stored&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/search?q=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Powers the dashboard's live search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /api/sidebar&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Feeds the left-side navigation tree&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; FastAPI + Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI:&lt;/strong&gt; HuggingFace Inference API (documentation generation)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP:&lt;/strong&gt; Notion MCP via &lt;code&gt;https://mcp.notion.com/sse&lt;/code&gt; (SSE transport)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Vanilla HTML/CSS/JS&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;&lt;em&gt;No video for this submission.&lt;/em&gt;&lt;/p&gt;




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

&lt;p&gt;🔗 &lt;a href="https://github.com/himanshu748/dev-challenge-5" rel="noopener noreferrer"&gt;github.com/himanshu748/dev-challenge-5&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting started locally
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Clone and set up&lt;/span&gt;
git clone https://github.com/himanshu748/dev-challenge-5
&lt;span class="nb"&gt;cd &lt;/span&gt;dev-challenge-5
python &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# 2. Configure environment&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
&lt;span class="c"&gt;# Set NOTION_TOKEN (MCP OAuth token) and HF_TOKEN&lt;/span&gt;

&lt;span class="c"&gt;# 3. Run&lt;/span&gt;
uvicorn app.main:app &lt;span class="nt"&gt;--reload&lt;/span&gt;
&lt;span class="c"&gt;# Open http://127.0.0.1:8000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CLI usage for bulk documentation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python vault.py &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--file&lt;/span&gt; routes/users.py &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--service&lt;/span&gt; UserService &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--base-url&lt;/span&gt; https://api.example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






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

&lt;p&gt;APIVault uses the &lt;strong&gt;Notion MCP exclusively&lt;/strong&gt; — there are zero calls to the direct Notion REST API anywhere in the codebase. &lt;code&gt;NOTION_TOKEN&lt;/code&gt; must be a Notion MCP OAuth access token, not a Notion integration secret. This matches how the hosted MCP is meant to be used: access is granted through the MCP OAuth flow, not the legacy secret model.&lt;/p&gt;

&lt;p&gt;On startup, &lt;code&gt;POST /api/setup&lt;/code&gt; calls the Notion MCP to provision the entire workspace structure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;&lt;code&gt;📖 API Reference&lt;/code&gt;&lt;/strong&gt; database where each endpoint lives as a page with properties like method, path, service, parameters, and response schema&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;&lt;code&gt;🏷️ Services&lt;/code&gt;&lt;/strong&gt; database for grouping endpoints by service name&lt;/li&gt;
&lt;li&gt;An &lt;strong&gt;&lt;code&gt;📚 API Docs&lt;/code&gt;&lt;/strong&gt; hub page that ties everything together&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When an endpoint is documented (either individually or from a batch file), the generated content is written to a new Notion page via the MCP and the returned Notion URL is surfaced in the dashboard so you can jump straight to it.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;generate-readme&lt;/code&gt; flow goes the other way: it queries Notion through the MCP to pull all endpoints for a given service, then synthesizes them into a formatted README page — so Notion stays the source of truth for the whole workflow.&lt;/p&gt;

&lt;p&gt;A local JSON cache (&lt;code&gt;data/apivault_state.json&lt;/code&gt;) exists purely for UI responsiveness (fast sidebar loads, instant search), but every write and authoritative read goes through the MCP.&lt;/p&gt;

&lt;p&gt;What the Notion MCP unlocks here that wouldn't be practical otherwise:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Structured storage without schema management&lt;/strong&gt; — Notion databases give you typed properties (selects, rich text, URLs) without standing up a real database&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human-readable side effect&lt;/strong&gt; — every documented endpoint is immediately browsable in Notion by the whole team, not just queryable via API&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;README generation from live data&lt;/strong&gt; — because the MCP lets you query what's already stored, the README reflects the actual current state of your docs, not a stale snapshot&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>devchallenge</category>
      <category>notionchallenge</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
    <item>
      <title>Your Team's Code Reviews Are Disappearing — I Built PRReviewIQ to Fix That</title>
      <dc:creator>Himanshu Kumar</dc:creator>
      <pubDate>Fri, 27 Mar 2026 17:36:51 +0000</pubDate>
      <link>https://forem.com/himanshu_748/your-teams-code-reviews-are-disappearing-i-built-prreviewiq-to-fix-that-20p4</link>
      <guid>https://forem.com/himanshu_748/your-teams-code-reviews-are-disappearing-i-built-prreviewiq-to-fix-that-20p4</guid>
      <description>&lt;p&gt;Every code review your team does contains hard-won knowledge: a bug pattern caught, a performance trap avoided, a naming convention enforced. And almost all of it evaporates the moment the PR is merged.&lt;/p&gt;

&lt;p&gt;PRReviewIQ is my attempt to fix that. It's an AI code review tool that doesn't just comment on diffs — it &lt;strong&gt;remembers&lt;/strong&gt;. Every insight gets logged into a living Notion knowledge base via Notion MCP, so your team's collective code quality wisdom compounds instead of getting buried in closed PRs.&lt;/p&gt;




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

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




&lt;h2&gt;
  
  
  Show Us the Code
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/himanshu748/dev-challenge-4" rel="noopener noreferrer"&gt;github.com/himanshu748/dev-challenge-4&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem Worth Solving
&lt;/h2&gt;

&lt;p&gt;Code review is one of the highest-leverage activities on any engineering team — but it's almost entirely ephemeral. Comments live on GitHub. Patterns go untracked. New teammates repeat the same mistakes. There's no institutional memory.&lt;/p&gt;

&lt;p&gt;I wanted Notion to be that memory. Not as a place to manually paste notes, but as a database that an AI agent actively writes to as part of the review process itself.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;PRReviewIQ ships as two interfaces over the same core:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Web app&lt;/strong&gt; — a FastAPI server at &lt;code&gt;http://127.0.0.1:8000&lt;/code&gt; where you can paste diffs and trigger reviews through a browser UI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CLI&lt;/strong&gt; — run it directly against a local git repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python review.py &lt;span class="nt"&gt;--repo&lt;/span&gt; /path/to/repo

&lt;span class="c"&gt;# Or target a single file for pre-commit checks&lt;/span&gt;
python review.py &lt;span class="nt"&gt;--file&lt;/span&gt; path/to/file.py &lt;span class="nt"&gt;--pr-title&lt;/span&gt; &lt;span class="s2"&gt;"Pre-commit review"&lt;/span&gt; &lt;span class="nt"&gt;--repo-name&lt;/span&gt; my-repo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Under the hood, every review goes through HuggingFace, and every finding gets written into Notion through MCP.&lt;/p&gt;




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

&lt;p&gt;Here's the part I'm most proud of from an architecture standpoint.&lt;/p&gt;

&lt;p&gt;Most Notion integrations make direct REST calls. I went a different route: PRReviewIQ runs the &lt;strong&gt;official &lt;code&gt;@notionhq/notion-mcp-server&lt;/code&gt;&lt;/strong&gt; locally via &lt;code&gt;npx&lt;/code&gt;, and passes &lt;code&gt;NOTION_TOKEN&lt;/code&gt; directly to the MCP process. The app itself never touches the Notion REST API — all writes happen through MCP.&lt;/p&gt;

&lt;p&gt;This matters because it means the LLM is using Notion as a &lt;strong&gt;tool&lt;/strong&gt;, not just a destination. When it reviews a diff, it decides what's worth logging, how to categorize it, and where it belongs in the knowledge base — the same way a human reviewer would decide what's worth writing down.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What gets built in Notion:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;coding standards database&lt;/strong&gt; that evolves as the agent identifies recurring patterns. You can query it live via &lt;code&gt;GET /api/standards&lt;/code&gt; — it reads directly from Notion and returns JSON, so the app and the team always share the same source of truth.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;reviews log&lt;/strong&gt; — every PR review stored as a structured Notion entry, searchable and linkable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weekly digest pages&lt;/strong&gt; — &lt;code&gt;POST /api/weekly-digest&lt;/code&gt; aggregates trends across recent reviews and writes a summary page your team can async through on Mondays.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The compounding effect is the real value: the knowledge base gets more useful the more you use it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Technical Note on the MCP Setup
&lt;/h2&gt;

&lt;p&gt;Running &lt;code&gt;@notionhq/notion-mcp-server&lt;/code&gt; via &lt;code&gt;npx&lt;/code&gt; means Node.js needs to be installed alongside Python. The MCP server process is spawned by the app at runtime — no separate setup step required beyond having &lt;code&gt;npx&lt;/code&gt; available.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Prerequisites&lt;/span&gt;
python 3.11+
node + npx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# .env&lt;/span&gt;
&lt;span class="nv"&gt;HF_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;hf_...
&lt;span class="nv"&gt;NOTION_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;...
&lt;span class="nv"&gt;NOTION_PARENT_PAGE_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Run&lt;/span&gt;
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
uvicorn app.main:app &lt;span class="nt"&gt;--reload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first call to &lt;code&gt;POST /api/setup&lt;/code&gt; provisions the full Notion workspace structure — databases, log pages, and the standards section — and you're ready to start reviewing.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'd Build Next
&lt;/h2&gt;

&lt;p&gt;The CLI is useful but I want to wire it into a git pre-commit hook so reviews happen automatically before every push. The Notion knowledge base is already there — the next step is making the feedback loop tighter.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>notionchallenge</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
    <item>
      <title>From Job Post to Offer Letter — Automated with Notion MCP</title>
      <dc:creator>Himanshu Kumar</dc:creator>
      <pubDate>Fri, 27 Mar 2026 16:11:42 +0000</pubDate>
      <link>https://forem.com/himanshu_748/from-job-post-to-offer-letter-automated-with-notion-mcp-cgp</link>
      <guid>https://forem.com/himanshu_748/from-job-post-to-offer-letter-automated-with-notion-mcp-cgp</guid>
      <description>&lt;h1&gt;
  
  
  How I Used Notion MCP to Build an AI Recruiting Assistant
&lt;/h1&gt;

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

&lt;p&gt;&lt;strong&gt;HireIQ&lt;/strong&gt; is an AI-powered recruiting assistant that uses Notion as its entire operational backbone. Point it at a role you're hiring for and it will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spin up a &lt;strong&gt;recruiting workspace&lt;/strong&gt; in Notion automatically&lt;/li&gt;
&lt;li&gt;Write polished, structured &lt;strong&gt;job descriptions&lt;/strong&gt; and save them as Notion pages&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screen candidates&lt;/strong&gt; against the role criteria and log results&lt;/li&gt;
&lt;li&gt;Generate &lt;strong&gt;offer letters&lt;/strong&gt; — drafted by AI, stored in Notion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The entire hiring pipeline lives in Notion. HireIQ just drives it.&lt;/p&gt;




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

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




&lt;h2&gt;
  
  
  Show Us the Code
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/himanshu748/dev-challenge-3" rel="noopener noreferrer"&gt;github.com/himanshu748/dev-challenge-3&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;HireIQ connects to Notion via the &lt;strong&gt;remote Notion MCP server&lt;/strong&gt; at &lt;code&gt;https://mcp.notion.com/sse&lt;/code&gt; — attached directly to a HuggingFace &lt;code&gt;MCPClient&lt;/code&gt;. This means the AI model doesn't just answer questions about hiring; it actively reads from and writes to Notion as part of every step in the pipeline.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Workspace Setup (&lt;code&gt;POST /api/setup&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;On first run, HireIQ uses Notion MCP to create the full recruiting workspace structure — databases, pages, and sections — ready to receive jobs and candidates. Zero manual Notion configuration needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Job Description Creation (&lt;code&gt;POST /api/add-job&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;The AI generates a complete, professionally formatted job description and writes it directly into Notion via MCP. Every role gets its own page, making the workspace a living hiring hub rather than a static document.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Candidate Screening (&lt;code&gt;POST /api/screen-candidate&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;HireIQ reads the job requirements from Notion, evaluates the candidate against them using the LLM, and logs the screening result back into Notion — keeping everything in one place for the hiring team to review.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Offer Letter Generation (&lt;code&gt;POST /api/generate-offer&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Once a candidate clears screening, HireIQ drafts a tailored offer letter and saves it to Notion via MCP. The whole candidate journey — from application to offer — is tracked in one workspace.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Notion MCP Unlocks
&lt;/h3&gt;

&lt;p&gt;The remote MCP connection (&lt;code&gt;https://mcp.notion.com/sse&lt;/code&gt;) is what makes this work at a different level than a plain Notion API integration. The LLM has Notion MCP as an attached tool — so it can decide &lt;em&gt;when&lt;/em&gt; and &lt;em&gt;how&lt;/em&gt; to read or write Notion data as part of reasoning through each task. It's not just API calls wrapped in Python; the model is an active agent that uses Notion as its memory and output layer.&lt;/p&gt;

&lt;p&gt;Every write endpoint returns a &lt;code&gt;notion_urls&lt;/code&gt; field so the frontend can link directly to the pages the agent just created.&lt;/p&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;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;FastAPI + Python&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI / LLM&lt;/td&gt;
&lt;td&gt;HuggingFace (&lt;code&gt;Qwen/Qwen2.5-72B-Instruct&lt;/code&gt;) via MCPClient&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data store&lt;/td&gt;
&lt;td&gt;Notion (via remote Notion MCP at &lt;code&gt;https://mcp.notion.com/sse&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;Vanilla HTML/CSS/JS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Getting Started
&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;# 1. Clone the repo&lt;/span&gt;
git clone https://github.com/himanshu748/dev-challenge-3

&lt;span class="c"&gt;# 2. Create a virtual environment&lt;/span&gt;
python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv
&lt;span class="nb"&gt;source&lt;/span&gt; .venv/bin/activate

&lt;span class="c"&gt;# 3. Install dependencies&lt;/span&gt;
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# 4. Configure environment variables&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a &lt;code&gt;.env&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;HF_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;hf_...
&lt;span class="nv"&gt;NOTION_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;...          &lt;span class="c"&gt;# Must be a current OAuth access token (not an internal integration token)&lt;/span&gt;
&lt;span class="nv"&gt;NOTION_PARENT_PAGE_ID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;... &lt;span class="c"&gt;# Parent page for the recruiting workspace&lt;/span&gt;
&lt;span class="nv"&gt;HF_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;...              &lt;span class="c"&gt;# Optional — defaults to Qwen/Qwen2.5-72B-Instruct&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 5. Start the server&lt;/span&gt;
uvicorn app.main:app &lt;span class="nt"&gt;--reload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://127.0.0.1:8000&lt;/code&gt; in your browser.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;code&gt;NOTION_TOKEN&lt;/code&gt; must be a current OAuth access token for the remote Notion MCP server. A plain internal integration token will not work for the &lt;code&gt;https://mcp.notion.com/sse&lt;/code&gt; connection.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>devchallenge</category>
      <category>notionchallenge</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
    <item>
      <title>How I Used Notion MCP to Build an Autonomous Personal Finance Tracker</title>
      <dc:creator>Himanshu Kumar</dc:creator>
      <pubDate>Thu, 26 Mar 2026 16:41:46 +0000</pubDate>
      <link>https://forem.com/himanshu_748/how-i-used-notion-mcp-to-build-an-autonomous-personal-finance-tracker-12jl</link>
      <guid>https://forem.com/himanshu_748/how-i-used-notion-mcp-to-build-an-autonomous-personal-finance-tracker-12jl</guid>
      <description>&lt;h1&gt;
  
  
  FinanceIQ — AI-Powered Finance Tracker Built with Notion MCP
&lt;/h1&gt;

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

&lt;p&gt;&lt;strong&gt;FinanceIQ&lt;/strong&gt; is an AI-powered personal finance tracker that turns Notion into a fully automated financial command center. It ingests your bank's CSV exports, categorizes every transaction using AI, detects suspicious or anomalous spending, generates monthly financial reports, and fires budget alerts — all written directly into Notion via the Notion MCP.&lt;/p&gt;

&lt;p&gt;No spreadsheet juggling. No manual tagging. Your finances, organized and analyzed — living right inside Notion.&lt;/p&gt;




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

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




&lt;h2&gt;
  
  
  Show Us the Code
&lt;/h2&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/himanshu748/dev-challenge-2" rel="noopener noreferrer"&gt;github.com/himanshu748/dev-challenge-2&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;Notion MCP is the backbone of FinanceIQ. Rather than building a standalone dashboard that lives in isolation, I wanted all financial data to live &lt;em&gt;natively in Notion&lt;/em&gt; — so it's searchable, shareable, and editable like any other Notion page.&lt;/p&gt;

&lt;p&gt;Here's exactly how Notion MCP powers each part of the workflow:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. One-Click Workspace Setup
&lt;/h3&gt;

&lt;p&gt;On first run, FinanceIQ uses Notion MCP to automatically create:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;Expenses database&lt;/strong&gt; with the right properties (date, amount, category, anomaly flag, etc.)&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Reports page&lt;/strong&gt; where monthly summaries will be written&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No manual Notion setup required — the agent handles it entirely through MCP.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Transaction Import &amp;amp; AI Categorization
&lt;/h3&gt;

&lt;p&gt;When a user uploads a CSV (from Chase, Bank of America, Wells Fargo, or Mint), FinanceIQ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parses each transaction&lt;/li&gt;
&lt;li&gt;Sends it to a &lt;strong&gt;HuggingFace-hosted Mistral model&lt;/strong&gt; (via &lt;code&gt;MCPClient&lt;/code&gt;) for categorization into 10 spending categories&lt;/li&gt;
&lt;li&gt;Flags anomalies: transactions that are 3x the category average, duplicates, or suspiciously round amounts&lt;/li&gt;
&lt;li&gt;Writes each transaction as a new row in the Notion Expenses database via MCP&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Monthly Report Generation
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;/report&lt;/code&gt; endpoint aggregates data from Notion, runs it through the AI, and writes a structured monthly report page back into Notion including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Income vs. expenses summary&lt;/li&gt;
&lt;li&gt;Category-by-category breakdown&lt;/li&gt;
&lt;li&gt;AI-generated spending recommendations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Budget Alerts
&lt;/h3&gt;

&lt;p&gt;Users can set monthly budget limits per category. FinanceIQ compares actuals against limits and — when thresholds are exceeded — creates a dedicated &lt;strong&gt;Budget Alert page&lt;/strong&gt; in Notion via MCP with details on which categories overspent and by how much.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Notion MCP Unlocks
&lt;/h3&gt;

&lt;p&gt;The key insight: Notion MCP lets an AI agent treat Notion as a &lt;strong&gt;live, writable database&lt;/strong&gt; — not just a document viewer. That means FinanceIQ can autonomously create structure, push data, and generate reports without any manual copy-pasting. The financial intelligence stays inside Notion where users already live and work.&lt;/p&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;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;FastAPI + Python&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI / LLM&lt;/td&gt;
&lt;td&gt;HuggingFace (Mistral-Small-3.1-24B) via MCPClient&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data store&lt;/td&gt;
&lt;td&gt;Notion (via Notion MCP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Frontend&lt;/td&gt;
&lt;td&gt;Vanilla HTML/CSS/JS — newspaper-inspired design&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Getting Started
&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;# 1. Clone the repo&lt;/span&gt;
git clone https://github.com/himanshu748/dev-challenge-2

&lt;span class="c"&gt;# 2. Install dependencies&lt;/span&gt;
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# 3. Configure environment variables&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
&lt;span class="c"&gt;# Add your HF_API_KEY and NOTION_TOKEN&lt;/span&gt;

&lt;span class="c"&gt;# 4. Start the server&lt;/span&gt;
uvicorn main:app &lt;span class="nt"&gt;--reload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open &lt;code&gt;http://localhost:8000&lt;/code&gt; in your browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Required environment variables:&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;Variable&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;HF_API_KEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Your HuggingFace API key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;NOTION_TOKEN&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Your Notion integration token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;NOTION_PARENT_PAGE_ID&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;(Optional) Parent page ID for the workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;HF_MODEL&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;(Optional) Defaults to &lt;code&gt;mistralai/Mistral-Small-3.1-24B-Instruct-2503&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>notionchallenge</category>
      <category>ai</category>
      <category>mcp</category>
      <category>devchallenge</category>
    </item>
    <item>
      <title>I Built an AI PM That Creates PRDs &amp; Sprint Plans Directly in Notion</title>
      <dc:creator>Himanshu Kumar</dc:creator>
      <pubDate>Thu, 26 Mar 2026 15:44:10 +0000</pubDate>
      <link>https://forem.com/himanshu_748/i-built-an-ai-pm-that-creates-prds-sprint-plans-directly-in-notion-21de</link>
      <guid>https://forem.com/himanshu_748/i-built-an-ai-pm-that-creates-prds-sprint-plans-directly-in-notion-21de</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;&lt;strong&gt;AutoPM&lt;/strong&gt; is an AI-powered product management assistant that turns a single product idea &lt;br&gt;
into a fully structured Notion workspace — PRDs, task breakdowns, daily standups, and &lt;br&gt;
sprint plans — in seconds.&lt;/p&gt;

&lt;p&gt;No more context-switching between AI tools and your Notion workspace. Just describe your &lt;br&gt;
product idea, and AutoPM:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Generates a full PRD&lt;/strong&gt; — problem statement, goals, user personas, user stories, and out-of-scope items&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Breaks it into Epics &amp;amp; Tasks&lt;/strong&gt; — with priorities, story points, and a ready-to-go Sprint 1 plan (~20 story points)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writes everything directly to Notion&lt;/strong&gt; via Notion MCP&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reads your workspace&lt;/strong&gt; via MCP to generate context-aware daily standups and sprint plans from your real backlog&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;🔗 &lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://autopm-two.vercel.app" rel="noopener noreferrer"&gt;autopm-two.vercel.app&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🔗 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/himanshu748/dev-challenge-1" rel="noopener noreferrer"&gt;github.com/himanshu748/dev-challenge-1&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.amazonaws.com%2Fuploads%2Farticles%2Faoysz9yllwtisl7wquwi.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%2Faoysz9yllwtisl7wquwi.png" alt="AutoPM Dashboard" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Video Demo
&lt;/h2&gt;

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

&lt;h2&gt;
  
  
  Show us the 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/himanshu748" rel="noopener noreferrer"&gt;
        himanshu748
      &lt;/a&gt; / &lt;a href="https://github.com/himanshu748/dev-challenge-1" rel="noopener noreferrer"&gt;
        dev-challenge-1
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &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;AutoPM — AI Product Manager&lt;/h1&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;AI-powered product management assistant that creates PRDs, task breakdowns, standups, and sprint plans directly in Notion — built with &lt;strong&gt;HuggingFace Inference API&lt;/strong&gt; + &lt;strong&gt;Notion MCP&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Built for the &lt;a href="https://dev.to/challenges/notion-2026-03-04" rel="nofollow"&gt;dev.to Notion MCP Challenge&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://autopm-two.vercel.app" rel="nofollow noopener noreferrer"&gt;autopm-two.vercel.app&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/himanshu748/dev-challenge-1/./screenshots/dashboard.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fhimanshu748%2Fdev-challenge-1%2FHEAD%2F.%2Fscreenshots%2Fdashboard.png" alt="Dashboard Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What It Does&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Enter a product idea and AutoPM:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Generates a full PRD&lt;/strong&gt; via HuggingFace AI (problem, goals, personas, user stories, scope)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Creates an Epics &amp;amp; Tasks breakdown&lt;/strong&gt; with priorities and story points&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writes everything to Notion&lt;/strong&gt; via Notion MCP (stdio transport)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reads your workspace&lt;/strong&gt; via MCP to generate context-aware standups and sprint plans&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How I Used Notion MCP&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;AutoPM uses &lt;code&gt;@notionhq/notion-mcp-server&lt;/code&gt; via &lt;strong&gt;stdio transport&lt;/strong&gt; for ALL Notion operations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reads&lt;/strong&gt; — &lt;code&gt;API-post-search&lt;/code&gt; to scan workspace pages, &lt;code&gt;API-get-block-children&lt;/code&gt; to read task data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writes&lt;/strong&gt; — &lt;code&gt;API-post-page&lt;/code&gt; to create PRD pages, task breakdowns, standup reports, sprint plans&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auth check&lt;/strong&gt; — &lt;code&gt;API-get-self&lt;/code&gt; to verify MCP connectivity on health check&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The MCP server…&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/himanshu748/dev-challenge-1" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;Notion MCP is the backbone of AutoPM — every single Notion interaction goes through it, &lt;br&gt;
zero direct REST calls.&lt;/p&gt;

&lt;p&gt;I spin up &lt;code&gt;@notionhq/notion-mcp-server&lt;/code&gt; as a &lt;strong&gt;stdio child process per request&lt;/strong&gt;, managed &lt;br&gt;
by the Python &lt;code&gt;mcp&lt;/code&gt; SDK's &lt;code&gt;ClientSession&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;ClientSession&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;StdioServerParameters&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;mcp.client.stdio&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;stdio_client&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;stdio_client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;StdioServerParameters&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;npx&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-y&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;@notionhq/notion-mcp-server&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="n"&gt;env&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;NOTION_TOKEN&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="nf"&gt;as &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nc"&gt;ClientSession&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;call_tool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;API-post-page&lt;/span&gt;&lt;span class="sh"&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;h3&gt;
  
  
  MCP tools used
&lt;/h3&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;&lt;code&gt;API-get-self&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Health check — verify MCP connectivity on startup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;API-post-search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Scan workspace for existing pages before generating standups&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;API-get-block-children&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read task data from Notion for context-aware generation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;API-post-page&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create PRD pages, task breakdowns, standup reports, sprint plans&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  What Notion MCP actually unlocks
&lt;/h3&gt;

&lt;p&gt;Without MCP, AutoPM would be a one-way pipe — generate content, dump it somewhere. &lt;br&gt;
With MCP, it becomes &lt;strong&gt;bidirectional&lt;/strong&gt;: it &lt;em&gt;reads&lt;/em&gt; your existing workspace state before &lt;br&gt;
generating anything. The standup and sprint planner aren't making things up — they're &lt;br&gt;
grounded in your actual Notion data. That's the real unlock.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────┐     ┌──────────────────────┐     ┌──────────────────────┐
│  Browser (UI)   │────▶│  FastAPI Backend      │────▶│  Notion MCP Server   │
│  Vanilla HTML   │     │  (Python)             │     │  (stdio transport)   │
└─────────────────┘     └────────┬─────────────┘     │  npx @notionhq/      │
                                 │                    │  notion-mcp-server   │
                                 ▼                    └──────────┬───────────┘
                        ┌──────────────────┐                    │
                        │  HuggingFace     │                    ▼
                        │  Inference API   │           ┌─────────────────┐
                        │  (Qwen 72B)      │           │  Notion API     │
                        └──────────────────┘           └─────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Flow:&lt;/strong&gt; HuggingFace (Qwen 2.5 72B) generates structured PM content → FastAPI formats &lt;br&gt;
Notion blocks → MCP writes/reads Notion workspace&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; FastAPI (Python)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI:&lt;/strong&gt; HuggingFace Inference API — &lt;code&gt;Qwen/Qwen2.5-72B-Instruct&lt;/code&gt; (free tier!)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notion:&lt;/strong&gt; &lt;code&gt;@notionhq/notion-mcp-server&lt;/code&gt; via stdio transport&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP SDK:&lt;/strong&gt; Python &lt;code&gt;mcp&lt;/code&gt; package — &lt;code&gt;ClientSession&lt;/code&gt; + &lt;code&gt;StdioServerParameters&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Vanilla HTML/CSS/JS, glassmorphism dark theme&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deployed on:&lt;/strong&gt; Vercel&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>notionchallenge</category>
      <category>mcp</category>
      <category>ai</category>
    </item>
    <item>
      <title>Just completed AWS AI &amp; ML challenge.</title>
      <dc:creator>Himanshu Kumar</dc:creator>
      <pubDate>Mon, 21 Jul 2025 19:21:27 +0000</pubDate>
      <link>https://forem.com/himanshu_748/just-completed-aws-ai-ml-challenge-3064</link>
      <guid>https://forem.com/himanshu_748/just-completed-aws-ai-ml-challenge-3064</guid>
      <description>&lt;p&gt;Hey dev++ community! 🚀&lt;/p&gt;

&lt;p&gt;Just completed the AWS AI &amp;amp; ML Scholars Challenge and got certified in Generative AI with AWS! &lt;/p&gt;

&lt;p&gt;Learned a ton about AWS Bedrock, SageMaker, prompt engineering, and building real AI applications. The hands-on experience with generative AI was amazing.&lt;/p&gt;

&lt;p&gt;Would love to connect with anyone else working on AI/ML projects or interested in AWS AI services!&lt;/p&gt;

&lt;p&gt;Check out my full post: (&lt;a href="https://www.linkedin.com/posts/himanshu748_aws-artificialintelligence-machinelearning-activity-7353138026996289538-tIXc" rel="noopener noreferrer"&gt;https://www.linkedin.com/posts/himanshu748_aws-artificialintelligence-machinelearning-activity-7353138026996289538-tIXc&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;What AI projects are you all working on? Let's share and learn together! 💪&lt;/p&gt;

&lt;h1&gt;
  
  
  AWS #AI #MachineLearning #DevCommunity[]
&lt;/h1&gt;

</description>
      <category>aws</category>
      <category>machinelearning</category>
      <category>ai</category>
      <category>devplusplus</category>
    </item>
    <item>
      <title>Get your startup logo in seconds</title>
      <dc:creator>Himanshu Kumar</dc:creator>
      <pubDate>Sat, 05 Jul 2025 18:32:52 +0000</pubDate>
      <link>https://forem.com/himanshu_748/get-your-startup-logo-in-seconds-4kp5</link>
      <guid>https://forem.com/himanshu_748/get-your-startup-logo-in-seconds-4kp5</guid>
      <description>&lt;p&gt;&lt;em&gt;This post is my submission for &lt;a href="https://dev.to/deved/build-apps-with-google-ai-studio"&gt;DEV Education Track: Build Apps with Google AI Studio&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;An imagen powered logo generator for startups.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://aistudio.google.com/apps/drive/18tmCeBIzNHseSJjtA4sVC5NHLAFnoAgS?showPreview=true&amp;amp;resourceKey=" rel="noopener noreferrer"&gt;https://aistudio.google.com/apps/drive/18tmCeBIzNHseSJjtA4sVC5NHLAFnoAgS?showPreview=true&amp;amp;resourceKey=&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.amazonaws.com%2Fuploads%2Farticles%2Fp5o4gn4oxfz6335wjf4m.jpg" 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%2Fp5o4gn4oxfz6335wjf4m.jpg" alt="Prompting the app" width="800" height="1787"&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.amazonaws.com%2Fuploads%2Farticles%2Ffosfdcn3aist19vj9esq.jpg" 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%2Ffosfdcn3aist19vj9esq.jpg" alt="results" width="800" height="1787"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience
&lt;/h2&gt;

&lt;p&gt;It was nice working with Google ai studio after 1 and half years it's really upgraded &lt;/p&gt;

</description>
      <category>deved</category>
      <category>learngoogleaistudio</category>
      <category>ai</category>
      <category>gemini</category>
    </item>
  </channel>
</rss>
