Work

Systems I built and run in production, one concept build, and the audience I grew around them. Each one comes with the problem, the build, and the numbers.

Systems I built and run

Each one is in production or published, with the numbers it produced.

Multilingual Booking Platform

Booking and payments for a Tokyo photo studio whose customers book from 20+ countries.

book.tettyphotostudio.com
Tetty's Photo Studio booking site, desktop home page
Tetty's Photo Studio booking site on a phone

After checkout

TPS
Deposit · 30%
Booking created
Deposit in$USD

$19.9k

best month in revenue

754

transactions in 8.5 months

39%

of date selections reached a time slot

  • Next.js
  • TypeScript
  • Go
  • PostgreSQL
  • AWS
  • Stripe
  • Cloudflare

Staff Operations App (iOS)

An iOS app where contract photographers claim shoots, bill the customer's remaining balance, and send their month-end invoice. Every rule about money, hours and customer data is enforced by the same Go API the booking site uses.

  1. Step 01

    Claim a job

    Open jobs appear in the app. One tap claims it.

  2. Step 02

    Track earnings

    Pay is calculated per job, automatically.

  3. Step 03

    Invoice at month end

    Invoices generate and submit themselves.

JobsEarningsInvoices

#418

Sat · 10:00

Location A

Claim✓ Claimed

#419

Sat · 14:30

Location B

Open

#421

Sun · 09:00

Location C

Open

Sample data

8

contract photographers on one app

Weekly

production use by the team

  • React Native
  • Expo (Router, EAS Update)
  • TypeScript
  • Go
  • PostgreSQL
  • Stripe
  • Google Calendar API
  • AWS

TONI — 3D Scroll Site

A concept site for a matcha tonic brand: one real-time 3D can travels the whole page, and AI-generated video handles the liquid scenes.

toni.shogo.build
TONI concept site, desktop hero with the 3D can

54.3s → 1.0s

until the can appears on a phone

147.8 → 1.9 MB

initial download after optimizing

6

flavors from one 3D can

  • Next.js
  • TypeScript
  • Three.js
  • React Three Fiber
  • GSAP
  • Lenis
  • Higgsfield
  • Vercel

AI Agent for Product Management

A Claude Code Skill that takes a PM from a business problem to a PRD and UI mockups in one session, pulling evidence from four tools over MCP.

Problem → PRD → prototypePublished · Mercari Engineering
Slack threads
Product metricsUser feedbackClaude Code + MCPagent · skills + toolsreading signalsPRD draftqueuedUI prototypequeued

Published

on the Mercari Engineering blog

In use

internally at Mercari

  • Claude Code
  • MCP (Model Context Protocol)
  • Anthropic API

SIGNAL — A Daily AI Brief

A news product that reads 45 feeds plus Techmeme, Hacker News, GitHub and vendor pages six times a day, groups the same event across outlets, and ranks the day by what actually changes — not by how loudly it was covered.

www.sgnl.news
SIGNAL, the day's issue on desktop

6×/day

collection runs, unattended, on a cron

45 → 12

RSS feeds read, stories in the daily issue

1.5s

mobile first paint in a throttled lab test, down from 2.2s

  • Next.js
  • TypeScript
  • Supabase
  • PostgreSQL
  • Anthropic API
  • Vercel

Lifters Club — A Training App

A web app for gym training: a plan from your answers, sets logged on the phone even without signal, the next session's weight and reps worked out by rule, and a coach who can read but not rewrite.

lifters.club
Lifters Club exercise library on desktop: a muscle map and 582 exercises, each with a 3D motion clip
Lifters Club on a phone during a workout, a set just logged and marked as a new personal best

Every set

Squat, set 240 kg × 9
On the phoneIndexedDB outbox
nothing waiting
online, all sent
/api/v1signed, same site, rate limit
SupabaseRLS enforced
Personal best: 40 kg × 9

582

exercises, each with a licensed motion clip

1,086

unit and component tests; 99.5% of lines in server and library code

21

migrations, row-level security on every table

  • Next.js
  • TypeScript
  • Cloudflare Workers (OpenNext)
  • Supabase (Auth, Postgres, Storage)
  • Zod
  • Vitest
  • Playwright
Booking analytics

Measured, not guessed

Every step of the booking funnel is instrumented — which is how it showed up that only 39% of visitors who picked a date went on to pick a time, and got fixed.

Booking funnel

1.03%visit → booked

  1. 1Visited site5,332
  2. 2Viewed plans82.9%4,418
  3. 3Viewed locations29.5%1,305
  4. 4Opened booking90.1%1,176
  5. 5Picked a date59.4%699
  6. 6Reached payment12.4%87
  7. 7Booked63.2%55

GA4 · book.tettyphotostudio.com · Aug 1 – Aug 31, 2026

GA4 funnel events

Instrumentation on every step of the booking funnel, from plan to deposit.

Session replay

Microsoft Clarity recordings show where customers stall, step by step.

Stripe payment events

30% deposit at booking, remaining balance collected automatically after the shoot.

Calendar sync

Photographer assignment kept in sync with Google Calendar.

Search Console

Branded searches bring nearly every click. Non-branded terms like “tokyo photo studio” sit around position 14 — the next thing to grow.

book.tettyphotostudio.com · web · last 3 months

Clicks
138
Impressions
910
CTR
15.2%
Top queriesClicksPosition
tetty photo studio414.2
tettyphotostudio241.2
tokyo photo studio42 impressions · next to grow114.2

AUDIENCE

Personal Brand — 0 to 30,000 Followers

Founder, creator, analyst.

I built a personal brand in the motivation, fitness, and self-growth space from zero. Multiple videos passed 1M views. By the summer of 2026 an ordinary reel was reaching fewer people than it had a year earlier, when the account was about a tenth of the size. The Instagram app shows insights per post but keeps no history, and the official API returns only the current cumulative value of each metric. There was no way to ask how a reel had grown, or to compare this month with last year on equal terms.

A private analytics dashboard for one account. It signs in through Meta's official Instagram login, reads media and insights from the Graph API on an hourly cron, and stores every reading as a timestamped snapshot in Postgres. It uses the official API only: no scraping, no password login. On top of the snapshots: a reel list and detail page with growth over time, manual tags with a top-against-bottom comparison, weekly and monthly trends, and a read-only JSON report of aggregates so the question "how is it going" does not need hand-written SQL.

How it works

    @imshogo.k on Instagram ↗

    Audience

    • @imshogo.k
    • Motivation
    • Fitness
    • Self-growth
    • 0 → 30,000 followers
    • Multiple videos past 1M views
    • 13 months of account data
    • Shares → reach
    • 2.03M views · last 30 days

    Views

    2.03M

    FollowersNew followers

    +1,264

    Interactions

    234K

    Daily average

    Calculated
    • Views≈ 67,604
    • New followers≈ 42
    • Interactions≈ 7,799
    Rate

    ≈ 115 interactions per 1,000 views.

    Instagram Insights · @imshogo.k · last 30 days · Sep 2026

    Have something that needs to be built?

    Tell me the workflow and what a good outcome looks like. I'll reply with a clear next step.

    • 1,200+ clients handled
    • Published at Mercari
    • 30K followers