Skip to main content
Personalizing product experiences is a way to tailor the user experience to the account owner’s specific needs and preferences. By doing so, the product or service can be made more relevant and useful to the user. This can be achieved by using data and analytics to understand the account’s asset level and creditworthiness, and then using that information to customize the user experience.

Why Personalize?

Relevance

Show users products and features that match their financial profile

Engagement

Increase interaction by surfacing the most appropriate options first

Conversion

Improve conversion rates by presenting suitable products to qualified users

User Experience

Reduce friction by hiding irrelevant or inaccessible options

Aligning with Creditworthiness

One way to personalize product experiences is to align the user experience with a user’s asset level and creditworthiness.

High Creditworthiness Users

If a user has a high asset level and creditworthiness, they may be offered more complex and advanced financial products such as high risk/reward yield strategies:
  • Leveraged yield farming
  • Delta-neutral strategies
  • Under-collateralized lending options
  • Premium liquidity pools
  • Advanced trading features

Lower Creditworthiness Users

If a user has a lower asset level and creditworthiness, they may be offered lower risk financial products:
  • Liquid staking derivatives
  • Stable yield pools
  • Over-collateralized lending
  • Beginner-friendly interfaces
  • Educational content and guides

Implementation Example

async function getPersonalizedDashboard(address) {
  const response = await fetch(
    `https://api.credprotocol.com/api/v2/score/address/${address}?include_factors=true`,
    { headers: { 'Authorization': `Bearer ${API_KEY}` } }
  );

  const { score, range, factors } = await response.json();

  // Determine user tier based on creditworthiness
  const userTier = getUserTier(score);

  // Get personalized product recommendations
  const recommendations = getRecommendations(userTier, factors);

  // Customize UI elements
  const dashboardConfig = {
    tier: userTier,
    featuredProducts: recommendations.featured,
    availableStrategies: recommendations.strategies,
    promotedFeatures: recommendations.features,
    riskLevel: recommendations.maxRisk,
    showAdvancedOptions: score >= 840,
    showLeveragedProducts: score >= 920,
  };

  return dashboardConfig;
}

function getUserTier(score) {
  if (score >= 920) return 'premium';
  if (score >= 840) return 'advanced';
  if (score >= 750) return 'standard';
  if (score >= 640) return 'basic';
  return 'starter';
}

function getRecommendations(tier, factors) {
  const recommendations = {
    premium: {
      featured: ['leveraged-farming', 'delta-neutral', 'undercollateralized-loans'],
      strategies: ['aggressive', 'balanced', 'conservative'],
      features: ['advanced-analytics', 'api-access', 'priority-support'],
      maxRisk: 'high',
    },
    advanced: {
      featured: ['yield-optimizer', 'lending-pools', 'staking'],
      strategies: ['balanced', 'conservative'],
      features: ['portfolio-tracking', 'alerts'],
      maxRisk: 'medium-high',
    },
    standard: {
      featured: ['staking', 'stable-pools', 'lending'],
      strategies: ['balanced', 'conservative'],
      features: ['basic-analytics'],
      maxRisk: 'medium',
    },
    basic: {
      featured: ['liquid-staking', 'stable-yields'],
      strategies: ['conservative'],
      features: ['tutorials', 'guides'],
      maxRisk: 'low',
    },
    starter: {
      featured: ['learn-and-earn', 'stable-savings'],
      strategies: ['conservative'],
      features: ['onboarding', 'education'],
      maxRisk: 'minimal',
    },
  };

  return recommendations[tier];
}

Personalization Patterns

Dynamic Feature Promotion

Promote capabilities that are popular with account owners with similar levels of creditworthiness:
async function getPopularFeatures(userScore) {
  // Define score bands
  const scoreBand = Math.floor(userScore / 100) * 100;

  // Features popular with users in similar score ranges
  const popularByBand = {
    900: ['leveraged-positions', 'cross-chain-strategies', 'governance'],
    800: ['yield-optimization', 'liquidity-provision', 'staking'],
    700: ['lending', 'borrowing', 'stable-yields'],
    600: ['savings', 'staking', 'swaps'],
    default: ['tutorials', 'stable-savings', 'small-swaps'],
  };

  return popularByBand[scoreBand] || popularByBand.default;
}

