Side Projects

Live Kaiwa

Live Kaiwa
livekaiwa.com

Real-time Japanese speech transcription with English translation, summaries, and response suggestions. Built for foreign residents in Japan who need to follow complex conversations.

I live in a rural farming neighborhood in Japan. While I feel comfortable using Japanese in most of daily life, neighborhood meetings were always a completely different story. I'd walk out feeling like I understood maybe 5% of what was discussed. The vocabulary, the speed, the local dialect. It was overwhelming and frustrating. I built Live Kaiwa to solve that problem for myself, and for anyone else living in Japan who has experienced that same feeling.

Live Kaiwa transcript view showing real-time Japanese transcription with English translations, running summary, and suggested responses

How it works:

  1. Audio capture — The browser microphone streams audio over a WebSocket connection to Soniox's real-time speech-to-text API.
  2. Transcription with speaker diarization — Soniox transcribes Japanese speech in real time and automatically identifies individual speakers. Translation to English happens in the same stream.
  3. AI analysis — New transcript lines are sent to an LLM which streams back a running summary with action items and suggested responses you can speak aloud (with text-to-speech playback).
  4. Visualizer — A conversation space view maps speakers, their relationships, and interaction dynamics (agreement, delegation, commitment) onto an interactive timeline you can replay at different speeds.
  5. Export — Export the full transcript, translations, and summary as text, download the audio recording, or download the visualizer as a standalone HTML file.
  6. Local persistence — All session data stays in your local browser. Nothing is stored on any server.
Live Kaiwa visualizer showing conversation space with speaker dynamics, relationship alignment, and interactive timeline
Cooperation Cube

Cooperation Cube
cooperationcube.com

A digital version of a board game I invented. A strategic 4-player memory and semi-cooperative game. Draft, coordinate, and outmaneuver opponents by completing patterns across a rotating 3D grid.

Players place colored sticks on the faces of a cube, drawing and playing cards to complete grid patterns for points. The twist: the cube rotates 90 degrees after every round, so you need to remember what's on the other sides. Cooperation cards let you team up with an opponent for bonus points but help them too much and they'll beat you.

How it works:

  1. Setup — Each player gets 15 short sticks and 5 long sticks in their color, plus a starting hand of cards.
  2. Actions — On your turn: place a stick, draw a card, discard a card, play a bonus card, or pass.
  3. Rotation — The cube rotates 90 degrees clockwise after every 4 actions, requiring memory and planning.
  4. Cooperation — Play cooperation cards to coordinate with an opponent for mutual bonus points.
  5. Scoring — The game ends when a player runs out of short sticks. Points come from completed patterns, cooperation bonuses, and bonus cards.

How to play:


Ibonuma

Ibonuma
ibonuma.com

A digital home for Ibonuma — a small farming village of 312 residents in Oyama City, Tochigi Prefecture, tucked between the Watarase Reservoir and the Nikko mountain range.

Ibonuma is the neighborhood where I live. We grow some of the best rice, barley, and vegetables in the region, but almost all of it stays local — there's no easy way for outsiders to discover what's produced here. I built the site to give the village a window onto the rest of the world. It also complements our kairan ban (回覧板) — the wooden notification board passed house to house with paper announcements — by giving residents a digital calendar to keep track of meetings, festivals, and community events.

Ibonuma homepage with the headline 'Between the mountains, the river, and the rice' and the village's circular emblem

How it works:

  1. Public homepage — A bilingual (Japanese-first, English-supporting) site introduces the village, its produce, and the seasons. Built with Next.js 16 and React 19, deployed to Vercel with the function region pinned to Tokyo for low latency.
  2. Invite-only resident portal — Residents sign in with an 8-digit one-time code emailed via Supabase Auth. An email allowlist plus Postgres row-level security gates the portal at the database layer, so unauthorized access is impossible even if a route is misconfigured.
  3. Kairan ban digitization — An admin uploads a photo of the paper kairan ban. GPT-4o reads the image, transcribes the Japanese, translates it to English, and extracts events and meetings into a structured JSON schema (title, datetime in JST, location, body — all bilingual).
  4. Review and publish — Extracted items land in an "awaiting review" queue with confidence scores. An admin edits anything the model got wrong, then publishes — events flow into the resident calendar and dashboard, cross-linked back to the original kairan ban photo.
  5. Calendar subscriptions — Residents subscribe to a private .ics feed in Apple Calendar, Google Calendar, or Outlook. Each resident gets a rotatable bearer token (calendar apps can't send cookies), and the feed aggregates events, meetings, and seasonal notices for the next two years.
  6. Contact form — A public contact form gated by Cloudflare Turnstile sends submissions to the resident inbox via Resend, so messages from outside the village reach the right people without exposing email addresses.