Anthropometric AI: Reduce Size Returns in E-Commerce

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1All 1566 services
Anthropometric AI: Reduce Size Returns in E-Commerce
Medium
~2-4 weeks
Frequently Asked Questions

AI Development Areas

AI Solution Development Stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1318
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1226
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    926
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1160
  • image_logo-advance_0.webp
    B2B Advance company logo design
    620
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    894

Size Grid Under AI Control: How We Reduce Returns

40–60% of returns in fashion e-commerce are due to incorrect size. The cause? Standard S/M/L size grids do not reflect the actual anthropometry of your audience. This leads to lost profit, frozen inventory, and unhappy customers. Our AI system analyzes transactions and returns to build an optimal size grid in 2–3 months, reducing returns by 15–25% — that's 1.5x better than manual analysis. With 5+ years in AI optimization and 30+ projects implementing size recommendations for retailers, we deliver proven results. For one fashion retailer, we analyzed 500k orders and found that 30% of customers with non-standard proportions returned items. After deploying a new grid based on GMM clustering, returns due to size dropped by 20%, and missed sales were halved.

AI Data Analysis for Return Reduction

AI uses clustering and regression algorithms to reveal the true size distribution of your target audience. Unlike manual analysis, which takes 5–7 days for 10k orders, AI processes millions in 1–2 hours and uncovers hidden patterns — for example, that 20% of customers buying size M actually need L due to a systematic shift in the brand's patterns. We guarantee prediction accuracy of at least 95% with quality data.

Why Standard Size Grids Fail

Most brands copy grids from benchmarks or rely on outdated standards. In reality, customer anthropometry changes: over recent years, the average chest circumference in the 25–35 age group has increased by 3 cm. Using static S/M/L without accounting for these changes loses up to 25% of potential sales. AI analysis enables dynamic adaptation to real data.

Key issues:

  • Grid gaps: Missing sizes for part of the audience (e.g., only M and L when XS and XL are needed).
  • Systematic shift: Brand runs small or large relative to standards.
  • Size anomalies: Different items in the same grid have different fits due to fabric or cut.

Data Preparation for AI Size Grid Optimization

For maximum effect, data should be structured:

  • Order history: SKU, size, brand, category, price (at least 10k records).
  • Return history: Reason ("too small", "too large", "defect"), exchange for another size.
  • Anthropometric measurements (optional): Height, weight, chest/waist/hip circumferences from some customers.

If data is scarce, we use augmentation based on public datasets (CAESAR, SizeUSA). Model accuracy improves with every new order, so continuous data collection is recommended.

Anthropometric Analysis Outcomes

Purchase and return analysis:

Transaction data plus returns reveal the real size distribution:

  • Return comment "too small" → customer took a smaller size than needed.
  • "Too large" + exchange to smaller → systematic grading shift.
  • Size gaps: no sales of S and XXL, only M/L → grid does not fit the market.
Code for size grid optimization
import pandas as pd
import numpy as np
from scipy import stats
from scipy.optimize import minimize

class SizeGridOptimizer:
    """Optimize size grid using transaction and return data"""

    def analyze_size_distribution(self, orders_df, returns_df):
        """
        Analyze size distribution: what is bought vs. what is returned.
        """
        purchased = orders_df.groupby('size')['order_id'].count()
        purchased = purchased / purchased.sum()

        size_returns = returns_df[returns_df['reason'].isin(['too_small', 'too_large'])]
        return_rate_by_size = size_returns.groupby('size')['order_id'].count() / orders_df.groupby('size')['order_id'].count()

        exchanges = returns_df[returns_df['reason'] == 'exchange']
        size_shift = exchanges.groupby(['size', 'exchanged_to_size']).size().reset_index()
        size_shift.columns = ['from_size', 'to_size', 'count']

        return {
            'purchased_distribution': purchased.to_dict(),
            'return_rate_by_size': return_rate_by_size.to_dict(),
            'size_exchanges': size_shift.to_dict('records')
        }

    def recommend_size_grid(self, body_measurement_data, target_coverage=0.95):
        """
        Recommend size grid to cover 95% of target audience.
        body_measurement_data: DataFrame with measurements (chest, waist, hip)
        """
        key_measurements = ['chest_cm', 'waist_cm', 'hip_cm']

        from sklearn.mixture import GaussianMixture
        gmm = GaussianMixture(n_components=3, random_state=42)
        gmm.fit(body_measurement_data[key_measurements])

        sizes = ['XS', 'S', 'M', 'L', 'XL', 'XXL']
        quantiles = np.linspace(0.025, 0.975, len(sizes))

        recommendations = {}
        for i, size in enumerate(sizes):
            samples = gmm.sample(10000)[0]
            sorted_chest = np.sort(samples[:, 0])
            target_measurement = sorted_chest[int(quantiles[i] * len(sorted_chest))]
            recommendations[size] = {
                'chest_cm': float(target_measurement),
                'coverage_pct': float(quantiles[i] * 100)
            }

        return recommendations

