Skip to main content

Code

Tools I built to run the research — literature mining, AI knowledge retrieval, a lab digital twin, and lab utilities.

The tool ecosystem around paper-organizer Feed side: journal e-mail alerts reach get-ASAP (85+ journals), which logs every paper to a Notion paper DB serving the public get-ASAP dashboard; paper-autodown triages by title and downloads; papers land in Zotero, the corpus, and also feed a per-corpus hybrid RAG index (dense embeddings, BM25, reranking). Center: paper-organizer, the argument graph — thin gray edges are citations, colored edges are ratified arguments (supports, disputes, extends), every one approved by hand and quote-verified; it picks what paper-autodown fetches next. Query side: AI sessions ask research-MCP, which joins the argument graph, the hybrid RAG index, and the ai-memories archive it reads, returning grounded answers with citations attached. All agent activity is archived into ai-memories, the cross-cutting memory layer underneath. Experiment data: equipment-control drives the instruments (ALD system, photothermal reactor), whose data goes through lat-pipeline into Notion — which ai-memories reads as well. Separately, GC results go through gc-analysis to a live cloud view, updated with every injection. Journal e-mail alerts get-ASAP watches 85+ journals paper-autodown triage by title · download Notion paper DB get-ASAP Dashboard public web app Zotero the corpus hybrid RAG index (recall) dense + BM25 + rerank picks what’s next paper-organizer the argument graph — claims, evidence, attacks every link approved by hand · quote-verified thin gray = citations · colored = ratified arguments (84% of citations turn out not to be arguments) AI sessions > any question agent activity archived research-MCP RAG + arguments + memory grounded answer [Zhou 2019] [Kim 2024] ai-memories cross-cutting memory layer — archives every research conversation equipment-control drives Instruments ALD system · photothermal reactor lat-pipeline Notion GC gc-analysis cloud · live view every injection

Literature Mining

From journal alert to cited answer: get-ASAP collects every new paper on fixed rules, paper-autodown has an LLM keep the ones that matter, paper-organizer extracts each paper’s claims under a researcher approval gate, and H2-bench & H2-MCP turn the performance data into a benchmark researchers at the center query — on the web, or from their own AI through MCP.

get-ASAP

Featured

Literature radar tracking 85+ journals across 7 publishers, from Gmail alert to public dashboard.

  • Python
  • Gmail API
  • SQLite
  • Notion API
get-ASAP — literature radar to public dashboard Left: a radar of concentric rings sweeps across 85+ tracked journals from 7 publishers; a teal arrow carries a detected signal to the alerts box. Right: the catch flows down a chain — Gmail new-issue alerts, parsed and filed by a cron job, into a Notion database that is the system of record. From that database, a public dashboard regenerates a CSV snapshot into keyword trends, journal breakdowns, and a searchable archive. A short branch off the database feeds a manual-review box, set apart to the side, where relevance calls are reviewed by hand directly in Notion. LITERATURE RADAR COLLECT & PUBLISH 85+ journals · 7 publishers sweep = matched this cycle Journal e-mail alerts parse & file — cron Notion paper DB main public dashboard keyword trends · journal breakdowns searchable archive relevance review — by hand Notion = the paper record, reviewed in place
  • Turns new-issue alert emails from 85+ journals across seven publishers into a monthly Notion database.
  • A public dashboard rebuilds from it on every run: keyword trends, journal breakdowns, a searchable archive.

Skills Literature monitoring automation · Data pipelines · Public dashboard deployment

paper-autodown

LLM triage for new papers — the relevant ones download automatically and file straight into Zotero.

  • Python
  • Codex CLI
  • Zotero
Private repository
paper-autodown — two intakes, one triage funnel Two streams enter a funnel: get-ASAP's daily catch and paper-organizer's citation-map requests. Inside the funnel, grey dots rain toward a triage box where an LLM judges each title, criteria refined over months of user corrections. What passes continues down as kept; what fails is filtered out to the side. The kept path downloads through institutional subscriptions (Elsevier via a manual browser pass since its official API retired), verifies each PDF, and files into Zotero. DAILY CATCH CITATION-MAP REQUESTS get-ASAP paper-organizer LLM triage — by title criteria refined by user corrections kept filtered out download institutional subscriptions verify PDF Zotero linked files + enriched metadata
  • An LLM screens each new title for relevance, on criteria refined over months of my corrections.
  • What passes downloads through institutional subscriptions and lands in Zotero with full metadata.

