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
Screens and architecture from team presentations. Captions identify my contributions. Select an image to view the original; original presentation images are in Korean.
View original size ↗Document editing and AI assistant — I led the AI features that interpret requests and generate and validate edits. Teammates implemented the editor and assistant UI.View original size ↗Wiki generation and queries — documents are organized into the structure I designed, with concepts linked. I built evidence lookup for questions over the resulting Wiki. Teammates implemented the graph and search UI.View original size ↗Service responsibilities — I led all AI features; teammates owned frontend and backend. We finalized MSA with mentors based on my initial design.View original size ↗System architecture — the overall system (top) and Fruition’s internal components (bottom). I owned the AI features centred on llmPipeline (FastAPI, Python, LangGraph); teammates owned the frontend, backend and AWS deployment.
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)
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.
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.
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.
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.
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.