한국어

PROJECT OVERVIEW

Fruition

An AI workspace that organizes uploaded documents into an LLM-generated Wiki, answers questions using source evidence through RAG, and edits documents in natural language. It is currently deployed on AWS EKS and undergoing QA.

How it started

Started when a teammate raised a pain point with managing documents, which we refined through design thinking. The goal was to fix the frustration of saving many documents but failing to find them when needed.

Team and my role

MY ROLEAI

All AI features: PDF conversion, Wiki generation, RAG retrieval and grounded answers, the document-editing Agent

  • Lead for all AI featuresLed design and evaluation across the AI features: building the PDF conversion pipeline, designing the Wiki structure and implementing its generation and upkeep, and the Agent that answers with evidence and edits documents. Implementation was done with AI coding tools.
  • MSA design contributionMy first draft split services by feature, but that would leave the database load unchanged while adding hops between services, so distribution would gain nothing. I proposed splitting by data ownership instead, then worked with teammates and mentors on service boundaries and communication to finish the structure together.
Backend, 1
The entire Spring-based backend
Frontend & DevOps, 1
The entire frontend and MSA-based deployment on AWS
Design
External designer
Mentors, 3
Gen AI quality and evaluation / backend / milestones, MSA design and documentation
GitHub | AI repository ↗

Features and service screens

Cases

CASE 01 AI Agent, RAG, Jev

RAG evidence coverage: 66.25% → 91.25%, with 87% less time after tuning

Fruition answers from uploaded documents, so I thought wrong evidence would make the whole answer untrustworthy. After seeing Jev improve request routing, I applied it to evidence selection and raised coverage from 66.25% to 91.25%. I cut the added time by tuning candidates and parallelism.

66.25% → 91.25%Evidence coverage (LLM evaluation on golden set)
Median 9.090s → 1.137sJev evidence-selection time
Read the case →

CASE 02 AI Agent, User-defined Skills, HITL, Prompt injection

User-defined Agent Skills: designing controlled execution

I built Agent Skills so users can define and reuse repetitive work such as writing meeting notes. I also thought users must be able to trust every document AI changes, so I designed review, publishing and change approval as one flow and implemented it with AI coding tools.

94 / 114Original Agent
98 / 114Code changes, without evaluator
Read the case →

CASE 03 AI Agent, Compensating recovery, Audit history

Cancelling an AI task and undoing what it already saved

In a service where AI changes documents, I thought users can't hand work to AI unless cancelling is reliable. Stopping execution leaves saved document, folder, Wiki and Skill changes behind, so I built a path that reverses even committed changes in reverse order. To keep contributions other jobs made correctly, I restored pages without only the cancelled contribution.

3Stores covered by recovery
No model callsRecovery execution
Read the case →

CASE 04 PDF conversion, Data pipeline

PDF → Markdown: about 90% restoration rate

To use papers, which mostly arrive as PDFs, as knowledge, table figures and equations had to survive conversion to Markdown first. So I traced where AI repair dropped content and split processing paths by original layout and content type.

45.17%Existing Docling
89.89%Improved pipeline
Read the case →

CASE 05 Kafka asynchronous processing, AI pipeline

Parallel document analysis: 282.11s → 73.89s

Wiki generation ran sequentially, and I was concerned slow processing of large documents would hurt the user experience. I measured the effect and resource cost of more Workers and set separate scaling rules for analysis and embedding.

282.11s1 worker
73.89s4 workers
Read the case →

CASE 06 Coding agent operations, MSA migration

Coding agent loop: 16 MSA migration PRs merged in 5 days

The MSA migration had to finish within a week to deploy and get feedback on schedule. I judged there wasn't enough time to do it by hand, so I gave the porting to coding agents while I set the work plan and review criteria and decided on merges. I set up the loop so a coordinating agent managed order and priorities.

16PRs merged
13Required fixes before merge
Read the case →