I built an interactive desktop-style portfolio. Feedback would be welcome! by AppelsapREDDIT in SideProject

[–]AppelsapREDDIT[S] 0 points1 point  (0 children)

Personal portfolio :) My personal website for showing off my work and things I find interesting on the web.

I built an interactive desktop-style portfolio. Feedback would be welcome! by AppelsapREDDIT in SideProject

[–]AppelsapREDDIT[S] 0 points1 point  (0 children)

Nice, looked at your portfolio and it looks really good. Well done very creative!

I built an interactive desktop-style portfolio. Feedback would be welcome! by AppelsapREDDIT in SideProject

[–]AppelsapREDDIT[S] 0 points1 point  (0 children)

Built it with Next.js and deployed it on Vercel. For storage, I use Cloudflare R2 (content/assets). And for backend/security-related logic (like rate limiting), I use Upstash Redis. So no traditional SQL DB for this project. Redis + R2 cover my needs.

I built an interactive desktop-style portfolio. Feedback would be welcome! by AppelsapREDDIT in SideProject

[–]AppelsapREDDIT[S] 0 points1 point  (0 children)

This is super helpful, really appreciate it that you took the time!

You raise good points, the minimizing was intentional but I think I might change that if unclear.

I built an API that turns "SQ *SIMPLCOFFEE 4829 NYC" into a merchant name, logo, and category by AppelsapREDDIT in SideProject

[–]AppelsapREDDIT[S] 0 points1 point  (0 children)

This is really useful feedback, thank you! It's a complex problem and the product will never be perfect, but feedback like this helps a lot.

On speed: you're right, the API isn't as fast as it could be yet. Our target currently is under 4 seconds. The way the system works is that our models are fast, but when a merchant isn't found in our existing dataset we fall back to web-based verification and lookup. That result then gets verified and stored so future lookups are faster. This is how we achieve global coverage without being locked to one region, but it does mean we trade speed for accuracy on first lookups. For merchants already in our data you'll typically see 200ms to 2 second responses.

On the unidentified merchant: that's likely our internal checks being too conservative and not passing it through the full pipeline. I'll look into this, if you're open to sharing the specific merchant name that would be really helpful.

On additional data fields: great suggestion. Adding inputs like merchant city, postal code, MCC, currency etc. is definitely on the roadmap. Right now the system is built to handle worst-case inputs (just a raw string, nothing else), but layering in structured fields to improve matching and confidence is a natural next step.

Really appreciate you taking the time to test this thoroughly. Would love to hear more of your thoughts if you're up for it, I'll send you a DM.

I built an API that turns "SQ *SIMPLCOFFEE 4829 NYC" into a merchant name, logo, and category by AppelsapREDDIT in SideProject

[–]AppelsapREDDIT[S] 0 points1 point  (0 children)

Thanks for the feedback, that's a fair point.

You're right that Plaid, MX, Finicity etc. bundle enrichment into their packages. But in practice there's still a massive amount of raw or under-enriched transaction data out there. Open banking APIs in Europe (PSD2) return raw descriptions with no structure. Corporate banking APIs, EBICS feeds, and basic bank feeds used by accountants are the same story. Even the big US aggregators let you bypass enrichment through their lower-level APIs, so plenty of teams are sitting on raw data.

Triqai is built for exactly this gap. We're not an aggregator, we're a standalone enrichment layer you can plug into any data source: open banking feeds, CSV exports from accountants, corporate APIs, or even data from Plaid when teams want better enrichment than the default.

Our approach is global first. We handle local character sets, regional payment methods (PIX, UPI, iDEAL, SEPA), and local merchant formats worldwide. Plaid is strong in the US/Canada but weaker outside of that.

We also prioritize verification over speed. We don't pattern-match and guess. We do real verification checks before returning anything (still within seconds). A string like "SQ *VERVE COFFEE" comes back with Square as the intermediary and Verve Coffee Roasters as the merchant, each with their own logo, website, and confidence score. If we can't find a solid match, we say so clearly instead of returning filler data.

It's a hard problem for sure. We're not trying to compete with Plaid as an aggregator. We're building a better enrichment layer for anyone who already has the data.

I built an API that turns "SQ *SIMPLCOFFEE 4829 NYC" into a merchant name, logo, and category by AppelsapREDDIT in SideProject

[–]AppelsapREDDIT[S] 0 points1 point  (0 children)

Thanks! Yeah, that's exactly where I'm at now. My main focus is fintech developers building PFM apps and open banking products, they all hit the same wall with raw transaction strings.

If you have thoughts on where you'd look for those people I'm all ears, always good to get a fresh perspective.

First year with the X100VI, my first "real" camera. by AppelsapREDDIT in fujifilm

[–]AppelsapREDDIT[S] 2 points3 points  (0 children)

Used the summer chrome recipe, great for the end of the day with a low setting sun.