You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A small tool to create placeholder expense records on Splitwise.
7
+
tags:
8
+
- project
9
+
- nodejs
10
+
- react
11
+
- productivity
12
+
added: "September 30, 2025"
13
+
updated: "October 1, 2025"
14
+
hidden: false
15
+
---
16
+
17
+
Here is another quick weekend project.
18
+
19
+
Following my [extension](/blog/itemize-receipts) to automate filling receipts, I realized that to tackle a backlog of 80 receipts, I needed to create 80 expenses.
20
+
Splitwise currently limits the number of expenses you can create in one day to 5.
21
+
So I did a little testing to see if I can create the expenses every night as midnight rolls over using a scheduled job.
22
+
23
+
But what I found was that there was no limit on how many expenses I could create using the API.
24
+
This sounds like a major oversight or a scrappy frontend implementation of the free tier restriction.
25
+
Either way, it works out great for me.
26
+
27
+

28
+
29
+
# Privacy
30
+
31
+
- This is in no way affliated with Splitwise. I am a third-party.
32
+
- None of the services I offer or plan to offer will be monetized.
33
+
- I do not store or log your information.
34
+
- Any and all data you see flows directly between your browser and their servers.
35
+
36
+
# How to use
37
+
38
+
You'll need to set up a new app to get your credentials.
39
+
40
+
- Navigate to https://secure.splitwise.com/oauth_clients and log in.
@@ -21,7 +21,7 @@ In the final semester of my undergraduate program, I secured an internship at Qu
21
21
This expanded into a full-time software development engineer role after I graduated in August.
22
22
In this post, I want to expand on some of the coolest things I worked on in blibli.com, and I'm hoping to showcase my process tackling complex requirements.
23
23
24
-
![An average day at Quinbay]()
24
+

25
25
26
26
# The product
27
27
@@ -41,6 +41,20 @@ They are then deployed via an <TechLogo name="nginx" /> nginx server.
41
41
42
42
# My contributions
43
43
44
+
## Seller fulfillment center revamp
45
+
46
+
The seller fulfillment center is a portal for sellers to manage their inventory and orders.
47
+
The code was quite old and unmaintainable, so when the organization decided to take two months across the board to invest in clearing tech debt, we rewrote the entire fulfillment experience.
48
+
49
+
This project was handed to me along with a part of the team.
50
+
- I worked with the project manager to understand and break down the various seller flows.
51
+
- Then I distributed the tasks across my team, considering their bandwidth, availability, and inter-dependencies.
52
+
- I worked on preparing and maintaining a framework for extensive documentation to ease communication between the tech leads, frontend developers, and API developers.
53
+
- I organized API review sessions that squashed many gaps before development even started.
54
+
- Since this project required the creation of one new microservice and a new micro-frontend for the seller experience, I worked with infra teams and the seller experience teams to learn, deploy, and integrate the services through our <TechLogoname="nginx" /> Nginx gateway.
55
+
56
+
This project spanned just over three months from planning to kickoff, and it was my first experience leading a team and taking ownership of my decisions.
57
+
44
58
## Customer order cancellation
45
59
46
60
My first big story in Blibli was to build the option for a customer to cancel their order.
@@ -57,3 +71,42 @@ However, this black box was a slow operation, and invoking it multiple times wou
57
71
58
72
After brainstorming with my lead, we decided that the simplest solution would be to defer the cancellation request to a background job, enqueueing the cancellation of each item via <TechLogoname="kafka" /> Kafka.
59
73
The user would be informed that the cancellation was being processed, and they would receive a notification once it was complete.
74
+
75
+
## Stock reconciliation project
76
+
77
+
This was an incredibly large project that I played a key role in kickstarting.
78
+
The warehouse data analysts observed that some items were being undersold, and narrowed the root cause to a disparity in stock numbers reported by the overall inventory system and the warehouse stock management system.
79
+
80
+
There were many steps taken to identify and mitigate this problem to a manageable level, while identifying the root cause of the disparity.
81
+
It started with a collaboration across all of the inventory service clients to maintain and pass around a tracking ID during any stock transaction. This helped us identify specific stock journeys.
82
+
83
+
With that, we were able to analyze the data to uniquely tag each tracking ID and group all transactions based on them.
84
+
Then, we tried to accumulate the stock changes in each group, which identified several clients as sources for the disparities.
85
+
Working with these teams to spot and squash the bugs was a task that involved a lot of inter-team communication and timeline alignment.
86
+
87
+
While I was heavily involved in kickstarting this project, I took a back-step after the low-hanging fruit was addressed.
88
+
I was still involved with communications and tracking progress as well as repairing the stock issues, for which I established a comprehensive SOP that was used by the team.
89
+
90
+
## Production stability
91
+
92
+
Over the 3+ years I worked at blibli.com, I worked on plenty of other challenging stories.
93
+
I participated in war rooms and active standby for major sales events.
94
+
95
+
I worked on migrating the inventory codebase to <TechLogoname="spring"followColorScheme /> Spring Boot and <TechLogoname="java"followColorScheme /> Java 17, involving the migration of XML-defined bean mazes and aspect-oriented programming definitions into fully programmatic declarations.
96
+
This also involved communication with the performance evaluation team to build a benchmark comparing old to new performance impact.
97
+
We saw a performance improvement of around 50% and a huge improvement in throughput, which enabled us to scale back the service and cut down considerably on cloud costs.
98
+
99
+
There was an incredibly complex ingest process that we had to revamp.
100
+
It was related to generating QR codes in bulk for sellers to display on their products in a store.
101
+
This was a refreshing and challenging task, due to the constraints we had.
102
+
The entire flow was orchestrated with <TechLogoname="kafka" /> Kafka as its backbone.
103
+
104
+
I also conducted interviews for a couple of intern cohorts, which was honestly a bit stressful until I got the hang of it.
105
+
106
+
# Conclusion
107
+
108
+
My time at blibli.com was incredibly enlightening and emboldened my confidence in my knowledge and wisdom.
109
+
I am ever grateful for the oppotunity to lead and take ownership, to be able to make important decisions knowing that I had support from my seniors and peers, and to be given the space to fail and learn from mistakes.
110
+
Thanks for everything, folks!
111
+
112
+

0 commit comments