Internal research projects

Research we ran ourselves to prove consulting capability in code. 24 repositories are grouped into 10 themes by idea; repositories with the same purpose are presented as one. External delivery is scoped under a separate engagement.

01

Fully local AI assistant

Baron — a JARVIS-style personal assistant

Like JARVIS in Iron Man: talk to it and it answers right away, give it a task and it combines tools to get it done, and it speaks up before you ask. Describe a song and it writes the lyrics, composes it and can even sing it in your own voice. Runs entirely on local models across two Mac minis, with no external AI API.

Research question

Without any cloud API, can two small servers deliver an everyday assistant with conversational response speed, safe tool execution and long-term memory all at once?

Approach

Not every request goes to the big model. A small model (gemma-4) classifies intent first and answers greetings and simple lookups itself within seconds; only multi-step work goes to the 27B reasoning loop. Just before that, a rule-based planner loads only the tool group the request needs, keeping the prompt cache warm. Tools are defined as capabilities, not use cases, so the loop composes them, and risky tools run only after an approval card. Code does the collecting, computing and checking; the LLM does the interpreting and writing.

Repositories

baron / primaryInference machine. 27B agent loop and planner, RAG memory, vision, REST·WebSocket API (runs detached from connections), morning briefing, self-review
baron / secondaryWorker machine. Intent router and fast paths, tool runtime·policy·audit, market data and strategy validation, position monitoring, business management, mail digests
baron / voiceReal-time voice conversation. Voice activity detection, turn-taking and barge-in, speaker verification, adaptive pronunciation correction, lookup-tool bridge
baron / musicMusic production. Song design and lyrics, ACE-Step generation with GPU-swap scheduling, reference-track analysis, vocal separation·voice conversion·remix
baron / pwaSmartphone client (React PWA). Chat, voice, photos and music, approval cards, pairing-code auth

Key capabilities

  • Three response paths — the small router answers directly or runs a single lookup tool only when it is confident (0.8+), in a few seconds to about 20 seconds; everything else goes to the 27B ReAct loop (up to 5 steps). An answer written without tools for a request that needed them is discarded and retried.
  • Button-free real-time voice — it listens continuously, answers when you finish, and stops when you cut in while it is speaking. Backchannels like "uh-huh" are told apart from interruptions so it keeps talking, and an interrupted answer is remembered only up to the part actually heard. Measured: first audio about 2 seconds after you stop, and it stops within about 0.5 seconds when interrupted.
  • Listens only to you — enroll about 45 seconds of voice and it accepts only registered speakers. Profiles are encrypted locally, and it learns your voice and pronunciation habits (e.g. terms it mishears) over time. Speaker verification is never used as authorization, so voice mode is lookup-only — no orders or sending.
  • Says only what it verified — for live questions such as weather, stock prices or calendar it covers the wait with "let me check", then answers only from the lookup result; if the lookup fails it does not make up numbers. Stock questions all go to one briefing tool where the server collects, computes and drafts, reducing tool-selection mistakes.
  • An answer within the time limit — when time runs short it stops calling tools and writes from what it has, and if that is empty it writes a partial answer from successful lookups. Runs are detached from the connection, so they finish even if the phone disconnects, and reconnecting resumes them.
  • Long-term memory — durable facts (names, preferences, schedules) are extracted into a vector DB, and only those above an empirically tuned similarity threshold are recalled. Near-duplicate memories are not stored twice.
  • Speaks first — a morning briefing of mail, calendar, tax deadlines, reminders and holdings (date and weekday phrases verified and corrected in code), an hourly digest of new mail, and D-day reminders synced with Google Tasks.
  • Business assistant — record transactions by voice, receipt photo or card-statement file (VAT back-calculated), issue quotes and invoices with receivable alerts, store and semantically search documents, net worth and monthly reports.
  • Market data and strategy validation — collects daily prices for every listed stock for screening and backtests. Backtests use only information up to the previous day and assume the unfavorable case when intraday order is unknown. A new setting must beat the current one in all four test windows to become a candidate, accumulates out-of-sample results through daily shadow runs with no real orders, and is adopted only by a human. Orders placed through conversation always require direct human approval, regardless of auto-approve settings.
  • Lyrics, composition and audio — describe the song you want and the 27B model drafts a song blueprint (JSON) with sections, chord progressions, BPM and key, writes the lyrics, and the music model ACE-Step 1.5 renders a track with vocals. Blueprints are schema-validated, and truncated or malformed responses are re-requested with the reason attached. Measured: the audio-generation step takes about 45 seconds for a 30-second track.
  • Sharing one GPU by swapping — 32 GB of memory cannot hold the 27B model and the music model together, so the 27B is unloaded only while music jobs run and restored afterwards; chat keeps working on the small-model path in the meantime. Generation runs in a night batch (22:00–05:30) by default; daytime requests get their design and lyrics done, then step out of the queue so they don't block other jobs. [Generate now] runs one immediately.
  • Composing from reference tracks — give several YouTube links with weights and it analyzes each one's BPM, key, chord progression, structure, energy and timbre into a target profile, then designs a new chord progression and structure to match it, without reusing the references' melodies or progressions. The finished track is re-analyzed with the same analyzer and flagged if it is too close to a reference (a screening aid for possible copying, not a legal judgment). References are kept for personal analysis only.
  • Sung in your own voice — after recording consent that the voice is yours or used with permission, enroll about 30 seconds of voice; it separates the vocals from a generated track or a song you own (Demucs), converts the timbre (Seed-VC) and remixes them with the instrumental, with key shifts up to ±12 semitones. Enrolled voices are encrypted and stay local, and results are for personal listening.
  • Gets faster on its own — every night it diagnoses the previous day's latency, tool failure rate and negative feedback, and learns router examples from simple questions that were handled slowly so they take the fast path next time. Changes roll back automatically if eval-set accuracy drops; it never edits its own code.

