@@ -112,6 +112,7 @@ export interface CatalogModel {
112112 capabilities : ModelCapabilities
113113 capabilityTags : string [ ]
114114 summary : string
115+ bestFor ?: string
115116 searchText : string
116117}
117118
@@ -368,6 +369,36 @@ function buildCapabilityTags(capabilities: ModelCapabilities): string[] {
368369 return tags
369370}
370371
372+ function buildBestForLine ( model : {
373+ pricing : PricingInfo
374+ capabilities : ModelCapabilities
375+ contextWindow : number | null
376+ } ) : string | null {
377+ const { pricing, capabilities, contextWindow } = model
378+
379+ if ( capabilities . deepResearch ) {
380+ return 'Best for multi-step research workflows and agent-led web investigation.'
381+ }
382+
383+ if ( capabilities . reasoningEffort || capabilities . thinking ) {
384+ return 'Best for reasoning-heavy tasks that need more deliberate model control.'
385+ }
386+
387+ if ( contextWindow && contextWindow >= 1000000 ) {
388+ return 'Best for long-context retrieval, large documents, and high-memory workflows.'
389+ }
390+
391+ if ( capabilities . nativeStructuredOutputs ) {
392+ return 'Best for production workflows that need reliable typed outputs.'
393+ }
394+
395+ if ( pricing . input <= 0.2 && pricing . output <= 1.25 ) {
396+ return 'Best for cost-sensitive automations, background tasks, and high-volume workloads.'
397+ }
398+
399+ return null
400+ }
401+
371402function buildModelSummary (
372403 providerName : string ,
373404 displayName : string ,
@@ -414,6 +445,11 @@ const rawProviders = Object.values(PROVIDER_DEFINITIONS).map((provider) => {
414445 const shortId = stripProviderPrefix ( provider . id , model . id )
415446 const mergedCapabilities = { ...provider . capabilities , ...model . capabilities }
416447 const capabilityTags = buildCapabilityTags ( mergedCapabilities )
448+ const bestFor = buildBestForLine ( {
449+ pricing : model . pricing ,
450+ capabilities : mergedCapabilities ,
451+ contextWindow : model . contextWindow ?? null ,
452+ } )
417453 const displayName = formatModelDisplayName ( provider . id , model . id )
418454 const modelSlug = slugify ( shortId )
419455 const href = `/models/${ providerSlug } /${ modelSlug } `
@@ -438,6 +474,7 @@ const rawProviders = Object.values(PROVIDER_DEFINITIONS).map((provider) => {
438474 model . contextWindow ?? null ,
439475 capabilityTags
440476 ) ,
477+ ...( bestFor ? { bestFor } : { } ) ,
441478 searchText : [
442479 provider . name ,
443480 providerDisplayName ,
0 commit comments