Inspiration

I originally wanted to make a bill-splitting app.

I'm planning to go to Yilan with some friends in October, and splitting expenses is pretty much unavoidable when you travel together. I had used a few bill-splitting apps before, but there were always little things that I didn't like, so I thought, why not just build one myself and make it the way I would want to use it?

Then I realized a pretty practical problem: I only have an Apple Developer account, and not all of my friends use iPhones. If someone used Android, they wouldn't be able to use the app I made. So I stopped working on the bill-splitting app.

But one part of the problem stayed with me. I realized I didn't always need a shared bill-splitting system in the first place. Sometimes I just wanted a simple way to keep track of who still owed me money, on my own, and share the details only when I needed to.

I also kept one idea from the original app: credit between people. Whether you're willing to lend someone money, and whether they actually pay you back, is closely tied to the trust between you. When you lend someone money, there's usually already some level of trust between you. You trust that they'll pay you back, and you trust what they tell you. But when the money doesn't come back, that trust slowly starts to change. You start wondering: Are they actually going to pay me back? Can I still trust them? Over time, it can even change how you see that person.

And sometimes there's another problem. You know the money is still unpaid, but after enough time passes, bringing it up can start to feel awkward. Saying "When are you going to pay me back?" directly can make an otherwise normal relationship feel a little strange.

I kept thinking about how I could make that kind of personal credit between two people more concrete and visible.

At the same time, I really wanted to put a cat in the app. There wasn't some deep reason behind it. I just think cats are cute, and I kept wondering if there was a way to make one part of the app.

Then I thought: cats get hungry.

That seemed like a pretty natural way to represent the situation. If the money stays unpaid, the cat stays hungry. Once the money comes back, the cat gets to eat. And that's how CreditCat slowly grew out of the idea.

What it does

CreditCat looks simple, but the cat actually carries a lot of meaning.

You keep track of who owes you money, how much they owe, and whether they've paid you back. You can do all of that on your own — the other person doesn't need CreditCat, and you don't need to set up a shared group or ask everyone to keep track together.

When you need to, you can share what you've recorded with them through a link. Sometimes that simply means, "I've sorted everything out — here's what you owe me."

And sometimes the debt has been sitting there for a while, and bringing it up starts to feel awkward. That's where the cat helps.

Each person who owes you money gets a cat, and the unpaid debt between you and that person is reflected in its state. If the money hasn't been paid back, the cat stays hungry. As more days pass, it gets hungrier.

When you share it, the other person receives a link. They don't need to download the app or create an account. They can just open the link and see the cat's current state and the details you've recorded. The first thing they see is a large cat card. The cat's expression changes based on how many days the debt has been unpaid: it might start out smiling, then become sad or teary, and eventually get hungry enough to have X-shaped eyes. The card also tells them how long the cat has been guarding an empty bowl. Below that, it clearly shows who owes whom and how much, followed by: "The cat still hasn't eaten either."

You still decide when to share it. There's just a cat in the middle, making something that might otherwise feel a little awkward feel a little more lighthearted.

And there's a joke hiding in that last line, if you catch it. Inside the app, the cat hasn't eaten because the debt is still open. Read it out loud in real life and it turns into something else: you haven't paid me back, so I can't afford to feed my cat.

How I built it

CreditCat is an iOS app built with Capacitor and Vite, with Supabase as the backend. The part shared with the person who owes the money is a separate web page.

At first, I didn't realize that having both sides interact with the app would mean both people would have to install it. But in the actual use case for CreditCat, the person who is owed the money is the one who needs the app. The person who owes the money probably has no reason to install it. That meant my original idea wouldn't really work.

So I changed the other side into something that doesn't require an app at all. They can just open a shared link and see the cat. It also made the whole flow much simpler.

The visuals also became simpler as I built the app. At that point, I hadn't even thought about using different cat expressions for different states. I was just trying to figure out one simple question: how do I actually make a cat?

I haven't learned enough drawing to make all the assets myself yet, so drawing everything wasn't very realistic. AI-generated images were another option, but it was hard to keep the style and details consistent. I also didn't want to make the whole app more complicated just because I needed a few cat illustrations.

So I thought, maybe I should try kaomoji.

Surprisingly, that worked really well. The same format could easily create different cat faces, and it also made it easy for the cat to change its expression as the debt got older. Something I originally tried just to figure out how to make a cat ended up becoming an important part of CreditCat's visual identity.

The whole process was basically about making things simpler: don't require the other person to install an app, don't build a whole set of complicated illustrations, and keep the core to a record, a shareable link, and a cat that changes over time.

RevenueCat handles the Pro subscription. The one rule I ended up with: the webhook is the only thing allowed to write subscription state, since cancellations and refunds only ever arrive server-side.

Challenges I ran into

Finding the first real users — and understanding what they actually need

For me, one of the hardest parts started after the app was built: where do I find the first people who will really use it?

I've been sharing my development process on X, but the reach has been very low, so almost nobody sees my posts. I also posted in the official Shipaton Discord asking if anyone would be willing to test it, but I couldn't find any testers there either.