Skills LLM classification · Feedback-driven prompt tuning · Download automation

paper-organizer

Featured

Distills the literature into a human-ratified argument graph — claims, evidence, attacks.

  • Python
  • Codex CLI
  • Zotero
  • OpenAlex
Private repositoryLive site
paper-organizer — collect along citations, ratify the arguments Left half: a topic starts from a few core papers seeding a citation network that expands ring by ring; solid nodes are collected, dashed are up next; the citation map is built from OpenAlex and Crossref and grows daily. paper-autodown does the fetching, get-ASAP the alerts. Right half: the argument graph — claims linked across papers as supports (green), disputes (terracotta), extends (dashed); every link approved by hand and verified against the quoted source text. On top: conflict maps and a research-gap report. COLLECT ALONG CITATIONS RATIFY THE ARGUMENTS a topic — a few core papers every link approved by hand · quote-verified solid = collected · dashed = up next supports disputes extends citation map — who cites whom OpenAlex · Crossref · grows daily argument graph — ratified claims linked across papers fetching by paper-autodown · alerts by get-ASAP on top: conflict maps · research-gap report
  • An LLM extracts each paper’s claims and cross-paper links — support, dispute, method reuse — and I approve each one against the quoted source.
  • A citation map and a daily watch flag where the literature clashes or runs thin; those papers become the next downloads.
  • The live site shows the ratified argument map of the ongoing plasmonics study.

Skills Argument mining · Human-in-the-loop LLM review · Citation network analysis

H2-bench & H2-MCP

A cited benchmark of the hydrogen-carrier literature — a website to browse, an MCP server to query, both deployed in-house at KIST’s Hydrogen & Fuel Cell Research Center.

  • Python
  • TypeScript
  • Cloudflare Workers
  • D1
  • MCP
Private repository
H2-bench — three literature corpora to one cited benchmark Left: three stacked corpus boxes, ammonia decomposition, NaBH4 hydrolysis and LOHC, merge into one extraction step in which every row is anchored to a quoted source passage. Extraction fills a single benchmark database holding catalyst, conditions and performance. On the right, the database feeds two dashed outputs: a website for browsing and comparison charts, and an MCP server with 10 tools whose rankings are split by rate basis. Below the MCP server, Claude and ChatGPT connect to it with OAuth and access control. LITERATURE TO BENCHMARK TWO FRONT ENDS ammonia decomposition NaBH4 hydrolysis LOHC extraction every row anchored to a quoted source passage benchmark DB catalyst conditions performance website browse + compare charts MCP server 10 tools · rankings split by rate basis Claude / ChatGPT OAuth + access control deployed in-house · ~30 researchers
  • Benchmarks the ammonia-decomposition, sodium-borohydride and LOHC literature — catalyst, conditions, performance — each row tied to a quoted source.
  • A website for browsing, and an MCP server whose rankings never mix rate units.
  • Deployed in-house at KIST’s Hydrogen & Fuel Cell Research Center; around 30 researchers use it.

Skills Benchmark curation · Evidence-anchored extraction · Remote MCP deployment · Access control (OAuth)

AI Knowledge Retrieval

Where AI answers come from: research-MCP serves the literature index, the ratified argument graph, and my research notes through one MCP server, citations attached; ai-memories archives every AI conversation so the next session picks up where the last one left off.

research-MCP

One local MCP server over both layers — every answer traced back to real citations.

  • Python
  • MCP
  • Hybrid RAG
  • SQLite
