<?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: Komal Harshita</title>
    <description>The latest articles on DEV Community by Komal Harshita (@komal_harshita_018ba8ae14).</description>
    <link>https://dev.to/komal_harshita_018ba8ae14</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3587558%2F0927130b-40b4-4c84-9b41-e1dadcfb055c.jpg</url>
      <title>DEV Community: Komal Harshita</title>
      <link>https://dev.to/komal_harshita_018ba8ae14</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/komal_harshita_018ba8ae14"/>
    <language>en</language>
    <item>
      <title>Ghost in My Code: an open-weight code archaeologist for code nobody documented</title>
      <dc:creator>Komal Harshita</dc:creator>
      <pubDate>Thu, 29 Oct 2026 13:47:36 +0000</pubDate>
      <link>https://dev.to/komal_harshita_018ba8ae14/ghost-in-my-code-an-open-weight-code-archaeologist-for-code-nobody-documented-1n6i</link>
      <guid>https://dev.to/komal_harshita_018ba8ae14/ghost-in-my-code-an-open-weight-code-archaeologist-for-code-nobody-documented-1n6i</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Ghost in My Code&lt;/strong&gt; is a code archaeologist. You paste in a snippet you inherited — the Python 2 file nobody will admit to writing, the callback pyramid from before &lt;code&gt;async/await&lt;/code&gt;, the C string handling that still compiles — and it returns an autopsy: what the code actually does, which patterns are outdated, a suggested modern rewrite, line-by-line notes, an honest list of uncertainties, and a short fictional "Ghost Diary" written in the voice of the code itself.&lt;/p&gt;

&lt;p&gt;I read "Ghost in the Machine" literally and kindly. The ghost isn't a monster — it's the previous developer, who is usually a slightly younger version of you, and who did their best with the idioms they had. Día de los Muertos is about keeping the dead in the room with you, not exorcising them, so the whole interface is a warm terminal you set a relic on and examine. The narrative voice is clearly labeled fiction; the technical findings are grounded in the actual snippet.&lt;/p&gt;

&lt;p&gt;The rule I held myself to while building it: the app may only claim what it actually did. It never executes your code, never says a rewrite is verified equivalent, and never shows a pre-written report without stamping it &lt;code&gt;DEMO REPORT&lt;/code&gt;.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://ghost-in-my-code.lovable.app" rel="noopener noreferrer"&gt;ghost-in-my-code.lovable.app&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Public archive:&lt;/strong&gt; &lt;a href="https://ghost-in-my-code.lovable.app/gallery" rel="noopener noreferrer"&gt;ghost-in-my-code.lovable.app/gallery&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try this in about twenty seconds: open the app, pick a sample relic from the four bundled ones, and read the four report tabs — Overview, Code Autopsy, Modernization Studio, and Ghost's Diary. The Autopsy separates deterministic findings (regex checks the app ran itself) from model observations, so you can always tell which is which. Save a relic and it lands in the shared archive, visible to every other visitor, which is why the save dialog says so out loud.&lt;/p&gt;

&lt;p&gt;If the model can't answer, the header tells you which provider is wired up and why the run failed, instead of quietly handing you something else.&lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;The full source is at: &lt;strong&gt;&lt;code&gt;https://github.com/komalharshita/ghost-in-my-code.git&lt;/code&gt;&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;What's in there:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/lib/ghost/
  types.ts               typed report + input models
  validate.ts            JSON extraction, report schema validation
  deterministic.ts       regex static checks (never runs the code)
  samples.ts             four bundled sample relics + demo reports
  analyze.functions.ts   server function: provider, prompt, retry, errors
  storage.ts             shared relic archive (list, save, rename, delete)
src/routes/
  index.tsx              workspace: relic panel + findings panel
  gallery.tsx            public archive with language filters
