Case studies

Three projects, start to finish

Each one covers the same four things: the problem, what I actually did, the outcome, and how you can check it. Where numbers aren’t public, I say so instead of estimating.

BoxBuy

  • BoxBuy: BoxBuy’s public site (Polish), the platform I led as architect and lead engineer.BoxBuy’s public site (Polish), the platform I led as architect and lead engineer.
  • BoxBuy: The guest journey: book, generate a QR code, serve breakfast on arrival.The guest journey: book, generate a QR code, serve breakfast on arrival.
Screenshots of the live product, captured at 1440px wide. Public pages only, so no customer or account data is shown.

The challenge

One platform had to serve caterers arranging meals, admins overseeing everything, and property partners managing rooms and guests. Each group needed different screens, permissions, and data, while sharing the same codebase and database.

What I did

  • Led a distributed team of 4 developers architecting and deploying the platform.
  • Engineered the Catering Panel (menu and meal logistics), Admin Panel (oversight and analytics), and Partner Panel (property onboarding, rooms, guest meal ordering).
  • Ran 10+ staging and production applications on Google Cloud Platform with Docker at 99%+ uptime.
  • Automated CI/CD with GitHub Actions: 90% fewer deployment errors, 5x faster releases, satisfaction up from 7.2 to 8.9/10.

The outcome

Four connected panels on one multi-tenant core. Container and CI/CD work cut infrastructure cost by 35% and deployment errors by 90%, while the team shipped releases five times faster.

Measured impact

  • −35%Infrastructure cost after container optimisation
  • −90%Deployment errors after CI/CD automation
  • 5×Faster release cycles
  • 99%+Uptime across 10+ production apps
  • 7.2 → 8.9Customer satisfaction out of 10
  • 4 devsTeam led across a distributed setup

How to verify

Both products are live at boxbuy.pl and partner.boxbuy.pl. The figures above were measured while leading the platform.

  • Next.js
  • NestJS
  • PostgreSQL
  • Docker
  • GCP
Full technical details →

Transcend

  • Transcend: Transcend’s public site. My work was the internal AI platform, not this marketing site.Transcend’s public site. My work was the internal AI platform, not this marketing site.
  • Transcend: Mission and vision page, shown for context. The platform itself is internal.Mission and vision page, shown for context. The platform itself is internal.
Screenshots of the live product, captured at 1440px wide. Public pages only, so no customer or account data is shown.

The challenge

People described what they wanted in ordinary language, but acting on it meant many separate steps in many separate tools. The gap between intent and a completed task was entirely manual.

What I did

  • Architected and engineered the platform using Model Context Protocol (MCP) servers.
  • Built dynamic state orchestration across multi-step automated actions.
  • Implemented drag-and-drop canvas interactions for building and arranging workflows.

The outcome

An agentic platform where natural-language intent is turned into automated multi-step tool execution over MCP servers, with dynamic state orchestration and a drag-and-drop canvas for arranging the work.

What shipped

  • MCPTool execution through Model Context Protocol servers
  • Multi-stepChained automated actions from one instruction
  • CanvasDrag-and-drop workflow construction

How to verify

The platform runs in production at transcendeducation.org. Internal performance metrics are not public, so none are claimed here.

  • Next.js
  • TypeScript
  • MCP
Full technical details →

QRCartoon

  • QRCartoon: The generator: paste a link, pick a style, export as PNG or SVG. No account needed.The generator: paste a link, pick a style, export as PNG or SVG. No account needed.
  • QRCartoon: Dynamic codes point at a short link, so the destination can change after printing.Dynamic codes point at a short link, so the destination can change after printing.
  • QRCartoon: The template library, one of the 25+ tools shipped alongside the generator.The template library, one of the 25+ tools shipped alongside the generator.
Screenshots of the live product, captured at 1440px wide. Public pages only, so no customer or account data is shown.
A short product intro I made for QRCartoon. Silent, with on-screen text.
Read the transcript

The video has no audio track. This is the text shown on screen, in order.

  1. Most people skip plain QR codes. Websites / Wi-Fi / WhatsApp / Contact cards.
  2. Branded QR codes boost scans by 80%.
  3. 01 Paste your link or info. 02 Customize colours and styles. 03 Download vector PNG and SVG.
  4. Customize colours, logos, and styles in seconds.
  5. Create a free QR code at qrcartoon.com.

The challenge

Printed QR codes are permanent, but the pages behind them are not. A typo in a URL, or a menu that changes weekly, otherwise means reprinting every code already in the world.

What I did

  • Built the product with Svelte on the frontend and Appwrite on the backend.
  • Shipped QR generation, custom styling, PNG/SVG export, dynamic destination editing, scan analytics, and a suite of 25+ tools.
  • Published a companion Cloudflare Worker that lets users self-host dynamic redirects with signed lists and host allowlisting.

The outcome

Dynamic codes that store a short link instead of the destination, so the destination can be edited later and every scan can be counted. A companion Cloudflare Worker lets people self-host that redirect layer with signed lists and an allowlist.

What shipped

  • 25+QR tools shipped in one product
  • PNG + SVGExport formats, computed in the browser
  • EditableDynamic destinations that survive printing

How to verify

Product and tools are live at qrcartoon.com, and the self-hosted redirect worker is public on GitHub.

  • Svelte
  • Appwrite
  • Cloudflare Workers
Full technical details →

A lesson from shipping QRCartoon

After shipping QRCartoon I wrote publicly about what became obvious: people skip instructions, friction loses momentum, speed creates learning, and tools should feel clear without explanation. That shapes how I approach product work now. A feature is not finished when it works in a demo; it is finished when someone can understand what to do next.

Read the original post on LinkedIn ↗

Get in touch

Happy to go deeper on any of these, including the parts that were harder than they look.