<?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: Hao Wang</title>
    <description>The latest articles on DEV Community by Hao Wang (@snowsky_85).</description>
    <link>https://dev.to/snowsky_85</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%2F999990%2Fbb4e96ce-1afd-45d6-8864-ad5de1ff538a.jpeg</url>
      <title>DEV Community: Hao Wang</title>
      <link>https://dev.to/snowsky_85</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/snowsky_85"/>
    <language>en</language>
    <item>
      <title>I Built a Full SaaS Finance App Solo Using AI — Here's My Honest Take on Every Model I Used</title>
      <dc:creator>Hao Wang</dc:creator>
      <pubDate>Thu, 26 Mar 2026 15:36:11 +0000</pubDate>
      <link>https://dev.to/snowsky_85/i-built-a-full-saas-finance-app-solo-using-ai-heres-my-honest-take-on-every-model-i-used-28ie</link>
      <guid>https://dev.to/snowsky_85/i-built-a-full-saas-finance-app-solo-using-ai-heres-my-honest-take-on-every-model-i-used-28ie</guid>
      <description>&lt;p&gt;I'm a DevOps engineer. Not a "real" fullstack developer by training. But over the past year I've been building &lt;strong&gt;&lt;a href="https://github.com/snowsky/yourfinanceworks" rel="noopener noreferrer"&gt;YourFinanceWORKS&lt;/a&gt;&lt;/strong&gt; — a self-hosted, AI-powered finance platform with invoicing, OCR receipt processing, bank reconciliation, multi-tenant architecture, MCP integration, and a full business intelligence layer.&lt;/p&gt;

&lt;p&gt;Python/FastAPI backend. React + TypeScript + Vite frontend. 670+ commits. One person.&lt;/p&gt;

&lt;p&gt;AI made this possible. And I went through &lt;em&gt;a lot&lt;/em&gt; of models to get here.&lt;/p&gt;

&lt;p&gt;This is my honest, unsponsored breakdown of every model I used — what worked, what didn't, and what surprised me.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧪 Phase 1: The Free Model Rotation
&lt;/h2&gt;

&lt;p&gt;Before paying for anything, I treated free models like a buffet. Here's what I found:&lt;/p&gt;

&lt;h3&gt;
  
  
  Windsurf SWE-1.5
&lt;/h3&gt;

&lt;p&gt;Genuinely the best free option for coding tasks. Fast responses, decent output quality, and it handles real engineering problems — not just toy examples. I've half-jokingly wondered if Windsurf has some Google collaboration going on given how polished it feels for a free tier.&lt;/p&gt;

&lt;p&gt;If you're a developer on a budget, &lt;strong&gt;start here&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Grok Code
&lt;/h3&gt;

&lt;p&gt;Worth keeping in your rotation. Solid for dev tasks and it's free. Not my first call for complex refactoring, but for quick code generation and boilerplate it holds its own.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ollama (Local Models)
&lt;/h3&gt;

&lt;p&gt;I really &lt;em&gt;wanted&lt;/em&gt; this to work. The appeal of running everything locally — privacy, no API costs, full control — is real. And the output quality was okay. But the &lt;strong&gt;speed killed my flow completely&lt;/strong&gt;. When you're deep in debugging a multi-tenant isolation issue, waiting 30+ seconds per response breaks the mental thread entirely. Local models will get there, but they're not there yet for serious daily use on consumer hardware.&lt;/p&gt;

&lt;h3&gt;
  
  
  Free OCR Models
&lt;/h3&gt;

&lt;p&gt;This one matters a lot for YourFinanceWORKS since OCR is central to the receipt and invoice processing features. My honest experience: &lt;strong&gt;roughly 80% accuracy&lt;/strong&gt;. That sounds acceptable until you're reconciling actual financial data and realize that 20% error rate means manual correction on 1 in 5 documents. Not viable at scale.&lt;/p&gt;

&lt;p&gt;For comparison, &lt;strong&gt;Claude Haiku&lt;/strong&gt; — Anthropic's smallest paid model — made noticeably fewer mistakes. Not zero, but the gap was meaningful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemini Free Tier + Mistral Le Chat
&lt;/h3&gt;

&lt;p&gt;Both solid for research, long-context reading, and general questions. Mistral is underrated for reasoning tasks. Neither replaced a proper coding assistant for me, but they filled gaps well.&lt;/p&gt;




&lt;h2&gt;
  
  
  📅 Phase 2: Gemini Advanced (A Couple of Months)
&lt;/h2&gt;

&lt;p&gt;I paid for Gemini Advanced for a couple of months and it had genuine strengths.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it excelled:&lt;/strong&gt; UI work. Gemini has a strong instinct for layout and component design. For the React/TypeScript frontend — building out dashboards, data tables, form flows — it consistently produced clean, well-structured components. If your work is frontend-heavy, Gemini is worth serious consideration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where it fell short (for me):&lt;/strong&gt; Deep backend logic. When I was debugging gnarly FastAPI issues, refactoring complex multi-tenant database isolation, or reasoning through Kafka event flow — the responses felt like they understood the &lt;em&gt;surface&lt;/em&gt; of the problem but not the intent behind it. I kept having to over-explain context that a more senior-feeling model would have inferred.&lt;/p&gt;

