Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | export interface PropertyRecord {
id: string;
ownerName: string;
address: Address;
deedDate?: string;
taxId?: string;
propertyType: PropertyType;
metadata?: Record<string, unknown>;
}
export interface Address {
streetNumber: string;
streetName: string;
streetType?: string;
unit?: string;
city: string;
state: string;
zip: string;
latitude?: number;
longitude?: number;
}
export type PropertyType = 'residential' | 'commercial' | 'land' | 'multi-family';
export interface PropertySnapshot {
id: string;
propertyId: string;
capturedAt: string;
ownerName: string;
address: Address;
deedDate?: string;
taxId?: string;
propertyType: PropertyType;
taxAmount?: number;
lienCount?: number;
}
export interface MatchResult {
nameScore: number;
addressScore: number;
overallConfidence: number;
isMatch: boolean;
details: MatchDetails;
}
export interface MatchDetails {
nameNormalized: string[];
addressNormalized: string[];
levenshteinDistance: number;
geocodingDistance?: number;
fields: {
firstName: FieldMatch;
lastName: FieldMatch;
middleName: FieldMatch;
streetNumber: FieldMatch;
streetName: FieldMatch;
streetType: FieldMatch;
unit: FieldMatch;
city: FieldMatch;
state: FieldMatch;
zip: FieldMatch;
};
}
export interface FieldMatch {
valueA: string;
valueB: string;
normalizedA: string;
normalizedB: string;
score: number;
}
export interface ChangeDetectionResult {
propertyId: string;
changeType: ChangeType;
severity: Severity;
confidence: number;
changes: PropertyChange[];
previousSnapshot: PropertySnapshot;
currentSnapshot: PropertySnapshot;
detectedAt: string;
}
export type ChangeType = 'tax_change' | 'deed_change' | 'ownership_transfer' | 'lien_filing' | 'metadata_change';
export type Severity = 'minor' | 'moderate' | 'major';
export interface PropertyChange {
field: string;
oldValue: unknown;
newValue: unknown;
changeType: ChangeType;
}
export interface MatchingConfig {
nameThreshold: number;
addressThreshold: number;
overallThreshold: number;
geocodingRadiusMeters: number;
}
export interface DetectionConfig {
ownershipNameThreshold: number;
deedDateSensitivity: number;
taxAmountChangePercent: number;
severityOverrides?: Record<ChangeType, Severity>;
}
export interface NormalizedTokens {
firstName: string;
lastName: string;
middleName: string;
initials: string[];
}
|