open-local-audit 0.68.0 → 0.70.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +4 -1
  3. package/dist/audit-selection.d.ts +15 -0
  4. package/dist/audit-selection.js +86 -0
  5. package/dist/audit-selection.js.map +1 -0
  6. package/dist/batch.d.ts +2 -0
  7. package/dist/batch.js +2 -1
  8. package/dist/batch.js.map +1 -1
  9. package/dist/business-identity.d.ts +29 -0
  10. package/dist/business-identity.js +270 -0
  11. package/dist/business-identity.js.map +1 -0
  12. package/dist/cli.js +76 -3
  13. package/dist/cli.js.map +1 -1
  14. package/dist/discovery-cache.d.ts +24 -0
  15. package/dist/discovery-cache.js +312 -0
  16. package/dist/discovery-cache.js.map +1 -0
  17. package/dist/discovery-runner.d.ts +20 -0
  18. package/dist/discovery-runner.js +53 -13
  19. package/dist/discovery-runner.js.map +1 -1
  20. package/dist/discovery.d.ts +10 -0
  21. package/dist/discovery.js +35 -5
  22. package/dist/discovery.js.map +1 -1
  23. package/dist/index.d.ts +6 -0
  24. package/dist/index.js +3 -0
  25. package/dist/index.js.map +1 -1
  26. package/dist/overture.d.ts +4 -0
  27. package/dist/overture.js +23 -2
  28. package/dist/overture.js.map +1 -1
  29. package/dist/pdf.js +18 -0
  30. package/dist/pdf.js.map +1 -1
  31. package/dist/reporters.js +59 -1
  32. package/dist/reporters.js.map +1 -1
  33. package/dist/schema.d.ts +33 -20
  34. package/dist/schema.js +5 -0
  35. package/dist/schema.js.map +1 -1
  36. package/dist/start.d.ts +11 -0
  37. package/dist/start.js +253 -0
  38. package/dist/start.js.map +1 -0
  39. package/dist/types.d.ts +2 -0
  40. package/dist/website-enrichment.d.ts +2 -0
  41. package/dist/website-enrichment.js +4 -1
  42. package/dist/website-enrichment.js.map +1 -1
  43. package/dist/workflow-config.d.ts +31 -26
  44. package/dist/workflow-config.js +2 -1
  45. package/dist/workflow-config.js.map +1 -1
  46. package/dist/workflow-plan.d.ts +2 -0
  47. package/dist/workflow-plan.js +3 -1
  48. package/dist/workflow-plan.js.map +1 -1
  49. package/dist/workflow.js +1 -0
  50. package/dist/workflow.js.map +1 -1
  51. package/docs/guides/free-discovery.md +63 -1
  52. package/package.json +2 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,22 @@
2
2
 
3
3
  All notable changes to Open Local Audit will be documented here.
4
4
 
5
+ ## v0.70.0 - 2026-10-03
6
+
7
+ - Added evidence-based Overture business-to-website identity checks using structured names, valid phone numbers, and addresses. Missing or mixed evidence remains uncertain; conflicting sites cannot supply business contacts or audit scores.
8
+ - Added identity status, reasons, and field evidence to standard CSV and JSON/Markdown/HTML/PDF reports. Uncertain identity requires manual review and caps contact confidence at Low.
9
+ - Added `--audit-priority missing-contact`, guided priority selection in `start`, and optional workflow `auditPriority`. Source order remains the default; selected candidates fill missing source email first, then phone, while exports retain their original order.
10
+ - Preserved candidate identity when businesses share a website and added regression coverage for branch differences and conflicting identities across fetched pages.
11
+ - Added a bounded comparison script using frozen candidate pools and shared website observations. Small live samples do not establish a contact-yield or identity-accuracy improvement.
12
+
13
+ ## v0.69.0 - 2026-10-02
14
+
15
+ - Added a seven-day local cache for repeated Overture searches in `discover` and `start`, keyed by source release, category, bounds, and result limit while preserving the original retrieval time.
16
+ - Added `--cache-dir`, `--refresh-cache`, and `--no-cache`; cache failures fall back to fresh discovery and website audits are always rerun.
17
+ - Added interactive `start` prompts with input validation, a confirmation summary, cancellation, and protection against overwriting existing output directories.
18
+ - Added explicit cache controls and cache-state reporting to the benchmark, including discovery-only measurements with `--max-audits 0`.
19
+ - Added cache integrity, filesystem safety, guided-input, and packaged CLI coverage. Existing programmatic discovery remains uncached unless a cache directory is provided.
20
+
5
21
  ## v0.68.0 - 2026-09-29
