An executor,not a bystander.

Instead of watching trends, I learn by building real services.

Scroll to explore
About Me
Semin Kim profile

Semin Kim

Agentic AI Engineer / Builder

Role

Agentic AI Engineer &
Builder

I design and orchestrate agents to build E2E, A2A production systems.

Backend
FastAPINestJSSaga PatternCircuit BreakerMSA
AI & LLM
AI AgentAI OrchestrationPrompt EngineeringLoRALLM Evaluation
Infra & DevOps
DockerArgoCDGitHub Actionsn8nk3sPrometheusGrafanaLoki
Data
PostgreSQLRedisRabbitMQ
Frontend
Next.jsReactTailwind CSS
Project

AlgoSu · Algorithm study platform

0
Developer
Full-stack: design, dev, deploy, ops
0
Microservices
NestJS 4 + FastAPI 1 + Node.js 1
0
AI Agents
Custom-built orchestration
0 stages
CI/CD Pipeline
15 jobs, includes security scanning

Why not automate this repetitive work?

While running an algorithm study group, I experienced inefficiencies in code review — weekly manual reviews, inconsistent feedback, and difficulty tracking learning progress.

I decided to solve this with AI. Beyond simple code analysis, I built an intelligent platform that understands learning patterns and provides personalized feedback.

UX

How the User Experience Changed

Before AlgoSu, the study lead handled every step by hand. Now it takes a few clicks after login.

Before — Manual Study Ops

Study NoticeManually post weekly problems & deadlinesManual SubmitScattered across Slack, chat, GitHub PRsManual Review by LeadLead reads & grades each submissionWrite Individual FeedbackRepetitive, inconsistent feedbackMissed / DelayedReviews get missed or delayedLearning GapDrop-off and broken learning loop

After — AlgoSu Automation

LoginOAuth one-click sign inSelect ProblemWeekly auto-curated problemsSubmit CodeSubmit straight from editorAI Auto AnalysisClaude-based review · SSE streamingStudy Code ReviewPeer code review within the studyUnified FeedbackAI + peer reviews unified in one view
System Design

CI/CD

7-stage 15 jobs — path filter, ARM64 cross-compile, Trivy security scan, GitOps auto deploy

scroll
Secret Scangitleaks — secret leak detectionPath Filterdorny/paths-filter — monorepo change detectionCommit LintConventional Commits rule validationESLint+TS (×5)NestJS 5 services lint + type checkruff (AI)FastAPI AI service Python lintnext lint+TSNext.js frontend lint + type checkJest (×5)NestJS per-service unit/integration testspytestAI analysis pipeline testsJest (FE)React component testsDocker ARM64 (×6)QEMU cross-compile + GHA cacheNext.js ARM64Frontend ARM64 image buildTrivy Scan (×7)CRITICAL/HIGH vuln scan + SARIF uploadArgoCD DeployGitOps auto deploy — image tag update
Tech Decisions & Troubleshooting

Tech Decisions

k3s vs EKS/GKE

Needed production-grade Kubernetes on OCI ARM free tier (4 OCPU, 24GB). k3s is a 50MB binary using 512MB memory with full HPA, PDB, NetworkPolicy support — 100% cost reduction vs EKS/GKE.

FastAPI + NestJS

Claude SDK Python-first support + pydantic response parsing optimal for AI service. AI Analysis isolated in FastAPI, remaining 4 services unified in NestJS 10 for DI/TypeORM consistency.

RabbitMQ vs Kafka

1:1 Task Queue pattern fits small-scale study traffic. Runs on ARM free tier with 128Mi–512Mi memory. Built-in DLX→DLQ auto-isolation eliminates custom failure handling.

Agent Orchestration

12 AI Agent personas implemented directly via Claude Code slash commands. Role separation through prompt engineering alone — zero external dependencies like n8n or LangChain.

Saga Pattern

Needed atomicity for 3-step distributed transaction: submit→GitHub Push→AI analysis. Optimistic lock (WHERE sagaStep=EXPECTED) + step timeouts (5/15/30min) ensure idempotency. Sufficient reliability within ARM resource constraints vs Outbox pattern (Debezium CDC).

Scroll for more
100%
Troubleshooting
Lessons Learned

Troubleshooting

Architecture

Data ownership must be settled in the first design

Gateway started with direct Identity DB access. Separation required 34 new APIs, 19 file refactors, 597 test modifications.

597 test modifications

Trade-off

Real-world constraints over textbook solutions

Outbox pattern (Debezium CDC) exceeded ARM free tier resources. Optimistic lock + timeout resume combo provided sufficient reliability for current traffic scale.

Operations

Prevent human error through CI automation

Amend commits bypassed paths-filter, causing missed service builds. Established force-push ban policy + enforced CI stage blocking.

Performance

Resource constraints are opportunities to eliminate overengineering

ARM free tier constraints drove DB connection pool 40→20, CI jobs 24→15 optimization, HPA auto-scaling adoption.

CI jobs -37.5%

Testing

Failures without logs are the most expensive tech debt

Intermittent Guard 403s with no logs made root cause untraceable. Caused by missing role validation on cache hits. Tests reinforced in Sprint 40.

Code
Implementation

CI/CD Pipeline

.github/workflows/ci.yml

7-stage 15 jobs — monorepo path filter + ARM64 cross-compile + Trivy security scan + GitOps deploy

scroll
# 1) 모노레포 변경 감지
detect-changes:
  steps:
    - uses: dorny/paths-filter@v3
      with:
        filters: |
          gateway: ['services/gateway/**']
          submission: ['services/submission/**']

# 2) ARM64 크로스컴파일 + Immutable 태그
build-services:
  steps:
    - uses: docker/setup-qemu-action@v3
      with: { platforms: linux/arm64 }
    - uses: docker/build-push-action@v5
      with:
        platforms: linux/arm64
        tags: ghcr.io/tpals0409/algosu-${{ matrix.service }}:main-${{ github.sha }}
        cache-from: type=gha,scope=${{ matrix.service }}

# 3) Trivy 보안 스캔
trivy-scan:
  steps:
    - run: trivy image --severity CRITICAL,HIGH --exit-code 1
    - uses: github/codeql-action/upload-sarif@v3

# 4) GitOps 배포 (ArgoCD auto-sync)
deploy:
  if: needs.trivy-scan.result != 'failure'
  steps:
    - run: git commit -m "deploy(algosu): update image tags" && git push
Blog
Contact

Learn. Build. Grow.

Open to hiring inquiries, tech discussions, and collaboration.