Processing flow · chat

  • Inputtext · photo · audio file
  • Intent routingsmall router · fast answers
  • Plannerrules · tool-group selection
  • Memory searchbge-m3 · pgvector
  • Agent loop27B ReAct · up to 5 steps
  • Tool policySSRF · budget · approval · audit
  • Answermemory extraction · speech

Processing flow · real-time voice

  • Mic stream16 kHz · 20 ms frames
  • Voice detectionsilero VAD
  • Speaker checkenrolled voices only
  • RecognitionWhisper · pronunciation fix
  • Turn detectionendings · silence rules
  • Responsegemma-4 · lookup tools
  • Sentence-level TTSplays from first sentence

Processing flow · music production

  • Requestdescription · references · voice
  • Reference analysislibrosa · tempo·key·chords
  • Song design27B · sections·chords·BPM
  • Lyricsper-section lyrics
  • GPU swapunload 27B · night batch
  • Audio generationACE-Step 1.5
  • Voice conversionDemucs · Seed-VC
  • Output checksfile checks · originality

Code · statisticsLLM judgmentValidation gate

Python · asyncioFastAPI · WebSocket · SSEMLX local LLMs (Qwen3.8-27B · gemma-4)Whisper · silero VADsherpa-onnx speaker verificationACE-Step 1.5 · Demucs · Seed-VClibrosa · yt-dlpbge-m3 RAGPostgreSQL · pgvector · RedisReact · Vite PWA

※ The finance features are a technical reference, not investment advice or a solicitation to trade, and no returns are guaranteed.

02

Financial market intelligence

K-FinSight

A local-LLM pipeline that turns news, disclosures and prices into an ontology-validated knowledge graph, measures the market reaction to each event, and generates reports with cited evidence.

Research question

Can thousands of documents a day be turned into a reproducible answer to "what happened, and how did the market react" — with evidence a person can verify and without cloud APIs?

Approach

Do not use the LLM as a database. Code handles collection, normalization, validation and statistics; the LLM only interprets a compressed evidence package. 21 structured filing forms go through rule parsers; only narrative documents go to a pool of two local models.

Repositories

K-FinSightCollect → normalize → extract → promote → RAG → market reaction → intelligence → report, with a Next.js dashboard and broadcast view

Processing flow

  • Collectnews RSS · DART · KIS
  • Normalizecanonical schema · matching
  • Extractrule parsers + local LLM pool
  • Ontology check20 events · 10 relations
  • Promotededupe · evidence
  • RAGbge-m3
  • Market reactionabnormal return · flows
  • Intelligencecited insights
  • Reportdaily · weekly

code · statisticsLLM judgmentvalidation gate

Python · asyncioFastAPIPostgreSQL · pgvectorMLX local LLMs (Qwen3.8-27B · gemma-4)bge-m3 RAGNext.js
03

Equity trading research & execution

the tengine family

Not "a bot that earns well" but the engineering that keeps a flawed strategy from leaking into live trading. Research, core, engine and client are split into four repositories with separate roles and privileges.

Research question