Private repository
research-MCP — dual-resolution graphs to a cited answer Left: two layers plus a notes archive feed one server, each along its own path into a distinct point on the server's left edge. The upper, sparser layer is the human-ratified argument graph — precision. The lower, denser layer is the per-corpus hybrid RAG index — recall. A research-notes box sits below both. All three flow into the research-MCP server, which MCP clients like Claude and Codex call into from above. A fourth source, a bibliographic citation index, feeds the server from the lower right. The server cross-checks verdicts with citations and returns an answer whose citations carry the full record — author, year, journal, DOI. DUAL-RESOLUTION SOURCES ANSWER + VERIFY human-ratified argument graph — precision hybrid RAG index — recall research notes Claude / Codex — MCP clients research-MCP server cross-check: verdicts with citations answer + citations citation index author · year · journal · DOI recall = hybrid RAG · precision = ratified argument graph
  • One MCP server over a hybrid RAG index of the literature (dense + BM25 + reranking), the ratified argument graph, and my research notes.
  • A cross-check tool tests a claim against papers and notes together and returns a verdict with resolved citations.

Skills Hybrid RAG · MCP server design · Citation verification

ai-memories

Archives every AI research conversation — across tools — into a searchable, deduplicated, MCP-queryable memory store.

  • Python
  • SQLite (FTS5)
  • MCP
  • Cloudflare Pages
Private repository
ai-memories — overlapping exports to one deduped archive Three staggered conversation exports — ChatGPT, Claude, Notion — flow into a hash-chain ingest step, drawn as three linked squares, that dedupes them into a single stream and preserves edit history rather than overwriting it; captions describing the ingest sit beside the motif, clear of the arrow below. The result lands in a SQLite FTS5 archive, which branches into two equal-width flows: an MCP server for recall in any session, and a daily off-site backup. AI CONVERSATIONS, DEDUPED ChatGPT Claude Notion ingest — hash-chain dedup edit history preserved, not overwritten SQLite FTS5 archive MCP server — recall in any session daily off-site backup
  • Collects conversations from several AI tools into one deduplicated archive, keeping edit history.
  • Full-text search through an MCP server, plus a topic dashboard and a daily off-site backup.

Skills Data deduplication · Full-text search · MCP server design

Lab Digital Twin

The bench, run from software: my own equipment control software runs the powder ALD system and the photothermal reactor, GC results stream to the cloud injection by injection, and reactor runs land in Notion without spreadsheet work.

equipment-control

Equipment control software I wrote for the lab’s powder ALD system and photothermal reactor — replacing both vendors’ programs.

  • Python
  • FastAPI
  • Modbus
  • YAML
  • pytest
Private repository
equipment-control — one control stack, two instruments Left: two user interfaces, a live P&ID digital twin for the powder ALD system and a CSV step table with a simulator for the photothermal reactor. Both feed one control core that holds the interlocks, the sequencer and a one-second logger. The core drives device drivers, which fan out to the two instruments on the right: the powder ALD system with its valves, heaters and pressure, and the photothermal reactor with its gas flows, light source and heater. EQUIPMENT CONTROL SOFTWARE INSTRUMENTS UI · control core · drivers two lab instruments live P&ID digital twin ALD system CSV step table + simulator reactor control core interlocks sequencer 1 s logger device drivers powder ALD system valves heaters pressure photothermal reactor gas flows light source heater two vendor programs replaced by one in-house control stack
  • Replaces the vendor control programs of two instruments — the powder ALD system and the photothermal reactor.
  • Talks to the hardware directly — valves, heaters, pressure, gas flows, light source; device protocols worked out without documentation.
  • The ALD screen is a live, two-way digital twin of the P&ID; reactor runs follow CSV step tables, simulated first and logged every second.

Skills Equipment control software · Protocol reverse engineering · Hardware integration · Interlock & sequence design · Digital-twin HMI

gc-analysis

Every GC injection analyzed the moment it finishes, results pushed to the cloud for live viewing.

  • Python
  • pandas
  • openpyxl
