tech blog

[Tech Blog] From Dashboard to Platform: Monorepo & The 'Verification' Strategy

Beauty Insight Editor

[Tech Blog] From Dashboard to Platform: Monorepo & The 'Verification' Strategy

Date: 2026-01-07
Author: Yongrak Park (Beauty Insight Lab)

🏗️ Why We Moved to Monorepo?

As Beauty Insight Lab evolves from a simple dashboard into a comprehensive "K-Beauty Export Acceleration Platform", our architecture needed to mature. We managed the frontend and backend in separate silos, but today we unified them into a Monorepo.

The 'Beauty Inside Lab MVP' Architecture

beauty-inside-lab-mvp/
├── frontend/ (Next.js 16 App Router)
│   ├── Dashboard (Data Visualization)
│   └── Localization Tool (Client Interface)
└── backend/ (Python FastAPI)
    └── Translation Agent (LLM Logic)

Benefits:

  1. Atomic Commits: We can change the API contract in the backend and update the frontend type definitions in a single commit.
  2. Unified Context: The "Verification" logic exists in both the UI (Green Signal) and the Agent (Reasoning), making it easier to sync the logic.
  3. Developer Experience: One repository, one efficient workflow.

🧠 The 'Verification' Strategy: Beyond Translation

2026's US skincare market is driven by "Clean Clinical" and "Scientific Proof". Users don't just want English; they want Credibility.

The "Why This Works?" Feature

We implemented a unique feature in our Localization Tool: Strategy Extraction.
When the AI transcreates "순한 앰플" (Mild Ampoule) to "Dermatologist-tested Ampoule", it doesn't just swap words. It provides a structured rationale:

  • "Replaced abstract 'Mild' with verifiable 'Dermatologist-tested' to align with 2026 transparency trends."

Technical Implementation: The Proxy Pattern

To verify this, we connected our Next.js Frontend to the Python Backend using a Proxy Pattern:

  1. Client: Calls /api/localization (Same origin, no CORS issues).
  2. Next.js Proxy: Normalizes data.
    • Challenge: Python sends snake_case ("strategy_points"), Frontend expects camelCase ("strategyPoints").
    • Solution: The Proxy acts as an Adapter, mapping keys on the fly.
  3. Backend: Executes the LLM Chain-of-Thought.
// app/api/localization/route.ts (The Adapter)
const normalizedData = {
    ...data,
    targetText: data.result || data.target_text, // Flexible mapping
    strategyPoints: data.strategy_points || []
};

🚀 What's Next?

We are now preparing to deploy this integrated Monorepo to Vercel (Frontend) and a GPU-enabled cloud (Backend). The "Beauty Insight Lab" is no longer just a tracker; it's becoming an active agent in the export lifecycle.

Beauty Insight Editor

Sharing insights on K-Beauty trends and data-driven export strategies. We help brands expand globally with the power of AI.