Can false backtest edges be filtered at the system level, and can research and live trading share the same code so validated strategies never drift from actual behavior?

Approach

A strategy = data (genome JSON) + execution code (shared core). The research node holds only DB read access and needs no brokerage API; only validated genomes are exported to the engine's catalog. Promotion shadow → paper → live requires human approval, and if any safety condition fails, no order is placed.

Repositories (four as one program)

strategy-labResearch = producer. LLM-debate candidate generation, backtest, validation, promotion
strategy-coreShared core. Genome spec, KR signal primitives, backtest harness (pure stdlib)
trading-engineExecution = consumer. Independent KR and US processes, mobile API, web dashboard
trading-clientUser profile, mode, broker and strategy settings API and client

Processing flow

  • CandidatesLLM debate
  • Backtestbias removal · conservative fills · OOS
  • Shadowsimulated
  • Paperforward validation
  • Human approvalrealized performance
  • Safety gatesfail-closed
  • LiveKR · US processes
Python · asyncioPostgreSQLRedis Pub/SubFastAPIBrokerage OpenAPIMulti-process · systemd · launchd

※ Technical reference. Not investment advice or a solicitation to trade; no returns are guaranteed.

04

Crypto futures trading bot

futures-ai → fmbot

For Binance USDⓈ-M futures: objective computation by a rule engine, overall judgment by an LLM — an explainable decision structure refined over two generations.

Research question

In a market that moves by the second, can the system leave human-readable reasons for every entry and exit while enforcing live-trading safety in code?

Approach

Generation one (futures-ai) began as an explainable engine separating rule computation from LLM judgment. Generation two (fmbot) was rebuilt as daemons: collectors for bars, tickers and websockets start first, market-state classification next, trading daemons last. Live trading is enabled by a single switch; everything else is paper.

Repositories (generations merged)

fmbot (gen 2, current)Daemon structure (scand · tickd · wsd · classd · beamd · trade). Local MLX models for judgment; per-track entry/exit rule ledger with paper/shadow status
futures-ai (gen 1)Original rule engine + LLM judgment separation; alpha-first development principles documented
  • Bars · tickers · WS1-minute bars → DB · Redis
  • Market-state classificationregime labels
  • Judgmentrules + LLM
  • Safety switchsingle LIVE flag · position cap
  • Executionpaper / shadow / live
Python · asyncioBinance Futures API · WebSocketPostgreSQL · RedisMLX local LLMsuv · ruff · pytest

※ Technical reference. Not investment advice or a solicitation to trade; no returns are guaranteed.

05

LLM orchestration · bot architecture

FusionAgent and the bridge/core pattern

A two-tier structure — messenger bots handle only messages and delegate AI work to a separate core — validated three times, with a multi-model gateway (FusionAgent) in front of the cores.

Research question

Where should the boundary sit so that several bot services get quality, cost control and fault isolation without ever calling a model directly?

Approach

The bot (bridge) only receives and normalizes platform messages (Telegram, Kakao) and sends notifications back; the AI core knows nothing about platforms. Cores hand requests to FusionAgent, which classifies → runs role models in parallel → scores confidence → merges. Memory and retrieval stay with the caller so the gateway remains stateless.

Repositories (merged by role)

fusion-agentMulti-model gateway: adaptive routing, merge gating, circuit breakers, SSE streaming, DB guardrails
dnbot / dncoreNeighborhood-life bot: Telegram/Kakao bridge + LLM conversation, domain data and scheduler core, internal-token auth
ngbot / ngaicoreBot-server / AI-server scaffolding pair — a reusable template of the same pattern
mybotTelegram bot routing messages to Claude, Gemini, Codex or Ollama; single-instance lock
  • MessengerTelegram · Kakao
  • Bot bridgereceive · normalize · notify
  • Internal token authx-internal-token
  • AI coreconversation state · domain · schedule
  • FusionAgentclassify → parallel → confidence → merge
  • Local model backendsMLX · OpenAI-compatible
Python · asyncioFastAPI · aiohttpSSE streamingOllama / OpenAI-compatible backendsRedisWireGuard private network
06

AI coaching service

Relavo · hearimz

An AI coach on Telegram for conversation, analysis and coaching, plus a security-first web dashboard where only the owner can view results with their token.

Research question

In a B2C AI service handling sensitive personal data, how far must the web surface shrink to get both convenience and safety?

Approach

Sensitive functions such as coaching and editing stay on the bot; the public web is view-only. Write privileges are removed at the database level, and signed ephemeral tokens authenticate without a session store. Visualizations are rendered server-side as SVG to minimize client scripting. Payments use Telegram Stars.

