Mixpeek Logo
    Intermediate
    E-commerce
    10 min read

    Visual Similarity Product Recommendations

    For e-commerce sites with 50K+ products. Recommend visually similar products. 35% increase in AOV, 25% improvement in conversion.

    Who It's For

    E-commerce retailers, fashion brands, and marketplaces who want to improve product discovery through visual similarity recommendations

    Problem Solved

    Traditional recommendation engines rely on purchase history and categories, missing visual preferences. Shoppers who like a product's look cannot find similar items easily

    Why Mixpeek

    35% increase in average order value, 25% improvement in conversion rate, and visual recommendations that capture style preferences text cannot express

    Overview

    Visual similarity drives purchase decisions, especially in fashion and home goods. This use case shows how Mixpeek powers "shop the look" and similar-item recommendations.

    Challenges This Solves

    Category Silos

    Recommendations limited to same category

    Impact: Miss cross-sell opportunities, lower AOV

    Attribute Gaps

    Not all visual attributes are in product data

    Impact: Cannot recommend by style, pattern, aesthetic

    New Products

    No purchase history for new items

    Impact: Cold start problem, new products under-recommended

    Subjective Style

    Style preferences hard to express in search

    Impact: Shoppers cannot find items matching their taste

    Implementation Steps

    Mixpeek analyzes product images to understand visual attributes (style, color, pattern, shape) and recommends products with similar aesthetics regardless of category

    1

    Index Product Catalog

    Analyze all product images for visual attributes

    import { Mixpeek } from 'mixpeek';
    const client = new Mixpeek({ apiKey: process.env.MIXPEEK_API_KEY });
    // Index product catalog with visual analysis
    await client.buckets.connect({
    collection_id: 'product-catalog',
    bucket_uri: 's3://catalog/images/',
    extractors: [
    'image-embedding', // Visual similarity
    'color-extraction', // Dominant colors, palette
    'pattern-detection', // Stripes, florals, solids
    'style-classification', // Modern, vintage, casual, formal
    'object-detection' // Product type, components
    ],
    settings: {
    product_id_field: 'sku',
    multiple_images_per_product: true,
    extract_attributes: [
    'color_family', 'pattern', 'style', 'material_appearance',
    'shape', 'complexity', 'aesthetic'
    ]
    }
    });
    2

    Get Visual Recommendations

    Find visually similar products

    // Get visually similar product recommendations
    async function getVisualRecommendations(productId: string, options?: {
    limit?: number;
    same_category?: boolean;
    price_range?: { min: number; max: number };
    exclude_owned?: string[];
    }) {
    const product = await client.collections.get(productId);
    const similar = await client.retrieve({
    collection_id: 'product-catalog',
    query: {
    type: 'image',
    embedding: product.image_embedding
    },
    filters: {
    sku: { $ne: productId },
    in_stock: true,
    category: options?.same_category ? product.category : undefined,
    price: options?.price_range ? {
    $gte: options.price_range.min,
    $lte: options.price_range.max
    } : undefined
    },
    return_fields: [
    'sku', 'name', 'price', 'image_url',
    'category', 'similarity_score', 'visual_attributes'
    ],
    limit: options?.limit ?? 12
    });
    return similar.map(p => ({
    ...p,
    similarity_reason: explainSimilarity(product, p)
    }));
    }
    3

    Power Shop-the-Look

    Find complementary products for complete looks

    // Get complementary products for "shop the look"
    async function getComplementaryProducts(productId: string, lookType: string) {
    const product = await client.collections.get(productId);
    // Find products that complement visually (same style, coordinating colors)
    const complementary = await client.recommendations.getComplementary({
    product_id: productId,
    product_embedding: product.image_embedding,
    product_attributes: product.visual_attributes,
    look_type: lookType, // 'outfit', 'room', 'collection'
    rules: [
    { attribute: 'style', match: 'same' },
    { attribute: 'color_family', match: 'complementary' },
    { attribute: 'category', match: 'different' } // Cross-category
    ],
    limit: 6
    });
    return {
    anchor_product: product,
    complementary_items: complementary,
    look_total: product.price + complementary.reduce((sum, p) => sum + p.price, 0)
    };
    }
    4

    Personalize by Visual Preference

    Learn shopper visual preferences

    // Build visual preference profile from behavior
    async function updateVisualPreferences(userId: string, interaction: {
    product_id: string;
    action: 'view' | 'save' | 'cart' | 'purchase';
    }) {
    const product = await client.collections.get(interaction.product_id);
    // Weight by action strength
    const weight = {
    view: 0.1,
    save: 0.5,
    cart: 0.7,
    purchase: 1.0
    }[interaction.action];
    await client.users.updatePreferences({
    user_id: userId,
    visual_signals: {
    embedding: product.image_embedding,
    attributes: product.visual_attributes,
    weight: weight
    }
    });
    }
    // Get personalized visual recommendations
    async function getPersonalizedRecommendations(userId: string) {
    return client.retrieve({
    collection_id: 'product-catalog',
    query: {
    type: 'user_preferences',
    user_id: userId
    },
    filters: { in_stock: true },
    limit: 20
    });
    }

    Expected Outcomes

    35% increase from visual cross-sell

    Average Order Value

    25% improvement on recommendation clicks

    Conversion Rate

    50% more catalog explored per session

    Product Discovery

    3x faster sales ramp for new products

    New Product Performance

    15% reduction (better style matching)

    Return Rate

    Frequently Asked Questions

    Ready to Implement This Use Case?

    Our team can help you get started with Visual Similarity Product Recommendations in your organization.