What ROSHI is
ROSHI is a loan comparison marketplace for Singapore, and one of the top three in the market. A borrower describes what they need, and instead of filling in the same form on ten different lender sites, they get matched to real offers in one place. It is an independent marketplace built around licensed lenders, and it runs in production today, taking real applications from borrowers.

The problem it solves
Shopping for a loan in Singapore is opaque and repetitive. Rates and eligibility are scattered across banks and licensed moneylenders, every application is a fresh form, and borrowers rarely know if they are getting a fair offer. ROSHI turns that into a single application that reaches multiple lenders, so the borrower compares real terms and the lenders compete for the business.
That only works if the product is genuinely production-grade. A loan application carries sensitive financial data, runs in a regulated market, and has to be right every time. This is not a prototype that impresses once. It is a system people trust with their money.
The build
ROSHI runs on React and Next.js with TypeScript on the front end, a Node and Express back end, and PostgreSQL with Prisma for data. That stack was chosen for the reasons it usually is: a typed codebase that a team can keep extending safely, server rendering for the marketing and application pages, and a relational database for data that has to stay consistent when money is involved.
The part that makes it feel effortless to the borrower is the Singpass integration. Applicants can apply with Singpass Myinfo, which retrieves verified identity and income data with their consent instead of asking them to key it in and upload documents by hand. The alternative manual path stays open for people without Singpass, so nobody is locked out.

Because ROSHI operates in Singapore with real financial data, data protection is not an afterthought. Consent, retrieval, and storage are built to fit how a regulated marketplace has to handle personal information here.
Two markets, two builds
ROSHI is not one website. It runs in Singapore as roshi.sg and in Vietnam as roshi.vn — the same marketplace serving two different countries, in two different languages. The landing experiences are built separately, on different stacks, because what converts a Singapore borrower is not what converts a Vietnamese one: different lenders, different regulations, different search behaviour, different design language. The Vietnam build is the more modern of the two, and lessons from each build feed the other.
Operating the same product across two markets is its own kind of proof: localisation that goes deeper than translation, two regulatory environments handled in one platform, and the discipline to rebuild a front end when the market demands it rather than force-fitting the old one.
Why this is proof
ROSHI is live, in a hard market, handling applications that carry real financial data and real money. It began as an MVP and became a marketplace people use every day, which is the exact arc most founders want: ship a real MVP fast, then grow it into production.
If you are building for the Singapore market, ROSHI is also proof we know the ground here, from Singpass to local data rules. That carries straight into our software development and app development work for Singapore businesses.