<?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: KOTYADA SAI PRANEETH</title>
    <description>The latest articles on DEV Community by KOTYADA SAI PRANEETH (@kotyada_saipraneeth_7be9).</description>
    <link>https://dev.to/kotyada_saipraneeth_7be9</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%2F3633964%2F6427b8fc-520f-48da-9dfd-fb05e879d589.png</url>
      <title>DEV Community: KOTYADA SAI PRANEETH</title>
      <link>https://dev.to/kotyada_saipraneeth_7be9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kotyada_saipraneeth_7be9"/>
    <language>en</language>
    <item>
      <title>I Built ClipFlow: The Clipboard History macOS Should Have</title>
      <dc:creator>KOTYADA SAI PRANEETH</dc:creator>
      <pubDate>Fri, 12 Dec 2025 09:20:51 +0000</pubDate>
      <link>https://dev.to/kotyada_saipraneeth_7be9/i-built-clipflow-the-clipboard-history-macos-should-have-11fn</link>
      <guid>https://dev.to/kotyada_saipraneeth_7be9/i-built-clipflow-the-clipboard-history-macos-should-have-11fn</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Windows has had clipboard history (Win+V) since 2018. macOS? Nothing built-in.&lt;br&gt;
Every time I copied something and needed to paste something I copied earlier... gone. So I built ClipFlow.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;ClipFlow&lt;/strong&gt; is a free, open-source clipboard history manager for macOS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Cmd+Shift+V&lt;/code&gt; opens your history&lt;/li&gt;
&lt;li&gt;Navigate with ↑↓ arrows (like terminal)&lt;/li&gt;
&lt;li&gt;Image preview support&lt;/li&gt;
&lt;li&gt;Popup follows your cursor&lt;/li&gt;
&lt;li&gt;100% local, no tracking
## Tech Stack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swift&lt;/strong&gt; - Native macOS performance&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AppKit&lt;/strong&gt; - For the non-focusable overlay&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CGEventTap&lt;/strong&gt; - Global hotkey interception
## Challenges&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-focusable popup&lt;/strong&gt; - Used &lt;code&gt;NSPanel&lt;/code&gt; with &lt;code&gt;.nonactivatingPanel&lt;/code&gt; style&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global hotkeys&lt;/strong&gt; - Needed CGEventTap for proper key interception&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unsigned app&lt;/strong&gt; - No $99/year Apple Developer fee, so users see Gatekeeper warning&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/praneeth552/clipflow" rel="noopener noreferrer"&gt;https://github.com/praneeth552/clipflow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback welcome! 🙏&lt;/p&gt;

</description>
      <category>programming</category>
      <category>macos</category>
      <category>swift</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I built a Serverless AI Job Search Agent with Next.js, FastAPI, and Google Gemini. Here is the Architecture. 🛠️</title>
      <dc:creator>KOTYADA SAI PRANEETH</dc:creator>
      <pubDate>Fri, 28 Nov 2025 06:35:14 +0000</pubDate>
      <link>https://dev.to/kotyada_saipraneeth_7be9/i-built-a-serverless-ai-job-search-agent-with-nextjs-fastapi-and-google-gemini-here-is-the-4pl4</link>
      <guid>https://dev.to/kotyada_saipraneeth_7be9/i-built-a-serverless-ai-job-search-agent-with-nextjs-fastapi-and-google-gemini-here-is-the-4pl4</guid>
      <description>&lt;p&gt;&lt;strong&gt;The Problem: Doom-Scrolling for Jobs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I graduated in July 2024 (B.Tech CS), and I quickly realized a painful truth: &lt;strong&gt;Job hunting is 90% manual data entry and 10% actual interviewing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was spending hours scrolling through portals, filtering by keywords, and trying to guess if a job description actually matched my resume. I wanted a tool that didn't just look for "Python" or "React," but actually understood the context of my experience.&lt;/p&gt;

&lt;p&gt;So, I stopped applying for a week and built TackleIt.&lt;/p&gt;

