As an internet worker, I've always had the habit of keeping track of my finances, and last year I also wrote an article about bookkeeping:「Nine Years of Bookkeeping: Changes in Tools, Methods, and Mindset」, which documented my bookkeeping experience in detail, and also briefly introduced a product I built: Prismira. Regarding Prismira, I alsoposted a thread on V2EX introducing it。
Prismira is a bookkeeping and reconciliation product that has been in development for over two years. It started as a tiny script file and has grown into a full-featured platform. I've spent a lot of time and effort polishing and tuning it, hoping to make it a useful tool. During the development of this project, I took some detours, made repeated adjustments, and also built some features I'm satisfied with.
Now that Prismira has entered a new phase, I'd like to take this opportunity to thoroughly review the development journey of the Prismira project, as well as the detours I took.
Prismira's Two-and-a-Half-Year Journey
Prismira's Two-and-a-Half-Year Journey

Project Initiation: From Manual Entry to Batch Script Import

The original purpose of creating the Prismira project was actually to meet my own daily bookkeeping needs. At first, I used Firefly III to record and track the income and expenses of WeChat, Alipay, bank cards, etc., but every transaction had to be entered manually, which was too troublesome for me. It happened that I learned at the time that both WeChat and Alipay could export bills, so I wondered whether I could write a simple program to import WeChat and Alipay bills into Firefly III through its OpenAPI. So in January 2024, I spent two days writing a script:
A Casually Written Import Script
A Casually Written Import Script
What it does is very simple: parse CSV → categorize by keywords → push to Firefly, so every month I just need to export two bill files and run the script to see my expenses for the month in Firefly III.

First upgrade: from script to Web App

This script ran for nearly 9 months, during which I kept making some simple patches and fixes, until later I found that the script was indeed not very convenient to use—I couldn't do any filtering or adjustments before importing into Firefly III, so I came up with the idea of turning it into a Web application. It happened that Cursor was especially popular at the time, so in September 2024 I used Cursor to develop a Next.js version of the bill import program, named "transaction-importer":
The first version had a user interface for the import function
The first version had a user interface for the import function
This was a project that Cursor completed in just two days. Its difference from the script is that it turned the bill import process originally written in code into a user-friendly interface. The various keywords and bill file paths in the code all became dropdown boxes and file boxes on the web page, and it also added the function of categorizing transaction records. From then on, my import efficiency improved greatly. I no longer needed to manually download bill files to the repository folder and then go change file names and category keywords. I only needed to upload the bill files on the page, configure the categories for the transaction records, and click save to quickly complete all operations.
I also used this program for a full year, and during this process it was always a great helper for organizing my bills and keeping accounts.

Vibe Coding steps in strongly: platformization upgrade

In 2025, Vibe coding was all the rage, and Claude Code burst onto the scene that year. As Claude's coding models gradually gained popularity on the internet, countless people were praising how incredible Claude was at writing code, so it was at that time that I officially began my Vibe coding career, and in September of that year I started subscribing to Claude's paid plan.
My Claude account subscription record
My Claude account subscription record
In August 2025, I started using Claude Code (and formally subscribed in September), paired with Cursor, to overhaul the transaction-importer project. It took me one month to transform the original project from an auxiliary import program for Firefly III into a completely independent personal bookkeeping program, completely abandoning Firefly III as the storage and record for transaction flows. The new project fully includes all the features needed for bookkeeping, from transaction flows, category settings, and budget management, to data reports, multi-user support, multiple data storage modes, and more. That month there were a total of 233 code commits; the number of lines of code grew from 2,135 to 43,058.
The first version, starting to take shape
The first version, starting to take shape
Then I spent another month continuously polishing it, built a complete landing page, and named the project Prismira. The project finally officially launched in September 2025.
2025-09 The first official website
2025-09 The first official website
Although the project officially launched, at this stage I didn't do any publicity or promotion—I was just using it myself. My thinking was simple: serve myself first, and only once I was using it happily would I let others use it. Otherwise, promoting a half-finished product wouldn't retain any users.
I kept using the first version for three or four months, during which there weren't many changes. The main reason was that some adjustments happened at work, and I suddenly became extremely busy, with no time to invest in development and iteration. Moreover, at that time Vibe coding still required a person to be at the computer, guiding the AI on how it should write code and what process to follow for development and testing. Although at this stage I rarely wrote code by hand, I would still review the code generated by the AI to ensure the reasonableness of the architecture and the robustness of the code.

gpt-5.3-codex & Openclaw & Codex Remote: Vibe coding game changer

