<?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: Enrique Rubio López</title>
    <description>The latest articles on DEV Community by Enrique Rubio López (@enrique_rubiolpez_0a8a1).</description>
    <link>https://dev.to/enrique_rubiolpez_0a8a1</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%2F3931052%2F5d1338a1-5a4d-4046-8306-087b6055ca3c.png</url>
      <title>DEV Community: Enrique Rubio López</title>
      <link>https://dev.to/enrique_rubiolpez_0a8a1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/enrique_rubiolpez_0a8a1"/>
    <language>en</language>
    <item>
      <title>I built an AI proposal generator for freelancers in 30 seconds – here's what I learned</title>
      <dc:creator>Enrique Rubio López</dc:creator>
      <pubDate>Thu, 14 May 2026 10:57:51 +0000</pubDate>
      <link>https://dev.to/enrique_rubiolpez_0a8a1/i-built-an-ai-proposal-generator-for-freelancers-in-30-seconds-heres-what-i-learned-14bc</link>
      <guid>https://dev.to/enrique_rubiolpez_0a8a1/i-built-an-ai-proposal-generator-for-freelancers-in-30-seconds-heres-what-i-learned-14bc</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Every time I had to write a proposal for a client, I spent 2-3 hours on it. Researching their brief, structuring sections, finding the right tone.&lt;br&gt;
Most of the time the client had already hired someone else by the time I sent it.&lt;/p&gt;

&lt;p&gt;So I built ProposalPilot.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;You paste the client's project brief, pick your service type (web dev, design, marketing, consulting), and get a full personalized proposal in ~30 seconds. The output streams in real time so you see it being written, which feels surprisingly satisfying.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://autoproposal-six.vercel.app" rel="noopener noreferrer"&gt;https://autoproposal-six.vercel.app&lt;/a&gt; — free to try, 3 proposals/month&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Next.js 14&lt;/strong&gt; (App Router, Server Components)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic Claude API&lt;/strong&gt; for generation with streaming&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supabase&lt;/strong&gt; for auth + database (RLS on every table)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stripe&lt;/strong&gt; for payments ($19/month Pro plan)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vercel&lt;/strong&gt; for hosting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The streaming was the trickiest part — piping Claude's stream through a Next.js Route Handler to the client with &lt;code&gt;ReadableStream&lt;/code&gt; and &lt;code&gt;TextDecoder&lt;/code&gt;. Once it clicked it felt like magic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it is right now
&lt;/h2&gt;

&lt;p&gt;This is an early version. The core flow works end-to-end but there's a lot still rough:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Templates could be smarter per niche&lt;/li&gt;
&lt;li&gt;No PDF/Word export yet&lt;/li&gt;
&lt;li&gt;The pricing section outputs a placeholder (you fill in your number)&lt;/li&gt;
&lt;li&gt;Mobile needs work&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I'm trying to figure out
&lt;/h2&gt;

&lt;p&gt;The technical side feels solid. What I genuinely don't know yet is whether the &lt;strong&gt;output quality is good enough&lt;/strong&gt; that a freelancer would actually send it with minor tweaks, or if it's the kind of thing you'd rewrite entirely.&lt;/p&gt;

&lt;p&gt;If you're a freelancer or consultant, I'd love to hear your take — even a quick "this is usable" or "this needs work" in the comments helps a lot.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>nextjs</category>
      <category>ai</category>
      <category>buildinpublic</category>
    </item>
  </channel>
</rss>
