<?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: Timur Shagiakhmetov</title>
    <description>The latest articles on DEV Community by Timur Shagiakhmetov (@shagtv).</description>
    <link>https://dev.to/shagtv</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%2F3967287%2Fc548284e-4730-4f1e-af64-0b175768057c.jpg</url>
      <title>DEV Community: Timur Shagiakhmetov</title>
      <link>https://dev.to/shagtv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shagtv"/>
    <language>en</language>
    <item>
      <title>I Wanted Better Insights Across My Bank Accounts, So I Built MyVault</title>
      <dc:creator>Timur Shagiakhmetov</dc:creator>
      <pubDate>Sun, 07 Jun 2026 15:42:17 +0000</pubDate>
      <link>https://dev.to/shagtv/i-wanted-better-insights-across-my-bank-accounts-so-i-built-myvault-4hgm</link>
      <guid>https://dev.to/shagtv/i-wanted-better-insights-across-my-bank-accounts-so-i-built-myvault-4hgm</guid>
      <description>&lt;p&gt;Most side projects start with a simple frustration.&lt;/p&gt;

&lt;p&gt;Mine started with a banking app.&lt;/p&gt;

&lt;p&gt;One of my banks had a feature I really liked. It automatically categorized transactions and showed spending breakdowns in graphs and charts. For the first time, I could easily see how much I spent on restaurants, groceries, transport, subscriptions, and other categories.&lt;/p&gt;

&lt;p&gt;The problem was that only one of my banks offered this feature.&lt;/p&gt;

&lt;p&gt;Like many people, I use multiple bank accounts, credit cards, and savings accounts. Two of my other banks provided little more than a long list of transactions. If I wanted a complete picture of my finances, I had to switch between apps and manually piece everything together.&lt;/p&gt;

&lt;p&gt;As a software engineer, my first instinct was obvious:&lt;/p&gt;

&lt;p&gt;"Why don't I just build this myself?"&lt;/p&gt;

&lt;p&gt;That idea eventually became &lt;a href="//myvault.money/"&gt;MyVault&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Original Goal
&lt;/h2&gt;

&lt;p&gt;The first version of the project was surprisingly simple.&lt;/p&gt;

&lt;p&gt;I wanted users to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upload bank statements&lt;/li&gt;
&lt;li&gt;Extract transaction data&lt;/li&gt;
&lt;li&gt;Automatically categorize spending&lt;/li&gt;
&lt;li&gt;View useful charts and reports&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal wasn't budgeting.&lt;/p&gt;

&lt;p&gt;It wasn't investment tracking.&lt;/p&gt;

&lt;p&gt;It wasn't accounting.&lt;/p&gt;

&lt;p&gt;I simply wanted a single place where I could see spending across all of my bank accounts.&lt;/p&gt;

&lt;p&gt;Once I started building, however, I realized there was a much more interesting opportunity.&lt;/p&gt;

&lt;p&gt;If all transaction data was already extracted and structured, why not allow users to ask questions about their finances?&lt;/p&gt;

&lt;p&gt;Instead of searching through transactions manually, users could simply ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How much did I spend on restaurants last year?&lt;/li&gt;
&lt;li&gt;What subscriptions am I paying for?&lt;/li&gt;
&lt;li&gt;Which categories increased the most this month?&lt;/li&gt;
&lt;li&gt;How much did I spend while traveling?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's when &lt;a href="//myvault.money/"&gt;MyVault&lt;/a&gt; started evolving from a reporting tool into an AI-powered financial assistant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building as a Solo Developer
&lt;/h2&gt;

&lt;p&gt;One of the biggest challenges wasn't technology.&lt;/p&gt;

&lt;p&gt;It was building everything alone.&lt;/p&gt;

&lt;p&gt;When you're working on a side project, you don't just write code.&lt;/p&gt;

&lt;p&gt;You become responsible for everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product decisions&lt;/li&gt;
&lt;li&gt;Backend development&lt;/li&gt;
&lt;li&gt;Frontend development&lt;/li&gt;
&lt;li&gt;Infrastructure&lt;/li&gt;
&lt;li&gt;Testing&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Support&lt;/li&gt;
&lt;li&gt;Marketing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At a larger company, a single feature might involve multiple engineers, designers, product managers, and QA specialists.&lt;/p&gt;

&lt;p&gt;As a solo developer, every decision lands on your desk.&lt;/p&gt;

&lt;p&gt;The advantage is speed.&lt;/p&gt;

&lt;p&gt;The disadvantage is that there is nobody else to blame when something breaks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning Next.js
&lt;/h2&gt;

&lt;p&gt;Most of my professional experience has been backend-focused.&lt;/p&gt;

&lt;p&gt;For &lt;a href="//myvault.money/"&gt;MyVault&lt;/a&gt;, I decided to build the frontend using Next.js.&lt;/p&gt;

&lt;p&gt;This turned out to be one of the most educational parts of the project.&lt;/p&gt;