src/test/                12 tests: validation, extraction, static checks, routing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;React + TypeScript + Tailwind on TanStack Start, deployed as a Cloudflare Worker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The open-weight model.&lt;/strong&gt; Analysis runs through an OpenAI-compatible chat endpoint, and the preferred provider is &lt;code&gt;google/gemma-3-27b-it&lt;/code&gt; served by Hugging Face Inference Providers, selected purely by a server-side key. Nothing about the app is Gemma-specific: &lt;code&gt;OPEN_MODEL_BASE_URL&lt;/code&gt; and &lt;code&gt;OPEN_MODEL_ID&lt;/code&gt; point it at any OpenAI-compatible host serving any open model, so swapping in a smaller Gemma for local use is an environment variable, not a refactor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The model is the smallest part of the pipeline.&lt;/strong&gt; Around it sits a deliberately boring harness:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Validate input server-side — language whitelist, 8,000-character cap, title length.&lt;/li&gt;
&lt;li&gt;Best-effort rate limit (8/min per worker instance).&lt;/li&gt;
&lt;li&gt;Run deterministic regex checks so the report has claims the app proved itself.&lt;/li&gt;
&lt;li&gt;Send the snippet to the model inside &lt;code&gt;&amp;lt;relic&amp;gt;&lt;/code&gt; tags, with a system prompt that declares the code untrusted data, forbids following instructions embedded in it, forbids claiming execution, and forbids inventing APIs, authors, dates or benchmarks.&lt;/li&gt;
&lt;li&gt;Extract and validate the JSON against a report schema; on failure, one corrective retry asking for only the corrected object; on second failure, return a real error.&lt;/li&gt;
&lt;li&gt;Return a typed report — the client renders model output as text, never as HTML.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Honesty is a schema, not a vibe.&lt;/strong&gt; The report type carries &lt;code&gt;source&lt;/code&gt; (&lt;code&gt;ai&lt;/code&gt; or &lt;code&gt;demo&lt;/code&gt;), &lt;code&gt;provider&lt;/code&gt;, &lt;code&gt;model&lt;/code&gt;, and an &lt;code&gt;openWeight&lt;/code&gt; flag, and the UI prints them. Demo reports are pre-written for the four bundled samples and are stamped &lt;code&gt;DEMO REPORT · PRE-WRITTEN, NOT A LIVE AI ANALYSIS&lt;/code&gt;. There is no path where a demo report reaches the screen unlabelled.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The shared archive.&lt;/strong&gt; Saved relics live in a Postgres table, not in your browser, so the gallery is a real artifact other people can add to. Anyone can read and insert; rename and delete go through &lt;code&gt;SECURITY DEFINER&lt;/code&gt; RPCs that check a per-relic edit token handed out at insert time and kept only in the creator's browser. No accounts, no passwords, and still no way for a stranger to rewrite your relic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A caveat I'd rather state than have you find.&lt;/strong&gt; My Hugging Face account is out of inference credits today, so live Gemma runs currently return &lt;code&gt;402&lt;/code&gt; and the app shows exactly that message. The wiring is in place and the header names the provider; a clean live run needs credits on the account. I don't want to imply a run I haven't done.&lt;/p&gt;

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

&lt;p&gt;Because a code archaeologist that only works while a paid key is valid isn't an archaeologist, it's a subscription.&lt;/p&gt;

&lt;p&gt;Three things open weights made possible that a closed API wouldn't have:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The model is replaceable by design.&lt;/strong&gt; Gemma is the target, but the app only knows "an OpenAI-compatible endpoint and a model id." That's the whole integration surface, and it exists because I started from an open model rather than a vendor SDK. A closed API would have quietly become the product's architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Legacy code is the worst possible thing to send to a vendor.&lt;/strong&gt; The snippets people paste in are exactly the code they shouldn't be shipping to a third party — internal systems, unmaintained in-house tools, a university assignment from someone who never consented to being ingested. Open weights mean "run this on your own machine" is a real instruction, not a marketing line, and the app says plainly which provider your code is going to before you send it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The license story stays honest.&lt;/strong&gt; My code is MIT. Gemma's weights are under Google's Gemma Terms of Use, and the README says so instead of pretending one license covers both. A project that ships model output as its core feature should be able to name the terms behind every byte of it.&lt;/p&gt;