I also shared CreditCat on Threads. Some people seemed interested in the idea, but at the time the app was only available in English, which added another barrier for people in Taiwan. So I decided to make a Traditional Chinese version first, so people who were interested could actually use it.

After launching, I finally started seeing a small number of people outside my own circle try CreditCat. That solved one problem, but immediately created another one: knowing that someone tried the app doesn't tell me why they needed it, how they normally keep track of money between friends, or whether the part I thought was important is actually the part they care about.

I originally thought the biggest problem CreditCat was solving was the awkwardness of asking someone to pay you back. But through talking about the product with other people, I started realizing that isn't always the situation. Sometimes people aren't afraid to ask at all — they just want to organize what everyone owes first, then send the details over.

So the challenge has shifted from simply finding the first user to understanding the real situations behind their use. I'm now trying to learn more from people's actual experiences with lending, paying for friends, keeping track of repayments, and reminding someone when money is still owed.

Knowing when to stop polishing

This was something I only really understood after building my second app.

With my first app, I spent a lot of time fixing every little thing that felt unfinished. I kept working on it until I was about 80% satisfied before publishing it.

But later I started wondering: how much of that work did users actually need, and how much was just me thinking, "This would probably be better"?

A lot of the things I built had never been validated with real users. I spent a lot of time making them, only to launch the app and find that nobody was using it anyway.

So one of the biggest challenges this time was breaking that habit. I had to stop treating "not finished yet" as a reason to keep working, and start treating launch as part of the validation process.

Accomplishments that I'm proud of

Actually shipping before it felt perfect

This time, I actually managed to change the way I work.

Shipaton only runs for two months, from the beginning of August to the end of September, so the timeline was really tight. When I started CreditCat, I hadn't even added RevenueCat yet. Since using RevenueCat was part of the competition requirements, I had to integrate it along the way too.

Then my first App Review took around 14–15 days, even though I submitted it at the beginning of August. That review took almost half of the first month. It reset how I think about "not ready yet" — if the queue can eat two weeks, then two weeks of polishing before submitting isn't caution, it's just time I don't get back.

So I couldn't work the way I used to, where I would keep polishing something until I personally felt it was good enough. I had to get it to a usable state, submit it, launch it, and keep improving it afterward.

That was a pretty big change for me. I used to think that making something better before launching was the safer choice. This time, I learned that waiting too long can also mean running out of time to do anything at all.

Finally putting my work out there

I also used to be afraid to promote the things I made.

I would think, "Is this actually any good?" or "Maybe I should make it better before I start posting about it." So I would keep waiting.

Because of Shipaton, I decided to stop worrying so much about whether anyone was watching. I would just post every day and keep posting.

There still aren't many people seeing my posts, but at least I've started to see small signs that someone is paying attention. I posted some things about CreditCat and Shipaton on Threads, and one person ended up talking to me about Shipaton, asking if I was building everything by myself, and then following me on X.

I still have no idea how they found me, but that made me pretty happy. At least I finally started putting the things I'm working on out where other people can see them.

What I learned

One thing I learned from Shipaton is that building the app is only one part of the job. There are a lot of things I had never really worked with before.

For example, I didn't know much about RevenueCat before this. I didn't realize there were tools specifically built to handle things like subscriptions and paid access. Having to actually integrate it into CreditCat for Shipaton was my first real experience with that side of app development.

I also started paying more attention to marketing. Shipaton's official X account had weekly challenges, and the fifth-week challenge got me thinking about hooks. If I only have a few words, how do I make someone who has never heard of CreditCat stop and pay attention?

I also started learning more about App Store screenshots. Before this, I would basically just take screenshots of the app and upload them. After seeing more examples and information about how screenshots are designed, I realized that the screenshots themselves need to communicate something too. Mine are still pretty simple, but they're already much better than what I would have made at the beginning.

I'm still not very good at any of these things, but now I know there's a lot more to keep improving, whether it's the product itself, the App Store page, or marketing.

What's next for CreditCat

The most important thing for CreditCat right now is understanding how people actually deal with money they front or lend to friends.

I started out thinking CreditCat was mainly for people who felt awkward asking for money back. But after talking about the product with more people, I realized that isn't always the case. Sometimes people simply want to organize what everyone owes first, then share it with them.

So that's what I want to understand next: when people pay for friends, how do they keep track of who still owes them? When do they decide to remind someone? What part of that process becomes annoying or uncomfortable? And when they use CreditCat, do they actually share the cat, or is simply keeping track of everything already useful enough?

I'm going to keep experimenting with ways to reach people through X, Threads, and short videos, but I don't want to decide what new features CreditCat needs just by guessing. I want to learn from real situations first, then use those reactions to decide what the next version should change.

I still don't know exactly what CreditCat will eventually become. But I think I have a better question now: instead of asking what else I can build, I want to understand what people actually need it to do.

Built With

Share this project:

Updates

Submission history