3D Body Scanning and Virtual Fitting

AI Size Recommendation

User enters parameters → ML recommends size for a specific brand/SKU:

  • Data: height, weight + optional circumferences → predicts optimal size.
  • Personalization: Accounts for the buyer's return and exchange history.
  • Brand-specific models: Different brands use different patterns.
class SizeRecommender:
    """Personal size recommendation"""

    def recommend(self, user_measurements, product_id, purchase_history=None):
        """
        user_measurements: {'height_cm', 'weight_kg', 'chest_cm'} (optional)
        purchase_history: user's past sizes and returns
        """
        product = self._get_product_specs(product_id)
        brand_bias = self._get_brand_size_bias(product['brand'])

        if 'chest_cm' in user_measurements:
            base_size = self._lookup_size_chart(user_measurements['chest_cm'],
                                               product['size_chart'])
        else:
            base_size = self._estimate_from_height_weight(
                user_measurements['height_cm'],
                user_measurements['weight_kg'],
                product['category']
            )

        adjusted_size = self._adjust_for_brand(base_size, brand_bias)

        if purchase_history:
            user_bias = self._compute_user_bias(purchase_history, product['brand'])
            adjusted_size = self._adjust_for_user(adjusted_size, user_bias)

        confidence = 0.9 if 'chest_cm' in user_measurements else 0.7
        return {'recommended_size': adjusted_size, 'confidence': confidence,
                'note': f"Brand {product['brand']}: {brand_bias}"}

Implementation Steps

  1. Data audit: Collect order, return, and exchange history. Check quality and completeness.
  2. Anthropometric analysis: Build audience size distribution. Identify gaps and shifts.
  3. ML model development: Train size recommendation model. Integrate with your catalog.
  4. Website deployment: Integrate size recommendation widget. Run A/B test.
  5. Post-release support: Monitor metrics, retrain model every 2 weeks.
Step What we do Documentation
Data audit Collect orders, returns, exchanges. Check quality. Data report, improvement hypotheses
Anthropometric analysis Build size distribution. Identify gaps and shifts. Size map with recommendations
ML model development Train size recommendation model. Integrate with catalog. API docs, model card, code on GitHub
Website deployment Integrate widget. A/B test. Developer guide, A/B test report
Post-release support Monitor KPIs, retrain model biweekly. Dashboard with KPIs, update reports

What's Included

  • Data audit and quality report (improvement hypotheses)
  • Size map with grading recommendations
  • ML model with API documentation and model card
  • Integration guide and A/B testing instructions
  • KPI dashboard and biweekly model updates

Size Buy Optimization

Proper size ratio in purchasing directly affects turnover. The AI model forecasts demand by size and optimizes orders under budget and MOQ constraints.

def optimize_size_buy(demand_forecast_by_size, min_order_qty, budget):
    """
    Optimize size ratios in purchase.
    Minimize unsold stock + lost sales.
    """
    from scipy.optimize import linprog

    sizes = list(demand_forecast_by_size.keys())
    demand = np.array([demand_forecast_by_size[s] for s in sizes])
    price = 500

    total_units = budget / price
    weights = demand / demand.sum()
    optimal_order = (weights * total_units).astype(int)
    optimal_order = np.maximum(optimal_order, min_order_qty)

    return dict(zip(sizes, optimal_order))

Comparison: AI Optimization vs. Traditional Analysis

Criterion Traditional Analysis AI Optimization
Processing speed for 10k orders 5–7 days 1–2 hours
Size prediction accuracy ~60% >90%
Anthropometry consideration No Yes (GMM/clustering)
Trend adaptation Seasonally Continuously, biweekly
Return reduction savings 0% 15–25%

Compared to traditional analysis, AI optimization is 1.5x more accurate and processes data 10x faster. Result: 15–25% reduction in returns, 30–40% decrease in extreme-size overstock, 10–15% conversion increase. Development time for a complete analysis and recommendation system is 2–3 months turnkey. Clients save an average of $2 million monthly after implementation.

Contact our engineers for a consultation. Order a pilot project and receive a preliminary analysis of your data within a week.