Database

Manage DB

Browse collections and tables, and watch the CQRS timing pipeline.

← Overviewβ€’Competitor History & IntelligenceExternal Platform Identity

Person External Profilesperson_external_profiles

External platform accounts (UltraSignup, Strava, DUV, ITRA) linked to an individual person.

Table Columns & Types (14)

person_external_profiles
ColumnPostgreSQL TypeConstraintsDefaultDocumentation
iduuid
NOT NULLPK
gen_random_uuid()Unique external profile identifier.
personIduuid
NOT NULLFK -> people.idON DELETE CASCADE
β€”Reference to the local person.
platformexternalPlatformEnum
NOT NULLEnum
β€”Target platform service (ultrasignup, strava, duv, itra, athlinks, custom).
externalIdentifiertext
NOT NULLUnique with platform
β€”Platform-specific identifier (e.g. UltraSignup athlete ID or Strava athlete numeric ID).
profileUrltext
nullable
β€”Direct canonical HTTP URL to the athlete profile page.
verificationStatusprofileVerificationStatusEnum
NOT NULLEnum
'unverified'Verification state: unverified, candidate_matched, auto_verified, manual_verified, rejected, conflict.
matchConfidencedouble precision
nullable
β€”Computed Multi-Factor Disambiguation Algorithm (MFDA) score (0.0 - 100.0).
matchMetadatajsonb
nullable
β€”Sub-score breakdowns (name Levenshtein, age delta, geography, phonetic score).
scrapeStatusscrapeStatusEnum
NOT NULLEnum
'pending'Queue worker lifecycle state: pending, queued, in_progress, succeeded, failed, rate_limited, stale.
lastScrapedAttimestamp with time zone
nullable
β€”Timestamp of last successful crawl or API fetch.
rawPayloadjsonb
nullable
β€”Unmodified JSON response snapshot or parsed DOM tree for debugging.
errorMessagetext
nullable
β€”Last ingestion failure error message or HTTP status code.
createdAttimestamp with time zone
NOT NULL
now()Creation timestamp.
updatedAttimestamp with time zone
NOT NULL
now()Last record update timestamp.

PostgreSQL Enums (3)

enum "external_platform"

ValueLabelDomain Meaning
'ultrasignup'UltraSignupNorth American trail and ultramarathon registration and results database.
'strava'StravaSocial fitness telemetry, GPS elevation, and training load API.
'duv'DUV Ultra MarathonDeutsche Ultramarathon-Vereinigung international ultra statistics.
'itra'ITRAInternational Trail Running Association performance index and points.
'athlinks'AthlinksMulti-sport mass-participation road race database.
'custom'Custom / ManualCustom platform or organizer-supplied external link.

enum "profile_verification_status"

ValueLabelDomain Meaning
'unverified'UnverifiedNewly discovered profile awaiting disambiguation.
'candidate_matched'Candidate Matched (60-84%)Probable match requiring organizer confirmation in Steward Admin.
'auto_verified'Auto-Verified (>= 85%)High-confidence deterministic match verified by MFDA algorithm.
'manual_verified'Manual VerifiedExplicitly confirmed or bound by race director / timing official.
'rejected'Rejected / BlacklistedExcluded match candidate confirmed not to be this athlete.
'conflict'Identity ConflictMultiple candidates or conflicting historical claims requiring manual resolution.

enum "scrape_status"

ValueLabelDomain Meaning
'pending'PendingAwaiting enqueue into worker fetch queue.
'queued'QueuedEnqueued in Redis BullMQ fetch queue.
'in_progress'In ProgressCurrently being fetched by Railway background worker.
'succeeded'SucceededPayload successfully retrieved and race history records parsed.
'failed'FailedScrape attempt failed after retries.
'rate_limited'Rate Limited (429)Worker received rate limit backoff signal; leased back with delay.
'stale'StaleProfile has not been updated within freshness window.

Database Indexes (3)

Index NameColumnsTypeQuery Performance Rationale
person_external_profiles_platform_identifier_idx(platform, externalIdentifier)UNIQUEGuarantees external platform identities are unique across the tenant database.
person_external_profiles_person_idx(personId)INDEXAccelerates lookups of all external profiles for a given person.
person_external_profiles_scrape_status_idx(scrapeStatus)INDEXOptimizes background worker polling for pending and queued scraping tasks.