&lt;p&gt;Open also made the fallback design possible. When no open-weight key is configured, the app will use a proprietary model — but it prints &lt;code&gt;proprietary fallback&lt;/code&gt;, never &lt;code&gt;open-weight&lt;/code&gt;. You only build that distinction if the open model is the default you're trying to reach.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Spirit of It
&lt;/h2&gt;

&lt;p&gt;The first time the diary generator ran on the Python 2 sample, it produced a line about hoping someone had finally written the documentation. It sat there in the panel, a few lines of invented feeling attached to eleven lines of real code that had genuinely outlived every person who understood it, and I understood the pitch better than any spec I had written.&lt;/p&gt;

&lt;p&gt;The archive is what made it stick. It currently holds one relic — a throwaway test entry I never cleaned up — so the gallery is honestly a beginning, not a collection. But the shape is right: strangers dropping in fragments of code that outlived their context, each with a report and a short fictional voice attached, the way you'd leave something on an ofrenda. Nobody has to be the last person who remembers what a piece of code was for.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma&lt;/strong&gt; — the analysis is built around &lt;code&gt;google/gemma-3-27b-it&lt;/code&gt; via Hugging Face Inference Providers, with the provider layer written so any OpenAI-compatible open-weight host can be swapped in by environment variable.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>hacktoberfest</category>
      <category>ai</category>
    </item>
    <item>
      <title>ListingSmith — an open-weight AI listing writer for Etsy &amp; eBay sellers</title>
      <dc:creator>Komal Harshita</dc:creator>
      <pubDate>Sat, 17 Oct 2026 14:16:31 +0000</pubDate>
      <link>https://dev.to/komal_harshita_018ba8ae14/listingsmith-an-open-weight-ai-listing-writer-for-etsy-ebay-sellers-524m</link>
      <guid>https://dev.to/komal_harshita_018ba8ae14/listingsmith-an-open-weight-ai-listing-writer-for-etsy-ebay-sellers-524m</guid>
      <description>&lt;p&gt;This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/p&gt;

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

&lt;p&gt;ListingSmith turns rough product notes into a sell-ready marketplace listing in seconds. Paste in a few lines about your product — materials, size, story, care instructions — and it produces a marketplace-compliant title, description, bullet points, tags, a price suggestion and an SEO tip, all tuned to the real rules of the platform you picked (Etsy's 140-character titles and 13 tags, eBay's 80-character titles).&lt;/p&gt;

&lt;p&gt;It also shows a profit calculator next to every listing: platform listing fees, payment processing, shipping and your margin, in Indian rupees — so a seller knows whether the price actually makes money before they hit publish.&lt;/p&gt;

&lt;p&gt;Who would pay for it? Small makers and resellers. Writing one good Etsy listing by hand takes 20–40 minutes of fighting title limits and tag rules. A seller listing 50 products a month gets hours back, and the open-weight models it runs on cost a fraction of a rupee per listing.&lt;/p&gt;

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

&lt;p&gt;Live demo: &lt;a href="https://my-listing-smith.lovable.app" rel="noopener noreferrer"&gt;https://my-listing-smith.lovable.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try it with the sample notes already filled in — pick Etsy or eBay, choose a tone, and hit "Write my listing".&lt;/p&gt;

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

&lt;p&gt;The full source is MIT-licensed:&lt;/p&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/komalharshita" rel="noopener noreferrer"&gt;
        komalharshita
      &lt;/a&gt; / &lt;a href="https://github.com/komalharshita/listing-smith" rel="noopener noreferrer"&gt;
        listing-smith
      &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;ListingSmith&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Rough notes in, sell-ready listing out.&lt;/strong&gt; An open-weight AI listing writer for Etsy and eBay sellers, running on DigitalOcean GenAI Serverless Inference.&lt;/p&gt;
