diff --git a/deploy/server.js b/deploy/server.js index dc9fb18..76cf005 100644 --- a/deploy/server.js +++ b/deploy/server.js @@ -3480,15 +3480,20 @@ const server = http.createServer(async (req, res) => { return titleMatch && (hasNetContext || titleMatch); }; - // Direct title lookup - const wikiDirect = await fetchJSON( - "https://en.wikipedia.org/api/rest_v1/page/summary/" + encodeURIComponent(companyName.replace(/\s+(GmbH|AG|Ltd|Inc|LLC|BV|SA|SAS|Oy|AB)$/i, "").trim()), - { timeout: 5000 } - ); - if (wikiDirect && wikiDirect.extract && wikiDirect.extract.length > 30) { - if (isRelevant(wikiDirect.title, wikiDirect.extract)) { + // Direct title lookup — try full name first, then first word as fallback + const cleanName = companyName.replace(/\s+(GmbH|AG|Ltd|Inc|LLC|BV|SA|SAS|Oy|AB)$/i, "").trim(); + const firstName = cleanName.split(/\s+/)[0]; + const namesToTry = cleanName === firstName ? [cleanName] : [cleanName, firstName]; + for (const tryName of namesToTry) { + const wikiDirect = await fetchJSON( + "https://en.wikipedia.org/api/rest_v1/page/summary/" + encodeURIComponent(tryName), + { timeout: 5000 } + ); + if (wikiDirect && wikiDirect.type === "disambiguation") continue; // skip disambiguation pages + if (wikiDirect && wikiDirect.extract && wikiDirect.extract.length > 30 && isRelevant(wikiDirect.title, wikiDirect.extract)) { description = wikiDirect.extract.replace(/\s+/g, " ").trim().slice(0, 300); wikiUrl = wikiDirect.content_urls && wikiDirect.content_urls.desktop && wikiDirect.content_urls.desktop.page; + break; } }