&lt;p&gt;Good product. Just not the right fit for the kind of work I was doing most.&lt;/p&gt;




&lt;h2&gt;
  
  
  ✅ Phase 3: Claude Pro (This Month — Where I Landed)
&lt;/h2&gt;

&lt;p&gt;This is where bug fixing and refactoring finally felt right.&lt;/p&gt;

&lt;p&gt;The difference I kept noticing: Claude understands the &lt;strong&gt;intent&lt;/strong&gt; behind code, not just the syntax. When I'm tracking down a subtle multi-tenant isolation bug, it doesn't just look at the function I paste — it reasons about what I'm &lt;em&gt;trying to do&lt;/em&gt; and where the breakdown is likely happening. When I ask for a refactor, it asks clarifying questions that show it understood the architecture, not just the snippet.&lt;/p&gt;

&lt;p&gt;For a project like YourFinanceWORKS — with real financial logic, security-sensitive multi-tenant patterns, and a lot of interconnected moving parts — that difference matters a lot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it perfect?&lt;/strong&gt; No. It makes mistakes. It sometimes over-explains. But for the specific task of "help me fix this real bug in a real codebase," it's the best I've used.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤔 The Rate Limit: An Unpopular Opinion
&lt;/h2&gt;

&lt;p&gt;Here's something I didn't expect to say: &lt;strong&gt;Claude's rate limit has been good for me.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was using AI as a pure reflex. Every half-formed thought, every minor question, every moment of uncertainty — I'd just fire it off immediately without thinking first. It became a dependency loop. The question would pop into my head and I'd be typing before I even finished forming the thought.&lt;/p&gt;

&lt;p&gt;The rate limit broke that loop.&lt;/p&gt;

&lt;p&gt;Suddenly I had to triage. &lt;em&gt;Is this question actually worth using a message on? Can I think through this myself first? Can I look it up?&lt;/em&gt; The friction forced me back into the habit of actually thinking — and I started retaining more because I wasn't just offloading everything.&lt;/p&gt;

&lt;p&gt;Long term, I genuinely believe the rate limit is helping me avoid a real AI dependency problem. I came to Claude a bit addicted to the instant-answer reflex that unlimited free models had built in me. The constraint is doing what I couldn't do on my own: making me more intentional.&lt;/p&gt;

&lt;p&gt;I know that's not a popular take. But it's been my experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  🗺️ My Model-to-Task Map (After All This)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;My Go-To&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Bug fixing &amp;amp; refactoring&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Claude&lt;/strong&gt; (not close)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UI / frontend components&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Gemini&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quick code generation&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Windsurf SWE-1.5&lt;/strong&gt; or &lt;strong&gt;Grok Code&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local / private work&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; (if speed isn't critical)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OCR at scale&lt;/td&gt;
&lt;td&gt;Don't cheap out — the accuracy gap is real&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Research &amp;amp; long-context&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Gemini&lt;/strong&gt; or &lt;strong&gt;Mistral&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  💭 The Bigger Question
&lt;/h2&gt;

&lt;p&gt;The README for YourFinanceWORKS ends with a question I've been sitting with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Is the SaaS business model really dying? With AI drastically lowering the barrier to building sophisticated software, what can one person with DevOps skills and AI assistance actually ship?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I don't have a clean answer yet. But I built a multi-tenant finance SaaS with OCR, banking reconciliation, MCP integration, and business intelligence — solo, while working a day job — and it runs in production.&lt;/p&gt;

&lt;p&gt;That used to require a team. Now it requires the right AI stack and the discipline to use it well.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;The project is open source (AGPL-3.0 for the core): &lt;a href="https://github.com/snowsky/yourfinanceworks" rel="noopener noreferrer"&gt;github.com/snowsky/yourfinanceworks&lt;/a&gt;. Happy to discuss the architecture, the AI workflow, or anything else in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Meet the app: my financial command center</title>
      <dc:creator>Hao Wang</dc:creator>
      <pubDate>Thu, 12 Mar 2026 20:55:22 +0000</pubDate>
      <link>https://dev.to/snowsky_85/meet-the-app-my-financial-command-center-2i3m</link>
      <guid>https://dev.to/snowsky_85/meet-the-app-my-financial-command-center-2i3m</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/wecoded-2026"&gt;2026 WeCoded Challenge&lt;/a&gt;: Echoes of Experience&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This project, &lt;a href="https://github.com/snowsky/yourfinanceworks" rel="noopener noreferrer"&gt;https://github.com/snowsky/yourfinanceworks&lt;/a&gt;, started as a simple invoice tracker, but it grew into a small personal finance hub where I can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track invoices: who owes me, what’s paid, and what’s overdue&lt;/li&gt;
&lt;li&gt;Manage expenses: categorize receipts and day‑to‑day spending&lt;/li&gt;
&lt;li&gt;Import bank statements: reconcile transactions with my invoices and expenses&lt;/li&gt;
&lt;li&gt;Monitor investments: keep a high‑level view of my portfolio and cash flow&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>wecoded</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
