<?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: Pavankumar Prajapati</title>
    <description>The latest articles on DEV Community by Pavankumar Prajapati (@pcoder3151).</description>
    <link>https://dev.to/pcoder3151</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%2F4157833%2F388fbc45-82a2-428a-9a9c-92fe91736cd7.jpg</url>
      <title>DEV Community: Pavankumar Prajapati</title>
      <link>https://dev.to/pcoder3151</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pcoder3151"/>
    <language>en</language>
    <item>
      <title>DM Polisher — Open-weight AI cold-DM writer for a friend</title>
      <dc:creator>Pavankumar Prajapati</dc:creator>
      <pubDate>Sun, 04 Oct 2026 17:25:32 +0000</pubDate>
      <link>https://dev.to/pcoder3151/dm-polisher-open-weight-ai-cold-dm-writer-for-a-friend-2g9i</link>
      <guid>https://dev.to/pcoder3151/dm-polisher-open-weight-ai-cold-dm-writer-for-a-friend-2g9i</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;What I Built&lt;br&gt;
DM Polisher — a cold-outreach message polisher built for a friend who kept sending the same templated internship DMs to every company: "I hope this email finds you well… I'm passionate about technology… Would you like to connect?" Zero responses.&lt;/p&gt;

&lt;p&gt;DM Polisher turns their saved skills + a target company into a crisp, three-sentence message — hook, proof of work, ask — with no AI clichés. LinkedIn DMs come out short and DM-tight; cold emails get a greeting and a sign-off. The friend saves their profile once; every draft after that reuses it.&lt;/p&gt;

&lt;p&gt;Demo&lt;br&gt;
Live: &lt;a href="https://dm-polisher.onrender.com/" rel="noopener noreferrer"&gt;https://dm-polisher.onrender.com/&lt;/a&gt;&lt;br&gt;
Video: [&lt;a href="https://youtu.be/q7C0r9oWmUw" rel="noopener noreferrer"&gt;VIDEO LINK&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;Code&lt;br&gt;
&lt;a href="https://github.com/PavanCoderr/dm-polisher" rel="noopener noreferrer"&gt;https://github.com/PavanCoderr/dm-polisher&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Open-source AI core: meta-llama/llama-3.1-8b-instruct (open-weight Llama 3.1 8B) served through Backboard. Each student maps to one Backboard assistant: its instructions hold the three-sentence writing contract, its memories hold the student's skills, and generation runs with memory: "Readonly" so the model recalls — never rewrites — their context.&lt;/p&gt;

&lt;p&gt;Frontend: React 19, Vite 7, Tailwind v4, shadcn/ui, React Router 7&lt;br&gt;
Backend &amp;amp; auth: Convex (queries, mutations, a "use node" action), Convex Auth with guest sign-in&lt;/p&gt;

&lt;p&gt;Hosting: Render static site via render.yaml; the generated Convex client is committed to git because npx convex codegen needs a login token CI doesn't have&lt;/p&gt;

&lt;p&gt;Resilience: if Backboard is unreachable, a deterministic offline writer in src/convex/mockWriter.ts produces the same structure and the UI flags the draft as degraded — the demo can never dead-end.&lt;/p&gt;

&lt;p&gt;Why Does Open Innovation Matter?&lt;br&gt;
Costs nothing to run. The model is open-weight, routed via Backboard — no per-request SaaS bill — and the offline writer is free.&lt;/p&gt;

&lt;p&gt;The model is swappable. Two env vars (BACKBORD_LLM_PROVIDER, BACKBORD_MODEL_NAME) re-point the same contract at any open-weight model; prompt, memory, and metrics stay untouched.&lt;/p&gt;

&lt;p&gt;Behavior is editable. The writing contract is one editable string in src/lib/backboard.ts, pushed into the assistant's instructions. Closed tooling hides that; open makes it yours.&lt;/p&gt;

&lt;p&gt;Memory is inspectable. Skills live as readable memories on the student's assistant, and the data stays in the student's own Convex deployment.&lt;/p&gt;

&lt;p&gt;Concrete proof it mattered: v1 called a closed gpt-4o-mini endpoint through an unprovisioned platform key and threw on the first generation. Moving the same contract onto an open-weight model through Backboard fixed the demo and let me see exactly what the model receives.&lt;/p&gt;

&lt;p&gt;Prize Categories&lt;br&gt;
Best Use of Render — the app is hosted on Render as a static site (blueprint in render.yaml, zero-state restartable)&lt;/p&gt;

&lt;p&gt;Best Use of Backboard — Backboard is the AI brain: assistant per student, skills-as-memories, open-weight model routing, memory: "Readonly" generation&lt;/p&gt;

&lt;p&gt;Best Use of ElevenLabs — the demo video is narrated with ElevenLabs voice cloning + Studio&lt;/p&gt;

&lt;p&gt;Best Use of GitHub Copilot — GitHub Actions CI (npm run typecheck + build on every push), with Copilot CLI used to review and refine the pipeline&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>hello everyone</title>
      <dc:creator>Pavankumar Prajapati</dc:creator>
      <pubDate>Fri, 02 Oct 2026 15:18:40 +0000</pubDate>
      <link>https://dev.to/pcoder3151/hello-everyone-3gkh</link>
      <guid>https://dev.to/pcoder3151/hello-everyone-3gkh</guid>
      <description>&lt;p&gt;hi i am pavan &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
