Umbrella program for Practice-Account data improvements requested by
sales. Each child plan addresses a specific data gap; together they
make the practice list usable for the 90-day call cadence.
Active — 2 childrenOwner: KyleRequestor: Tyler (Sales)
§1Why this program exists
Sales operates off Practice-level Account records. The signal quality
on those records is uneven — rollup-from-Prescriber-Contacts data has
never been surfaced cleanly, secondary office locations are missing
for many providers, and most practices have additional NPs / MDs / PAs
we don't have in our CRM at all. Each gap costs sales touches. This
program closes them.
§2Child plans
Two children today. Each has its own README + visualization. Click
into either for the full plan.
The rollup produces the set of practices in scope. The
enrichment tool finds the gaps in our CRM data about that set
— missing/invalid NPIs, missing prescribers, missing secondary
locations, stale contact details. Enrichment is downstream — can't run
meaningfully before the rollup defines who's in the list.
Apply to every child in this program. New children added later inherit
unless they explicitly override and document why.
Declarative-first
No Apex unless the declarative path is genuinely insufficient. The
rollup uses DLRS; enrichment runs outside Salesforce entirely.
Validator-as-triage
Confidence thresholds, NPI Luhn checks, fuzzy matching, credential
allowlists, and the 19-flag taxonomy sort and prioritize the
review queue. In v1,
every finding goes through human review regardless of
confidence.
No auto-accept band. Revisit per finding_type after 1–2 quarters
of data. (Revised 2026-05-21.)
No programmatic SF writes
The enrichment tool emits CSV for manual Data Loader entry. The
tool is never authoritative for SF data; Salesforce remains the
system of record.
Recurring cadence committed
Weekly NPI verification + quarterly website scrape are part of the
v2 product scope. (Revised 2026-05-21 — earlier "one-off bias"
framing applied to the never-built v1 Azure draft and no longer
applies. Confirm Tyler buy-in on quarterly commitment before Phase
2 build.)
Tyler owns scope
When a question is "do we want the broader version or the simpler
version," Tyler (sales) decides. Kyle (tech) builds.
Sarah owns prod-deploy
When a change is ready to ship to production Salesforce, Sarah's
team owns the promotion. Kyle builds in Full Sandbox; Sarah
promotes.
PDFs preserved as receipts
Deep-research artifacts that informed any child plan are committed
under that child's research/ folder. The plan
summarizes; the PDF preserves the reasoning chain.
§5Deferred future direction
Real possibilities that should not be built now. Documented so they're
not forgotten.
Autonomous Salesforce write-back from the enrichment
tool.
v1 emits CSV; admin runs Data Loader manually. Direct API write-back
adds engineering surface and review-bypass risk; defer until ≥1 year
of human-review data shows which finding_types are stable enough.
Auto-accept band for trusted finding_types. Until
human-review data proves out which types are reliable, every finding
goes through the queue. Revisit per finding_type after 1–2 quarters.
ADF reuse for SF snapshot ingest. Existing Azure
Data Factory pipeline already syncs SF data to Azure; extending it
to POST snapshots to a Cloudflare endpoint avoids duplicated SF
auth. Phase 4 candidate in the enrichment-tool plan.
AccountContactRelation completion for
multi-practice prescribers. 492 Elite Prescribers cover multiple
practices via secondary affiliations; the enrichment scrape will
surface gaps. Whether to backfill ACR records (vs. flagging) is a
separate scope question.
Parent-practice (network) flag bubble-up. 155
parent network Accounts anchor Elite-bearing children but have no
direct Elite prescribers. Deferred per Tyler 2026-05-09 (Option A on
the rollup plan's parent-hierarchy question).