The turning point came during the 2026 Spring Festival. At that time, for certain reasons, I had gone home early, and during my time at home I finally had the time to tinker with and experience various AI features. It just so happened that OpenAI released the gpt-5.3-codex model and launched the Codex GUI client. What left a deep impression on me was that Codex's quota was given very generously at the time—the $20 plan could be used for a long time—and the gpt-5.3-codex model had truly reached a stage where it was usable and genuinely good to use. So during the Spring Festival I was basically doing heavy Vibe coding every day, having Codex develop a huge number of features for Prismira.
Around the same time, a phenomenon-level product was born in the AI world: Clawdbot, later renamed Moltbot and then Openclaw. It made the personal AI Agent no longer a fantasy. After simply installing Openclaw and connecting it to instant messaging tools like Telegram and Discord, you would have an AI assistant you could use anytime, anywhere. So at that stage my Vibe coding looked like this: at the computer, I directly used Codex to develop features; when I wasn't at the computer, I used Telegram on my phone to remotely assign tasks to Openclaw to develop features. To let Openclaw run more independently and stably, I even bought a Mac mini for Openclaw to use.
So at this point I had the ability to do remote Vibe coding—whenever I thought of a feature, I could quickly have Openclaw help me complete the development. During the period from February to March 2026, Prismira's code volume and features entered their first explosive growth phase, with the code volume rising from 48,515 to 163,822 lines.
In June 2026, Codex officially released Codex Remote, adding another powerful tool to my remote Vibe coding, so starting that month Prismira entered its second feature explosion phase, with the code volume rising from 200,000 to 460,000.
My codex token consumption heatmap
My codex token consumption heatmap

The Great Feature Leap: From building whatever came to mind to being unable to keep up with maintenance

You may be curious why the code volume skyrocketed from 40,000 lines to 400,000+ lines. The reason is that I had AI build these features in this short period of time:
  • A complete native iOS App and macOS App
  • PDF bill recognition, image bill recognition
  • A complex Prismira AI agent
  • A membership system and a membership redemption code system
In addition to these features, during this period I also had AI redesign the web UI style several times, and the iOS and macOS app UI styles also went through two major versions, while the AI agent feature was also refactored twice.
New admin interface
New admin interface
iOS App interface
iOS App interface
macOS App interface
macOS App interface
Vibe coding feels amazing—once you start, you just can't stop. But I began to notice something was off: AI built so many features, yet I had no time to carefully review and test them. Often, after Codex finished writing the code, I'd just glance at a screenshot and merge it in. When I actually used these features, I found they either had bugs and didn't work, or didn't turn out the way I wanted. To solve this, I started adding all kinds of tests—unit tests, integration tests, smoke tests—and even built a set of skills for the Vibe coding workflow to constrain the behavior of AI programming tools, hoping these standards and constraints would improve feature stability and iteration efficiency. I can't say there was no effect—only that the improvement was limited. These standards and tools can't solve the project's core resource gap: human aesthetic judgment and review standards.
I'm quite meticulous about product details, and I often have AI repeatedly revise a feature's style and interactions. If the styles and features AI generates don't meet my standards, I won't use them. Precisely because I don't have much time to personally oversee the details of all the features AI developed, at this stage the Prismira project didn't improve my expense-tracking efficiency. Instead, because I frequently had to fix bugs and optimize styles and interactions, new features took forever to become usable. Even now, I haven't formally started using the native iOS App and macOS App myself, because there are simply too many things to change—more than I can keep up with.
As code gradually becomes cheap, what's truly valuable is a project's aesthetics and soul—and aesthetics and soul require a person to invest a great deal of time and energy to create. AI can greatly boost development efficiency, but finishing development doesn't mean it meets the standard for release.
And there's an even crueler reality in all of this: among all the features AI developed, only a handful actually helped me improve my bookkeeping efficiency. It felt like I was constantly building features I believed were important but would never use, conjuring up a bunch of false needs out of thin air and wasting tokens for nothing.

Back to the Beginning: Only Solving Problems Has Value

Afterward, I kept pondering one question: what features are actually worth building? No matter how good or powerful a feature is, it's meaningless if nobody uses it. The reason a feature gets used must be that it solves a specific problem. So I went back to recalling what problems still existed in my current bookkeeping process, and after some thought, I figured there should be two: it's a hassle, and I'm not sure whether the records are accurate.
The hassle is that although Prismira has a bill file import feature, bill files from different platforms still require users to manually download them from their email and then manually import them into the platform—not convenient enough.
The uncertainty about whether records are accurate comes from the lack of reconciliation. Transactions imported into the platform often come from multiple bill sources, which may contain overlapping records. Although the platform has a feature to intelligently detect duplicate transactions, if you forget to run the check, the books will be inaccurate.
So I built two features: a dedicated bill email inbox and a reconciliation feature.

Dedicated Bill Email Inbox

Prismira provides every user with an independent bill email inbox. You can use this email address to receive bill files from various payment channels—whether it's WeChat, Alipay, or various credit cards. When a bill file is sent to the dedicated inbox, the program automatically recognizes and extracts the bill file. If the bill file is encrypted, Prismira will prompt the user to enter the decryption password, then parse all transaction records in the file and save them to an import draft, so users can skip the steps of manual downloading and manual uploading.
For credit card statements, you can even set your dedicated statement email as the receiving email for credit card statements, so that each month the credit card statement will be automatically sent to Prismira, and Prismira will automatically import it. From then on, you just spend, and Prismira takes care of collecting and parsing your statements for you, greatly improving efficiency.

Reconciliation