Repositories (bot + web merged)

RelavoTelegram AI coaching bot: conversation analysis, evolving mind analysis, Stars payments, admin panel. Model calls delegated to FusionAgent
hearimzPublic landing + read-only dashboard (aiohttp), PWA, per-page CSP
  • Telegram botcoaching · analysis · payments
  • FusionAgentmodel delegation
  • Signed tokenephemeral · stateless
  • Read-only queryno DB write privilege
  • Server-side SVGrelationship network
  • WebApp / PCper-page CSP
Python · asynciopython-telegram-botaiohttp · asyncpgPostgreSQLnginx · HTTPS · PWA
07

DBA automation tools

hybot · migjob

Two recurring DBA tasks, SQL tuning and schema migration, turned into tools. They underpin the DBA-02 and DBA-03 services.

Research question

How much more stable do tuning suggestions become when objective evidence — execution plans, AST, benchmarks — comes before LLM judgment? Can object renames safely propagate into the procedures and views that reference them?

Approach

hybot connects to Oracle and PostgreSQL, extracts EXPLAIN PLAN, AST and benchmarks first, then lets multiple LLM profiles propose on that evidence; a standalone AST tuner runs without any LLM. migjob is an extract → rename → migration SQL → apply → verify pipeline that rewrites references inside dependent objects automatically.

Repositories

hybotMulti-LLM SQL performance tuning console agent (Oracle · PostgreSQL), standalone AST tuner
migjobOracle schema migration tool with dependent FUNCTION/PROCEDURE/VIEW reference rewriting, make-based pipeline
PythonOracle · PostgreSQLEXPLAIN PLAN · ASTMultiple LLM profilesMakefile pipeline
08

Local-LLM creative studios

wt-studio · nvstudio

Webtoon and novel production modeled as plan → agent execution → artifact management, to test local-model orchestration in a creative domain.

Research question

Does a planner-model-splits-work, agents-execute structure keep long-form narrative consistent?

Approach

wt-studio manages webtoon production stages with a FastAPI backend and OpenCode orchestration, storing artifacts in a database. nvstudio uses a Gemma planner with agents, memory and a controller to drive novel generation.

Repositories

wt-studioLocal-AI webtoon production system (FastAPI + OpenCode, migrations, artifact management)
nvstudioNovel-generation agents: planner · agents · memory · controller
Python · FastAPIOpenCode orchestrationGemma local modelAlembic
09

Service & data experiments

Mungsikdang (ifewb) · gamebot · lotto

Side projects that double as product planning and data-pipeline practice. Some stopped at the idea-validation stage.

What they are

  • Mungsikdang (ifewb) — a subscription platform for handmade single-meal dog food. Grew out of a neighborhood pet-community plan into a staged execution plan covering screens, data, API and infrastructure, plus API scaffolding.
  • gamebot — a mobile RPG where real-world activity data (steps, exercise, sleep) levels a character that fights deterministic auto-battles. Rule logic and tests written first.
  • lotto — a Lotto 6/45 collection, report and prediction pipeline (v24). Valued for practicing collection, validation and report automation rather than for the predictions themselves.

Repositories

ifewbThree planning documents, API/DB/deployment scaffolding
gamebotGame logic · tests
lottoCollection scripts · prediction engine · web · reports
10

Custom AI songs sung in your own voice

Mermaid's Voice (mzstudio) — media.ifweb.kr

A paid service: up to three participants record four short prompts on their phones and describe the lyrics and mood; AI writes and composes the song and delivers a finished track sung in the participants' own voices by email. Ordering, generation, quality checks, delivery, payment and the sales ledger run without manual steps, and the web, API, recording storage and GPU generation all run on local models on a single Mac mini.

Research question

From about a minute of recordings, can we produce a song that sounds like the participant, stays in tune and has clearly intelligible lyrics — at a quality customers will pay for — without human review?

Approach

Never trust the generator's output as-is. Measure each participant's real range from the recordings, impose it on composition as rules, then transcribe the result to score lyric match and track pitch to catch range overruns, long high notes and sudden jumps; only passing takes go on to voice conversion. Each order runs through a three-stage queue (prep → GPU → post) so that once the single GPU is leased, queued jobs are processed back to back. Failures are classified (lyrics, recordings, system) so the customer can fix them or the worker retries automatically.

Repositories

