> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topsort.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Auction Logic

export const LastUpdated = ({date, lang = "en"}) => {
  const translations = {
    en: "Last updated:",
    es: "Última actualización:",
    pt: "Última atualização:",
    fr: "Dernière mise à jour:",
    de: "Zuletzt aktualisiert:"
  };
  const label = translations[lang] || translations.en;
  return <>
<style>{`
.last-updated-component {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 10px 16px;
border-radius: 8px;
margin-top: 12px;
margin-bottom: 16px;
font-size: 14px;
background-color: rgba(0, 0, 0, 0.05);
border: 1px solid rgba(0, 0, 0, 0.12);
color: rgba(0, 0, 0, 0.75);
line-height: 1;
}

        .last-updated-component svg {
          flex-shrink: 0;
          vertical-align: middle;
        }

        .last-updated-component span {
          display: inline-flex !important;
          align-items: center !important;
          line-height: 1 !important;
        }

        [data-theme="dark"] .last-updated-component {
          background-color: #3a3a3a;
          border: 2px solid #888888;
          color: #ffffff;
        }

        [data-theme="dark"] .last-updated-component svg {
          stroke: #ffffff;
        }
      `}</style>
      <div className="last-updated-component">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <circle cx="12" cy="12" r="10" />
          <polyline points="12 6 12 12 16 14" />
        </svg>
        <span>
          <strong style={{
    fontWeight: 600
  }}>{label}</strong> 
          <time dateTime={date}>{date}</time>
        </span>
      </div>
    </>;
};

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  Topsort supports first-price and second-price auctions. Both consider the bid
  amount and the quality score for ranking items. A quality score is a relevance
  metric. It includes factors like estimated click likelihood.
</div>

## First-Price Auction

* Winning bidder pays their exact bid.
* Recommended for Auto-bidding.
* Algorithms optimize bids in real-time.
* Achieves efficient budget use through automated adjustments and quality score.

## Second-Price Auction

* Highest bidder pays the second-highest bid plus a small increment.
* Recommended for Manual bidding.
* Encourages competitive bidding without overpaying.
* Benefits high-quality items with better placement due to quality score and bid.

## Campaign Deduplication

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  When multiple campaigns bid on the same product, Topsort automatically
  deduplicates auction results by entity (product or deeplink). Only one winner
  per unique product will be returned in the auction response, regardless of how
  many campaigns are targeting it.
</div>

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  The deduplication process works as follows:
</div>

* Campaigns are ranked by their combined bid amount and quality score.
* The highest-ranking campaign for each product wins the auction slot.
* If the same product appears in multiple campaigns, only the top-ranked instance is included in results.
* Subsequent auction positions are filled by the next highest-ranking unique products.

<div style={{ textAlign: "justify", marginBottom: "1.5rem" }}>
  This ensures a better user experience by preventing duplicate products from
  appearing in the same auction results, while still allowing the most
  competitive bid for each product to win.
</div>

***

<LastUpdated date="2025-02-09" />