&lt;p&gt;Modern frontend development involves much more than rendering pages.&lt;/p&gt;

&lt;p&gt;I spent time learning:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server-side rendering&lt;/li&gt;
&lt;li&gt;Static generation&lt;/li&gt;
&lt;li&gt;SEO optimization&lt;/li&gt;
&lt;li&gt;Metadata management&lt;/li&gt;
&lt;li&gt;Internationalized routing&lt;/li&gt;
&lt;li&gt;Client and server components&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One lesson I learned quickly is that building a good user experience requires attention to countless small details.&lt;/p&gt;

&lt;p&gt;Many of those details are invisible when everything works correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Chose FastAPI
&lt;/h2&gt;

&lt;p&gt;For the backend, I wanted to use a technology I had not previously used in production.&lt;/p&gt;

&lt;p&gt;I chose FastAPI.&lt;/p&gt;

&lt;p&gt;It turned out to be an excellent fit for the project.&lt;/p&gt;

&lt;p&gt;FastAPI provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strong type safety&lt;/li&gt;
&lt;li&gt;Automatic API documentation&lt;/li&gt;
&lt;li&gt;Validation out of the box&lt;/li&gt;
&lt;li&gt;Excellent performance&lt;/li&gt;
&lt;li&gt;Great support for modern Python development&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since &lt;a href="//myvault.money/"&gt;MyVault&lt;/a&gt; relies heavily on AI-related functionality, building on top of Python made a lot of sense.&lt;/p&gt;

&lt;p&gt;Many AI tools and libraries appear in the Python ecosystem first, making experimentation significantly easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Coding Assistants Changed Everything
&lt;/h2&gt;

&lt;p&gt;A few years ago, building a project like this alone would have required significantly more time.&lt;/p&gt;

&lt;p&gt;Today, AI coding assistants have become part of my daily workflow.&lt;/p&gt;

&lt;p&gt;I regularly use them for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exploring new technologies&lt;/li&gt;
&lt;li&gt;Generating boilerplate code&lt;/li&gt;
&lt;li&gt;Debugging issues&lt;/li&gt;
&lt;li&gt;Refactoring existing code&lt;/li&gt;
&lt;li&gt;Writing documentation&lt;/li&gt;
&lt;li&gt;Learning unfamiliar frameworks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most interesting impact isn't that AI writes code.&lt;/p&gt;

&lt;p&gt;It's that it lowers the cost of learning.&lt;/p&gt;

&lt;p&gt;As a backend engineer, I could move much faster through frontend challenges because AI helped explain concepts, suggest solutions, and generate examples.&lt;/p&gt;

&lt;p&gt;You still need engineering judgment.&lt;/p&gt;

&lt;p&gt;You still need to review everything carefully.&lt;/p&gt;

&lt;p&gt;But the productivity boost is difficult to ignore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Parsing Bank Statements Is Harder Than It Looks
&lt;/h2&gt;

&lt;p&gt;Initially, I assumed bank statement processing would be straightforward.&lt;/p&gt;

&lt;p&gt;Upload PDF.&lt;/p&gt;

&lt;p&gt;Extract text.&lt;/p&gt;

&lt;p&gt;Done.&lt;/p&gt;

&lt;p&gt;Reality was different.&lt;/p&gt;

&lt;p&gt;Every bank formats statements differently.&lt;/p&gt;

&lt;p&gt;You encounter variations in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Date formats&lt;/li&gt;
&lt;li&gt;Currency formats&lt;/li&gt;
&lt;li&gt;Transaction descriptions&lt;/li&gt;
&lt;li&gt;PDF layouts&lt;/li&gt;
&lt;li&gt;Statement structures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even simple things like merchant names can appear in multiple formats.&lt;/p&gt;

&lt;p&gt;Before any useful analysis can happen, transaction data needs to be normalized into a consistent structure.&lt;/p&gt;

&lt;p&gt;Only then can meaningful insights be generated across multiple banks.&lt;/p&gt;

&lt;p&gt;This became one of the most interesting technical challenges in the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Supporting 22 Languages
&lt;/h2&gt;

&lt;p&gt;From the beginning, I wanted the platform to be accessible to users around the world.&lt;/p&gt;

&lt;p&gt;That meant translating far more than just the user interface.&lt;/p&gt;

&lt;p&gt;The project includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigation&lt;/li&gt;
&lt;li&gt;Blog posts&lt;/li&gt;
&lt;li&gt;Metadata&lt;/li&gt;
&lt;li&gt;Financial categories&lt;/li&gt;
&lt;li&gt;User-facing messages&lt;/li&gt;
&lt;li&gt;Documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Supporting 22 languages sounds exciting until you start maintaining them.&lt;/p&gt;

&lt;p&gt;Every new feature potentially affects dozens of localized versions.&lt;/p&gt;

&lt;p&gt;A small text update can suddenly become a much larger task.&lt;/p&gt;

&lt;p&gt;Despite the complexity, I believe localization is worth the effort.&lt;/p&gt;

