Both projects serve holistic health practitioner discovery and booking — but at different stages. PD is a lean MVP with deep search/discovery UX. HHM is a comprehensive platform with 80+ models and enterprise features. This briefing identifies which PD components should strengthen HHM's core experience.
| Dimension | PD (practitionerDirectory) | HHM (holistic-health-marketplace) |
|---|---|---|
| Framework | Next.js 16, React 19 | Next.js 14, React 18 |
| Models | 8 entities | 80+ models |
| Pages | ~10 routes | 70+ pages |
| Auth | Clerk (OAuth + webhooks) | Auth.js (email/pw, Google, MFA) |
| Payments | Stripe Connect (initialized) | Whop + Capital OS (live) |
| Search | SQL + faceted counts + geolocation | Denormalized docs + cursor pagination |
| SMS | Full lifecycle (cron→send→track→opt-out) | Basic (credit system, no automation) |
| AI | None | Claude (session notes, matching) |
| Compliance | None | HIPAA (encryption, PHI logs, BAA) |
| Deploy | Railway | Vercel |
12-category specialty taxonomy (155+ subcategories) with expand/collapse, indeterminate checkboxes, contextual count badges, and disabled-when-zero UX. HHM has flat filters with no counts.
Haversine formula with 3-tier color coding (near/moderate/far), "Near Me" quick filter, auto-request on profiles. HHM has zero geolocation.
5 badge types (Verified, Background Check, Malpractice, HSA/FSA, Top Rated) with ARIA tooltips. HHM has a single credential tier label.
Cron-based batch sending, deduplication, Twilio webhook tracking, STOP/opt-out automation, delivery statistics. HHM has basic SMS with credit system but no automation.
Contextual counts per filter option, practitioner ID deduplication for multi-specialty, rating tier cascading. HHM has no filter counts.
Framework upgrade brings async RSC APIs, React 19 concurrent rendering, Tailwind 4. But upgrading 70+ pages is a major undertaking.
Typesense client with dual keys, HTTPS config, 2s timeout. Both projects need full-text search — PD is ready to activate.
Multi-service health check with per-service latency reporting. HHM has a basic health route.
Pure utility (geo.ts) + DistanceBadge component + useUserLocation hook. Zero external dependencies. Copy and adapt Tailwind classes.
Self-contained component tree. Add 3 boolean fields to HHM Practitioner model (malpracticeInsured, backgroundCheckComplete, acceptsHsaFsa).
Config + client init only. Aligns with HHM's Phase 1 roadmap (Algolia/Typesense). Real work is collection schema + sync — new dev regardless.
Single route file. Adapt to HHM's stack: Neon PostgreSQL, Upstash KV, Vercel health gate.
Highest UX impact. Self-contained React components but need API response shape adaptation. Migrate with COMP-5 (faceted counts) for full effect.
Tightly coupled with search UI. Adapt count logic to HHM's ListingSearchDocument query pattern. Practitioner ID deduplication is the complex piece.
Map PD's sms_logs schema to HHM's SmsLog/SmsPreference. Convert cron pattern (PD: POST+Bearer → HHM: GET+Vercel cron).
Affects every page and component in HHM. Tailwind 3→4 migration, React 18→19 behavior changes. Should be a dedicated upgrade sprint, not part of feature migration. Defer until after Tiers 1-2 are stable.