Documentation
Technical reference: data model, graph schema, sources, functions, workflows, security and API.
Architecture overview
How the Atlas layers fit together.
Alphiniti Atlas is a React single-page application served from the platform, backed by managed entity storage and serverless functions. Every screen reads and writes entity records through the authenticated SDK; anything that needs a secret, a long-running job or a third-party API runs in a backend function.
A Neo4j graph sits alongside the relational data and holds the relationship model — providers, organizations, trials, specialties and conditions, and the edges between them. The graph is written by sync and linking jobs, and read by the network and explorer screens.
Scheduled workflows drive the ingestion and scoring pipeline. They call backend functions in sequence, resuming long jobs in chunks, so a full national refresh completes over several runs instead of one long request.
Layers
- Presentation
- React + Vite pages under the router, one route per screen, lazy-loaded. Shared UI from the component library, styling from design tokens.
- Application services
- Backend functions (HTTP handlers) for syncs, scoring builders, linkers, exports, AI calls and integrations.
- Entity storage
- Managed records for providers, facilities, trials, scores, engagement, compliance and operations data.
- Graph store
- Neo4j instance holding the relationship model, queried read-only by the explorer and network screens.
- Orchestration
- Workflows: scheduled, entity-triggered and webhook-triggered runs that chain the functions above.
Data model
The entity catalogue, grouped by what it describes.
Every entity is a JSON schema with typed, optionally enumerated fields. All records carry the built-in id, created_date, updated_date and created_by_id attributes; sync jobs stamp their own sync date fields so freshness is always visible on the record.
Access is enforced per entity with row-level rules (see Security), which is why some records are readable by every signed-in user while writes stay administrator-only.
Providers and facilities
- Provider
- NPPES identity: NPI, name, credential, gender, enumeration type and status, primary specialty and taxonomy code, Medicare acceptance, enumeration and certification dates, source and sync date.
- NpiProvider
- Raw NPPES registry mirror used by lookups and refreshes, with NpiRefreshLog recording each refresh run.
- ProviderLocation
- Practice addresses per NPI: address lines, city, state, ZIP, county, phone, fax, location type, latitude and longitude.
- ProviderAffiliation
- Provider-to-facility privileges with the facility identity used for site resolution.
- Organization
- Hospitals and facilities keyed by CMS certification number: name, type, ownership, profit status, bed count, CMS rating, accreditation and geography.
- HospitalMetric
- Quality and process measures per facility, one row per measure with its value, period and comparison.
- NursingHome, HomeHealthAgency
- Post-acute facility records from their respective CMS datasets.
- PayerParticipation
- Which payers each facility or provider participates with, used by Payer Reports.
- Specialty, TaxonomyCode
- Reference lists behind every specialty filter, including NUCC taxonomy descriptions and groupings.
Clinical research
- ClinicalTrial
- ClinicalTrials.gov study: NCT id, title, status and previous status, phase, study type, conditions, interventions, sponsor, enrollment, dates, eligibility, locations and counts. Also carries the investigator resolution fields — investigator name, affiliation, linked NPI, link status/confidence/score and linked hospital CCNs.
- TrialSiteFeasibility
- Per-site feasibility score built from enrollment history, competing trials in the region and investigator benchmarks.
- LiteratureIntelligence
- Emerging topics, evidence summaries and a lightweight evidence graph of genes, drugs, diseases and biomarkers with relation types and confidence.
- BibliometricAnalytics
- Author, journal, citation-network, altmetric and institution metrics.
- Drug
- Drug reference records from FDA sources, used to interpret prescriber and payment data.
Scoring and analytics
- KolProfile, KolScoreHistory
- Current KOL score and tier per provider, plus every previous score so trends are visible.
- OpportunityScore, PredictiveScore
- Engagement opportunity ranking and forward-looking influence or region projections.
- ScientificVoice
- Share of voice per provider and therapeutic area, with trend direction and sponsor affiliations.
- CollaborationLink
- Provider-to-provider collaboration edges with type, shared trials, shared organizations, shared sponsors and a strength value.
- DiseaseEpidemiology
- Burden, mortality breakdown, trial density, market gap and forecast rows per disease and geography.
- PatientJourney
- Treatment pathway flows, care gaps, timelines and lines of therapy.
- TerritoryPlanning
- Territory alignment, field activity, coverage gaps and travel routes with workload, coverage, gap and priority scores.
- KolEngagement
- Meetings, advisory boards, speaking and consulting engagements with Sunshine Act payment categories, compliance status and influence-decay risk.
- CompetitiveIntel, RealWorldEvidence
- Competitor profiles, pipeline assets, trial comparisons, patent cliffs and conferences; plus cohorts, comparative effectiveness, safety signals and external control arms.
- PrescriberStat
- Medicare Part D claims, beneficiaries and drug cost per provider, drug and year — the input to prescriber matching.
- DashboardStats
- Daily warehouse counts used by the dashboard so it does not aggregate on every visit.
Collaboration and operations
- Project, UserProject, SavedItem, CollaborationComment
- Projects, membership, saved providers/hospitals/trials and field-level comments with author attribution.
- AuditLog
- Append-only record of create, read, update, delete, sign and export events with field-level before/after values, reason, source and session metadata.
- CmsSyncJob, CmsDataset, NpiRefreshLog, ProviderLookupLog
- Sync job tracking, dataset registry, refresh history and provider lookup telemetry.
- MortalityRecord, GlobalHealthIndicator
- CDC Wonder mortality and WHO/World Bank health indicators behind the epidemiology and global health screens.
- HubInboundMessage
- Messages received from the connected Hub application: type, source, correlation id, consent reference, disposition and full envelope.
- UserProfile
- Per-user preferences and profile details layered on the built-in User entity. Roles are limited to admin and user.
Graph schema
Nodes, edges and what populates them.
The graph is the relationship store. Nodes are keyed by natural identifiers — NPI for providers, CMS certification number for organizations, NCT id for trials — so repeated syncs merge rather than duplicate.
Nodes
- Provider
- Key: npi. Properties include name, specialty, state, KOL tier and score, publications and trial counts. Placeholder nodes are created when an edge references an NPI not yet enriched.
- Organization
- Key: org_id (CMS CCN). Properties include name, ownership, profit status, hospital type, CMS rating and geography.
- ClinicalTrial
- Key: nct_id. Properties include title, phase, status, sponsor and enrollment.
- Specialty, Condition
- Reference nodes created from provider taxonomies and trial conditions.
Edges
- AFFILIATED_WITH
- Provider → Organization. Hospital privileges, streamed from the CMS affiliation feed (~2.28M rows) with type, source and updated_at. Stale edges are pruned after a full pass.
- INVESTIGATED_BY
- ClinicalTrial → Provider. Written only for unambiguous investigator name matches, with the match score retained on the trial record.
- AT_SITE
- ClinicalTrial → Organization. Trial locations resolved to facilities by normalized city and state.
- PRACTICES
- Provider → Specialty, from the provider taxonomy.
- STUDIES
- ClinicalTrial → Condition, from the trial’s condition list.
- COLLABORATES_WITH
- Provider → Provider. Stored collaboration records plus, in the explorer, derived edges between two providers who share a hospital.
Reading coverage
- In view vs in graph
- Explorer stats return both the counts inside the rendered slice (edges_by_type) and whole-graph totals (graph_edges_by_type), so a zero can be distinguished from a narrow filter.
- Degree
- Each node carries its degree in the current view; the highest-degree node is surfaced as the hub of the slice.
- Bounds
- Queries cap seed nodes per layer and total nodes and edges, keeping response time predictable at the cost of completeness — raise the per-type limit for a wider slice.
Data sources and refresh
Where each dataset comes from and how often it lands.
Federal and registry sources
- NPPES (CMS NPI registry)
- Provider identities and practice addresses. Nightly, split into state batches and driven by a dispatcher.
- CMS Care Compare — hospitals
- Facility identity, ownership, certification and location. Nightly, resumable chunks, deduplicated by CCN.
- CMS Care Compare — hospital affiliations
- Provider privilege pairs (~2.28M rows), streamed in chunks into AFFILIATED_WITH edges, with stale-edge pruning after the pass.
- CMS quality measures
- Facility quality and process measures per reporting period.
- CMS nursing homes and home health agencies
- Post-acute facility records, refreshed every six hours.
- CMS Part D prescriber data
- Claims, beneficiaries and drug cost per provider — the base of prescriber analytics and trial matching.
- CMS Open Payments
- Industry payments to physicians, folded into KOL scoring and engagement views.
- CMS payer participation
- Payer coverage per facility, refreshed on a six-hour cycle.
- ClinicalTrials.gov
- Study registry with status change history, refreshed nightly with change auditing.
- PubMed / NCBI E-utilities
- Publications and citation data behind publication counts and literature intelligence.
- CDC Wonder
- Mortality records used for burden and epidemiological views.
- WHO GHO and World Bank HNP
- Global health indicators for the global health dashboard.
- FDA drug data
- Drug reference records.
Operational notes
- Freshness
- Each record carries its own sync date; the Sync Dashboard shows the last successful run per source. Nightly sources trail live systems by up to a day.
- Chunking
- Large national files are processed with a start-row cursor: each run returns next_row and done, and the workflow continues on the following step or night.
- Geocoding
- Addresses are geocoded in batches; records without coordinates are simply not plotted yet.
Backend functions
The serverless functions, grouped by job.
Functions are the only place secrets are used. Each one validates its caller — an administrator session or the shared X-API-Key header — before doing work, and returns a JSON summary with counts, so a run can be audited from its response.
Sync and ingestion
- nppesSync / nppesSyncOptimized
- Paginated NPPES ingestion; the optimized path batches writes and handles large states.
- hospitalSync
- CMS hospital ingestion with CCN deduplication, state scoping and resumable batches.
- atlasSyncOrganizations, atlasSyncHospitalMetrics, atlasSyncQualityMeasures
- Facility identity, metrics and quality measures.
- atlasSyncProviderAffiliations
- Streams the CMS affiliations CSV into graph edges; supports stats_only, dry_run and prune_before.
- atlasSyncProviderLocations, atlasSyncSpecialty, atlasSyncNursingHomes, atlasSyncHomeHealth
- Locations, specialty taxonomy and post-acute facilities.
- atlasSyncPartD, atlasSyncPayerParticipation, prescriberSync
- Prescriber claims, payer coverage and prescriber profiles.
- atlasSyncCdcWonder, atlasSyncWorldBankHnp, whoGhoSync, fdaDrugSync
- Mortality, global indicators and drug reference data.
- clinicalTrialsSync, auditClinicalTrialChange
- Trial registry refresh and the append-only change audit for status transitions.
- atlasSyncHospitalGeography
- Backfills state and region on facility nodes for regional analytics.
- atlasSyncDispatcher, atlasSyncHospitalDispatcher
- Fan-out controllers that start the per-state or per-dataset runs.
- cmsDatasetSync, taxonomyCodeSync, qualitySync, qualityMeasureSync
- Dataset registry, taxonomy and quality reference loads.
Linking and enrichment
- atlasLinkTrialNpis
- Resolves trial investigator names to provider NPIs; writes linked, ambiguous or no_match with a confidence score, and reports per-run metrics.
- linkTrialsToProviders, linkTrialsToHospitals
- Provider-to-trial and trial-to-facility linking by name and by normalized city/state.
- matchTrialsToProvider
- Ranks trials against one provider’s prescribing profile for the trial matcher.
- collaborationNetworkBuilder
- Builds provider-to-provider collaboration edges from shared sponsors and organizations.
- geocodeAddresses, geocodeHospitalLocations, geocodeProviderLocations, batchGeocodeProviderLocations
- Batch geocoding, single and bulk.
- flagStaleProviderLocations, monitorPrescriberStatAnomalies, territoryGapAlertChecker, alertTrialProviderMatch
- Detectors that raise alerts for staleness, outliers, coverage gaps and new trial matches.
Scoring, analytics and builders
- atlasScoreKol, kolScoringScheduler, kolSync, kolSyncOptimized
- KOL scoring runs and the scheduler that batches them.
- opportunityScoring, predictiveScoring, scientificVoiceScoring
- Opportunity, predictive and share-of-voice scores.
- trialSiteFeasibilityBuilder, bibliometricAnalyticsBuilder, diseaseEpidemiologyBuilder, literatureIntelligenceBuilder, competitiveIntelBuilder, rweAnalysisBuilder, patientJourneyBuilder, territoryPlannerBuilder, kolEngagementBuilder
- One builder per intelligence dashboard; each recomputes its entity rows for a therapeutic area.
- calculateDashboardStats, getProviderStateCounts, getPrescriberStatCount, getMapProviders
- Aggregates and map payloads so screens do not scan large tables client-side.
- bigqueryKolAnalysis
- Warehouse query for publication-heavy cohorts.
- aiResearchAssistant, weeklyKolReport
- AI research answers and the weekly report assembly.
Graph, data access and platform
- neo4jSync
- Writes entity records into graph nodes and edges; optional schema setup and dry run.
- neo4jGraphQuery, hospitalNetworkMap
- Read-only graph queries: layered explorer slices with edge totals, and regional facility network data.
- getEntityData, getEntitySchema, exportEntityData
- Bounded read, schema introspection and CSV/JSON export of entity data.
- secureEntityAccess
- Role-aware entity access checks used by sensitive reads.
- getGoogleMapsKey, testGoogleMapsKey
- Map key delivery and validation.
- driveBackup, cleanupOldSyncJobs
- Google Drive snapshots and sync-job housekeeping.
- hubSendMessage, hubReceiveMessage, hubPublishEvidence, hubIssueConsentReference
- Hub interoperability: outbound messages, inbound webhook with consent checks, evidence publication and consent references.
- sendContactMessage, githubSprintIssues, clickupSprint, createPursuitClickUpTask
- Contact form delivery, GitHub issue sync, ClickUp task sync and pursuit task creation.
Workflows and schedules
What runs automatically, and when.
Nightly
- NPPES sync (nationwide + state batches + dispatcher)
- Provider identity and address refresh, split into six regional batches to stay inside runtime limits.
- HospitalOrganization Sync, Atlas Nightly Hospital Dispatcher
- Facility refresh in resumable chunks.
- Provider Affiliations Sync
- Full affiliation pass in chunks, then stale-edge pruning so privileges that ended are removed.
- Clinical Trials Sync, Atlas Nightly Clinical Trials Sync
- Registry refresh, with changed-status trials written to the audit trail.
- Atlas Nightly Trial-Provider Linking
- Investigator-to-NPI linking, then trial site-to-facility linking, then the new relationships written to the graph.
- Atlas Nightly KOL Scoring, KOL Scoring — Batch Scheduler, Atlas KOL Nightly Scoring
- Score recalculation across the provider base.
- Atlas Nightly Prescriber Sync, Dashboard Stats — Daily Refresh
- Part D refresh and the daily aggregate counts.
- Daily Sync Job Cleanup, Daily Drive Backup, Daily Drive Data Snapshot
- Housekeeping and backup.
Every six hours
- Nursing Homes Sync, Home Health Sync, Payer Participation Sync, Provider Locations Sync
- Frequent sources that change often enough to justify a shorter cycle.
Weekly and event-driven
- Weekly KOL Score Report, Weekly Prescriber Stat Anomaly Monitor
- Scheduled reporting and anomaly detection.
- Monthly Stale ProviderLocation Audit
- Flags addresses that have not been confirmed recently.
- Audit Clinical Trial Changes
- Triggered when a trial record is updated, writing the field-level change.
- Alert on New Trial — Provider Location Match, Territory Gap Alert Monitor
- Event and scheduled alerts.
- Create ClickUp Task for Flagged Providers
- Pushes flagged providers into the ClickUp backlog.
- Atlas to Hub Research Evidence
- Publishes curated evidence to the connected Hub application.
- Specialty Taxonomy Sync, Quality Measures Sync, Hospital Metrics Dispatcher, CDC Wonder MortalityRecord Backfill
- Reference and backfill jobs.
Security and access
Roles, record-level rules, keys and audit.
Authentication and roles
- Identity
- Accounts are managed by the platform. There are two roles: admin and user. Administrators can manage users and see all records; standard users see their own work plus shared reference data.
- Row-level rules
- Every entity declares create, read, update and delete rules. Reference data such as providers, facilities, trials and specialities is readable by any signed-in user; writes are administrator-only. Personal and operational records (projects, comments, audit logs, hub messages) are restricted to their owner or an administrator.
- Client scope
- Screens use the user-scoped SDK client so rules apply. Service-role access is confined to backend functions that need to write bulk data.
API and secrets
- Function authentication
- Functions accept an administrator session or the shared API key presented in the X-API-Key header. Keys are never read from the request body, and comparisons are constant-time.
- Secrets
- Neo4j connection values, the Atlas API key, encryption key, NCBI key, Google OAuth client credentials, the Google Maps key and the Hub shared secrets are stored as platform secrets and read only inside functions.
- Field-level encryption
- Sensitive fields pass through the shared encryption module before storage; decryption happens server-side.
Audit and integrity
- Audit trail
- Every create, update, delete and export writes an AuditLog entry with user, timestamp, field-level before/after values, reason and source. Entries are append-only.
- Change triggers
- Trial updates are audited by a dedicated trigger so status history is complete even for automated syncs.
- Compliance reports
- Printable reports assemble the trail for a period, formatted for review and retention.
Integrations
External services the platform talks to.
Connected services
- Neo4j Aura
- Graph store, reached over the HTTPS Query API with parameterised statements; credentials come from secrets.
- Google Maps
- Mapping and geocoding for the map screens, with the key delivered by a function rather than embedded in the bundle.
- Google BigQuery
- Warehouse queries for the KOL analysis screen.
- Google Drive
- Backup destination for daily data snapshots.
- GitHub
- Issue sync for the sprint dashboard.
- ClickUp
- Task creation and sprint tracking.
- Alphiniti Hub
- Cross-application messaging: outbound messages, consented inbound webhook, evidence publication and consent references.
- NCBI / PubMed
- Publication and citation lookups.
AI
- Assistants
- The SuperAgent plus domain advisors for disease intelligence, territory optimization, nursing homes, clinical trials, KOL analysis, KOL outreach, trial opportunity and project status.
- Research assistant
- Server-side AI calls with the app’s curated context; answers cite the stored data they were built from.
API and function reference
How to call the platform programmatically.
Backend functions are invoked over HTTP at /functions/<functionName> on the app’s host. JSON in, JSON out. The shared API key travels in the X-API-Key header — never in the body.
Request shape
- Method and headers
- POST with Content-Type: application/json and X-API-Key: <key>. An authenticated administrator session is accepted in place of the key.
- Response envelope
- Successful calls return ok: true with the run summary (counts, cursor position, timing). Failures return ok: false with an error message and an HTTP status.
- Idempotency
- Sync calls are safe to retry: writes merge on natural keys (NPI, CCN, NCT id) rather than inserting duplicates, and a cursor lets you resume from a known row.
Representative calls
- neo4jGraphQuery
- { layers: ["providers","hospitals","trials"], limit: 80, search: "oncology", ongoing: true } → nodes, edges and stats including per-type totals for the slice and for the whole graph.
- atlasSyncProviderAffiliations
- { start_row, max_rows, dry_run } → next_row and done for resumable passes; { stats_only: true } for current coverage; { prune_older_than_hours } to remove unrefreshed edges.
- atlasLinkTrialNpis
- { limit } → trials examined, linked, ambiguous and unmatched counts.
- neo4jSync
- { entities: ["ClinicalTrial","CollaborationLink"], batch_size } → nodes and edges written per entity.
- getEntityData / exportEntityData
- Bounded entity reads and CSV/JSON export, with the same authentication rules.
- hospitalNetworkMap
- Regional facility network payload with cross-region provider reach.
Scoring models
What each score is built from.
Scores are deterministic functions of stored evidence, recalculated by scheduled jobs and stamped with a calculation time. They rank attention; they are not predictions of clinical outcome, and they should be read alongside the underlying record.
Scores
- KOL score (0–100) and tier
- Combines publication volume, clinical trial involvement and industry payment activity, then bands the result into Elite, Senior, Rising or Emerging. History is retained per run so the trend is visible.
- Opportunity score
- Ranks providers by how much value engagement could unlock, using their activity, influence and current relationship depth.
- Predictive score
- Projects forward-looking influence and highlights high-potential regions from historical trajectories.
- Share of voice
- A provider’s publication and trial footprint relative to their therapeutic-area peer group, with trend direction and sponsor affiliations.
- Site feasibility (0–100)
- Blends site enrollment history, the density of competing trials in the region and investigator benchmark performance.
- Burden, trial density and market gap
- Burden from mortality and DALY data; density from trial counts per condition and geography; gap from the ratio between the two.
- Collaboration strength
- Weighted count of shared trials, organizations and sponsors between two providers.
- Trial match confidence
- Name-match score for investigator resolution plus a therapeutic-overlap score for provider-to-trial matching.
Environments and releases
Production, test data, and what publishing changes.
Data environments
- Production
- The live database behind the published app. Screens read and write here by default.
- Test
- A separate database for exercising changes safely. Switch to it in the builder before running risky syncs or destructive tests.
Deployment
- Publishing
- Publishing from the editor promotes the current app code, including backend functions and workflows, to the live app. Unpublished function changes do not affect the live endpoint.
- Schedules
- Workflow schedules run against production. A newly enabled schedule starts on its next due time, not retroactively.
- Integrity checks
- Data Health on the admin systems page summarises record counts, duplicate facilities and unsynced sources after a release.
Glossary
Terms used across the product.
Terms
- NPI
- National Provider Identifier — the unique 10-digit number for a US provider or organization.
- CCN
- CMS Certification Number — the identifier for a Medicare-certified facility, used as the facility key throughout.
- NCT id
- The ClinicalTrials.gov registry identifier for a study.
- KOL
- Key Opinion Leader — a provider whose publications, trials and standing make them influential in a therapeutic area.
- KOL tier
- The band a KOL score falls into: Elite, Senior, Rising or Emerging.
- Taxonomy
- The NUCC classification of provider specialties and subspecialties.
- Part D
- Medicare’s prescription drug programme; its prescriber file supplies claims, beneficiaries and drug cost.
- Open Payments
- The CMS programme reporting industry payments to physicians and teaching hospitals.
- Sunshine Act category
- The payment classification used when logging engagements: consulting, travel, meals, research, royalty, honorarium, education or other.
- Affiliation
- A provider’s hospital privileges — the edge that connects a provider to a facility.
- DALY / QALY
- Disability-adjusted and quality-adjusted life years, used in burden analysis.
- Attribution
- Assigning an activity, payment or trial to the provider or facility it belongs to.
- Row-level security
- Per-entity rules deciding which records a user may create, read, update or delete.
- Slice
- The bounded set of records the explorer currently renders — distinct from the whole graph.
New to Atlas? Start with the Help Guide for task-by-task steps.