&lt;p&gt;It’s an AI-powered platform that scrapes real-time job listings and uses Google Gemini to match them against your specific profile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The High-Level Architecture&lt;/strong&gt; 🏗️&lt;/p&gt;

&lt;p&gt;I didn't want to build a simple CRUD app. I wanted a production-grade, scalable system that cost me $0 to run while I looked for work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is the full system architecture diagram I designed:&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%2Fl6jko87sorjydrgl1a2n.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%2Fl6jko87sorjydrgl1a2n.png" alt=" " width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🔍 &lt;strong&gt;How to Read This Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I designed the system in logical clusters to separate concerns. Here is how the data flows through the diagram above:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The Client Layer (Top Row)&lt;/strong&gt; Everything starts with &lt;strong&gt;Next.js&lt;/strong&gt; deployed on &lt;strong&gt;AWS Amplify&lt;/strong&gt;. I chose Amplify because it handles the CI/CD pipeline automatically. When a user lands on tackleit.xyz, the request routes through Hostinger DNS to the Amplify edge network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The Application Layer (Middle Left)&lt;/strong&gt; This is the engine room.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API Gateway:&lt;/strong&gt; Acts as the front door for the backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Lambda + Docker:&lt;/strong&gt; Instead of renting a server (EC2) that costs money 24/7, I packaged my &lt;strong&gt;FastAPI&lt;/strong&gt; backend into a Docker container. It sits in &lt;strong&gt;AWS ECR&lt;/strong&gt; and is deployed to Lambda. It only spins up when a user actually makes a request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The Intelligence Layer (Middle Right - The "Brain")&lt;/strong&gt; You’ll see &lt;strong&gt;Google Gemini AI&lt;/strong&gt; tagged in the diagram. This is where the logic differs from a standard job board.&lt;/p&gt;

&lt;p&gt;The Lambda function sends the parsed resume data + job description to Gemini 2.5 Flash.&lt;/p&gt;

&lt;p&gt;Gemini returns a &lt;strong&gt;Match Score&lt;/strong&gt; and reasoning, which is sent back to the user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. The Automation Cluster (Bottom Right)&lt;/strong&gt; This is my favorite part. I use &lt;strong&gt;GitHub Actions&lt;/strong&gt; not just for testing, but as a "Cron Job."&lt;/p&gt;

&lt;p&gt;Every week, a workflow triggers a set of &lt;strong&gt;Python Scrapers&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;These scrapers fetch fresh jobs and hydrate the &lt;strong&gt;MongoDB Atlas&lt;/strong&gt; database, so the app always has new content without me lifting a finger.&lt;/p&gt;

&lt;p&gt;🛠️ &lt;strong&gt;The Tech Stack&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Frontend:&lt;/strong&gt; Next.js, TypeScript, Tailwind CSS, Framer Motion&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend:&lt;/strong&gt; FastAPI (Python), Docker&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Database:&lt;/strong&gt; MongoDB Atlas&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI:&lt;/strong&gt; Google Gemini 2.5 Flash&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure:&lt;/strong&gt; AWS (Lambda, API Gateway, ECR, Amplify)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Gemini?&lt;/strong&gt; 🧠&lt;/p&gt;

&lt;p&gt;I tested a few models, but Gemini 2.5 Flash hit the sweet spot for this architecture. It has a massive context window (great for reading messy resumes)&lt;/p&gt;

&lt;p&gt;In the code, I don't just ask "Is this a match?" I provide the model with a specific persona: “You are a strict technical recruiter. Analyze this candidate's resume against this job description...”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try It Out&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The project is fully live and operational. You can use it right now to find jobs or just to poke around the dashboard.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Live Site:&lt;/strong&gt; &lt;a href="https://tackleit.xyz" rel="noopener noreferrer"&gt;https://tackleit.xyz&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I’m actively looking for feedback on the &lt;strong&gt;Data Layer&lt;/strong&gt; optimization and the &lt;strong&gt;Lambda Cold Start&lt;/strong&gt; times. If you have experience with serverless FastAPI, let me know in the comments!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>python</category>
      <category>gemini</category>
      <category>nextjs</category>
    </item>
  </channel>
</rss>