mzstudio / webNext.js static site (Korean · English). Order form, four recordings with sing-along samples, checkout, progress and ETA, “My music” downloads and revisions, 30-second Shorts controls
mzstudio / apiFastAPI. Upload validation, orders, payments (Toss Payments) and webhooks, download tokens, sales ledger, VPN-only admin console
mzstudio / workerGeneration worker. Lyrics and song design, GPU leasing, composition, separation, checks, voice conversion, section assembly and mastering, score and Shorts rendering, delivery mail, retention cleanup
Shared enginesShares ACE-Step · Seed-VC installs and GPU swapping with Baron (01), with per-user leases so neither unloads the other's job. Orders, customer data and DB are separate

Key features

  • Range from four recordings — read a sentence, hold a comfortable note, sing lightly, and glide like a siren from low to high. Range is measured only from sung prompts, because speech makes the range look lower and narrower and the song shrinks. The measured range (e.g. D3–A4) is shown right after recording; recordings that are too short or unsteady are retaken.
  • One song, several singers — lyric sections are assigned to participants, and each person's converted vocal is joined with short crossfades at section boundaries; sections sung together are layered.
  • Local-LLM lyrics and song design — writes lyrics from title, mood and genre, or polishes the customer's own. A small model (gemma-4) goes first, falling back to 27B. Nine song languages; tempo and length default to “auto” with only a few easy choices. Hip-hop and rap get their own length calculation from syllables per bar.
  • Keeping notes in range — rules such as the participant's range, a one-octave span and no leaps beyond a fifth go to both the music model and the design LLM. The generated vocal's range is measured and shifted by octaves; if it still exceeds the range by more than five semitones, or holds long high notes or jumps 12 semitones, it is regenerated. Jumps are checked again after conversion.
  • Lyric check — each take is transcribed with Whisper and compared with the ordered lyrics against a per-language threshold; spellings that sound alike are treated as equal. Word timings also drive the Shorts captions and the score.
  • Deliverables — full track, instrumental, lyrics, and a lead sheet PDF with lyrics transcribed automatically from the AI guide vocal (LilyPond), via email links and “My music”.
  • 30-second Shorts — picks a highlight by vocal presence and energy and renders a 9:16 video with line-by-line lyrics. Requires consent from every participant at order time and is uploaded to the official channel only after the orderer confirms the song; it can be withdrawn at any time.
  • Revisions and retention — up to three revisions within 14 days of first delivery. Original recordings are stored encrypted and deleted on confirmation, when revisions run out or when the period ends; intermediate files are cleaned right after delivery.
  • Fixable failures — lyric problems let the customer edit (or AI-polish) the lyrics and remake, recording problems allow a retake, and system problems are retried automatically twice after a few minutes.
  • Payments and tax — Toss Payments in KRW and USD (international cards · PayPal). If the approval response is lost, the order stays “confirming” and the worker settles it by querying the provider. Webhook bodies are never trusted — state is re-fetched — with partial/full refunds and a ledger classified as taxable or zero-rated.
  • Secure defaults — CSP and frame blocking, upload magic-byte checks and blocking of disguised playlists, order keys only in headers, admin console returns 404 outside the VPN range. Visitors from abroad land on the English UI.
  • Sharing one GPU — when an order arrives the assistant's 27B is unloaded and the music engine leased; a lease processes all queued jobs, and prep runs at most two jobs ahead. Measured: about 7 minutes for a 64-second song with two singers, lyric match 0.975.
  • Scaling with demand — additional LLM servers are planned as customer order volume grows. Job pickup and payment updates are serialized with database locks, so adding machines never produces the same order twice.

Processing flow · one order

  • Order formlyrics · mood · up to 3 singers
  • Four recordingsrange measurement · upload checks
  • PaymentToss Payments · reconciliation
  • Lyrics · designgemma-4 → 27B · range rules
  • GPU leaseswapped with Baron
  • CompositionACE-Step · vocal separation
  • Singing checkWhisper lyrics · range · jumps
  • Voice conversionSeed-VC · assembly · mastering
  • Deliveryemail · score PDF · 30s Shorts

Code · statisticsLLM judgmentValidation gate

Python · FastAPINext.js static exportMLX local LLM (gemma-4 · 27B)ACE-Step 1.5 · Demucs · Seed-VCWhisper alignment · pyinLilyPond scoresffmpeg · Pillow videoPostgreSQLToss Payments · YouTube API

Need a system like these?

LLM orchestration and agent assistants, security-first web architecture, asynchronous data pipelines, operational safety design — the capability behind this research, applied to your problem.