6
22
 
7
23
  - Added keyless worldwide business discovery using Overture Places, with GeoNames city/country lookup and bounded geographic queries.
package/README.md CHANGED
@@ -9,11 +9,13 @@ Requires Node.js 22.19 or newer.
9
9
  ```bash
10
10
  npm install
11
11
  npm run build
12
- node dist/cli.js discover dental --city Istanbul --country TR --profile dental --limit 10 --max-audits 3 --out-dir reports/istanbul --export-csv reports/istanbul/leads.csv
12
+ node dist/cli.js start
13
13
  ```
14
14
 
15
15
  Keyless discovery uses Overture Places open data and GeoNames city lookup, then reads public business websites for contact details and audit reports. Coverage varies by location; missing website data means **unknown**, not proof that a business has no website. See the [free discovery guide](./docs/guides/free-discovery.md) for source attribution, limits, and the four-country benchmark.
16
16
 
17
+ `start` asks for a country, city, category, candidate count, website-audit cap, and a new output directory before running. Repeated `discover` and `start` searches can reuse a local business-result cache; the CLI shows its state, source release, and original retrieval time. Use `--refresh-cache` for a fresh lookup or `--no-cache` to bypass that cache.
18
+
17
19
  ## Current stage
18
20
 
19
21
  Published CLI. The project can run a single URL audit, an opt-in Playwright-rendered audit with screenshot evidence, optional Lighthouse category scoring, branded customer-facing reports, public contact readiness extraction, a plain-text batch URL list, or a profile-aware CSV batch file, optionally check same-origin links, and produce JSON, Markdown, HTML, PDF, or all standard report formats. Batch runs can use controlled concurrency, write per-site reports, add aggregate insight sections and contact/outreach rollups to the top-level index, and optionally export prospect CSV data for triage. Discovery runs can control Google Places result counts, cap website audits, write summary JSON, merge local review CSVs, explain opportunity scores, enrich outreach and public-contact columns, select a preferred manual outreach channel, and report exact duplicate lead groups plus advisory fuzzy duplicate review candidates. CRM-ready CSV exports can be validated locally before import, lead CSVs can be ranked into local shortlist reports with optional local review-state suppression, local review CSV state can be updated by lead key or shortlist input, and single-site report folders can be packaged for local customer sharing.
