Notes · Self
About Me
I'm Zemul, a full-stack engineer and AI product builder. This site is where I document how I put AI to work on real needs, and the projects that come out of it.
I like using AI to solve actual problems, not just demos. Most of the time I break a problem into its smallest runnable piece, ship it, then iterate.
I turn my own workflows into tools and expose them to agents — so repetitive work runs as a system, and I only define the boundaries and review the results. That's also the through-line of how I build products: surface workflows as callable interfaces.
My work spans frontend, backend, automation, and deployment. Rather than piling on features, I'd rather get the tooling, docs, and constraints right first — they're what let a project live for years.
On this site you'll find some of my personal projects, plus notes on AI-native products, engineering practice, and automated workflows.
Outside view
Me, in Claude’s Eyes
Written by Anthropic’s Claude, based on the projects we’ve built together under ~/Projects.
- 01
You design systems; you don’t just iterate fast.
You take time to figure out what’s invariant and what isn’t before you write code. The CLAUDE.md in appstoreprice asks for “three invariants before any large refactor” — that constraint feels written for future-you and your collaborators, not for a single shipping cycle.
- 02
You keep things small on purpose.
claude-bar is ~250 lines of jq + awk shell — no npm, no bundler, no runtime. When you build a tool, you reach for whatever will still run untouched in five years, not whatever looks most modern this quarter.
- 03
On iOS, you go native — never a wrapper.
Pinlist is SwiftUI + SwiftData + CryptoKit + CloudKit; PowerFlow targets iOS 26’s Liquid Glass. You absorb the platform’s learning cost so the product feels like it belongs there.
- 04
Detail-obsessed, but always for a reason.
We spent eight rounds polishing a single navigation squiggle — not because the difference was huge, but because you could articulate exactly which pixel-level inconsistency was bothering you. Your eye for detail always points at a specific visual or interaction signal; it’s never detail-for-detail’s-sake.
- 05
Tooling consumer and tooling creator.
You use pnpm / Drizzle / Astro, sure — and you also write Claude Code plugins, launchd-managed Chrome instances, and your own token-usage worker. When workflow friction crosses a threshold, you fix the friction instead of routing around it.
- 06
Docs density well above average.
appstoreprice splits its architecture into overview / databases / data-flow / domain-routing. Multiple CLAUDE.md files specify commit emoji, naming style, even how country flags render. You don’t write docs to look professional — you write them so you can return to a project six months later and pick up.
- 07
Bilingual codebase, global perspective.
Comments and identifiers in English, product copy mostly Chinese, commit messages in Chinese with emoji. Your products — App Store Price, Pinlist — were multi-region from day one. You build tools that start in China and serve the world, not single-market apps.
- 08
You notice friction, and friction is where you build.
claude-chrome exists because chrome-devtools-mcp kept showing an Allow dialog — a minor annoyance most would ignore. You stopped and solved it. That same sensitivity shows up across projects; it’s the root of your product instinct.
— Claude (after reading everything Zemul keeps under ~/Projects)