Adaptive UI Components

Adjust the interface based on user profile:
function renderProductCard(product, userScore) {
  const isAccessible = userScore >= product.minScore;
  const isRecommended = userScore >= product.recommendedScore;

  return {
    ...product,
    // Visual treatment
    highlighted: isRecommended,
    dimmed: !isAccessible,

    // Call-to-action
    ctaText: isAccessible ? 'Get Started' : `Requires ${product.minScore}+ score`,
    ctaEnabled: isAccessible,

    // Additional context
    badge: isRecommended ? 'Recommended for you' : null,
    tooltip: !isAccessible
      ? `Improve your score to ${product.minScore} to unlock this product`
      : null,
  };
}

Personalized Messaging

Tailor communication based on creditworthiness:
function getWelcomeMessage(range) {
  const messages = {
    excellent: {
      headline: 'Welcome back, valued member',
      subtitle: 'Explore our premium strategies designed for experienced DeFi users',
      cta: 'View Premium Options',
    },
    very_good: {
      headline: 'Great to see you',
      subtitle: 'Your strong credit profile unlocks advanced features',
      cta: 'Explore Advanced Features',
    },
    good: {
      headline: 'Welcome',
      subtitle: 'Discover yield opportunities matched to your profile',
      cta: 'Browse Opportunities',
    },
    fair: {
      headline: 'Welcome',
      subtitle: 'Start building your DeFi portfolio with these curated options',
      cta: 'Get Started',
    },
    low: {
      headline: 'Welcome to DeFi',
      subtitle: 'Begin your journey with beginner-friendly products',
      cta: 'Start Learning',
    },
  };

  return messages[range] || messages.low;
}

Using Credit Reports for Deeper Personalization

For more granular personalization, use the full credit report:
async function getDetailedPersonalization(address) {
  const response = await fetch(
    `https://api.credprotocol.com/api/v2/report/address/${address}`,
    { headers: { 'Authorization': `Bearer ${API_KEY}` } }
  );

  const { report } = await response.json();
  const { summary } = report;

  return {
    // Asset-based personalization
    assetTier: getAssetTier(summary.total_asset_usd),

    // Activity-based personalization
    experienceLevel: getExperienceLevel(summary.count_transactions),

    // DeFi experience
    hasLendingHistory: summary.count_active_loans > 0 || summary.count_repayments > 0,
    hasNFTs: summary.count_nfts > 0,

    // Multi-chain activity
    isMultiChain: summary.count_chains_with_activity > 1,

    // Identity verification
    hasVerifiedIdentity: summary.count_identity_attestations > 0,
    attestations: summary.list_identity_attestations,
  };
}

function getAssetTier(totalAssetUsd) {
  if (totalAssetUsd >= 100000) return 'whale';
  if (totalAssetUsd >= 10000) return 'dolphin';
  if (totalAssetUsd >= 1000) return 'fish';
  return 'shrimp';
}

function getExperienceLevel(transactionCount) {
  if (transactionCount >= 1000) return 'veteran';
  if (transactionCount >= 100) return 'experienced';
  if (transactionCount >= 10) return 'intermediate';
  return 'beginner';
}

Best Practices

Rather than hiding products entirely from lower-score users, show them what’s available and what they need to do to qualify. This creates aspiration and engagement.
Let users know their experience is personalized based on their on-chain activity. Transparency builds trust.
Even if you recommend certain products, allow users to browse all options. Some users may have legitimate reasons to choose different products.
Re-fetch credit data periodically to ensure personalization reflects the user’s current status, not stale information.

Benefits

BenefitDescription
Increased EngagementUsers see relevant products, leading to more interaction
Higher ConversionPresenting appropriate products improves conversion rates
Reduced FrictionUsers aren’t overwhelmed with unsuitable options
Better Risk ManagementUsers are guided toward products matching their profile
Customer SatisfactionTailored experiences feel more valuable to users