diff --git a/src/TrueCV.Infrastructure/Services/CompanyVerifierService.cs b/src/TrueCV.Infrastructure/Services/CompanyVerifierService.cs index 2aff125..3edad7e 100644 --- a/src/TrueCV.Infrastructure/Services/CompanyVerifierService.cs +++ b/src/TrueCV.Infrastructure/Services/CompanyVerifierService.cs @@ -843,6 +843,28 @@ public sealed class CompanyVerifierService : ICompanyVerifierService } } + // Step 0c: Try first word as potential parent company (e.g., "UNILEVER BESTFOOD" -> "UNILEVER") + // Many company names are "ParentCompany Division" or "ParentCompany Brand" + var words = normalized.Split(' ', StringSplitOptions.RemoveEmptyEntries); + if (words.Length >= 2) + { + var firstWord = words[0]; + // Only try if first word is substantial (not "The", "A", common prefixes) + var skipWords = new HashSet(StringComparer.OrdinalIgnoreCase) + { "the", "a", "an", "uk", "british", "national", "international", "global", "new" }; + + if (firstWord.Length >= 4 && !skipWords.Contains(firstWord)) + { + foreach (var firstWordQuery in GenerateNameVariations(firstWord)) + { + queries.Add(firstWordQuery); + } + // Also try first word + PLC/Limited for major corporations + queries.Add(firstWord + " PLC"); + queries.Add(firstWord + " Limited"); + } + } + // Also add variations of the full original name foreach (var query in GenerateNameVariations(normalized)) {