&lt;p&gt;Built for &lt;em&gt;Hacktoberfest Hack Day Pune × AI Hackers Collective — Best Open-Source AI Project (Side Hustle theme).&lt;/em&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why someone would pay for it&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Small makers spend 20–40 minutes per listing fighting title limits, 13-tag rules and SEO. ListingSmith produces a marketplace-compliant title, description, bullets, tags, price check and SEO tip in seconds, for well under a cent per listing.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why open weights matter here&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Swap models freely&lt;/strong&gt; — Llama 3.3 70B, Mistral Nemo, DeepSeek R1 Distill, Llama 3 8B. Pick quality vs. speed per listing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost&lt;/strong&gt; — open models on serverless inference cost a fraction of closed APIs; a seller can generate hundreds of listings for a few rupees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data control&lt;/strong&gt; — seller notes go only to the seller's own DigitalOcean endpoint; nothing is stored. Point…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/komalharshita/listing-smith" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Highlights of the codebase:&lt;/p&gt;

&lt;p&gt;src/lib/listing-pipeline.ts — pure, unit-tested prompt building and output parsing. Marketplace rules (title length, tag count, tag character caps) live here as data, enforced after parsing so the model can never overflow them.&lt;br&gt;
src/lib/listing.functions.ts — the server function that validates input (zod) and routes to either the built-in AI gateway or any OpenAI-compatible endpoint.&lt;br&gt;
src/lib/listing-costs.ts — pure fee/shipping/profit math for Etsy and eBay, with tests.&lt;br&gt;
Dockerfile + .do/app.yaml — one-command deploy to DigitalOcean App Platform.&lt;/p&gt;

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

&lt;p&gt;The stack is TypeScript, React 19, TanStack Start, Tailwind CSS v4 and Vitest, containerised with Docker for DigitalOcean App Platform.&lt;/p&gt;

&lt;p&gt;The AI core is built around open-weight models served through DigitalOcean GenAI Serverless Inference (an OpenAI-compatible API). The model picker offers:&lt;/p&gt;

&lt;p&gt;Llama 3.3 70B Instruct (Meta)&lt;br&gt;
Mistral Nemo 12B (Apache 2.0)&lt;br&gt;
DeepSeek R1 Distill Llama 70B (MIT)&lt;br&gt;
Llama 3 8B Instruct (fast/cheap tier)&lt;/p&gt;

&lt;p&gt;The pipeline is: seller notes → buildMessages() (a system prompt that demands strict JSON with marketplace limits baked in) → model → parseListing() (strips reasoning blocks and code fences, extracts the JSON, then hard-enforces title/tag caps and de-duplicates tags). Because the rules are enforced in code, not just requested in the prompt, the output is compliant even when a smaller model gets sloppy.&lt;/p&gt;

&lt;p&gt;Two environment variables configure it: DIGITALOCEAN_GENAI_API_KEY and DIGITALOCEAN_GENAI_BASE_URL.&lt;/p&gt;

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

