Domain-Specific Agentic AI for Personalized Korean Skincare Recommendations
glowe_/_weaviate · E-commerce · 2025 · source Agentic: yes · promotional bias: high · source-backed · extracted with prompt 0.5.6 (schema v2)
Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.
Problem
Domain: Personalized Korean skincare recommendations
Glowe needed to recommend effective skincare routines from many products and reviews without relying on generic product embeddings or marketing copy that miss ingredient interactions, user skin context, and actual experienced effects.
Constraints:
- Korean skincare routines require understanding product categories, timing, compatibility, ingredients, and user goals.
- Generic product vectors can bury effect-specific signals such as hydration, redness, or acne reduction.
- Recommendations should rely on actual user experiences rather than marketing descriptions.
- Users need conversational follow-up, safe alternatives, and memory of skin type, concerns, and current products.
- The system must combine vector search, domain prompts, and agent/tool orchestration.
Architecture
Glowe uses a skincare domain agent backed by Weaviate Agents and Elysia. The data layer contains 1,440 curated Korean skincare products and 94,500+ reviews. Reviews are processed by Gemma 3 12B to extract positive and negative effects, then products receive dual embeddings: a description vector for general search and a TF-IDF-weighted effect vector for personalized routine matching. Weaviate retrieves category-specific candidates concurrently; Gemini 2.5 Flash assembles routines, and Elysia powers agentic chat with custom tools such as Stack Agent, Product Agent, and Weaviate Query Agent.
Diagram confidence: explicit (topology described by the source).
flowchart LR product-and-review-corpus["Product and review corpus"] --> review-effect-extraction["Review effect extraction"] review-effect-extraction --> dual-embedding-index["Dual embedding index"] dual-embedding-index --> weaviate-retrieval["Weaviate retrieval"] weaviate-retrieval --> gemini-routine-assembler["Gemini routine assembler"] gemini-routine-assembler --> user-skincare-profile["User skincare profile"] user-skincare-profile --> elysia-agentic-chat["Elysia agentic chat"] elysia-agentic-chat --> weaviate-query-agent["Weaviate Query Agent"] weaviate-query-agent --> weaviate-retrieval["Weaviate retrieval"] elysia-agentic-chat --> stack-agent["Stack Agent"] elysia-agentic-chat --> product-agent["Product Agent"]
Components
| Component | Role | Interacts with |
|---|---|---|
Product and review corpus |
Curated Korean skincare products and user reviews. | Review effect extraction |
Review effect extraction |
Gemma 3 12B pipeline extracting positive and negative experienced effects. | Dual embedding index |
Dual embedding index |
Weaviate named vectors for product descriptions and TF-IDF-weighted effects. | Weaviate retrieval |
Weaviate retrieval |
Vector search over product/effect vectors for selected routine categories. | Gemini routine assembler, Weaviate Query Agent |
Gemini routine assembler |
Gemini 2.5 Flash selects compatible products and generates routine metadata. | User skincare profile |
User skincare profile |
Skin type, concerns, goals, sensitivities, current routine, and chat context. | Gemini routine assembler, Elysia agentic chat |
Elysia agentic chat |
Decision-agent platform that routes user chat through custom tools. | Weaviate Query Agent, Stack Agent, Product Agent |
Weaviate Query Agent |
Tool that converts natural-language product queries into Weaviate searches and aggregations. | Weaviate retrieval |
Stack Agent |
Custom tool for skincare stack/routine interactions. | Elysia agentic chat |
Product Agent |
Custom tool for product-specific questions and alternatives. | Elysia agentic chat |
Data flow
Product reviews are passed through an LLM to extract real experienced effects. Those effects become TF-IDF-weighted effect vectors stored in Weaviate alongside description vectors. A user skin profile and routine goal determine product categories, Weaviate retrieves top products per category, Gemini 2.5 Flash selects compatible products and explains the routine, and Elysia routes chat requests to tools such as the Weaviate Query Agent.
Why this architecture
The system separates product descriptions from effect evidence because generic embeddings bury skincare effects. A domain agent and query tools are used because skincare recommendations need profile memory, ingredient compatibility, safe alternatives, and conversational refinement over structured/vector product data.
Models used: Gemma 3 12B · Gemini 2.5 Flash · Weaviate Agents · Elysia · Weaviate Query Agent
Scale
- The product corpus includes around 1,440 curated Korean skincare products and more than 94,500 reviews.“around 1,440 curated Korean skincare products and over 94,500 user reviews.”article, stated
- The industry generates thousands of products with millions of reviews annually.“The skincare industry generates thousands of products with millions of reviews annually”article, stated
- TF-IDF examples include hydration appearing in 600 of 1000 products.“Hydration: Appears in 600 of 1000 products”article, stated
Alternatives considered (roads not taken)
Embed the entire product object as one vector
Rejected because: Generic fields can dominate and hide effect-specific skincare signals.
Use marketing-tailored product descriptions
Rejected because: Glowe wanted effect evidence from actual user reviews.
Return only static routine suggestions
Rejected because: The team wanted a conversational companion that can use tools, remember context, and answer follow-up questions.
Patterns
multi-agent-orchestration (agent)
Elysia coordinates custom tools and specialized agents such as Stack Agent, Product Agent, and Weaviate Query Agent.
rag-retrieval (retrieval)
The Weaviate Query Agent grounds chat/recommendations in stored product and review data.
retrieval-ranking (retrieval)
TF-IDF-weighted effect vectors rank products by the strength of relevant skincare effects.
structured-output-contract (orchestration)
The query agent translates natural language into structured Weaviate searches, filters, or aggregations.
Tradeoffs
Use dual embeddings
Chose Description vector plus TF-IDF-weighted effect vector over Single product-object vector.
Rationale: The split preserves general search while allowing effect strength to drive skincare routine matching.
Use Gemini for final routine assembly
Chose Gemini 2.5 Flash over a simple top-k merge over Returning category top matches directly.
Rationale: The final step must check compatibility, sensitivities, ingredient conflicts, and explanations across a full routine.
Build an agentic chat layer
Chose Elysia with custom tools and Query Agent over Static product recommendation pages only.
Rationale: A conversation interface lets users ask follow-ups, retrieve alternatives, and adapt recommendations to their profile.
Gotchas (what bit them)
Generic product embeddings dilute domain-specific effects.
Root cause: Brand/name/description fields dominate the vector and hide skincare outcomes users care about.
Resolution: Use named vectors and a separate TF-IDF-weighted effect embedding.
Popular products are not enough for routine safety.
Root cause: Routines depend on ingredient interactions, timing, skin goals, and product conflicts.
Resolution: Use a skincare domain agent with rich domain prompts and compatibility checks.
Recommendation chat needs tool recovery and context tracking.
Root cause: Users ask complex multi-stage questions and refine routines over time.
Resolution: Use Elysia decision-tree logic, user management, custom tools, and self-healing/correction loops.
Evaluation
The source describes design rationale and data-driven retrieval but does not report quantitative offline/online evaluation. Evidence of quality is mainly architectural: review-derived effects, TF-IDF weighting, compatibility checks, and grounded query-agent retrieval.
Metrics: Product/review corpus size · Effect frequency and inverse document frequency · Similarity search relevance by skin needs/goals · Ingredient conflict avoidance · User profile/routine compatibility
Outcomes
- Built a domain-specific Korean skincare recommendation application.
- Created review-derived effect embeddings over 1,440 products and 94,500+ reviews.
- Generated personalized morning/evening routines using Weaviate retrieval and Gemini 2.5 Flash.
- Added an agentic chat interface using Elysia and Weaviate Query Agent.
The case is promotional and demo-oriented; concrete scale is the 1,440-product / 94,500-review dataset and the use of Weaviate Cloud/query agents rather than public production traffic metrics.