@@ -512,6 +514,7 @@ Example report artifacts are available under [`examples/reports`](./examples/rep
512
514
  - `discover --provider google-places` requires `GOOGLE_MAPS_API_KEY` and may incur Google Maps Platform billing.
513
515
  - `--limit` caps Google Places candidates at 50; it does not paginate beyond one Text Search request.
514
516
  - `--max-audits` limits website audits only; all discovered candidates still appear in `leads.csv`.
517
+ - For Overture, `--audit-priority missing-contact` prioritizes missing source email, then phone; the default `source-order` preserves existing selection. Standard exports explain each selection and include business–website identity evidence. Conflicting sites contribute no website contacts or audit scores; uncertain matches require manual review. See the [free discovery guide](./docs/guides/free-discovery.md#website-enrichment).
515
518
  - `--suppression-list` uses exact lead identity matching; source IDs are preferred, then normalized website URLs, then normalized labels.
516
519
  - `--review-csv` is local operator state only; it does not send outreach or sync to a CRM.
517
520
  - `--duplicates-json` reports exact duplicate lead groups and advisory fuzzy duplicate candidates for manual review; it does not auto-suppress rows or update review decisions.
@@ -0,0 +1,15 @@
1
+ import type { ProspectRowInput } from "./discovery.js";
2
+ export type AuditPriority = "source-order" | "missing-contact";
3
+ export interface AuditSelectionDecision {
4
+ selected: boolean;
5
+ reason: string;
6
+ rank?: number;
7
+ }
8
+ export declare function selectAuditCandidates(inputs: readonly ProspectRowInput[], options?: {
9
+ priority?: AuditPriority;
10
+ maxAudits?: number;
11
+ dryRun?: boolean;
12
+ }): {
13
+ selectedIndices: number[];
14
+ decisions: AuditSelectionDecision[];
15
+ };
@@ -0,0 +1,86 @@
1
+ function hasSourceContact(value) {
2
+ return Array.isArray(value) && value.some((entry) => typeof entry === "string" && entry.trim().length > 0);
3
+ }
4
+ function isResolvedHttpWebsite(input) {
5
+ if (input.resolution.status !== "resolved" || !input.resolution.websiteUrl) {
6
+ return false;
7
+ }
8
+ try {
9
+ const parsed = new URL(input.resolution.websiteUrl);
10
+ return parsed.protocol === "http:" || parsed.protocol === "https:";
11
+ }
12
+ catch {
13
+ return false;
14
+ }
15
+ }
16
+ function invalidWebsiteReason(input) {
17
+ return input.resolution.status === "resolved" && input.resolution.websiteUrl
18
+ ? "Resolved website URL is invalid or unsupported"
19
+ : "No resolved HTTP(S) website URL";
20
+ }
21
+ function selectedReason(candidate, priority) {
22
+ if (priority === "missing-contact") {
23
+ if (candidate.missingEmail && candidate.missingPhone)
24
+ return "Selected because source email and phone are missing";
25
+ if (candidate.missingEmail)
26
+ return "Selected because source email is missing";
27
+ if (candidate.missingPhone)
28
+ return "Selected because source phone is missing";
29
+ }
30
+ return "Selected by source order";
31
+ }
32
+ function validateOptions(priority, maxAudits) {
33
+ if (priority !== "source-order" && priority !== "missing-contact") {
34
+ throw new Error(`Unsupported audit priority: ${String(priority)}`);
35
+ }
36
+ if (maxAudits !== undefined && (!Number.isFinite(maxAudits) || !Number.isInteger(maxAudits) || maxAudits < 0)) {
37
+ throw new Error("maxAudits must be a non-negative whole number");
38
+ }
39
+ }
40
+ export function selectAuditCandidates(inputs, options = {}) {
41
+ const priority = options.priority === undefined ? "source-order" : options.priority;
42
+ const { maxAudits, dryRun = false } = options;
43
+ validateOptions(priority, maxAudits);
44
+ const decisions = inputs.map((input) => ({
45
+ selected: false,
46
+ reason: isResolvedHttpWebsite(input) ? "Audit budget exhausted" : invalidWebsiteReason(input)
47
+ }));
48
+ const eligible = inputs.flatMap((input, index) => {
49
+ if (!isResolvedHttpWebsite(input))
50
+ return [];
51
+ const metadata = input.candidate.sourceMetadata ?? {};
52
+ return [{
53
+ index,
54
+ missingEmail: !hasSourceContact(metadata.emails),
55
+ missingPhone: !hasSourceContact(metadata.phones)
56
+ }];
57
+ });
58
+ if (priority === "missing-contact") {
59
+ eligible.sort((left, right) => {
60
+ const emailDifference = Number(right.missingEmail) - Number(left.missingEmail);
61
+ if (emailDifference !== 0)
62
+ return emailDifference;
63
+ const phoneDifference = Number(right.missingPhone) - Number(left.missingPhone);
64
+ if (phoneDifference !== 0)
65
+ return phoneDifference;
66
+ return left.index - right.index;
67
+ });
68
+ }
69
+ const selectionLimit = dryRun ? 0 : maxAudits ?? eligible.length;
70
+ const disabledReason = dryRun ? "Auditing is disabled in dry run" : "Auditing is disabled by maxAudits";
71
+ const selectedIndices = [];
72
+ for (const [rankIndex, candidate] of eligible.entries()) {
73
+ const decision = decisions[candidate.index];
74
+ decision.rank = rankIndex + 1;
75
+ if (rankIndex < selectionLimit) {
76
+ decision.selected = true;
77
+ decision.reason = selectedReason(candidate, priority);
78
+ selectedIndices.push(candidate.index);
79
+ }
80
+ else {
81
+ decision.reason = dryRun || maxAudits === 0 ? disabledReason : "Audit budget exhausted";
82
+ }
83
+ }
84
+ return { selectedIndices, decisions };
85
+ }
86
+ //# sourceMappingURL=audit-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-selection.js","sourceRoot":"","sources":["../src/audit-selection.ts"],"names":[],"mappings":"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"}
package/dist/batch.d.ts CHANGED
@@ -6,6 +6,7 @@ export interface BatchInputEntry {
6
6
  segment?: string;
7
7
  profile?: AuditProfile;
8
8
  source?: string;
9
+ sourceId?: string;
9
10
  }
10
11
  export interface BatchReportOptions {
11
12
  format: OutputFormat;
@@ -26,6 +27,7 @@ export interface BatchAuditContext {
26
27
  slug: string;
27
28
  outDir: string;
28
29
  profile: AuditProfile;
30
+ sourceId?: string;
29
31
  }
30
32
  export type BatchIndexSort = "score-asc" | "severity-desc";
31
33
  export interface BatchIndexOptions {
package/dist/batch.js CHANGED
@@ -686,7 +686,8 @@ export async function runBatchReports(urls, options) {
686
686
  const report = await audit(prepared.entry.url, {
687
687
  slug: prepared.slug,
688
688
  outDir: prepared.siteOutDir,
689
- profile: prepared.profile
689
+ profile: prepared.profile,
690
+ ...(prepared.entry.sourceId !== undefined ? { sourceId: prepared.entry.sourceId } : {})
690
691
  });
691
692
  const reportProfile = report.profile ?? "generic";
692
693
  const outputs = await writeReportOutputs(report, {
package/dist/batch.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"batch.js","sourceRoot":"","sources":["../src/batch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../src/batch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { PlaceCandidate } from "./discovery.js";
2
+ export interface ObservedBusinessIdentity {
3
+ pageUrl: string;
4
+ kind: "structured" | "page";
5
+ name?: string;
6
+ phones: string[];
7
+ address?: {
8
+ street?: string;
9
+ locality?: string;
10
+ region?: string;
11
+ postalCode?: string;
12
+ country?: string;
13
+ };
14
+ }
15
+ export interface BusinessIdentityEvidence {
16
+ field: "name" | "phone" | "address";
17
+ state: "match" | "different" | "missing" | "ambiguous";
18
+ sourceValues: string[];
19
+ websiteValues: string[];
20
+ pageUrl?: string;
21
+ reason: string;
22
+ }
23
+ export interface BusinessIdentityResult {
24
+ status: "matched" | "uncertain" | "conflict";
25
+ reasons: string[];
26
+ evidence: BusinessIdentityEvidence[];
27
+ }
28
+ export declare function extractBusinessIdentities(html: string, pageUrl: string): ObservedBusinessIdentity[];
29
+ export declare function compareBusinessIdentity(candidate: Pick<PlaceCandidate, "label" | "sourceMetadata">, observations: readonly ObservedBusinessIdentity[]): BusinessIdentityResult;
@@ -0,0 +1,270 @@
1
+ import { load } from "cheerio";
2
+ import { getCountries, parsePhoneNumberFromString } from "libphonenumber-js/max";
3
+ const MAX_ENTITY_DEPTH = 6;
4
+ const MAX_IDENTITIES = 24;
5
+ const businessTypes = new Set([
6
+ "organization", "localbusiness", "dentist", "restaurant", "beautysalon", "hotel", "gym", "exercisegym", "healthclub", "medicalclinic", "physician", "store", "automotiverepair", "autorepair", "bakery", "barbershop", "cafeorcoffeeshop", "dayspa", "florist", "hairsalon", "hardwarestore", "lodgingbusiness", "nailsalon", "pharmacy", "professionalservice", "realestateagent", "travelagency"
7
+ ]);
8
+ const genericNameTokens = new Set(["arztpraxis", "beauty", "business", "cafe", "clinic", "company", "dental", "dentist", "dentistry", "dis", "group", "gym", "hair", "hotel", "klinik", "klinigi", "limited", "ltd", "nail", "restaurant", "salon", "shop", "store", "zahnarzt", "zahnklinik"]);
9
+ const supportedCountries = new Set(getCountries());
10
+ const countryAliases = {
11
+ "de": "DE", "deutschland": "DE", "germany": "DE",
12
+ "gb": "GB", "great britain": "GB", "uk": "GB", "united kingdom": "GB",
13
+ "tr": "TR", "turkey": "TR", "turkiye": "TR",
14
+ "us": "US", "united states": "US", "united states of america": "US", "usa": "US"
15
+ };
16
+ function text(value) {
17
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
18
+ }
19
+ function record(value) {
20
+ return value && typeof value === "object" && !Array.isArray(value) ? value : undefined;
21
+ }
22
+ function normalizeText(value) {
23
+ return value.normalize("NFKD").replace(/\p{Diacritic}/gu, "").toLocaleLowerCase("en-US").replace(/ß/g, "ss").replace(/ı/g, "i").replace(/[^\p{L}\p{N}]+/gu, " ").trim().replace(/\s+/g, " ");
24
+ }
25
+ function countryCode(value) {
26
+ const country = text(value);
27
+ if (!country)
28
+ return undefined;
29
+ const code = countryAliases[normalizeText(country)] ?? (country.length === 2 ? country.toUpperCase() : undefined);
30
+ return code && supportedCountries.has(code) ? code : undefined;
31
+ }
32
+ function normalizedPhone(value, defaultCountry) {
33
+ const raw = text(value)?.replace(/^tel:/i, "");
34
+ if (!raw)
35
+ return undefined;
36
+ const parsed = parsePhoneNumberFromString(raw, defaultCountry ? { defaultCountry: defaultCountry, extract: false } : { extract: false });
37
+ return parsed?.isValid() ? parsed.number : undefined;
38
+ }
39
+ function phoneValues(value) {
40
+ const raw = Array.isArray(value) ? value : [value];
41
+ return Array.from(new Set(raw.map((entry) => text(entry)?.replace(/^tel:/i, "")).filter((entry) => Boolean(entry))));
42
+ }
43
+ function schemaTypes(value) {
44
+ return (Array.isArray(value) ? value : [value]).flatMap((entry) => {
45
+ const type = text(entry);
46
+ if (!type)
47
+ return [];
48
+ try {
49
+ const url = new URL(type);
50
+ return url.hostname.toLowerCase() === "schema.org" ? [url.pathname.split("/").filter(Boolean).pop()?.toLowerCase() ?? ""] : [];
51
+ }
52
+ catch {
53
+ return [type.toLowerCase().replace(/\s+/g, "")];
54
+ }
55
+ });
56
+ }
57
+ function isBusinessEntity(entity, pageUrl) {
58
+ if (!schemaTypes(entity["@type"]).some((type) => businessTypes.has(type)))
59
+ return false;
60
+ for (const key of ["url", "@id"]) {
61
+ const link = text(entity[key]);
62
+ if (!link || link.startsWith("#"))
63
+ continue;
64
+ try {
65
+ if (!sameBusinessHost(new URL(link, pageUrl).hostname, new URL(pageUrl).hostname))
66
+ return false;
67
+ }
68
+ catch {
69
+ return false;
70
+ }
71
+ }
72
+ return true;
73
+ }
74
+ function sameBusinessHost(first, second) {
75
+ return first.replace(/^www\./i, "").toLowerCase() === second.replace(/^www\./i, "").toLowerCase();
76
+ }
77
+ function schemaAddress(value) {
78
+ const item = record(value);
79
+ if (!item) {
80
+ const street = text(value);
81
+ return street ? { street } : undefined;
82
+ }
83
+ const address = {
84
+ street: text(item.streetAddress),
85
+ locality: text(item.addressLocality),
86
+ region: text(item.addressRegion),
87
+ postalCode: text(item.postalCode),
88
+ country: text(item.addressCountry)
89
+ };
90
+ return Object.values(address).some(Boolean) ? address : undefined;
91
+ }
92
+ function structuredIdentity(entity, pageUrl) {
93
+ const address = schemaAddress(entity.address);
94
+ return {
95
+ pageUrl,
96
+ kind: "structured",
97
+ name: text(entity.name),
98
+ phones: phoneValues(entity.telephone),
99
+ ...(address ? { address } : {})
100
+ };
101
+ }
102
+ export function extractBusinessIdentities(html, pageUrl) {
103
+ const $ = load(html);
104
+ const identities = [];
105
+ const seen = new Set();
106
+ const add = (identity) => {
107
+ if (identities.length >= MAX_IDENTITIES)
108
+ return;
109
+ const key = JSON.stringify(identity);
110
+ if (!seen.has(key)) {
111
+ seen.add(key);
112
+ identities.push(identity);
113
+ }
114
+ };
115
+ const visit = (value, depth) => {
116
+ if (depth > MAX_ENTITY_DEPTH || identities.length >= MAX_IDENTITIES)
117
+ return;
118
+ if (Array.isArray(value)) {
119
+ value.slice(0, MAX_IDENTITIES).forEach((entry) => visit(entry, depth + 1));
120
+ return;
121
+ }
122
+ const entity = record(value);
123
+ if (!entity)
124
+ return;
125
+ if (isBusinessEntity(entity, pageUrl))
126
+ add(structuredIdentity(entity, pageUrl));
127
+ for (const child of [entity["@graph"], entity.mainEntity, entity.itemListElement])
128
+ visit(child, depth + 1);
129
+ };
130
+ for (const script of $("script[type='application/ld+json']").toArray()) {
131
+ try {
132
+ visit(JSON.parse($(script).text()), 0);
133
+ }
134
+ catch {
135
+ continue;
136
+ }
137
+ }
138
+ const title = $("title").first().text().trim() || $("meta[property='og:site_name']").attr("content")?.trim();
139
+ if (title)
140
+ add({ pageUrl, kind: "page", name: title, phones: [] });
141
+ return identities;
142
+ }
143
+ function candidateAddress(metadata) {
144
+ const address = {
145
+ street: text(metadata.address),
146
+ locality: text(metadata.locality),
147
+ region: text(metadata.region),
148
+ country: text(metadata.country)
149
+ };
150
+ return Object.values(address).some(Boolean) ? address : undefined;
151
+ }
152
+ function sourceValues(candidate) {
153
+ const metadata = candidate.sourceMetadata ?? {};
154
+ const address = candidateAddress(metadata);
155
+ return {
156
+ name: text(candidate.label),
157
+ phones: phoneValues(metadata.phones),
158
+ ...(address ? { address } : {})
159
+ };
160
+ }
161
+ function evidence(field, state, source, website, pageUrl, reason) {
162
+ return { field, state, sourceValues: source, websiteValues: website, ...(pageUrl ? { pageUrl } : {}), reason };
163
+ }
164
+ function compareName(source, website, pageUrl, weak) {
165
+ if (!source || !website)
166
+ return evidence("name", "missing", source ? [source] : [], website ? [website] : [], pageUrl, "Business name was not available on both sides.");
167
+ if (weak)
168
+ return evidence("name", "ambiguous", [source], [website], pageUrl, "Page title or site name is weak identity evidence.");
169
+ const normalizedSource = normalizeText(source);
170
+ const normalizedWebsite = normalizeText(website);
171
+ const sourceTokens = normalizedSource.split(" ").filter((token) => !genericNameTokens.has(token));
172
+ const websiteTokens = normalizedWebsite.split(" ").filter((token) => !genericNameTokens.has(token));
173
+ if (!sourceTokens.length || !websiteTokens.length)
174
+ return evidence("name", "ambiguous", [source], [website], pageUrl, "Generic industry labels cannot establish a business-name match.");
175
+ if (normalizedSource === normalizedWebsite)
176
+ return evidence("name", "match", [source], [website], pageUrl, "Structured business names agree after formatting normalization.");
177
+ if (sourceTokens.some((token) => websiteTokens.includes(token)))
178
+ return evidence("name", "ambiguous", [source], [website], pageUrl, "Business names share distinctive words but do not exactly agree.");
179
+ return evidence("name", "different", [source], [website], pageUrl, "Structured business names differ.");
180
+ }
181
+ function comparePhones(source, website, sourceCountry, websiteCountry, pageUrl) {
182
+ const sourceNumbers = source.map((phone) => normalizedPhone(phone, sourceCountry)).filter((phone) => Boolean(phone));
183
+ const websiteNumbers = website.map((phone) => normalizedPhone(phone, websiteCountry ?? sourceCountry)).filter((phone) => Boolean(phone));
184
+ if (!sourceNumbers.length || !websiteNumbers.length)
185
+ return evidence("phone", "missing", sourceNumbers.length ? sourceNumbers : source, websiteNumbers.length ? websiteNumbers : website, pageUrl, "No valid whole phone number was available on both sides.");
186
+ return sourceNumbers.some((phone) => websiteNumbers.includes(phone))
187
+ ? evidence("phone", "match", sourceNumbers, websiteNumbers, pageUrl, "Valid normalized phone numbers agree.")
188
+ : evidence("phone", "different", sourceNumbers, websiteNumbers, pageUrl, "Valid normalized phone numbers differ.");
189
+ }
190
+ function streetDetails(value) {
191
+ const aliases = { cad: "cadde", cd: "cadde", sok: "sokak", st: "street", str: "strasse" };
192
+ const tokens = normalizeText(value).split(" ").map((token) => aliases[token] ?? token);
193
+ return {
194
+ canonical: tokens.join(" "),
195
+ numbers: tokens.filter((token) => /^\d+[a-z]?$/i.test(token)),
196
+ roadWords: tokens.filter((token) => !/^\d+[a-z]?$/i.test(token) && !["cadde", "sokak", "street", "strasse"].includes(token))
197
+ };
198
+ }
199
+ function compareAddress(source, website, pageUrl) {
200
+ const sourceDisplay = source ? [source.street, source.locality, source.region, source.postalCode, source.country].filter((value) => Boolean(value)) : [];
201
+ const websiteDisplay = website ? [website.street, website.locality, website.region, website.postalCode, website.country].filter((value) => Boolean(value)) : [];
202
+ if (!source?.street || !source.locality || !website?.street || !website.locality)
203
+ return evidence("address", "missing", sourceDisplay, websiteDisplay, pageUrl, "Complete street and locality were not available on both sides.");
204
+ const sourceCountry = countryCode(source.country);
205
+ const websiteCountry = countryCode(website.country);
206
+ if (sourceCountry && websiteCountry && sourceCountry !== websiteCountry)
207
+ return evidence("address", "different", sourceDisplay, websiteDisplay, pageUrl, "Explicit address countries differ.");
208
+ const sourceStreet = streetDetails(source.street);
209
+ const websiteStreet = streetDetails(website.street);
210
+ const sameStreet = sourceStreet.canonical === websiteStreet.canonical;
211
+ const sameLocality = normalizeText(source.locality) === normalizeText(website.locality);
212
+ if (sameStreet && sameLocality)
213
+ return evidence("address", "match", sourceDisplay, websiteDisplay, pageUrl, "Street and locality agree after formatting normalization.");
214
+ const differentNumbers = sourceStreet.numbers.length > 0 && websiteStreet.numbers.length > 0 && !sourceStreet.numbers.some((number) => websiteStreet.numbers.includes(number));
215
+ const differentRoads = sourceStreet.roadWords.length > 0 && websiteStreet.roadWords.length > 0 && !sourceStreet.roadWords.some((word) => websiteStreet.roadWords.includes(word));
216
+ if (sameLocality && (differentNumbers || differentRoads))
217
+ return evidence("address", "different", sourceDisplay, websiteDisplay, pageUrl, "Complete addresses identify different streets or house numbers in the same locality.");
218
+ return evidence("address", "ambiguous", sourceDisplay, websiteDisplay, pageUrl, "Address formatting or locality variation is not enough to establish a contradiction.");
219
+ }
220
+ function meaningfulSourceAddress(address) {
221
+ return Boolean(address?.street && address.locality);
222
+ }
223
+ export function compareBusinessIdentity(candidate, observations) {
224
+ const source = sourceValues(candidate);
225
+ const allEvidence = [];
226
+ const outcomes = [];
227
+ for (const observation of observations) {
228
+ const name = compareName(source.name, observation.name, observation.pageUrl, observation.kind === "page");
229
+ const phone = observation.kind === "structured" ? comparePhones(source.phones, observation.phones, countryCode(source.address?.country), countryCode(observation.address?.country), observation.pageUrl) : evidence("phone", "missing", source.phones, [], observation.pageUrl, "Page-level identity does not supply a structured phone number.");
230
+ const address = observation.kind === "structured" ? compareAddress(source.address, observation.address, observation.pageUrl) : evidence("address", "missing", source.address ? [source.address.street, source.address.locality].filter((value) => Boolean(value)) : [], [], observation.pageUrl, "Page-level identity does not supply a structured address.");
231
+ const fields = [name, phone, address];
232
+ allEvidence.push(...fields);
233
+ if (observation.kind === "page") {
234
+ outcomes.push({ matched: false, conflict: false, unresolved: true, relevant: false, reasons: ["Only weak page title or site-name evidence was available."] });
235
+ continue;
236
+ }
237
+ const agreements = fields.filter((item) => item.state === "match").length;
238
+ const disagreements = fields.filter((item) => item.state === "different").length;
239
+ const addressRequired = meaningfulSourceAddress(source.address);
240
+ const matched = disagreements === 0 && agreements >= 2 && (!addressRequired || address.state === "match");
241
+ const conflict = disagreements >= 2;
242
+ outcomes.push({
243
+ matched,
244
+ conflict,
245
+ unresolved: !matched && !conflict,
246
+ relevant: true,
247
+ reasons: matched
248
+ ? [`Structured identity at ${observation.pageUrl} agrees on ${fields.filter((item) => item.state === "match").map((item) => item.field).join(", ")}.`]
249
+ : conflict
250
+ ? [`Structured identity at ${observation.pageUrl} differs on ${fields.filter((item) => item.state === "different").map((item) => item.field).join(", ")}.`]
251
+ : [`Structured identity at ${observation.pageUrl} has insufficient or mixed evidence.`]
252
+ });
253
+ }
254
+ const matched = outcomes.filter((outcome) => outcome.matched);
255
+ const hasConflict = outcomes.some((outcome) => outcome.conflict);
256
+ if (matched.length && hasConflict) {
257
+ return { status: "uncertain", reasons: outcomes.filter((outcome) => outcome.matched || outcome.conflict).flatMap((outcome) => outcome.reasons), evidence: allEvidence };
258
+ }
259
+ if (matched.length)
260
+ return { status: "matched", reasons: matched.flatMap((outcome) => outcome.reasons), evidence: allEvidence };
261
+ const unresolved = outcomes.some((outcome) => outcome.relevant && outcome.unresolved);
262
+ if (hasConflict && !unresolved)
263
+ return { status: "conflict", reasons: outcomes.filter((outcome) => outcome.conflict).flatMap((outcome) => outcome.reasons), evidence: allEvidence };
264
+ return {
265
+ status: "uncertain",
266
+ reasons: outcomes.length ? outcomes.flatMap((outcome) => outcome.reasons) : ["No website business identity evidence was found."],
267
+ evidence: allEvidence
268
+ };
269
+ }
270
+ //# sourceMappingURL=business-identity.js.map