&lt;p&gt;This project simply doesn't work as a closed-API product:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost — a side-hustle seller can't pay per-token closed-model prices for a tool that saves them 30 minutes. Open-weight models on serverless inference cost well under a cent per listing, so the tool can be free or nearly free&lt;/li&gt;
&lt;li&gt;Data control — sellers' product notes are their business. With an OpenAI-compatible endpoint they choose, notes go only to infrastructure they picked — or nowhere at all, with local Ollama.&lt;/li&gt;
&lt;li&gt;Tunability — the prompt and parsing rules are plain, tested code, and the model is swappable. A seller can fine-tune a Llama on their own best-selling listings and plug it straight in. No closed API offers that without lock-in.&lt;/li&gt;
&lt;li&gt;Licences that match the spirit — the code is MIT, and the models it ships with are Apache 2.0 / MIT / Llama Community License. Anyone can fork it, self-host it, and sell with it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I built this with an AI coding agent (Lovable). The agent wrote the pipeline, UI, tests, Dockerfile and deploy spec; I steered the product decisions — the side-hustle angle, the rupee-denominated profit calculator, and the open-weight model lineup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prize Categories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Best Open-Source AI Project — the core mechanic is open-weight models (Llama, Mistral, DeepSeek) behind an OpenAI-compatible endpoint, the code is MIT-licensed, and it can run fully offline on local inference.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Deploying My Portfolio with Kuberns AI — Easier Than I Expected</title>
      <dc:creator>Komal Harshita</dc:creator>
      <pubDate>Mon, 02 Mar 2026 10:12:33 +0000</pubDate>
      <link>https://dev.to/komal_harshita_018ba8ae14/deploying-my-portfolio-with-kuberns-ai-easier-than-i-expected-4359</link>
      <guid>https://dev.to/komal_harshita_018ba8ae14/deploying-my-portfolio-with-kuberns-ai-easier-than-i-expected-4359</guid>
      <description>&lt;p&gt;I’ll be honest.&lt;/p&gt;

&lt;p&gt;Deploying projects is usually the part I delay the most.&lt;br&gt;
Not because I don’t finish building them — but because hosting, setup, and infrastructure always feel overwhelming.&lt;/p&gt;

&lt;p&gt;This time, I decided to try deploying my portfolio using Kuberns AI’s one-click deployment.&lt;/p&gt;

&lt;p&gt;And it was… surprisingly simple.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;My Portfolio Is Now Live&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here’s the link:&lt;br&gt;
👉 &lt;a href="https://portfolio-main-73f0916.kuberns.cloud/" rel="noopener noreferrer"&gt;https://portfolio-main-73f0916.kuberns.cloud/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Seeing it live felt good — especially knowing I didn’t struggle with complicated configuration to get there.&lt;/p&gt;

&lt;p&gt;What the Process Looked Like&lt;/p&gt;

&lt;p&gt;It was basically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connect my code&lt;/li&gt;
&lt;li&gt;Click deploy&lt;/li&gt;
&lt;li&gt;Wait a few minutes&lt;/li&gt;
&lt;li&gt;Get a live URL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No server setup.&lt;br&gt;
No manual infrastructure configuration.&lt;br&gt;
No confusing steps.&lt;/p&gt;

&lt;p&gt;For someone who’s still learning and not deeply into DevOps, that made a big difference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Dashboard Experience&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Kuberns dashboard was straightforward.&lt;br&gt;
I could clearly see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deployment status&lt;/li&gt;
&lt;li&gt;Resource usage&lt;/li&gt;
&lt;li&gt;My live URL&lt;/li&gt;
&lt;li&gt;Build history&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything was organized in one place, and I didn’t feel lost navigating it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How AI Helped&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What stood out most was how smooth everything felt.&lt;/p&gt;

&lt;p&gt;Instead of worrying about technical setup, I could focus on improving my portfolio itself — refining content, fixing UI details, and making sure everything worked properly.&lt;/p&gt;

&lt;p&gt;The AI-driven deployment removed that “deployment fear” barrier.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why This Matters (At Least For Me)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As students and early developers, we build a lot.&lt;br&gt;
But we don’t always ship.&lt;/p&gt;

&lt;p&gt;Making deployment easier makes it more likely that we actually publish our work instead of leaving it on localhost.&lt;/p&gt;

&lt;p&gt;If you’re building projects and want a simpler way to go live, you can check it out here:&lt;br&gt;
👉 &lt;a href="https://kuberns.com" rel="noopener noreferrer"&gt;https://kuberns.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This experience reminded me that sometimes the hardest part isn’t coding — it’s putting your work out there.&lt;/p&gt;

&lt;p&gt;Now that my portfolio is live, I’m more motivated to keep building and keep shipping.&lt;/p&gt;