gc-analysis — from each injection to a live view and a summary Top row: a finished GC injection is parsed, then conversion and hydrogen production rate are computed for that injection, and the result is sent to a live view in the cloud as each injection lands. Below, a second branch from the per-injection results picks out stable segments, bracketed where the coefficient of variation stays under 3 percent, and writes a per-condition summary spreadsheet. AUTOMATED ANALYSIS OUTPUTS GC injection finishes parse result conversion + H2 rate per injection cloud — live view every injection, as it lands stable segments CV < 3% per-condition summary spreadsheet no manual spreadsheet work
  • Watches the Agilent GC: as each injection finishes, it computes conversion and H2 production rate automatically.
  • Each injection’s result goes to the cloud, so a run can be followed live from anywhere.
  • Groups injections into stable conditions for a per-condition summary spreadsheet.

Skills Real-time data pipelines · Instrument data parsing · Cloud sync · Lab automation

lat-pipeline

Automated collection, classification, and analysis of lab experiment data, from data acquisition to Notion.

  • Python
  • pandas
  • matplotlib
  • Notion API
Private repository
lat-pipeline — from raw experiment files to Notion, automatically Left: a data-acquisition folder of experiment CSVs is watched every 15 minutes; grey squares are raw files, terracotta squares are non-experimental noise that gets filtered out. Middle: kept files are grouped into runs, then cross-referenced against the lab notebook in Notion by title match. Right: a stability plot — grey raw trace, teal kept signal, stability window bracketed in teal — feeds condition tables and time-series plots, which are written back to Notion. COLLECT & GROUP STABILITY & PUBLISH raw CSVs · grouped into runs kept signal · stable windows data-acquisition folder experiment CSVs watched every 15 min group runs cross-ref lab notebook Notion · title match condition tables stability-window averages time-series plots write back to Notion file · kept filtered out · noise no manual spreadsheet work
  • Watches the reactor’s data folder, groups new files into runs and drops non-experimental noise.
  • Matches each run to the Notion lab notebook and writes back condition tables, stability-window averages and plots.

Skills Lab data automation · Time-series analysis · Notion API integration

Lab Utilities

Two tools that each solve one problem well: TheGreatPlot turns a YAML spec into publication-ready figures, and sec-timer — a public PWA used by around 30 researchers at KIST — times experiments to the second.

TheGreatPlot

A YAML spec in, publication-ready figures out — transparent SVG in dark and paper themes, no hand-tweaked matplotlib.

  • Python
  • matplotlib
  • YAML
Private repository
TheGreatPlot — one YAML spec to two themed SVGs Left to right: a YAML spec picks a chart template from eight types, including XY, Arrhenius, spectra and bar. The chart goes into a fixed-margin layout that warns instead of clipping, and the layout fans out to two dashed outputs, an SVG in the dark theme and an SVG in the paper theme. Both use the same canvas size, so they stay pixel-aligned across a slide deck and a manuscript. SPEC TO LAYOUT TWO THEMES YAML spec chart template 8 types: XY · Arrhenius spectra · bar · … fixed-margin layout warns instead of clipping SVG — dark theme SVG — paper theme same canvas size → pixel-aligned across deck and manuscript
  • One YAML spec renders publication and slide figures from eight chart templates, as transparent SVG in dark and paper themes.
  • Figures with the same canvas size line up pixel for pixel across a deck or manuscript.

Skills Scientific visualization · Declarative figure specs · SVG layout

sec-timer

A second-precision lab timer PWA with cross-platform calendar reminders.

  • JavaScript
  • Service Worker
  • Cloudflare Pages
Private repository
sec-timer — a second-precision lab timer with cross-platform calendar reminders Left: a countdown ring, teal arc for elapsed progress against a grey remaining arc, ticking every second as a PWA. On expiry it forks two ways: up, an alert of sound, vibration, and notification; down, a calendar reminder that runs through platform detection and routes to iOS calendar-app launch, Android Google Calendar, or a desktop ICS download. Used by around 30 researchers at KIST. COUNTDOWN ON EXPIRY second-precision timer PWA · 1s tick alert sound · vibrate · notify calendar reminder platform detect iOS calendar app launch Android Google Calendar desktop ICS download used by ~30 researchers at KIST
  • A second-precision countdown timer for lab work, installable as a PWA.
  • Sends the reminder to whatever calendar works on the device — iOS, Android or desktop.

Skills PWA development · Cross-platform calendar integration