Skip to main content

YP3000 Identity System

Status: Active Development
Version: 1.0
Last Updated: 2026-01-06


1. Overview

YP3000 is RABS' self-generating, confidence-based contact resolution system. Unlike traditional contact management where records are manually maintained, YP3000 discovers identities through observation across all connected systems.

Philosophy

"We don't maintain contacts - we DISCOVER them through observation. Every sighting builds evidence. Confidence grows or decays over time. The system learns who people really are, not just what records say."

Key Principles

  • Per-Detail Confidence: Each contact detail (phone, email, relationship) has its own confidence score
  • Source Attribution: Every piece of information tracked back to its discovery source
  • Decay & Reinforcement: Confidence decays over time unless reinforced by new sightings
  • Anchor Identities: Strong relationships (staff member, participant's mother) lock identities in place
  • Purgatory System: Unknown/unanchored identities held for review before promotion or archival

2. Data Architecture

Core Tables (in core_source schema)

TablePurpose
yp3000_identitiesCentral identity index - people/entities discovered
yp3000_contact_detailsPhones, emails, addresses with individual confidence
yp3000_sourcesEvidence log - where/when each detail was discovered
yp3000_relationshipsLinks to participants, staff, venues, etc.
yp3000_sightingsRaw sighting queue for processing
yp3000_confidence_weightsConfigurable confidence values per source type
yp3000_activity_logAudit trail of identity changes

Confidence Model

Each contact detail carries:

  • confidence (0-100): How sure are we this is correct?
  • first_seen_at / last_seen_at: Discovery timeline
  • sighting_count: How many times confirmed
  • source_count: How many distinct sources

Example Display:

Susan Miller (Identity)
├── Role: Carer (80% confidence)
├── Relationship: Michael's mother (85% confidence)
├── Phone: +61412345678 (60% confidence - seen in SMS only)
├── Email: susan.m@gmail.com (100% confidence - verified)
└── Sources: Participant file, SMS thread, Emergency contacts

3. Source Scanners

YP3000 discovers identities by scanning connected systems:

ScannerSourceConfidence Base
Staff Scannercore_source.staff90
Participant Scannercore_source.participants85
Carer ScannerParticipant emergency contacts70
Directory Scannercore_ops.org_directory85
Email ScannerIncoming email headers/signatures40
SMS ScannerTwilio/TextMagic messages50
Dialpad ScannerCall logs45

Scanner Deduplication Logic

Before creating a new identity, scanners check:

  1. Exact staff_id / participant_id match
  2. Email match (case-insensitive)
  3. Exact first + last name match
  4. Phone number match (E.164 normalized)

4. UI Views

Cards View (Default)

Grid of identity cards showing:

  • Name and primary role
  • Confidence indicators
  • Primary phone/email
  • Source badges
  • Quick actions (verify, merge, archive)

Solar System View (LCARS-styled)

Orbital visualization representing organizational hierarchy:

OrbitContainsVisual
CoreOrganization centerInvisible/subtle glow
Orbit 1Executives (Brett, Sean, Ami, Richelle)Inner ring
Orbit 2Management (Ash, Jen, Yanni, Bridey)Second ring
Orbit 3Admin teamThird ring
Orbit 4Support workersOuter ring
Orbit 5ParticipantsExternal ring
PurgatoryUnanchored identitiesScattered outer zone

Identity Detail Modal

Full breakdown showing:

  • All contact details with individual confidence bars
  • Source attribution per detail
  • Relationship map
  • Activity timeline
  • Merge/verify/archive actions

5. Do-Not-Track System

Some contacts should be excluded from discovery (personal contacts, spam, etc.):

Location: App Settings → YP3000 → Do Not Track

Exclusion Types:

  • Email addresses (exact or domain)
  • Phone numbers
  • Name patterns

Behavior:

  • Excluded contacts are never created as identities
  • Existing identities can be marked "do not track" to prevent further scanning
  • Does not delete existing data, only prevents future discovery

6. Integration Points

As a Data Source

Other RABS features consume YP3000 for contact resolution:

FeatureUsage
Reggie SMSResolve sender identity from phone
TextMagicDisplay contact names, discover new contacts
DialpadCaller ID resolution
Email SystemSender identification
Broadcast SystemGroup targeting (all staff, all carers, etc.)

As a Discovery Target

These systems feed sightings into YP3000:

  • Staff records → Staff scanner
  • Participant files → Participant scanner + Carer scanner
  • Org directory → Directory scanner
  • SMS threads → SMS scanner
  • Email messages → Email scanner
  • Call logs → Dialpad scanner

7. API Endpoints

GET  /api/v1/yp3000/identities          - List identities with filters
GET /api/v1/yp3000/identities/:id - Full identity detail
POST /api/v1/yp3000/identities/:id/verify - Mark as human-verified
POST /api/v1/yp3000/identities/:id/merge - Merge with another identity
POST /api/v1/yp3000/resolve - Resolve phone/email to identity

GET /api/v1/yp3000/stats - System statistics
POST /api/v1/yp3000/scan/:source - Run specific scanner
POST /api/v1/yp3000/analyze-duplicates - LLM-powered duplicate analysis

8. Files Reference

FilePurpose
backend/routes_v1p/yp3000.jsAPI routes and scanner logic
admin/src/js/pages/page_yp3000.jsFrontend JavaScript
admin/src/html/page_yp3000.htmlPage template with LCARS styling
admin/tasks/sql/sql-current/20260104_yp3000_identity_layer.sqlSchema migration

9. Roadmap

Phase 1: Foundation (Current)

  • Core schema and tables
  • Basic scanners (staff, participants, carers, directory)
  • Cards view with search/filter
  • Duplicate detection + LLM analysis
  • Solar system view
  • Identity detail modal with confidence breakdown
  • Do-not-track configuration

Phase 2: Source Integrations

  • TextMagic as source
  • Email scanning
  • Dialpad call log scanning

Phase 3: Consumption

  • Reggie SMS identity resolution
  • TextMagic contact display
  • Broadcast system (group messaging)

Phase 4: Voice/Video

  • Dialpad caller ID
  • LiveKit room identity context