For many of us, starting is the hardest part. Should I start? Where to start? Am I able to do it?
These are all questions that allow us to delay the most important step — starting.
This is the second article in a series on how I created Tax-Wizard.eu a Tax Reporting software for users that have Revolut as a Stock trading broker.
In the first article, I’ve outlined the Problem and the Solution. Tried to reflect on the need to start, and the need to get it done — no matter if it’s perfect or not. Done is better than perfect.
From idea to first sell in 7 days, creating a Tax Report software for Revolut
In this article, I’ll outline the process of creating an MVP fast and learning the path into the first version with customer feedback.
What features are really needed?
When creating an MVP (Minimum Viable Product) we must understand what is essential for solving the problem. We’re just trying to tap the market and see if it will work or not before investing more resources and time — that’s the reason behind launching MVPs.
The process of carefully selecting what’s really needed and what’s not, most of the time is not easy.
At WizardStork, and in my personal experience, I saw this happen a lot where the stakeholders involved, either partner, clients, or CEOs. People tend to have difficulties understanding what’s essential and what would be nice to have, which leads to delaying the launch or investing more time and resources than needed to test an idea.
Everything that’s a nice-to-have should be left out for a later stage. Lots of ideas may come to mind while thinking about what we want to build. It is normal, this stage is the initial one, it is when creativity is flowing.
Don’t be traped in wanting to add everything, stick to the essential. Take note of everything, and leave the non-essential out.
MVP — “must-haves”
- Users must be able to register and login
- We need users to be able to pay for the solution
- Users must be able to upload their statements
- Users must be able to see the values they need to fill on their tax report
- Users must be able to see their values converted from USD to EUR
Nice-to-have
- Auto-fill Tax Report in Portugal
- Import all your transactions on the Yahoo Finance portfolio tracker
- Useful graphics about the transaction history
- Performance statistics and portfolio performance evaluator
- Create comparisons and benchmarks
The development process
To go fast I decided to cut the usual process.
To streamline the process, I started with a framework that already included all the basic layout and functionalities — signup, login, forgot password, etc.
The chosen framework was DevDojo: Wave that not only provided the basic functionalities but also the infrastructure ready to launch on DigitalOcean Apps.
100 $ credit to start using DigitalOcean
With it, everything was ready to start developing the “real” application, no need to waste time reinventing the wheel.
The app is centered around importing PDF and XML files, process information, calculate the values for tax reporting, and allow the export of that information in the form of CSV and XML files.
This has to be done “on the fly” without ever keeping user information on any database. Submitted files are never hosted, and the ones available for the user to download are hosted only while they’re needed. This was the main requirement regarding users' privacy and for WizardStork safety as sensitive records will pass through the system.
To ease the process of handling these three types of files I’ve made use of the following packages/extensions:
- https://github.com/smalot/pdfparser (PDF)
- https://github.com/PHPOffice/PhpSpreadsheet (CSV)
- https://www.php.net/manual/en/book.simplexml.php (XML)
The beginning was fast.
With the PDF parser and some regular expressions, I was able to translate each transaction line to an array. This information is a “must-have” in the journey to a proper solution.
With the data ready to be treated the next phase started.
Hours of consulting with lawyers and accountants were spent, to make sure that everything was being done correctly.
The MVP was launched right on time for the first day of the Portuguese tax reporting calendar.
The MVP only provided users with the profit values, the acquisition, and realization aggregated dates and values. Provided the dividends and the respective taxes withheld. Allowed users to download a CSV file with the data converted from the PDFs.
USD-EUR conversion rates retrieved from Banco de Portugal website were applied to the results.
“The feedback loop”
Some complaints arrived. For testing, I’ve used my own statements and statements that family and friends provided leaving some cases out.
Each activity type (BUY, SELL, DIV, …) has its form of calculation, and the system must be modulated for it. With a broader spectrum of statements, not expected activities started to appear — I knew that this was coming. The application started with 6 activity types and now has more than 15.
One of the biggest pitfalls of having an approach to privacy, making sure no data is kept — is in the debug process.
As there’s no relevant information on what caused the failure, I needed to rely on users to help debug the problem. This makes the process slow but, at the same time, it creates a relationship between you and your users.
What looked at first as the least bad situation turned out to be a great way of engaging customers in a feedback loop.
From MVP to a first stable version
The system evolved not only in activities but also in features.
As I do not keep the important information logged, I gave it to customers. The logs are shown to them with the information needed and the email where they should send it, also informing what information is stored in the message they will be sending.
At first, as said, I saw it as the least bad solution. But with time I understood the beauty of it. This made each customer with a problem come to me, we would talk a bit, I would explain the problem and fix the issue. This situation created the space for us to talk about new features, suggestions on how to improve the application and the overall platform, etc.
Users started to request features, giving feedback, and providing suggestions, easily forcing the action that allowed the application to go from the MVP to the first version.
Keeping your customers/users on the feedback loop gives you not only another perspective of what the market needs but also may change some of your initial thoughts on what’s important to have in your application. Some of the initial features I was expecting to be game-changers were ditched.
And if I would skip this process, of creating first an MVP, I would have released a more complex application that the market does not need, spending time and resources for nothing.
Companies often do this, spend resources creating something that their customers do not want. Some see this and try to adapt, others just try “to force” their customers in “wanting it”.
A CEO of a company once told me “customers want this, they just don’t know it yet” after a big product failure.
This couldn’t be farther from the truth, we that create systems to help others must learn how to listen to feedback. It’s important to create the channels that allow us to learn more from their pains, their needs, and the things they like on what we provide them. Listening to customers is key to be successful.
Link: https://tax-wizard.eu/
Comments (0)