AI Engineer at Akatsuki AI. I build production LLM systems for Japanese enterprise clients: retrieval pipelines, multi-agent orchestration, and the eval work that tells you whether either of them is actually working.
Google Summer of Code 2025 with the Python Software Foundation. Most of the rest of my time goes into other people's codebases.
Jidoka - in house Devin AI for Akatsuki: A spec-to-deployment pipeline where a spec file spins up multiple agents in CI. It builds, scans, deploys to Cloud Run (GCP), and tests against a generated eval corpus, with human review only at the final merge gate. Closing the PR tears down every resource the run created. Hardened for enterprise use with a three-project GCP topology (control, verify, audit), egress-restricted agents on Vertex AI, Workload Identity Federation in place of service-account keys, SHA-pinned Actions, IAP-only access, per-run budget caps, and a failure-pattern registry so the same build error is not diagnosed twice.
Real-time executive meeting advisor. Streaming speech-to-text on Gemini 2.5 Flash, semantic RAG over 482 internal documents (5,961 chunks, gemini-embedding-001 at 256 dimensions), and Google Search grounding for current-affairs context. I designed the retrieval pipeline end to end: cosine-similarity tuning at top-k=8, semantic deduplication, and page-level citation tracking. I also wrote the Precision@K and Recall@K evaluation methodology the client used during procurement.
MailShieldAI, multi-agent email security. Five specialised LangGraph workers (Ingest, Intent, Sandbox, Aggregator, Action) over Gemini, classifying email into 16 threat categories with 0 to 100 risk scoring. This is the project that turned my internship into a full-time role.
Two LLM data pipelines. A voice-of-customer system that pulls review data from YouTube and Japanese e-commerce platforms and scores sensory attributes into structured reports, and a competitive-intelligence tool that mines market signals out of unstructured CRM data for a pharma client.
| Project | What I worked on |
|---|---|
| ossf/cve-bin-tool | Supply-chain security scanner. Parser tests, output-engine coverage, NVD score handling, Python 3.13 migration |
| mastra-ai/mastra | TypeScript agent framework. Agent runtime, memory, evals, and five storage adapters |
| fury-gl/fury | Scientific visualisation. Per-instance actor geometry, colour normalisation, 2D UI fixes |
| intel/cve-bin-tool-action | The GitHub Action wrapper. Python 3.13 migration and scanner tests |
| dodopayments/billingsdk | Billing UI components, and correct status codes on webhook verification failure |
| PyAr/pyarweb | Python Argentina's site. Where I started |
| wagtail/wagtail | Django CMS. Refactored the embed finder API and its tests |
Most of this is unglamorous: correctness fixes in storage adapters, regression tests for code paths nobody had covered, and the kind of bug that only appears when a product name contains a special character. That is the work that makes a project safe to depend on.
Mentored by Terri Oda and Anthony Harrison on CVE Binary Tool, a 1.7k-star supply-chain security scanner historically backed by Intel. The project was multi-format VEX validation. These are the deliverables, currently open for review upstream:
- VEX file validation tool covering CycloneDX, CSAF and OpenVEX
- lib4vex integration, replacing duplicated parsing logic across the project with a single
VexHandler - CVSS v4 support across the codebase
- Triage in HTML reports and VEX Archive
- Product names with special characters, a data-loss bug affecting a broad class of indexed CVE entries
vex-updater is the standalone CLI I extracted from that work so the update path is usable outside the scanner.
AQUA is a small neural network library written from scratch in NumPy, with reverse-mode autodiff, layers, SGD and Adam, and no deep-learning framework anywhere in the stack. The point of it is self-pruning: during a pruning window the training loop ranks weights globally by |w * grad| and masks the rest. On sklearn digits a 64-128-10 MLP holds 0.973 accuracy at 90 percent sparsity, keeping 947 of 9,472 weights for roughly ten times fewer multiply-adds. Dense BLAS still wins at this scale, which the README says plainly.
verified-stem-qa generates STEM question-answer pairs where a pair only enters the dataset on a positive, deterministic proof of correctness. A challenger writes the problem, a solver answers it blind, and a per-domain verifier either proves it or throws it out: SymPy symbolic equivalence for mathematics, sandboxed test execution for code, atom and charge balance for chemistry, dimensional analysis plus numeric magnitude in SI for physics, and governing-equation substitution for engineering. Built to survive a million pairs rather than two hundred, with hard timeouts on every verifier, a numeric fast path before expensive symbolic simplification, checkpoint and resume, and trust tiers recorded per pair so downstream consumers know what the proof was.
NeuralMeet is an AI video-call platform with role-specific agents such as tutor and coach, on the Gemini API, with real-time video through the Stream SDK and auto-generated summaries, transcripts and searchable chat. tRPC and Drizzle ORM. Source.
8x is a dating app where the AI personas swipe back. Matching runs in three stages ordered by cost: a free hard gate on stated preference and age, then cosine distance between user and persona preference embeddings, and only for ambiguous scores an LLM judge that has the persona explain its decision. Matched personas message first and can hold a voice call. React Native and Expo, Supabase with edge functions, OpenAI embeddings, ElevenLabs for voice. Every persona photo is generated and every persona is labelled as AI.
GSoC-Spy tracks pull request activity and surfaces the most active contributors across any GitHub organisation, built for people deciding which GSoC org to target. Grew to 82 stars on its own. Caching and PAT-based rate limiting cut API calls by roughly 80 percent. Source.
Final-Round is a mock-interview platform with four agents (Interviewer, Evaluator, Topic Manager, Orchestrator) running a live interview and grading it as it goes. Next.js and FastAPI, Postgres on Neon, with a terminal client as well as a web app.
Lineclaw handles inbound talent inquiries over LINE for a single manager covering around 200 people. Replies are gated on confidence: answer directly above 0.75, ask one clarifying question between 0.45 and 0.75, escalate below that or on anything sensitive. Bilingual Japanese and English, serverless on Vercel with KV-backed conversation memory.
AI and ML LangGraph, multi-agent systems, RAG, vector embeddings, semantic search, agent evaluation (Precision@K, Recall@K), prompt engineering, Gemini, OpenAI and Anthropic APIs, Vertex AI
Languages Python, TypeScript, JavaScript, SQL
Frameworks Next.js, React, Node.js, FastAPI, tRPC, Tailwind CSS
Data and infra PostgreSQL, pgvector, Redis, MongoDB, Supabase, Google Cloud Platform, Cloud Run, Docker, Terraform, GitHub Actions
Open to remote roles, and always happy to talk about agent infrastructure, retrieval systems, or a project that needs a contributor.