Prismira supports associating transactions with funding accounts. If you want to verify whether your bookkeeping is accurate, you can simply analyze whether the balance records of each funding account match the real account balance. Therefore, Prismira provides a balance feature for each funding account and offers automatic balance calibration. When a user imports a batch of transactions, the balance of the funding account is updated accordingly. At this point, you only need to confirm whether the balance displayed on the platform matches the real account balance to know whether there are any errors, omissions, or duplicate entries.
When a balance discrepancy occurs, Prismira will attempt to analyze existing transactions for possible duplicate transactions, specifically to resolve cross-recorded transactions. Through the reconciliation feature, you can see at a glance which transactions are recorded multiple times. Prismira not only makes bookkeeping easy, but also gives you peace of mind, so you don't have to worry about inaccurate data.

Two and a Half Years of Evolution: The "More" and "Less" of the Project

Counting from when the first line of code was written in 2024, Prismira has now been in development for over two years. Over the past two-plus years, I and AI have written 460,000 lines of code, and the platform's capabilities have gradually improved, genuinely solving my bookkeeping needs. Its "more" is reflected in the number of lines of code, the number of commits, and the number of features.
In addition to the two features mentioned above, the platform now offers a great many features that help users keep accounts more easily, analyze data more intelligently, and manage budgets more intuitively. It has grown from a small script file into a fully-fledged platform.
Lines of Code History
Lines of Code History
Commit Count History
Commit Count History
But you've probably guessed it too—this project likely doesn't have many users. Its "few" is reflected in little promotion, few people knowing about it, and even fewer using it; much of the time it's serving myself.
A product being used only by myself—I don't think that's something to be ashamed of. It's only shameful and wasteful when you spend enormous time and energy, even money, to build something that looks impressive, yet even you yourself don't use it.
Prismira has from beginning to end been about solving my own real needs. I allow myself to spend so much time and energy building a complex product, because I think using my own skills to solve my own practical needs is a very romantic thing. As a developer, I have the ability to create; as long as I want to, I can most likely make it happen. Fulfilling some of my own little wishes within my capabilities feels wonderful and happy to me. The various AI tools used in the project are also because there are surplus resources beyond handling work; making full use of the resources at hand from the perspective of not wasting them is, in itself, a very natural thing.
As a side project, Prismira is half successful.

AI and Indie Developers: Ideals and Reality, Anxiety and Transformation

The other half of Prismira's success is to get it used by more people and to solve more people's needs and problems.
In fact, for a long time, my positioning of it was not just to solve my own needs; I held greater expectations for it, hoping I could use this project to verify whether the path of an indie developer can actually be walked.
In the past, internet marketing accounts deliberately stoked anxiety for traffic, for example, claiming that programmers enter the kill line the moment they turn 35, and that companies laying off older programmers has become an industry consensus, even a societal one. My relatives and friends often bring this up when chatting with me, and the conversation is filled with worry about my career. At first I didn't take it seriously, believing that as long as you can prove your value to the company is still there, you won't be laid off.
But since this year my thinking has changed dramatically. Layoffs and industry disruption may come much faster than imagined, and the reason is AI. I believe this isn't just my own thinking; my colleagues and peers have all started discussing when AI will phase out programmers. After all, AI is so good at writing code—when programmers no longer write code, why would anyone still need programmers?
What hit me hardest was the period early this year when Openclaw went viral. I witnessed with my own eyes how AI turned from a tool that could only chat with you, generate some images, and help you write some code into an assistant that can do anything for you. It was too far ahead of its time, and I felt an unprecedented sense of crisis. I even once pessimistically thought that we were all doomed this year, that companies would no longer need expensive, inefficient human employees and would only need to keep a bunch of lobster employees—it only needs electricity and tokens to solve all the company's needs and problems.
From the end of last year to the first half of this year, my work also underwent tremendous changes. A job that was already not easy suddenly entered hell mode: working hours increased sharply, overtime became the norm, and even taking a breather or getting a full night's sleep became a luxury. This further intensified my resistance to work, and deep down I longed to escape this environment.
Against the backdrop of the AI wave and the drastic changes in the difficulty of my work, I gradually activated self-rescue mode and began exploring other possibilities. Becoming an indie developer became the goal I yearned for and pursued.
For a long time, I had wanted to become an indie developer. I thought it would be so cool to build a product through my own efforts and abilities, then earn people's recognition and achieve commercial success with it. In the past, it remained just a thought; now I have started doing it.
AI is a double-edged sword. Although it does squeeze the living space of the programming profession, it also gives every person with ideas tremendous power. Ideas that once could only stay in your head can now be quickly brought to life through this treasure chest. For indie developers, this is a tremendous blessing. It can even help fill in the abilities you lack. You no longer need to be a hexagon warrior; as long as you know how to make good use of AI as a tool, you are a hexagon warrior.
The evolution of Prismira is the evidence of my attempt to become an indie developer. Although this process has not been smooth, nor successful, I believe I have successfully taken the first step. What comes next is the moment for the market to validate me.

Afterword

Creating an article is not easy, and creating a project is even harder. I hope friends who see this article can try Prismira and leave some valuable opinions and suggestions. Whether good or bad, I will humbly accept them.
Prismira project website: https://prismira.app