PaymentEngineer.com - Breaking the unfinished projects cycle
the story of how I broke the cycle of unfinished projects by building and launching PaymentEngineer.com
Photo by Lachlan Dempsey on Unsplash
A couple of months ago, I started working on PaymentEngineer.com with one goal in mind, Finish it. That’s it, As human beings, we get excited about new things, work on them for some time and abandon it, I have so many unfinished projects and I’m sure so many people could relate to this so my goal with the project is to just ship, give it the attention and work it deserves. So from day one, I didn’t care if it turns to be a successful project or not. For me, if I launch it, that is a success. At least I broke the cycle of the millions of unfinished projects. And don’t get me wrong, by launching here I don’t mean just deploying it but also marketing and whatever “launch” means.
So here is the story of achieving that goal, first of all, I had the idea for paymentengineer.com for a couple of years, a job board for fintech and payments jobs which is something I’m passionate about so I wanted to build a job board for software engineers who are passionate about working in fintech or with payments systems like me. And of course, the first thing I did was buy the domain name :D. Fast forward more than 2 years and I still have the domain but no actual product. And by the end of 2022, I wanted to work on the ideas I had and I chose to work on the site and launch and make myself commit to that because otherwise, it doesn’t matter what project I’m working on next, chances are I’m gonna abandon it.
Around the same time, I started reading “Make” by @levelsio, so, I was reading it and at the same time applying whatever I learned to PaymentEngineer.com.
MVP: I wanted to ship fast and also validate the idea quickly (although, again my goal here was to first ship the project even if it turn out no one would use it) I did this as a practice on the “right” step to launch a product, so I used webflow.com with a job board theme I bought which included jobs list page, jobs detail page, e-commerce for buying credits to post a paid job on the site and the whole thing was powered by Webflow CMS acting as a database which has an admin panel that I used to add jobs manually to the site.
This was supposed to be the MVP, with only tens of jobs on the site. I didn’t launch it though because even though it was supposed to be an MVP, I felt like it should have more than only 10s of jobs, that way I believe it will be more valuable for job seekers. That meant I need to add more jobs to the DB but having to do that manually was annoying so I decided to add some automation there which I had in mind since day 1 but not for the MVP version though.
The new system has now 2 parts. First, Webflow acts as a front-end layer. The second part is a Django project with PostgreSQL DB running on an ubuntu server on DigitalOcean, Django was also integrated with a job scrapper/aggregator so jobs would be saved to PostgreSQL after being scrapped and can be managed from Django admin. Any changes to a job in PostgreSQL would be synced to Webflow through Webflow CMS APIs that I built a python wrapper around it so my workflow was as follow:
Every day, at 17:00 UTC a cron job starts the scrapper
After jobs have been aggregated they are sent to a couple of pipelines for duplication filtering and saving to Django’s DB (PostgreSQL)
A few minutes later, I log into the Django Admin panel, review the jobs aggregated today, and approve/publish them which would automatically publish them on the WebFlow site (front-end)
I could have used no-code tools for scrapping, I already did some research but they were either too expensive or difficult to work with
so at this point, I had a semi-automated workflow. it was time to finish what I started and launch it. I almost did everything recommended by @levelsio in the “Launch” chapter of his book. I launched on HN, Reddit, ProductHunt …etc. Reddit and PH got me some traction, actually better than I anticipated, especially for a project that’s so niche.
A few days after the launch traction/traffic slowed down which was expected, but I reminded myself, this whole thing wasn’t about the project being successful but for me to be successful at finishing the project I started and not give up on it too early.
After some thinking about the future of the project, I concluded that I don’t have to abandon it or shut it down but at the same time, I need to move on to my next project. after all, I still believe this site can be useful for people like me who love working on fintech and payments systems even if that’s a small number of people so why not put the site on auto mode and keep the “robots” running it.
the plan was to 1) keep the costs of running the site as down as possible, 2) Automate whatever I can.
I started by migrating the whole site to Django and getting rid of WebFlow because it’s a bit expensive. their “site” plan is free but the CMS and other features which I was using like e-commerce are not. so to do so, I started rebuilding the main pages/features in Django and got rid of things that I didn’t think are necessary at the moment such as eCommerce (for posting paid jobs), and just focus on job aggregation, enhancing the jobs search and filtering and also added better customized saved search alerts/emails (newsletter)
Then I moved to work on automating jobs reviewing and publishing instead of having to log into the admin panel every day to review them manually. I also automated checking and removing expired jobs, so I built a system (fancy term for a Django custom command triggered daily by a Linux cron job) to do so instead of me doing it manually.
And to make the site more useful to people I extended the job aggregator to support aggregating jobs from the UK, Canada, Switzerland, and Australia instead of the US only.
And here we are, paymentengineer.com is now running entirely on auto-mode. Please note, that automating it doesn’t mean I’m abandoning it, I just made my life easier so that in the future —if necessary— I can add more features, or not and just keep it running like that. after all, I’m happy I committed to finishing the project. can’t wait to start working on the next one