</description>
      <category>kuberns</category>
      <category>studentdeveloper</category>
      <category>aichallenge</category>
      <category>kubernschallenge</category>
    </item>
    <item>
      <title>From Prompts to Pipelines: What I Learned About Building Real AI Agents</title>
      <dc:creator>Komal Harshita</dc:creator>
      <pubDate>Thu, 04 Dec 2025 05:06:43 +0000</pubDate>
      <link>https://dev.to/komal_harshita_018ba8ae14/from-prompts-to-pipelines-what-i-learned-about-building-real-ai-agents-2b7i</link>
      <guid>https://dev.to/komal_harshita_018ba8ae14/from-prompts-to-pipelines-what-i-learned-about-building-real-ai-agents-2b7i</guid>
      <description>&lt;h2&gt;
  
  
  From Prompts to Pipelines: What I Learned About Building Real AI Agents
&lt;/h2&gt;

&lt;p&gt;When I joined the AI Agents Intensive, I thought “agents” were nothing but just smart chatbots. And by the end, I was building &lt;strong&gt;ProdigyFlow&lt;/strong&gt; — a full multi-agent pipeline that loads raw data, cleans it, analyzes it, creates charts, and finally produces an automated report.&lt;/p&gt;

&lt;p&gt;This course completely changed how I think about AI.&lt;/p&gt;

&lt;p&gt;The biggest shift for me was understanding that agents are not one big model — &lt;strong&gt;they’re a team&lt;/strong&gt;. Each agent has a job, its own tools, and a clear role in the pipeline.&lt;br&gt;
In ProdigyFlow, we built:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;Cleaning Agent&lt;/strong&gt; to fix messy data&lt;/li&gt;
&lt;li&gt;an &lt;strong&gt;Analysis Agent&lt;/strong&gt; to derive insights&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;Visualization Agent&lt;/strong&gt; to generate graphs&lt;/li&gt;
&lt;li&gt;and a &lt;strong&gt;Main File&lt;/strong&gt; to make them work together smoothly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Seeing these parts collaborate felt like building a small company inside Python.&lt;/p&gt;

&lt;p&gt;There were a lot of behind-the-scenes struggles too:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API keys broke so many times we memorized our &lt;code&gt;.env&lt;/code&gt; file 😭&lt;/li&gt;
&lt;li&gt;GitHub workflows failed at 2 AM for reasons we did not understand&lt;/li&gt;
&lt;li&gt;We learned how important logs, error handling, and reproducible runs really are&lt;/li&gt;
&lt;li&gt;Python libraries (Pandas, Matplotlib, tqdm) became our superpowers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But every challenge made the final system more real.&lt;/p&gt;

&lt;p&gt;This project also became a true team win. My teammate &lt;strong&gt;Priyamvadha&lt;/strong&gt; and I figured things out together — fixing bugs, testing agents, and redesigning the pipeline more than once.&lt;/p&gt;

&lt;p&gt;Here are the project links if you want to explore:&lt;br&gt;
🔗 GitHub: &lt;a href="https://github.com/komalharshita/prodigyflow" rel="noopener noreferrer"&gt;https://github.com/komalharshita/prodigyflow&lt;/a&gt;&lt;br&gt;
🔗 Kaggle Submission: &lt;a href="https://www.kaggle.com/competitions/agents-intensive-capstone-project/writeups/ProdigyFlow" rel="noopener noreferrer"&gt;https://www.kaggle.com/competitions/agents-intensive-capstone-project/writeups/ProdigyFlow&lt;/a&gt;&lt;br&gt;
🔗 My LinkedIn: &lt;a href="https://www.linkedin.com/in/komalharshita/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/komalharshita/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Huge thanks to &lt;strong&gt;Google&lt;/strong&gt;, &lt;strong&gt;Kaggle&lt;/strong&gt;, and the mentors for creating this opportunity. I started this course writing simple prompts, and finished by building an end-to-end intelligent pipeline.&lt;/p&gt;

</description>
      <category>googleaichallenge</category>
      <category>ai</category>
      <category>agents</category>
      <category>devchallenge</category>
    </item>
  </channel>
</rss>