&lt;p&gt;Too many products assume every user is comfortable using English.&lt;/p&gt;

&lt;h2&gt;
  
  
  Supporting 24 Currencies
&lt;/h2&gt;

&lt;p&gt;Financial software becomes more complicated the moment multiple currencies enter the picture.&lt;/p&gt;

&lt;p&gt;People spend money while traveling.&lt;/p&gt;

&lt;p&gt;They hold accounts in different countries.&lt;/p&gt;

&lt;p&gt;They earn income in one currency and spend in another.&lt;/p&gt;

&lt;p&gt;To provide meaningful insights, the system needs to account for currency differences and present information consistently.&lt;/p&gt;

&lt;p&gt;Supporting 24 currencies introduced another layer of complexity, but it was important for making the platform useful beyond a single market.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy and Security
&lt;/h2&gt;

&lt;p&gt;Whenever someone uploads financial data, security becomes one of the first questions.&lt;/p&gt;

&lt;p&gt;I wanted to keep the design as privacy-focused as possible.&lt;/p&gt;

&lt;p&gt;The approach is straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uploaded bank statements are processed to extract transaction information.&lt;/li&gt;
&lt;li&gt;Original PDF statements are not permanently stored on disk or in the database.&lt;/li&gt;
&lt;li&gt;The system focuses on transaction data rather than retaining full documents.&lt;/li&gt;
&lt;li&gt;Communication between the browser and the server is protected using TLS encryption.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Trust is essential for any financial product.&lt;/p&gt;

&lt;p&gt;Without trust, even the most advanced features become irrelevant.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Dashboards to Conversations
&lt;/h2&gt;

&lt;p&gt;One of the most interesting developments during the project was the shift toward conversational interfaces.&lt;/p&gt;

&lt;p&gt;Traditional finance applications rely heavily on dashboards, filters, menus, and reports.&lt;/p&gt;

&lt;p&gt;Those tools are useful, but they often require users to know where information is located.&lt;/p&gt;

&lt;p&gt;AI changes the interaction model.&lt;/p&gt;

&lt;p&gt;Instead of searching through screens, users can ask questions directly.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What subscriptions am I paying for?&lt;/li&gt;
&lt;li&gt;How much did I spend on groceries last month?&lt;/li&gt;
&lt;li&gt;Which category grew the fastest this year?&lt;/li&gt;
&lt;li&gt;What are my largest recurring expenses?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The underlying data remains the same.&lt;/p&gt;

&lt;p&gt;The difference is how users access it.&lt;/p&gt;

&lt;p&gt;The goal isn't to replace visual reports.&lt;/p&gt;

&lt;p&gt;It's to make financial information easier to understand.&lt;/p&gt;

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

&lt;p&gt;Building &lt;a href="//myvault.money/"&gt;MyVault&lt;/a&gt; reinforced several lessons.&lt;/p&gt;

&lt;p&gt;First, many good products start with a personal problem.&lt;/p&gt;

&lt;p&gt;I wasn't searching for a startup idea.&lt;/p&gt;

&lt;p&gt;I simply wanted better visibility across my own bank accounts.&lt;/p&gt;

&lt;p&gt;Second, modern AI tools have dramatically expanded what solo developers can accomplish.&lt;/p&gt;

&lt;p&gt;Projects that once required small teams can now be built by individuals.&lt;/p&gt;

&lt;p&gt;Third, seemingly simple features often hide surprising complexity.&lt;/p&gt;

&lt;p&gt;Bank statement processing.&lt;/p&gt;

&lt;p&gt;Transaction categorization.&lt;/p&gt;

&lt;p&gt;Currency support.&lt;/p&gt;

&lt;p&gt;Localization.&lt;/p&gt;

&lt;p&gt;Each looked easy at first.&lt;/p&gt;

&lt;p&gt;None of them were.&lt;/p&gt;

&lt;p&gt;Finally, users rarely care about the underlying technology.&lt;/p&gt;

&lt;p&gt;They care about outcomes.&lt;/p&gt;

&lt;p&gt;Nobody uploads a bank statement because they are excited about AI.&lt;/p&gt;

&lt;p&gt;They do it because they want a better understanding of their money.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next?
&lt;/h2&gt;

&lt;p&gt;The project is still evolving.&lt;/p&gt;

&lt;p&gt;There are plenty of opportunities to improve financial insights, add smarter AI capabilities, and make financial information even easier to explore.&lt;/p&gt;

&lt;p&gt;But the core idea remains unchanged from the original version.&lt;/p&gt;

&lt;p&gt;Help people understand where their money goes, regardless of which bank they use.&lt;/p&gt;

&lt;p&gt;That simple frustration with multiple banking apps eventually became a product.&lt;/p&gt;

&lt;p&gt;And like many side projects, it started with solving a problem I personally wanted solved.&lt;/p&gt;

&lt;p&gt;If you're building your own side project today, that's probably the best place to start.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>showdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
