M.
0%

Design Logs

Where decisions get receipts. Every design choice — the data behind it, the hypothesis, and what actually shipped.

Updated monthly 2 logs published
For founders

See how I think before you hire me. Every log shows the reasoning — not just the final screens.

For designers

Free playbook. Steal the method, skip the mistakes — the receipts are public on purpose.

Log #1: Why I killed my old portfolio

September 11, 2026 · 4 min read

Shipped

The data

My previous portfolio was functional — case studies, clear layout, decent conversion. But session recordings and scroll-depth data showed a pattern: visitors were reading it as "another clean portfolio," not "a strategic design partner." Bounce on the About page ran ~40% higher than Home.

The analysis

Founders and VPs of Product don't buy "UI screens." They buy trust, maturity, and a premium feel. My old site communicated "competent." It didn't communicate "investor-ready." For a portfolio selling to fintech and B2B SaaS, the container must match the value of the content inside it.

The hypothesis

If I rebuilt the site with a premium aesthetic — depth, motion, glass — and shifted the copy from "I'm a designer" to "Let's solve business problems," the perceived value of my work would rise. Higher-quality leads would follow.

The decision

Complete rewrite of the portfolio on Nuxt 3 + Tailwind.

  • Awwwards-inspired aesthetic — depth, motion, consistent tokens.
  • Modular Vue architecture that cut my own dev time from 6 weeks to 3.
  • Shifted from "Contact me" to a Book-a-Call experience with tracked form.

Log #2: Engineering micro-interactions

September 4, 2026 · 3 min read

Active

The observation

Most portfolios treat buttons as flat rectangles. Users click them out of necessity — not confidence. In B2B SaaS, missing feedback (no hover state, no loading spinner, no success confirmation) reads as "this product might be broken." Friction kills form submissions.

Action taken

  • • Built one AppButton.vue component handling 5 states (default, hover, loading, disabled, success).
  • • Wired the contact form with loading + success + error feedback — no backend framework, just Web3Forms and clean state.
  • • Added group-hover micro-interactions (arrow slides on hover) across every primary CTA.

The lesson

Building a scalable design system forces you to think like a developer. When you design a button in Figma, you must also think about its disabled, loading, and error states in code. Real UX lives in the implementation.

Every decision above started with a receipt.Want yours measured the same way?

First call: 30 minutes, free, honest. You'll leave with one actionable insight — whether we work together or not.