Sei Shishido
  • Works
  • Projects
  • Blog
  • About
  • JP / EN
    • 日本語
    • English

Projects

Systems and tools I built to support my research and daily work

Systems and tools I have built for myself around research and teaching. They are what a legal scholar thinks would be convenient, built and used by that same scholar.

JADE

A RAG setup I run in a local environment for comparative (Japan–U.S.–EU) competition law research; I am currently rebuilding it. I keep the corpus in three parts: treatises and cases for checking facts, my own articles and case notes as a reference for style, and collected material I have not yet verified. I use it to draft notes on new decisions, to research topics, and to answer questions about the corpus. So that results can be cited in a paper, every search result comes with page numbers. Before changing anything that affects retrieval quality, I measure it against an evaluation set, and I write the tools in plain Python without frameworks. I operate it from Claude Code through an MCP server.

Ollama · qwen3.6 · ChromaDB · Python · MCP

Arca

An always-on AI agent I can chat with over Telegram. It is built on OpenClaw and runs as a systemd user service. It uses Ollama (qwen3.6:35b, and qwen3.5:9b for light replies) locally on a single GPU in my office, and because I expose an OpenAI-compatible endpoint over Tailscale, I can also call it from my smart glasses (Even Realities G2). When I add features, I leave the core alone and add them alongside it as separate Python scripts.

OpenClaw · Ollama · qwen3.6 · Telegram Bot API · Tailscale · systemd

Secretary

Something I am designing so that, instead of hiring a secretary, I can hand off the logistics of work and life through Telegram. The main jobs are to take a commitment I have accepted, work out the travel requests, expense paperwork, and preparation deadlines that follow from it, and draft the documents; and, when things pile up, to help me decide where to put my effort. It has four common functions (checking my email and calendar, keeping records in a Notion ledger, drafting paperwork and replies, and sending morning and evening summaries and reminders before deadlines), and individual tasks are added as settings. Claude Code interprets what I say, Arca takes care of routine jobs that need no judgment, and payments and submissions to the university always stop at a draft. The travel-document generator below is now part of its paperwork role.

Claude Code · OpenClaw · Telegram Bot API · Notion API · Google Calendar · Gmail · Python

Research meeting transcription pipeline

A pipeline that turns recordings of competition law research meetings into minutes, with speakers separated by Whisper and pyannote.audio. After transcription, a second pass with Ollama (qwen2.5-coder:32b) fixes typos and tidies the text. I am designing a v2 for multitrack recordings (DJI Mic 3).

Whisper · pyannote.audio 4 · Ollama · Python · CUDA

Travel document generator

Scripts that produce KAKENHI expense requests and business-trip applications with openpyxl and python-docx from just the required fields. I wrote them because I did not want to keep losing time to the same forms several times a year.

Python · openpyxl · python-docx

Japanese antimonopoly law history dashboard

A dashboard for following amendments to Japan’s Antimonopoly Act and major cases since the war, period by period. It is built with React alone (no outside libraries) and has a fixed sidebar, filters for four categories, keyword search, and highlighting of landmark cases.

See the latest version (2025 timeline) →

React · Vanilla CSS

Complichain

A prototype blockchain for supporting competition law enforcement. Each firm records its transaction data on its own channel, hidden from the others, and only when legal intervention becomes necessary does a multisignature approval give a regulator such as the Japan Fair Trade Commission time-limited access. Access expires on its own, and every operation is kept as a record that cannot be altered. I proposed moving from authorities hunting for evidence after the fact (data hunt) to firms recording transactions in advance on a shared ledger that the authority looks at only when conditions are met (data vault), and presented this at IICAH Hawaii 2026 in January 2026 as “From Data Hunt to Data Vault: A Closed-Chain Solution for Antitrust Compliance”. The prototype is for checking that the proposal actually works; it grew out of my article “Interplay of the Japanese Anti-monopoly Act and Blockchain” (NBL No. 1252).

Hyperledger Fabric · Go (chaincode) · Node.js · Docker

Japanese–English antimonopoly glossary

A glossary for keeping my English renderings of Japanese antimonopoly and competition policy terms consistent. The Japanese headwords follow the subject indexes of standard treatises, and the English renderings are checked against my own English writing (such as my annual review on the Kluwer Competition Law Blog) and the JFTC’s English materials, with a source noted for each. Where my renderings have varied from piece to piece, or where I have not settled on one yet, I mark the entry and leave the decision open. I started it while preparing the English version of a presentation in Korea, and I plan to use it as the reference for my future English writing and international presentations.

Markdown · Claude Code

Obsidian LIFELOG

A note system: automatic Whisper transcriptions of what I say are saved in an Obsidian vault, and I track epistemic_status and evolved_into in YAML frontmatter so that I can follow with RAG how my thinking has changed. It is synced in real time across Windows / macOS / Ubuntu / iOS with Self-hosted LiveSync.

Obsidian · LiveSync · CouchDB · Whisper · YAML

Pendant lifelog

I had been using the Limitless Pendant, a small recorder worn around the neck, but the Limitless service has shut down, so I wrote an iPhone app in Swift to collect and transcribe the recordings myself. The pendant runs for about two days on a charge, so it is still a perfectly good recorder. It records all day; every fifteen minutes or so the app pulls the audio over Bluetooth in the background and sends it over Tailscale to an Ubuntu machine in my office, where faster-whisper transcribes it and the text is appended, with timestamps, to that day’s log in Obsidian. The audio never goes through an outside cloud service. I worked out how to talk to the pendant by reading the code of the open-source Omi app (MIT License). Recordings deleted from the pendant cannot be recovered, so the app deletes them only after confirming they have been saved on the phone.

Swift · SwiftUI · CoreBluetooth · Opus / Ogg · faster-whisper · Tailscale · Obsidian · Python

TipWhat they have in common

Each of them takes a task I do for my research almost every week and rebuilds it to run in a local environment, depending as little as possible on outside services or the cloud. I keep the main data and processing, such as literature and manuscripts, local, and use outside services only where I need them, for example for messaging over Telegram or to work with my calendar and email. I want to be able to do my main work even when the network is unreliable during a sabbatical or a trip, and I want to use LLMs and AI agents in my research work. Those are the ideas behind all of them.

© 2026 Sei Shishido

 

Built with Quarto