projects
These aren't portfolio pieces. They're products I'm building as a founder — making the product, architecture, and business decisions end to end.
Streamtier
streamtier.gg
A marketplace that gives small streamers access to publisher relationships they'd never get otherwise.
The game promotion market has a structural problem. Publishers want exposure, but their sponsorship pipelines only reach large streamers. Streamers with 50–200 average viewers — a huge, engaged, and growing segment — are effectively invisible to publishers despite being exactly the audience that converts. Nobody had built the bridge.
Streamtier connects publishers with that mid-tier streamer pool through a gamified key distribution system. Streamers claim free game keys, stream the game, and submit VOD proof to unlock their next tier of access. No applications. No follower thresholds. Just a simple proof-of-work loop that builds trust on both sides over time.
The competitive moat isn't the platform — it's the relationships. My co-founder is the Head of Partnerships at SteelSeries with direct, warm relationships at Bandai, Nintendo, Epic, Riot, and Blizzard. That's not something you replicate with a better feature set. We have an estimated six-month window to build network effects before the market notices the gap.
key decisions
The architecture started client-heavy and I moved it to a server-side API layer early — not because we needed it at current scale, but because publisher trust requires audit trails and verification that can't live in the browser. Getting that boundary right before launch is cheaper than retrofitting it after. Similarly, I chose node-cron over Temporal.io for job scheduling: Temporal is the right answer at scale, but it's operational overhead we don't need at zero customers. I'll revisit when the problem actually exists.
CI/CD pipelines were running 10+ minutes. I cut them to 4–6 through artifact-based dependency management — not because it was blocking us, but because slow feedback loops compound into slow development culture, and I'd rather fix that before it becomes normal.
Stack: Vue 3, Fastify, Supabase, GitLab CI/CD, DigitalOcean
Fjord
fjord.do
A budgeting app built on the premise that most budgeting apps are psychologically destructive.
Traditional budgeting tools are designed around surplus maximization — they assume you have money left over and want to optimize it. For users with attention challenges, irregular income, or financial stress, that design creates shame spirals. Big red negative numbers. Punishment for missing a week. The implicit message that you've failed.
Fjord is built around a different premise: lapses are expected, not failures. The "snowball goal" is zero — not growth, not surplus, just stability. Budget categories are organized in a five-tier Maslow-inspired hierarchy (Survival, Protection, Obligations, Runway, Future), and the tier-gating system means users only ever see categories they can actually afford. Aspirational sections that are financially out of reach simply don't appear. Showing someone a vacation fund category when they can't cover rent isn't motivating, it's demoralizing.
The gamification system is borrowed from Dark Souls — you can lose progress, but you can always recover it through structured re-engagement. One glacier update and three check-ins resurrects your streak. It's forgiving without being consequence-free, which is the balance most gamification systems get wrong by going too far in either direction.
The monetization model is unconventional by design. Rather than a waitlist, Fjord uses a founding member model through Patreon. That's a deliberate product philosophy decision: a waitlist is a promise I control, a founding member is a commitment the user makes. It filters for the users who actually believe in the approach, which matters for a product where engagement and re-engagement are the core mechanic. The marketing positioning — "low shame, not low effort" — is an honest statement of what the product is and isn't.
Stack: Vue 3, TypeScript, Tailwind, Fastify, Drizzle ORM, Supabase (monorepo)
Past Work
Selected projects from previous roles — highlights of the technical and architectural work behind the org-building story on the work page.
- React at ActiveCampaign — Led the transition from multiple front-end frameworks to React. Developed the monorepo strategy for iterative migration and built company-wide buy-in across engineering leadership.
- Automations List Page — ActiveCampaign — Complete overhaul of a core product surface. New architecture improved performance, data visualization, and user management tooling. Read more →
- Third Party Claims Administrator — Honeycomb — Extended the third-party claims ingestion system on a hard deadline during my second week. Read more →
- Accounts Service — SteelSeries — Implemented OAuth2 and OpenID Connect for a unified account layer after acquisition of 3D Aim Trainer. Designed for eventual social login support and independent scaling.
- OneGlory — SteelSeries — Overhaul of EDI and ERP systems from Navision to D365 and Flex, aligning SteelSeries infrastructure with GN Store Nord post-acquisition.