01 / ProblemWhat needed to change
A static catalog of learning resources could not stay current or provide enough coverage for individualized learning journeys. The product needed an agentic retrieval layer that could extend the catalog in real time without allowing unstructured model output to corrupt user progress or recommendation state.
02 / What I builtThe engineering response
REST APIs and a content ingestion pipeline supporting 1,000+ learning items, explicit progress-state models, JSON Schema-validated recommendation objects, and a LangGraph agent that orchestrated function calls, web scraping, ranking, and external REST APIs. The graph separated retrieval, normalization, scoring, and response construction so live discovery could enrich the product while preserving predictable contracts for the frontend.
03 / ImpactThe signal
Supported 1,000+ learning items while extending recommendations beyond the static catalog, giving the product a path to fresher and more personalized discovery without sacrificing structured progress tracking or stable API behavior.
04 / What I learnedThe durable insight
Structured outputs are the bridge between flexible agent reasoning and reliable product behavior. Agent graphs become maintainable when each node has a narrow responsibility, observable inputs and outputs, and a fallback path when live retrieval is incomplete.