1. Platform Overview
What Cognizant Cloud Is
Cognizant Cloud LLC is a healthcare AI SaaS platform that wraps free government data APIs into polished, monetizable tools. The platform lives at cognizantcloud.com and runs on Netlify with Supabase for auth and data, Stripe for payments, and the OpenAI gpt-5.4 family for AI features.
The company was founded by Joe Scrocco and Kevin Weller. The website replaced a Wix placeholder in March 2026 and was built in a single-day sprint on April 1, 2026, going from a static site with a chatbot to a full SaaS platform with 10+ standalone tools, 12 API endpoints, user accounts, tiered subscriptions, a credit system, and an education hub. On April 2, 2026, a major enhancement session shipped 19 additional features: Academy SPA redesign (14 sections with progress tracking), 4 audience landing pages, clean URL routing for all functions, auth improvements (session refresh, email memory), API docs overhaul with try-it forms, NPI taxonomy UX upgrades, tool breadcrumb navigation, Magic Data Fixer Pro UI in the dashboard, audience-filtered homepage product views, FormularyAI as 7th product card, and Trial Finder fixes. On April 7, 2026, 7 new CMS Hospital Data API endpoints were added (HCAHPS, infections, complications, readmissions, spending, timely care, and a unified hospital profile), bringing the total to 20 API endpoints. Also on April 7, four new products were deployed: Recall Command Center (professional recall monitoring with watchlist and CSV export), DrugWatch Intelligence (drug safety analysis via FAERS), Hospital Benchmarker (multi-hospital comparison across 30+ quality measures), and Clinical Code Navigator (cross-reference intelligence from one ICD-10 code to trials, drugs, providers, and hospitals). The platform now spans 30+ pages with 19 serverless functions.
Business Model
The model follows a three-stage funnel:
- Free tools drive traffic. NPI ProLookup, Drug Intelligence Center, ICD-10 Explorer, Clinical Trial Finder, FDA Recall Monitor, Hospital Quality Explorer, Recall Command Center, DrugWatch Intelligence, Hospital Benchmarker, and Clinical Code Navigator are all free (with optional credit-gated premium features) and require no account. These tools call free government APIs, so the marginal cost of serving a free user is effectively zero.
- Credits monetize power users. When users need AI-powered features (Magic Data Fixer, Deep Search, NPI Enrichment, Provider Intelligence), they spend credits. Free users get 50 welcome credits. Pro subscribers get 500/month. Ultra subscribers get 2,000/month. Anyone can buy credit packs from $1 to $1,000.
- The API scales to enterprise. The Healthcare Data API offers 20 endpoints through a single authenticated interface. Companies integrate once and get provider data, drug intelligence, clinical trials, diagnosis codes, hospital quality (7 endpoints covering 6 CMS datasets), and drug pricing. All backed by free government data, so margins are 90%+.
Revenue Projections (Three Scenarios)
Current State (April 2026)
Platform live. 20 API endpoints. 13 free tools (10 standalone, 3 with credit-gated premium tiers). Stripe billing active. Zero paying customers. Zero organic traffic. Two founders + AI. No employees, no plans to hire.
Revenue by Segment (Year 1 through Year 4)
| Segment | Year 1 | Year 2 | Year 3 | Year 4 | What We Offer |
|---|---|---|---|---|---|
| Enterprise API Annual contracts, $24K-$120K/yr | $200K 5-10 clients | $900K 25-40 clients | $3M 75-120 clients | $7M 150-250 clients | Unified API across 7+ gov data sources. For buyers whose primary need is structured access to public healthcare data. Easier and cheaper than building direct gov API integrations. |
| Professional Suites $49-$149/mo subscriptions | $150K 200-400 subs | $750K 800-1,500 subs | $2.5M 2,500-4,000 subs | $5.5M 5,000-8,000 subs | ProviderIQ, DrugIQ, HospitalIQ, TrialIQ. Replaces hours of manual CMS/FDA/NPPES queries. For consultants, analysts, and compliance teams. |
| Developer API Credits $29-$799/mo credit tiers | $50K 100-250 devs | $250K 400-800 devs | $700K 1,000-2,000 devs | $1.5M 2,000-3,500 devs | Alternative to building direct gov API integrations in-house. We normalize 7+ APIs into one clean interface. |
| AI Reports + DataForge + DrugSignal Per-report, downloads, monitoring | $30K | $200K | $600K | $1.5M | AI-generated comparison briefs, cleaned dataset downloads, drug safety monitoring. Highest-margin products (near-zero production cost). |
| Enterprise Custom White-label, SFTP feeds, SLAs | $100K 2-3 deals | $500K 8-12 deals | $1.5M 20-30 deals | $4M 40-60 deals | For organizations that would otherwise assign engineers to build gov API integrations. White-label, custom endpoints, data feeds. |
| FormularyAI | $50K 5-8 clients | $200K 15-25 clients | $500K 30-50 clients | $1M 50-80 clients | AI-powered formulary management. Travis Garland partnership provides early deal flow. |
| Total Revenue | $580K | $2.8M | $8.8M | $20.5M | |
| OpenAI costs | ($30K) | ($140K) | ($440K) | ($1M) | 90%+ of calls use free gov APIs. AI reports are the main cost driver. |
| Infrastructure | ($5K) | ($25K) | ($75K) | ($200K) | Netlify, Supabase. Near-zero scaling because data sources are free. |
| Stripe fees (2.9%) | ($17K) | ($81K) | ($255K) | ($595K) | Payment processing. |
| AI tooling (Claude Code, SendGrid, etc.) | ($3K) | ($6K) | ($10K) | ($15K) | Claude Code subscription, SendGrid for AI email outreach. No employees. |
| Net Profit | $525K | $2.5M | $8M | $18.7M | 90-91% net margin |
Key Milestones
| Milestone | When | What It Takes |
|---|---|---|
| $100K ARR | Month 6-9 | AI email outreach lands 3-5 enterprise clients. Free tools + SEO drive 50-100 Pro subscribers. |
| $500K ARR | Month 10-14 | Free tools generating organic traffic. 10+ enterprise clients. AI chatbot handling pre-sales qualification. |
| $1M ARR | Month 14-20 | AI outreach at scale (2-3 campaigns/day). 20+ enterprise clients. Professional suite pricing live. Kevin and Joe handling only escalations. |
| $5M ARR | Year 2-3 | Strong SEO compounding. Enterprise deals averaging $36K+/yr. 2,000+ Pro subscribers. AI onboarding new customers without human touch. |
| $10M ARR | Year 3-4 | Marketplace listings (Snowflake, AWS). Partner channel producing deals. AI managing ongoing customer success and renewal conversations. |
| $20M ARR | Year 4-5 | Everything working. 150+ enterprise clients. 5,000+ subscribers. Kevin and Joe may optionally hire 1-2 account managers if deal volume exceeds their capacity. |
What Accelerates the Timeline
- A single large enterprise deal ($100K+/yr) changes the math significantly and validates the enterprise pricing model
- AI email outreach at scale: Autonomous email system (SendGrid + Claude) can run 2-3 targeted campaigns per day across different segments without Kevin/Joe involvement. AI qualifies leads, handles routine responses, and only escalates when a prospect is ready to buy
- Travis Garland's network could fast-track 5-10 enterprise conversations in healthcare ops
- SEO on free tools is the cheapest acquisition channel; takes 6-18 months to compound but drives massive organic traffic
- Listing on Snowflake Marketplace / AWS Data Exchange puts us in front of buyers already shopping for healthcare data
- AI chatbot as pre-sales: The 11-specialist chatbot already handles product questions. Adding "request demo" and "get pricing" flows converts website visitors without Kevin/Joe
- Self-serve enterprise sandbox: Let enterprise buyers test the API for 14 days with no sales call. Reduces sales cycle from 6 months to weeks for self-motivated buyers
What Slows the Timeline
- Enterprise sales cycles (6-12 months) mean Year 1 enterprise revenue depends on conversations started immediately
- Kevin and Joe bandwidth: AI handles outreach and qualification, but closing enterprise deals ($24K+/yr) requires human trust. Kevin and Joe can realistically manage 10-20 active enterprise negotiations at a time
- SOC 2 / BAA requirements are table stakes for many enterprise healthcare buyers and take 3-6 months to obtain
- SEO takes time. Organic traffic from free tools will be minimal for the first 6 months
- AI email deliverability: Cold outreach at scale requires careful domain reputation management. Sending too aggressively too early can hurt deliverability
Why Margins Stay Above 90%
Zero employees. The core data comes from free government APIs (NPPES, openFDA, RxNorm, ClinicalTrials.gov, CMS, DailyMed, NLM) at $0 per call. AI-generated reports cost ~$0.002 each to produce and sell for $2-$10. AI handles sales outreach, customer onboarding, and support. Kevin and Joe handle only escalations and deal closing. Total infrastructure costs (Netlify, Supabase, OpenAI, SendGrid, Claude Code) stay under $100K/yr even at $10M+ revenue. A traditional company at $10M ARR spends $5-$7M on headcount. We spend $15K on AI tooling. That's the structural advantage of building AI-first from day one.
Key audiences by spend level:
- $24K-$120K/yr Enterprise: Pharma medical affairs teams needing FAERS monitoring, health systems benchmarking quality, PBMs validating provider networks, health IT companies embedding our API
- $49-$299/mo Professional: Healthcare consultants, hospital administrators, compliance officers, clinical pharmacists, academic researchers
- $29-$799/mo Developer: Health IT startups, digital health apps, interoperability platforms needing clean gov data access
Competitive Landscape (Detailed)
| Competitor | Annual Cost | What They Offer | Our Advantage | Displacement Strategy |
|---|---|---|---|---|
| Definitive Healthcare | $15K-$50K+ | Provider database, hospital intelligence, claims analytics | Same NPPES provider data at 100x lower cost. AI-powered fuzzy matching they lack. Free tools drive adoption. | Target their SMB customers who can't afford $15K/year. Our Pro at $120/year covers 80% of their use cases. |
| ZoomInfo Healthcare | $15K+ | Provider contact data, intent signals, sales intelligence | We add taxonomy codes, FAERS safety data, clinical trial connections they don't have. Our NPI enrichment is purpose-built. | Position as the "healthcare-specific" alternative. ZoomInfo is generic with a healthcare filter. We're built from the ground up for healthcare data. |
| IQVIA | $50K-$500K+ | Prescribing data (Xponent), market analytics, clinical trial ops | We don't replace IQVIA. We complement them. Our API lets their customers combine IQVIA data with our provider/safety/trial data. | Partner play. Offer our API as an add-on for IQVIA customers who need NPI enrichment, FAERS overlay, or trial recruitment. |
| Melissa Data | $1K-$10K+ | Data quality, address verification, identity verification | We specialize in healthcare provider data. Our Magic Search handles misspellings and nicknames. They're generic data cleaning. | Win on vertical expertise. "Melissa for healthcare" positioning. Our enrichment adds specialty, taxonomy, license data they can't. |
| NPI Lookup sites (npidb.org, etc.) | Free (ad-supported) | Basic NPI search | We have Magic AI search, batch processing, CSV export, data enrichment, API access, 11 specialist chatbot. They have a search box. | SEO + free tools. Once users try Magic Lookup, they won't go back. Convert with credit system. |
| OpenFDA wrappers | Varies | Basic API access to FDA data | We combine 8+ data sources into one API. They wrap one. Our Drug Intelligence Center gives context they lack. | Unified API value prop. "One integration, 20 endpoints, 8+ data sources." |
Gaps We Fill (No Competition)
| Gap | What We Offer | Why Nobody Else Does This |
|---|---|---|
| AI-Powered NPI Fuzzy Search | Magic Lookup: paste messy text, AI parses it, tries 20-30 spelling variations, ranks by confidence | Nobody combines AI parsing with programmatic spelling variations and multi-wave NPPES search. This is unique. |
| Unified Healthcare API | 20 endpoints across 8+ government data sources, one API key, one response format | Each data source has its own API with different auth, formats, and quirks. We normalize everything into one clean REST API. The 7 hospital endpoints fill the gap left by CMS discontinuing Hospital Compare. |
| Cross-API Provider Intelligence | Combine NPPES + FAERS + ClinicalTrials.gov into a single provider profile | Nobody connects provider data with drug safety signals and clinical trial activity. This is novel. |
| ICD-10 + NPI Cross-Reference | Look up a diagnosis code, then find providers who treat that condition in your area | ICD-10 tools and NPI tools exist separately. Nobody connects them. |
| Credit-Based Healthcare Data Access | Pay-as-you-go access to healthcare intelligence starting at $0.01/query | Enterprise competitors charge $15K+ annually. We make the same data accessible to individuals and small teams. |
| Healthcare AI Chatbot with Specialists | 11 domain experts (IQVIA, HIPAA, formulary, drug safety, etc.) that activate based on conversation context | Nobody has a healthcare-specific chatbot with domain-switching specialists backed by curated knowledge bases. |
| Unified Hospital Quality API ONLY US | One API call (hospital/profile) returns data from 6 CMS datasets: star ratings, patient experience, infection rates, complications, readmissions, and Medicare spending. 5,426 hospitals. | CMS publishes each dataset separately with zero join capability. Definitive Healthcare charges $25K+/yr for similar data. Care Compare has no API. We are the only service that combines 6 CMS datasets into a single developer-friendly API call. Nobody else offers this at any price. |
| Cross-Dataset Hospital Intelligence ONLY US | Query infection rates + patient satisfaction + spending + complications for any US hospital in one request. Filter by state, city, zip, facility ID. | CMS discontinued their Hospital Compare API. Their raw data API has no cross-dataset queries, returns all values as strings, and has zero documentation. We are the only affordable, developer-friendly API that joins CMS hospital quality datasets. |
| Hospital Quality + NPI Cross-Reference ROADMAP | Look up a provider, see the quality scores of their affiliated hospital. Look up a hospital, see its physicians. | NPI data and CMS hospital quality live in separate federal systems. Nobody connects them. We will be the first API to cross-reference provider identity with facility quality. |
| Quality-Weighted Clinical Trial Finder ROADMAP | Search clinical trials and see the quality rating, infection rate, and patient satisfaction score of each trial site | ClinicalTrials.gov shows trial locations but nothing about facility quality. No trial finder in the world overlays hospital quality data on trial sites. We will be the first. |
The Cognizant Cloud API (Our Core Product)
The Cognizant Cloud Healthcare Data API is a fully branded, authenticated REST API that companies integrate into their products. It is ours. No upstream branding is visible. All responses come from cognizantcloud.com/api/v1/.
How It Works for Customers
- Sign up at cognizantcloud.com/account (free, 50 credits to start)
- Create an API key at cognizantcloud.com/api-keys (Pro/Ultra required)
- Name and organize keys by project (e.g., "Production", "Staging", "Analytics Pipeline")
- Make API calls with
x-api-keyheader. Each call deducts credits based on the endpoint (1-2 credits per call). - Monitor usage in the API Keys dashboard: calls per endpoint, credits consumed, response times
- Set monthly budget to prevent runaway costs. The system stops deducting when the budget is hit.
- Buy more credits anytime (6 pack sizes from $1 to $1,000) or upgrade subscription tier
API Key Format
Keys follow the format cc_live_ followed by 48 hex characters. Example: cc_live_ceecff8292a9da1d905c31294afbb623ad1fad5f77e998e0
Keys are shown once at creation, then only the prefix is visible (cc_live_ceec...). The full key is hashed with SHA-256 and stored. We never store raw keys.
What Customers See
Every API response includes:
{
"endpoint": "provider/search",
"auth": "authenticated",
"credits_used": 1,
"response_time_ms": 47,
"data": { ... }
}
Headers include: X-Powered-By: Cognizant Cloud API v1, X-Auth: authenticated, X-Credits-Remaining: 498
No upstream API names (NPPES, openFDA, etc.) appear in the response. Customers see only Cognizant Cloud branding.
2. Complete Product Inventory
NPI ProLookup Free
| URL | /npi |
| What it does | Five-tab provider search: Quick Search, Magic Lookup (AI fuzzy search), Batch Lookup, Data Enrichment, and Taxonomy Explorer. Searches the NPPES NPI Registry for providers and organizations. |
| APIs called | https://npiregistry.cms.hhs.gov/api/?version=2.1 (NPPES v2.1) |
| Data fields returned | NPI number, name, credential, type (individual/organization), specialty, taxonomy code, practice address, mailing address, phone, fax, gender, enumeration date, last updated, status, other names |
| Free | All 5 tabs, batch up to 25 records, enrichment up to 25 records, CSV export |
| Pro | Batch up to 500, enrichment up to 500, Deep Search (Magic Boost), Excel export. 5 credits per Magic Boost record. |
| Ultra | Unlimited batch, unlimited enrichment, gpt-5.4 powered features, Excel + Google Sheets export |
| Target audience | Healthcare marketers, hospital credentialing teams, insurance companies, healthcare IT developers, revenue cycle managers |
| Revenue potential | High. NPI lookups are a daily workflow for thousands of professionals. Free tier attracts users; Magic Boost and Enrichment convert to paid. |
Drug Intelligence Center Free
| URL | /drug-checker |
| What it does | Drug safety dashboard combining drug identity (RxNorm), adverse events (FAERS), and recall data (FDA). Enter a drug name and get interactions, adverse events with visual frequency bars, and active recalls. |
| APIs called |
https://rxnav.nlm.nih.gov/REST/rxcui.json (RxNorm drug resolution)https://rxnav.nlm.nih.gov/REST/interaction/interaction.json (interactions)https://api.fda.gov/drug/event.json (FAERS adverse events)https://api.fda.gov/drug/enforcement.json (recalls)
|
| Data fields | RxCUI, drug interactions list, adverse event reaction terms with counts, recall classification (I/II/III), recall reason, recalling firm, status |
| Tiers | Entirely free. No credits required. |
| Target audience | Pharmacists, medical affairs teams, drug safety officers, pharmacy students |
| Revenue potential | Medium-high as a traffic driver. Converts users to platform who then use paid features. |
ICD-10 Code Explorer Free
| URL | /icd10 |
| What it does | Instant search across 70,000+ ICD-10-CM diagnosis codes. Category chips for quick browsing. Extremely fast (sub-20ms API response). |
| API called | https://clinicaltables.nlm.nih.gov/api/icd10cm/v3/search?sf=code,name |
| Data fields | ICD-10 code, description/name, total result count |
| Tiers | Entirely free. |
| Target audience | Medical coders, billing specialists, clinical documentation teams, physicians |
| Revenue potential | High traffic driver. Medical coders look up codes hundreds of times daily. Most competitor tools are ugly and slow. |
Clinical Trial Finder Free
| URL | /trial-finder |
| What it does | Search 400,000+ clinical trials by condition, phase, status, and location. Browse conditions via interactive condition tree. Patient and Clinical view modes with formatted result cards. Cancel button during search. Export to PDF in patient-friendly and clinical formats. Light and dark theme support. |
| API called | https://clinicaltrials.gov/api/v2/studies (v2 API, JSON format) |
| Data fields | NCT ID, title, phase, overall status, sponsor, conditions, interventions, enrollment count, start/completion dates, locations |
| Tiers | Free. Proxied through ct-proxy.js Netlify function to handle CORS. |
| Target audience | Patients, clinical researchers, CROs, pharma pipeline analysts |
| Revenue potential | Medium. Strong traffic driver, especially for patient audiences. Converts to API access for enterprise. |
| Roadmap | Deeper facility info integration with Hospital Quality data. |
FDA Recall Monitor Free
| URL | /recall-monitor |
| What it does | Real-time FDA drug recall tracking with classification badges (Class I/II/III), search by drug name or keyword, voluntary vs. mandated indicators. |
| API called | https://api.fda.gov/drug/enforcement.json |
| Data fields | Recall number, classification (I/II/III), reason for recall, recalling firm, product description, status, voluntary/mandated, distribution pattern, report date, termination date |
| Tiers | Entirely free. |
| Target audience | Pharmacy managers, quality assurance teams, hospital procurement, compliance officers |
| Revenue potential | Medium. Niche but important. Recall monitoring is a compliance requirement for many organizations. |
Recall Command Center Free Credits NEW
| URL | /recall-center |
| What it does | Professional FDA recall monitoring with drug watchlist, response tracking, historical manufacturer analysis, and CSV export. Upgrade path from the free Recall Monitor. |
| Data source | openFDA Drug Enforcement API (public, no API key, CORS-enabled). Updated weekly by FDA. |
| Free features | Live recall feed (100 most recent), search/filter by classification and status, year statistics, classification guide, recall response tracker (localStorage), drug watchlist (up to 5 drugs) |
| Credit-gated |
|
| Pro subscription | Unlimited watchlist (free tier: 5), email alerts for Class I recalls and watchlist matches |
| Cost to us | $0 for all actions. All data is fetched client-side from the free openFDA API. No server resources consumed. |
| Target audience | Pharmacies, hospital pharmacies, compliance officers, pharmacy benefit managers, harm reduction organizations, healthcare consultants |
| Revenue potential | High. Recall monitoring is a compliance requirement for pharmacies and health systems. Professional tools in this space charge $500-$2,000/month. Our freemium model converts through export and analysis features. |
| Relationship | Professional upgrade from Recall Monitor (/recall-monitor). Cross-promotes with DrugWatch Intelligence and Drug Checker. |
DrugWatch Intelligence Free Credits NEW
| URL | /drug-watch |
| What it does | Comprehensive drug safety intelligence. Enter a drug name and see FAERS adverse event reports, active recalls, label warnings, and therapeutic class comparisons. Differs from Drug Checker (drug-drug interactions) by providing deep safety analysis on a single drug. |
| Data sources | openFDA FAERS (adverse events, counts, seriousness), openFDA Drug Labels (boxed warnings, interactions), Cognizant Cloud API proxy (recalls, fallback labels). All free federal APIs. |
| Free features | Top 20 adverse event bar chart, seriousness pie chart, active recalls with classification, boxed warning display, 2-drug class comparison preview |
| Credit-gated |
|
| Cost to us | $0 for all current actions. All data from free openFDA APIs. Future AI safety narrative would cost ~$0.002-0.05 per generation (gated at 25-50 credits for 90-97% margin). |
| Target audience | Pharma medical affairs, pharmacovigilance teams, clinical pharmacists, formulary committees |
| Revenue potential | High. Pharmacovigilance tools cost $10K-$100K/year. Our approach democratizes access with a free tier and converts through class comparison and safety signal features. |
| Relationship | Cross-promotes with Recall Command Center, Clinical Trial Finder, Clinical Code Navigator, and Healthcare Data API. |
Facility Quality Explorer Free
| URL | /hospital-quality |
| What it does | State-level facility explorer: select a state and see all facilities with a summary dashboard. Filterable and sortable card grid (filter by name, city, hospital type, ownership, star rating). Rich facility cards with CMS star ratings, performance indicators, and ER badges. Click-to-expand detail overlay with quality scorecard showing mortality, safety, readmission, patient experience, and timeliness as visual stacked bars. Facility comparison mode for up to 3 facilities side by side. Google Maps links and clickable phone numbers. April 7 upgrade: 5 new tabbed data views in the hospital detail panel (Patient Experience, Infections, Complications, Readmissions, Spending). Data lazy-loads when each tab is clicked and is cached after first load. |
| Data source | CMS Provider Data Catalog API (real-time proxy with 1-hour in-memory cache). Pulls from 6 CMS datasets covering 5,426 US hospitals. Data refreshes quarterly (Jan, Apr, Jul, Oct). No database needed; we proxy CMS, normalize field names, clean "Not Available" values, and join across datasets server-side. |
| Data coverage |
|
| Detail tabs |
|
| Tiers | Entirely free. |
| Target audience | Healthcare consultants, health system administrators, payers evaluating network adequacy, researchers |
| Revenue potential | High. CMS killed their old Hospital Compare API. Definitive Healthcare charges $25K+/year for similar data. Our data is public domain (US government), free for commercial use, with zero additional infrastructure cost. Drives enterprise API interest. |
| Roadmap | Cross-referencing with NPI data. Free and pro tool tiers. Supabase caching for even faster response. |
| Competitive edge | This tool combines data from 6 separate CMS datasets into a single view per hospital. CMS does not offer this. Care Compare does not offer this. No free tool on the internet joins hospital star ratings + patient experience + infection rates + complications + readmissions + spending into one interface. We are the only one. |
Hospital Benchmarker Free Credits NEW
| URL | /hospital-benchmarker |
| What it does | Multi-hospital comparison tool. Select 2-10 hospitals and compare side-by-side across all CMS quality dimensions: star ratings, HCAHPS patient experience, infection SIR scores, complication rates, readmission rates, and Medicare spending ratios. Color-coded best/worst highlighting and national comparison badges. |
| Data sources | CMS Provider Data Catalog API via /api/v1/ proxy. Uses hospital/quality (state loading) and hospital/profile (per-hospital composite). All free government data. |
| Free features | Compare up to 3 hospitals, overview cards with star ratings, summary comparison table (top 3 HCAHPS, top 3 infections, complications, readmissions, MSPB), best/worst highlighting, national comparison badges |
| Credit-gated |
|
| Pro subscription | Value scatter plot (spending vs quality quadrant chart), custom scoring weights, saved comparison sets |
| Cost to us | $0 for all actions. CMS API is free. Profile endpoint fetches 6 datasets in parallel. ~2-3 seconds for a 10-hospital comparison. |
| Target audience | Benefits consultants, employer HR, health plan analysts, hospital administrators, healthcare researchers |
| Revenue potential | Very high. Hospital benchmarking is a core function for health plans and consultants. Definitive Healthcare and Leapfrog charge thousands for this data. Our free-to-start model with credit gating for advanced analysis is highly competitive. |
| Relationship | Complements Facility Quality Explorer (single hospital deep-dive vs multi-hospital comparison). Cross-promotes with NPI ProLookup, Clinical Code Navigator, and Healthcare Data API. |
Healthcare API Explorer Free
| URL | /explorer |
| What it does | Interactive Postman-like API tester with all 20 endpoints. Category tabs, pre-filled examples, request history, formatted JSON responses. Developers can test every API endpoint before integrating. |
| APIs called | All 20 endpoints via /api/v1/?endpoint=... |
| Tiers | Free to explore. Authenticated calls deduct credits per endpoint pricing. |
| Target audience | Health IT developers, integration engineers, technical evaluators |
| Revenue potential | Critical conversion tool. When a developer tries this and likes it, they integrate the API into their product. |
AI Chatbot (11 Specialists) Free
| URL | Every page (floating panel, bottom-right) |
| What it does | 3-tier AI escalation system with 11 specialist modes. Tier 1 (Navigator) handles general inquiries. Tier 2 (Advisor) provides deep technical expertise. Tier 3 (Strategist) offers executive consulting. Specialists auto-activate on keyword detection. |
| API called | /api/chat (site-chat.js) which calls OpenAI gpt-5.4-mini |
| Specialists | IQVIA, Drug Safety, Clinical Pipeline, Formulary, Healthcare AI, HIPAA, Drug Data, CMS/Medicare, Interoperability, Biosimilars, Harm Reduction |
| Features | Live NPI lookups inside chat, Team Mode (2 specialists at once), escalation chimes, animated bot handoffs, express mode, daily limit (500 messages), resize support |
| Tiers | Free for all users. No credit cost. |
| Target audience | All site visitors. Functions as both a sales tool and a support tool. |
| Revenue potential | Indirect. The chatbot converts visitors into users and demonstrates AI capability. Soft conversion after 3-4 exchanges. |
Magic Data Fixer Credits
| URL | Account dashboard (Data Fixer tab) |
| What it does | Accepts messy, unstructured text and returns clean structured data in CSV, JSON, or Markdown table format. Uses AI to detect schema, clean values, normalize formats. |
| API called | /api/magic-data (magic-data.js) which calls OpenAI |
| Models | Free/Pro: gpt-5.4-nano. Ultra: gpt-5.4 (highest quality). |
| Credit costs | Free: up to 500 chars (0 credits). Pro: up to 5,000 chars (10 credits). Ultra: up to 50,000 chars (25 credits). |
| Output formats | CSV, JSON (array of objects), Markdown table |
| Target audience | Data analysts, healthcare operations teams, anyone with messy provider/drug lists |
| Revenue potential | Medium. Sticky feature that keeps users coming back. |
NPI Data Enrichment Credits
| URL | /npi (Data Enrichment tab) |
| What it does | Accepts an array of provider records (name, location, etc.), looks up NPI numbers via NPPES API, appends 30+ enrichment data fields with match confidence scoring. |
| API called | /api/npi-enrich (npi-enrich.js) which calls NPPES v2.1 |
| Fields appended | NPI, full name, credential, type, organization name, specialty, taxonomy code, taxonomy state, taxonomy license, all taxonomies, practice address (line 1, line 2, city, state, zip), practice phone, practice fax, mailing address, gender, enumeration date, last updated, status, other names |
| Credit costs | Pro: 20 credits per batch. Ultra: 50 credits per batch. |
| Free | Up to 25 records |
| Pro | Up to 500 records |
| Ultra | Unlimited records |
| Target audience | Health IT companies, CRM data teams, healthcare marketing agencies, insurance credentialing departments |
| Revenue potential | High. Data enrichment is a large market. Similar to Melissa Data but specifically for healthcare providers. |
Provider Intelligence Credits
| URL | Account dashboard (Provider Intel tab) |
| What it does | Cross-API provider profile that combines NPPES, openFDA FAERS, and ClinicalTrials.gov data. Given an NPI number, returns full provider details, relevant adverse events by specialty, active clinical trials in their area, and peer comparison data. |
| API called | /api/provider-intel (provider-intel.js) which calls NPPES + openFDA + ClinicalTrials.gov in parallel |
| Credit cost | 5 credits per profile |
| Target audience | Pharma sales reps, medical science liaisons, healthcare recruiters, credentialing teams |
| Revenue potential | High. Rich provider profiles are valued by pharma sales teams. |
Healthcare Data API (20 Endpoints) API Key
| Base URL | https://cognizantcloud.com/api/v1/?endpoint=... |
| What it does | Unified REST API wrapping 7+ government APIs into a single authenticated, metered interface. Companies integrate once and get access to provider data, drug intelligence, clinical trials, diagnosis codes, hospital quality (7 endpoints covering 6 CMS datasets), and drug pricing. |
| Auth | x-api-key header with API key (format: cc_live_xxxxxxxxxxxx) |
| Endpoints | 20 total:
|
| Who can use | Pro, Ultra, and God Mode users can create API keys |
| Target audience | Health IT companies, pharma, PBMs, developers building healthcare applications |
| Revenue potential | This is the primary revenue engine. Enterprise API usage at $3K/month average across 500 customers = $18M/year. The 7 hospital endpoints fill the gap left by CMS discontinuing their Hospital Compare API, competing with Definitive Healthcare ($25K+/year). |
| Flagship endpoint | hospital/profile (5 credits) fetches 6 CMS datasets in parallel and returns a complete hospital profile in one API call: star ratings, patient satisfaction summary, infection rates vs national, complication counts, readmission measures, and Medicare spending ratio. No other API in the market returns this data in a single call at any price point. Definitive Healthcare requires a $25K+ annual contract for comparable data. |
FormularyAI Product
| URL | /formulary (landing page) | formulary.cognizantcloud.com (full demo) |
| What it does | AI-powered formulary management system. Parses formulary rules into structured, queryable format. Enables drug coverage lookups, step therapy analysis, and prior authorization guidance. Full demo at the subdomain. |
| Backend | demo-parse.js (/api/demo-parse) for rule parsing. Separate Netlify site for the full demo at formulary.cognizantcloud.com. |
| Target audience | PBMs, health plans, pharmacy directors, formulary committee members, pharma market access teams |
| Revenue potential | Very high. Formulary management is a $500M+ TAM. Enterprise contracts at $50K-$500K/year. |
| Homepage | Added as 7th product card on April 2, 2026. Visible across all 5 audience views with tailored descriptions. |
Cost & Margin Analysis NEW
Every action on the platform has a known cost, credit price, and margin. We never lose money on any transaction. Most actions cost us $0 because they use free federal APIs. The few LLM-powered features are gated at high credit counts to maintain 85%+ margins.
Recall Command Center
| Action | Our Cost | Credits | Revenue | Margin |
|---|---|---|---|---|
| Browse/search recalls | $0 | Free | $0 | Lead gen |
| Drug watchlist (up to 5) | $0 | Free | $0 | Lead gen |
| Recall response tracking | $0 | Free | $0 | Lead gen |
| Historical manufacturer analysis | $0 | 3 | $0.06 | 100% |
| Export to CSV | $0 | 5 | $0.10 | 100% |
| Watchlist >5 drugs (Pro) | $0 | Pro sub | $9.99/mo | 100% |
DrugWatch Intelligence
| Action | Our Cost | Credits | Revenue | Margin |
|---|---|---|---|---|
| FAERS lookup (top 20 events) | $0 | Free | $0 | Lead gen |
| Recall check / basic label | $0 | Free | $0 | Lead gen |
| Therapeutic class comparison | $0 | 10 | $0.20 | 100% |
| Full label intelligence | $0 | 3 | $0.06 | 100% |
| Safety signal analysis | $0 | 10 | $0.20 | 100% |
| PDF export | $0 | 10 | $0.20 | 100% |
| CSV export | $0 | 5 | $0.10 | 100% |
| AI safety narrative (future) | ~$0.002-0.05 | 25-50 | $0.50-1.00 | 90-97% |
Hospital Benchmarker
| Action | Our Cost | Credits | Revenue | Margin |
|---|---|---|---|---|
| Compare up to 3 hospitals | $0 | Free | $0 | Lead gen |
| Compare 4-10 hospitals | $0 | 5 | $0.10 | 100% |
| Full HCAHPS detail (per hospital) | $0 | 2 | $0.04 | 100% |
| Full infection detail (per hospital) | $0 | 2 | $0.04 | 100% |
| PDF comparison report | $0 | 10 | $0.20 | 100% |
| CSV data export | $0 | 5 | $0.10 | 100% |
| Value scatter plot (Pro) | $0 | Pro sub | $9.99/mo | 100% |
Clinical Code Navigator
| Action | Our Cost | Credits | Revenue | Margin |
|---|---|---|---|---|
| ICD-10 search + top 3 per panel | $0 | Free | $0 | Lead gen |
| Full trial list | $0 | 2 | $0.04 | 100% |
| Full drug safety comparison | $0 | 5 | $0.10 | 100% |
| Full provider list | $0 | 3 | $0.06 | 100% |
| Full hospital quality detail | $0 | 3 | $0.06 | 100% |
| Export any panel CSV | $0 | 5 | $0.10 | 100% |
Healthcare Data API (20 Endpoints)
| Endpoint Category | Our Cost | Credits | Revenue | Margin |
|---|---|---|---|---|
| Basic lookups (NPI, ICD-10, NDC) | $0 | 1 | $0.02 | 100% |
| Drug intelligence (interactions, FAERS, labels) | $0 | 2-3 | $0.04-0.06 | 100% |
| Hospital data (quality, HCAHPS, infections, etc.) | $0 | 2-5 | $0.04-0.10 | 100% |
| Hospital profile (6-dataset composite) | $0 | 5 | $0.10 | 100% |
| Clinical trials search | $0 | 2 | $0.04 | 100% |
| AI-powered (Magic Lookup) | ~$0.01-0.03 | 10 | $0.20 | 85-95% |
Cost Risk Summary
ZERO cost risk: Recall Command Center, Hospital Benchmarker, Clinical Code Navigator, Facility Quality Explorer, and all non-AI API endpoints. All data comes from free federal government APIs.
MINIMAL cost risk: DrugWatch Intelligence (AI narrative is future, gated at 25-50 credits) and Provider Intelligence Hub (Magic Lookup at 10 credits).
Rule: We never lose money on any transaction. The cheapest credit action (1 credit = $0.02) is for lookups that cost us $0. The most expensive LLM call (~$0.05) is gated at 25-50 credits ($0.50-1.00), giving 10-20x margin.
3. API Documentation (Internal)
All 20 endpoints are accessed via a single Netlify function (api-v1.js) routed through /api/v1/?endpoint=ENDPOINT_NAME. Authentication is via the x-api-key header. Without an API key, the call still works but returns no metering headers. All responses include X-Auth, X-Credits-Used, X-Credits-Remaining, and X-Response-Time headers. The 7 hospital/* endpoints (added April 7, 2026) proxy the CMS Provider Data Catalog API with real-time data and 1-hour caching.
provider/search 1 credit
Search healthcare providers by name, specialty, location via NPPES.
| Parameter | Required | Description |
|---|---|---|
first_name | No | Provider first name |
last_name | No | Provider last name |
organization_name | No | Organization name (for NPI-2) |
state | No | Two-letter state code |
city | No | City name |
postal_code | No | ZIP code |
taxonomy_description | No | Specialty/taxonomy description |
enumeration_type | No | NPI-1 (individual) or NPI-2 (organization) |
limit | No | Results per page (max 200, default 10) |
Upstream API: https://npiregistry.cms.hhs.gov/api/?version=2.1
# Example request
curl "https://cognizantcloud.com/api/v1/?endpoint=provider/search&last_name=Smith&state=NY&limit=5" \
-H "x-api-key: cc_live_your_key_here"
// Example response (trimmed)
{
"endpoint": "provider/search",
"credits_used": 1,
"auth": "authenticated",
"response_time_ms": 187,
"data": {
"result_count": 5,
"results": [{
"number": "1234567890",
"basic": { "first_name": "JOHN", "last_name": "SMITH", "credential": "MD" },
"taxonomies": [{ "code": "207R00000X", "desc": "Internal Medicine", "primary": true }],
"addresses": [{ "city": "NEW YORK", "state": "NY" }]
}]
}
}
provider/lookup 1 credit
Direct NPI number lookup. Returns the single provider record for that NPI.
| Parameter | Required | Description |
|---|---|---|
npi | Yes | 10-digit NPI number |
Upstream API: https://npiregistry.cms.hhs.gov/api/?version=2.1&number=NPI&limit=1
curl "https://cognizantcloud.com/api/v1/?endpoint=provider/lookup&npi=1234567890" \
-H "x-api-key: cc_live_your_key_here"
drug/interactions 2 credits
Check drug-drug interactions via RxNorm. First resolves the drug name to an RxCUI, then fetches interactions.
| Parameter | Required | Description |
|---|---|---|
drug | Yes | Drug name (brand or generic) |
Upstream APIs:
https://rxnav.nlm.nih.gov/REST/rxcui.json?name=DRUG&search=1 (resolve to RxCUI)
https://rxnav.nlm.nih.gov/REST/interaction/interaction.json?rxcui=RXCUI (get interactions)
curl "https://cognizantcloud.com/api/v1/?endpoint=drug/interactions&drug=metformin" \
-H "x-api-key: cc_live_your_key_here"
drug/label 1 credit
Get FDA-approved drug labeling and prescribing information from openFDA.
| Parameter | Required | Description |
|---|---|---|
drug | Yes | Drug brand name |
limit | No | Number of results (default 1) |
Upstream API: https://api.fda.gov/drug/label.json?search=openfda.brand_name:"DRUG"
curl "https://cognizantcloud.com/api/v1/?endpoint=drug/label&drug=Lipitor" \
-H "x-api-key: cc_live_your_key_here"
drug/adverse-events 2 credits
Search FAERS adverse event reports. Returns individual case safety reports.
| Parameter | Required | Description |
|---|---|---|
drug | Yes | Drug name |
limit | No | Results (max 100, default 10) |
Upstream API: https://api.fda.gov/drug/event.json?search=patient.drug.medicinalproduct:"DRUG"
curl "https://cognizantcloud.com/api/v1/?endpoint=drug/adverse-events&drug=ozempic&limit=5" \
-H "x-api-key: cc_live_your_key_here"
drug/recalls 1 credit
Search FDA drug recall and enforcement actions.
| Parameter | Required | Description |
|---|---|---|
drug | No* | Drug name (searches reason_for_recall and brand_name) |
search | No* | Custom openFDA search string |
limit | No | Results (max 100, default 10) |
*At least one of drug or search should be provided. Without either, searches all recent recalls.
Upstream API: https://api.fda.gov/drug/enforcement.json
curl "https://cognizantcloud.com/api/v1/?endpoint=drug/recalls&drug=metformin&limit=5" \
-H "x-api-key: cc_live_your_key_here"
drug/ndc 1 credit
Look up National Drug Codes (NDC directory).
| Parameter | Required | Description |
|---|---|---|
ndc | No* | Product NDC code |
drug | No* | Brand name search |
limit | No | Results (default 10) |
*At least one of ndc or drug is required.
Upstream API: https://api.fda.gov/drug/ndc.json
curl "https://cognizantcloud.com/api/v1/?endpoint=drug/ndc&drug=Humira" \
-H "x-api-key: cc_live_your_key_here"
drug/rxnorm 1 credit
Resolve drug names to RxNorm identifiers (RxCUI). Returns concept groups, related drug forms, and dosage information.
| Parameter | Required | Description |
|---|---|---|
drug | Yes | Drug name |
Upstream API: https://rxnav.nlm.nih.gov/REST/drugs.json?name=DRUG
curl "https://cognizantcloud.com/api/v1/?endpoint=drug/rxnorm&drug=atorvastatin" \
-H "x-api-key: cc_live_your_key_here"
drug/pricing 2 credits
Get drug pricing data, NDC codes, and package information via openFDA NDC endpoint. Extracts pricing-relevant fields including packaging details, active ingredients, DEA schedule, and marketing category.
| Parameter | Required | Description |
|---|---|---|
drug | No* | Brand name |
ndc | No* | Product NDC code |
limit | No | Results (max 100, default 10) |
*At least one of drug or ndc is required.
Upstream API: https://api.fda.gov/drug/ndc.json
curl "https://cognizantcloud.com/api/v1/?endpoint=drug/pricing&drug=Ozempic" \
-H "x-api-key: cc_live_your_key_here"
trials/search 2 credits
Search clinical trials by condition, intervention, phase, and status.
| Parameter | Required | Description |
|---|---|---|
condition | No | Condition or disease (maps to query.cond) |
intervention | No | Drug or intervention (maps to query.intr) |
status | No | e.g. RECRUITING, COMPLETED (maps to filter.overallStatus) |
phase | No | e.g. PHASE3 (maps to filter.phase) |
limit | No | Results (max 50, default 10) |
Upstream API: https://clinicaltrials.gov/api/v2/studies (JSON format)
curl "https://cognizantcloud.com/api/v1/?endpoint=trials/search&condition=diabetes&status=RECRUITING&limit=3" \
-H "x-api-key: cc_live_your_key_here"
diagnosis/icd10 1 credit
Look up ICD-10 diagnosis codes by keyword. Returns matched codes with descriptions.
| Parameter | Required | Description |
|---|---|---|
query | Yes | Search term (code or description keyword) |
limit | No | Results (max 100, default 10) |
Upstream API: https://clinicaltables.nlm.nih.gov/api/icd10cm/v3/search?sf=code,name&terms=QUERY
curl "https://cognizantcloud.com/api/v1/?endpoint=diagnosis/icd10&query=diabetes&limit=5" \
-H "x-api-key: cc_live_your_key_here"
// Example response
{
"endpoint": "diagnosis/icd10",
"credits_used": 1,
"data": {
"query": "diabetes",
"total_results": 237,
"results": [
{ "code": "E11", "description": "Type 2 diabetes mellitus" },
{ "code": "E10", "description": "Type 1 diabetes mellitus" }
]
}
}
7 new endpoints replacing the former single
hospital/quality endpoint. All proxy the CMS Provider Data Catalog API in real-time with 1-hour in-memory caching. No database required. We normalize field names, cast string-typed numbers, clean "Not Available" values, and join across datasets server-side. The hospital/profile endpoint is the flagship: it fetches from 6 CMS datasets in parallel and returns a unified hospital profile in one call. Data covers 5,426 US hospitals and refreshes quarterly (Jan, Apr, Jul, Oct).
hospital/hcahps 1 credit
Patient experience survey scores (HCAHPS). Returns 68 measures per hospital covering nurse communication, doctor communication, responsiveness, pain management, medication communication, discharge information, care transition, cleanliness, quietness, and overall rating.
| Parameter | Required | Description |
|---|---|---|
provider_id | No* | CMS 6-digit provider ID (exact match) |
state | No* | Two-letter state code |
hospital_name | No* | Facility name (CONTAINS match, case-insensitive) |
measure | No | HCAHPS measure ID filter |
limit | No | Results (max 1000, default 10) |
*At least one of provider_id, state, or hospital_name is required.
Upstream: CMS Provider Data Catalog (HCAHPS dataset)
curl "https://cognizantcloud.com/api/v1/?endpoint=hospital/hcahps&provider_id=050454&limit=5" \
-H "x-api-key: cc_live_your_key_here"
hospital/infections 1 credit
Healthcare-associated infection rates. Returns 36 measures per hospital with Standardized Infection Ratio (SIR) scores for CLABSI (central line), CAUTI (catheter), SSI (surgical site for colon and hysterectomy), MRSA bacteremia, and C.diff (CDI).
| Parameter | Required | Description |
|---|---|---|
provider_id | No* | CMS 6-digit provider ID |
state | No* | Two-letter state code |
hospital_name | No* | Facility name (CONTAINS match) |
measure | No | Infection type filter (e.g., CLABSI, MRSA) |
limit | No | Results (max 1000, default 10) |
*At least one of provider_id, state, or hospital_name is required.
Upstream: CMS Provider Data Catalog (Healthcare-Associated Infections dataset)
curl "https://cognizantcloud.com/api/v1/?endpoint=hospital/infections&state=CA&limit=5" \
-H "x-api-key: cc_live_your_key_here"
hospital/complications 1 credit
Complication and mortality rates. Returns 20 measures per hospital covering death rates and complication rates for heart attack, heart failure, pneumonia, COPD, stroke, and hip/knee replacement, compared against national benchmarks.
| Parameter | Required | Description |
|---|---|---|
provider_id | No* | CMS 6-digit provider ID |
state | No* | Two-letter state code |
hospital_name | No* | Facility name (CONTAINS match) |
measure | No | Complication/mortality measure filter |
limit | No | Results (max 1000, default 10) |
*At least one of provider_id, state, or hospital_name is required.
Upstream: CMS Provider Data Catalog (Complications and Deaths dataset)
curl "https://cognizantcloud.com/api/v1/?endpoint=hospital/complications&hospital_name=Mayo&limit=5" \
-H "x-api-key: cc_live_your_key_here"
hospital/readmissions 1 credit
Unplanned hospital visit and readmission rates. Returns 14 measures per hospital covering excess readmission ratios for heart attack, heart failure, pneumonia, COPD, hip/knee replacement, and hospital-wide all-cause readmissions.
| Parameter | Required | Description |
|---|---|---|
provider_id | No* | CMS 6-digit provider ID |
state | No* | Two-letter state code |
hospital_name | No* | Facility name (CONTAINS match) |
measure | No | Readmission measure filter |
limit | No | Results (max 1000, default 10) |
*At least one of provider_id, state, or hospital_name is required.
Upstream: CMS Provider Data Catalog (Unplanned Hospital Visits dataset)
curl "https://cognizantcloud.com/api/v1/?endpoint=hospital/readmissions&provider_id=050454" \
-H "x-api-key: cc_live_your_key_here"
hospital/spending 1 credit
Medicare spending per beneficiary. Returns the spending ratio for a hospital compared to the national median, broken down by claim type (inpatient, outpatient, SNF, home health, hospice, DME, carrier, etc.) and time period (during index stay, 1-30 days prior, 1-30 days after).
| Parameter | Required | Description |
|---|---|---|
provider_id | No* | CMS 6-digit provider ID |
state | No* | Two-letter state code |
hospital_name | No* | Facility name (CONTAINS match) |
limit | No | Results (max 1000, default 10) |
*At least one of provider_id, state, or hospital_name is required.
Upstream: CMS Provider Data Catalog (Medicare Spending Per Beneficiary dataset)
curl "https://cognizantcloud.com/api/v1/?endpoint=hospital/spending&state=NY&limit=5" \
-H "x-api-key: cc_live_your_key_here"
hospital/timely-care 1 credit
Timely and effective care measures. Returns process-of-care metrics including ED wait times, blood clot prevention, immunization rates, and other clinical quality measures that reflect how quickly and effectively patients receive care.
| Parameter | Required | Description |
|---|---|---|
provider_id | No* | CMS 6-digit provider ID |
state | No* | Two-letter state code |
hospital_name | No* | Facility name (CONTAINS match) |
measure | No | Timeliness measure filter |
limit | No | Results (max 1000, default 10) |
*At least one of provider_id, state, or hospital_name is required.
Upstream: CMS Provider Data Catalog (Timely and Effective Care dataset)
curl "https://cognizantcloud.com/api/v1/?endpoint=hospital/timely-care&state=TX&limit=5" \
-H "x-api-key: cc_live_your_key_here"
hospital/profile 5 credits
Flagship endpoint. Returns a complete hospital profile by fetching from all 6 CMS datasets in parallel and joining the results into a single unified response. Includes general info, star ratings, HCAHPS scores, infection rates, complication/mortality rates, readmission rates, and Medicare spending. This is the only endpoint that provides cross-dataset joins in one API call.
| Parameter | Required | Description |
|---|---|---|
provider_id | Yes | CMS 6-digit provider ID (exact match, required for cross-dataset join) |
Upstream: 6 CMS Provider Data Catalog datasets fetched in parallel
curl "https://cognizantcloud.com/api/v1/?endpoint=hospital/profile&provider_id=050454" \
-H "x-api-key: cc_live_your_key_here"
// Response structure (trimmed)
{
"endpoint": "hospital/profile",
"provider_id": "050454",
"hospital": {
"name": "CEDARS-SINAI MEDICAL CENTER",
"state": "CA",
"overall_rating": 3,
"hcahps": { ... },
"infections": { ... },
"complications": { ... },
"readmissions": { ... },
"spending": { ... }
}
}
4. Infrastructure
| Service | Purpose | Status |
|---|---|---|
| Netlify | Hosting + 19 serverless functions | Live |
| Supabase | Database (5 tables) + Auth + RLS | Live |
| Stripe | Payments (8 products, webhook) | Live |
| Resend | Branded transactional email | Live |
| OpenAI | AI features (gpt-5.4 family) | Live |
| GoDaddy | Domain DNS | Live |
Netlify
Dashboard: app.netlify.com/projects/cognizant-cloud
Account: kweller@diagnosticsolutionsgroup.com (team: Cognizant Cloud)
Site ID: 572137ea-4eca-4318-ad09-a0df1aaa76a4
Deploy Command
NETLIFY_AUTH_TOKEN=nfp_B8yRMEsz3b2b8EuUQis6yEaipRHnTWFN162d \
npx netlify deploy --prod --dir=. \
--site 572137ea-4eca-4318-ad09-a0df1aaa76a4 \
--no-build
Add --skip-functions-cache when function code has changed.
Netlify Functions (19 total)
| Function | Purpose |
|---|---|
auth.js | User authentication (signup, login, refresh, reset, user) |
auth-confirm.js | Email confirmation redirect handler |
account.js | User profile, usage history, admin stats, Stripe billing portal |
api-keys.js | API key management (create, list, revoke, update) |
api-v1.js | Unified API v1 (all 20 endpoints, including 7 hospital/* CMS endpoints) |
billing.js | Budget controls, spending settings, auto-refill |
ct-proxy.js | ClinicalTrials.gov CORS proxy |
demo-parse.js | Demo data parser for interactive demos |
magic-data.js | Magic Data Fixer (messy text to structured data) |
npi-csv.js | NPI CSV batch processing |
npi-enrich.js | NPI Data Enrichment engine |
npi-lookup.js | NPI lookup with nickname resolution |
npi-smart.js | Magic Search engine v2 (3-wave fuzzy matching) |
provider-intel.js | Cross-API provider intelligence profiles |
site-chat.js | AI chatbot (3 tiers, 11 specialists) |
stripe-checkout.js | Stripe checkout session creation |
stripe-webhook.js | Stripe event handler (payments, subscriptions) |
guide-bot.js | Admin guide AI assistant (GPT-5.4 full model, founder-only) |
keep-alive.js | Supabase keep-alive (Netlify scheduled function, runs daily). Prevents Free tier auto-pause after 7 days of inactivity. Remove when upgrading to Supabase Pro ($25/mo). |
Clean URL Routes (netlify.toml)
All 19 functions have clean URL routes configured in netlify.toml. Customer-facing code uses /api/xxx paths. The raw /.netlify/functions/ paths still work for backward compatibility.
| Clean URL | Function | Purpose |
|---|---|---|
/api/chat | site-chat.js | Customer chatbot |
/api/magic-data | magic-data.js | Data Fixer |
/api/auth | auth.js | Login/signup/refresh |
/api/account | account.js | Profile/usage/admin |
/api/billing | billing.js | Budget controls |
/api/checkout | stripe-checkout.js | Stripe checkout |
/api/webhook | stripe-webhook.js | Stripe events |
/api/keys | api-keys.js | API key management |
/api/npi-lookup | npi-lookup.js | NPI search |
/api/npi-smart | npi-smart.js | Magic Search |
/api/npi-csv | npi-csv.js | Batch CSV |
/api/npi-enrich | npi-enrich.js | Enrichment |
/api/provider-intel | provider-intel.js | Provider profiles |
/api/ct-proxy | ct-proxy.js | Trials proxy |
/api/demo-parse | demo-parse.js | FormularyAI demo |
/api/guide-bot | guide-bot.js | Admin guide AI |
/api/v1/* | api-v1.js | Healthcare Data API (20 endpoints) |
/api/v1/* splat route. 44 endpoint references updated across 15 files. All redirects use status = 200 (transparent proxy). The auth-confirm.js function uses /auth/confirm (not /api/) since it handles browser redirects, not API calls.Environment Variables (Netlify)
| Variable | Purpose |
|---|---|
OPENAI_API_KEY | For chatbot, Magic Data Fixer, NPI Smart Search, and Guide Bot |
SUPABASE_URL | Supabase project URL |
SUPABASE_ANON_KEY | Supabase anonymous key (public-facing, RLS enforced) |
SUPABASE_DB_PASSWORD | Database password for direct connections |
STRIPE_SECRET_KEY | Stripe secret key for server-side operations |
STRIPE_PUBLISHABLE_KEY | Stripe publishable key for client-side checkout |
STRIPE_WEBHOOK_SECRET | Webhook signature verification secret |
Supabase
Dashboard: supabase.com/dashboard
Account: kweller@diagnosticsolutionsgroup.com
Tier: Free (auto-pauses after 7 days of inactivity)
netlify/functions/keep-alive.js runs daily as a Netlify scheduled function. It pings Supabase with a lightweight query to prevent the Free tier from auto-pausing the database after 7 days of inactivity. This function should be removed when upgrading to Supabase Pro ($25/mo), which does not auto-pause.
Database Tables
users
| Column | Type | Notes |
|---|---|---|
id | uuid (PK) | References auth.users.id |
email | text (unique) | User email |
first_name | text | From signup metadata |
last_name | text | From signup metadata |
subscription_tier | text | free, pro, ultra, god |
subscription_status | text | none, active, past_due, canceled |
credits | integer | Current credit balance |
stripe_customer_id | text | Stripe customer ID (set after first purchase) |
monthly_budget | integer | Monthly credit budget (0 = unlimited) |
monthly_spent | integer | Credits spent this month |
auto_refill_enabled | boolean | Auto-buy credits when low |
auto_refill_threshold | integer | Trigger when credits drop below this |
auto_refill_amount | text | Which credit pack to auto-purchase |
created_at | timestamptz | Account creation |
updated_at | timestamptz | Last profile update |
usage_log
| Column | Type | Notes |
|---|---|---|
id | uuid (PK) | Auto-generated |
user_id | uuid (FK) | References users.id |
tool | text | Tool name (e.g., magic_data, api_provider/search) |
credits_used | integer | Credits deducted |
created_at | timestamptz | Usage timestamp |
credit_purchases
| Column | Type | Notes |
|---|---|---|
id | uuid (PK) | Auto-generated |
user_id | uuid (FK) | References users.id |
stripe_session_id | text | Stripe checkout session ID |
amount | integer | Credits purchased |
status | text | completed |
created_at | timestamptz | Purchase timestamp |
api_keys
| Column | Type | Notes |
|---|---|---|
id | uuid (PK) | Auto-generated |
user_id | uuid (FK) | References users.id |
key_hash | text | SHA-256 hash of the API key (never store raw) |
key_prefix | text | First 12 chars + ... for display |
name | text | User-assigned key name |
project | text | User-assigned project label |
rate_limit | integer | Calls per day (Pro: 100, Ultra/God: 1000) |
monthly_budget | integer | Per-key monthly credit budget |
monthly_used | integer | Credits used this month on this key |
is_active | boolean | False when revoked |
last_used_at | timestamptz | Last API call timestamp |
created_at | timestamptz | Key creation timestamp |
api_key_usage
| Column | Type | Notes |
|---|---|---|
id | uuid (PK) | Auto-generated |
key_id | uuid (FK) | References api_keys.id |
endpoint | text | Which API endpoint was called |
credits_used | integer | Credits consumed |
response_time_ms | integer | API response time in ms |
created_at | timestamptz | Call timestamp |
Database Schema Diagram
Database Trigger: handle_new_user
When a new user signs up via Supabase Auth, this trigger automatically creates a row in the users table. It reads first_name and last_name from auth metadata. If the email matches a founder address (kweller@diagnosticsolutionsgroup.com or jscrocco@diagnosticsolutionsgroup.com), it sets subscription_tier to god and credits to 999999999. Otherwise, it sets tier to free and credits to 50.
RPC Function: deduct_credits
Called by the API middleware to atomically deduct credits from a user's balance and log the usage. Takes p_user_id, p_amount, and p_tool parameters.
Stripe
Dashboard: dashboard.stripe.com
Products and Price IDs (8 total)
| Product | Price | Type | Price ID |
|---|---|---|---|
| Pro Subscription | $9.99/mo | Recurring | price_1THRx20TdTv0aNkEOfDiGF9J |
| Ultra Subscription | $29.99/mo | Recurring | price_1THRx20TdTv0aNkEOKTETu2j |
| Credit Pack (100) | $1.00 | One-time | price_1THRx20TdTv0aNkEH68ah6gJ |
| Credit Pack (500) | $5.00 | One-time | price_1THV6r0TdTv0aNkEVK0P5HIM |
| Credit Pack (2,500) | $20.00 | One-time | price_1THV6t0TdTv0aNkEOTRaIFm4 |
| Credit Pack (15,000) | $100.00 | One-time | price_1THV6w0TdTv0aNkEiKnaxr9g |
| Credit Pack (100,000) | $500.00 | One-time | price_1THXKM0TdTv0aNkExWOTnt1y |
| Credit Pack (250,000) | $1,000.00 | One-time | price_1THXKM0TdTv0aNkEfYXYP9fA |
Webhook Events Handled
| Event | Handler | Action |
|---|---|---|
checkout.session.completed | handleCheckoutCompleted | Find/create user, read line items, add credits or activate subscription |
customer.subscription.updated | handleSubscriptionUpdated | Update subscription status (active, past_due, canceled) |
customer.subscription.deleted | handleSubscriptionDeleted | Reset to free tier, set status to canceled |
Checkout Flow
- User clicks "Subscribe" or "Buy Credits" on /pricing
- Frontend checks localStorage for auth token. If not logged in, redirects to /account?signup=true&plan=PLAN
- Frontend POSTs to
/api/checkout(stripe-checkout.js) with{ plan, email } - Function creates a Stripe Checkout Session with
ui_mode: 'embedded_page'and returns aclientSecret - Frontend loads Stripe.js, calls
stripe.initEmbeddedCheckout({ clientSecret }), and mounts the payment form in a modal overlay. The user stays on cognizantcloud.com throughout the purchase. - On success, Stripe redirects to
/account?checkout=success&session_id=SESSION_ID - Stripe fires
checkout.session.completedwebhook to/api/webhook(stripe-webhook.js) - Webhook handler finds or creates the user in Supabase and adds credits or activates subscription
Resend (Email)
Branded transactional emails come from noreply@cognizantcloud.com with the dark theme branding. DKIM + SPF verified for high deliverability. Supabase Auth is configured to route confirmation and password reset emails through Resend rather than Supabase's default sender.
GoDaddy DNS
| Type | Name | Value | Purpose |
|---|---|---|---|
| A | @ | 75.2.60.5 | Root domain to Netlify |
| CNAME | www | cognizant-cloud.netlify.app | WWW redirect |
| CNAME | formulary | formulary-ai.netlify.app | FormularyAI subdomain |
| MX | @ | aspmx.l.google.com (+ alts) | Google Workspace email |
OpenAI
| Feature | Model | Approx Cost per Call |
|---|---|---|
| Chatbot (all tiers) | gpt-5.4-mini | ~$0.002 |
| Magic Data Fixer (Free/Pro) | gpt-5.4-nano | ~$0.001 |
| Magic Data Fixer (Ultra) | gpt-5.4 | ~$0.03 |
| Guide Bot (admin guide) | gpt-5.4 | ~$0.03 |
| Bot avatar images | gpt-image-1.5 | One-time generation |
Authentication Flow
- Signup: User enters email + password on /account. Frontend POSTs to
/api/auth(auth.js) withaction: 'signup'. - Supabase Auth: Creates an auth.users record and sends a confirmation email (via Resend).
- DB Trigger:
handle_new_usertrigger fires, creating ausersrow with appropriate tier and credits. - Email Confirmation: User clicks the link. Supabase redirects to
/auth/confirmwhich is handled byauth-confirm.js. The function extracts the access token from the hash and redirects to/account?verified=true. - Login: User enters credentials. Frontend POSTs
action: 'login'. Supabase returns JWT access_token and refresh_token. - Storage: Tokens stored in localStorage:
cc_token(access),cc_refresh(refresh),cc_email(email). - Nav Update:
auth-nav.jsruns on every page. Ifcc_tokenexists in localStorage, it swaps the "Sign In" link to "My Account". - API Calls: Authenticated requests include
Authorization: Bearer TOKENheader. - Token Refresh: When token expires, frontend POSTs
action: 'refresh'with the refresh_token. - Auto-Refresh (NEW):
js/auth-utils.jschecks JWT expiry every 5 minutes. When less than 10 minutes remain, it automatically refreshes the token. On successful refresh, a subtle toast appears. On full expiry, a warning toast shows and the user is redirected to/account. - Email Memory (NEW): "Remember my email" checkbox on the login form. When checked, saves the email to
localStoragekeycc_remembered_email. Pre-fills on return visits. Clears on explicit logout.
Auth Improvements (April 2, 2026)
js/auth-utils.js is a reusable utility module that any page can include. It provides:
- Session refresh:
setIntervalevery 5 minutes decodes the JWT, checksexpfield, and calls/api/authwithaction: 'refresh'when needed. - Email memory: Reads/writes
cc_remembered_emailin localStorage. The login form checkbox triggers the save. - Toast notifications: Subtle, non-blocking toasts for session refresh events (success, warning, error).
cc_token (access JWT), cc_refresh (refresh token), cc_email (current user email), cc_remembered_email (persistent email memory).Credit System
- Purchase: User buys credits via Stripe checkout (subscription or credit pack).
- Webhook: Stripe fires
checkout.session.completed. Webhook handler reads line items, maps the price ID to a credit amount using thePRICE_TIERSlookup table, and updates the user's credit balance in Supabase. - Logging: A
credit_purchasesrow is inserted for every purchase. - Deduction: When a user consumes a premium feature, the backend calls the
deduct_creditsRPC function, which atomically decrementsusers.creditsand inserts ausage_logrow. - Checking: Before allowing a premium operation, the backend checks if the user has sufficient credits. If not, it returns HTTP 402 with the credits_remaining and credits_required.
- Non-expiring: Credits never expire. Subscription credits are added monthly and stack with purchased credit packs.
API Key System
- Creation: User (Pro, Ultra, or God) calls
/api/keys(api-keys.js) withaction: 'create'. A 24-byte random key is generated with prefixcc_live_. The raw key is shown once; only the SHA-256 hash is stored. - Format:
cc_live_+ 48 hex characters (e.g.,cc_live_a1b2c3d4e5f6...) - Authentication: On each API call, the provided key is hashed and looked up in
api_keystable. If found andis_activeis true, the request is authenticated. - Metering: After a successful API call, three parallel operations run: credit deduction, usage logging (
api_key_usagetable), andlast_used_atupdate. These are fire-and-forget so metering failures do not break the API response. - Rate Limits: Pro keys get 100 calls/day. Ultra/God keys get 1,000 calls/day.
- Revocation: Setting
is_active = falseimmediately invalidates the key.
5. Pricing Deep Dive
Subscription Tiers
| Tier | Price | Credits/Month | Batch Limit | Enrichment Limit | Data Fixer Limit | AI Model | API Keys |
|---|---|---|---|---|---|---|---|
| Free | $0 | 50 welcome | 25 | 25 records | 500 chars | gpt-5.4-nano | No |
| Pro | $9.99/mo | 500 | 500 | 500 records | 5,000 chars | gpt-5.4-nano | Yes (100/day) |
| Ultra | $29.99/mo | 2,000 | Unlimited | Unlimited | 50,000 chars | gpt-5.4 | Yes (1,000/day) |
| God Mode | N/A | 999,999,999 | Unlimited | Unlimited | 50,000 chars | gpt-5.4 | Yes (1,000/day) |
Credit Packs (one-time, never expire)
| Pack | Price | Per Credit | Savings | Label |
|---|---|---|---|---|
| 100 | $1.00 | $0.0100 | Baseline | |
| 500 | $5.00 | $0.0100 | Baseline | |
| 2,500 | $20.00 | $0.0080 | 20% | |
| 15,000 | $100.00 | $0.0067 | 33% | Popular |
| 100,000 | $500.00 | $0.0050 | 50% | High Value |
| 250,000 | $1,000.00 | $0.0040 | 60% | Enterprise |
Credit Costs per Feature
| Feature | Credits |
|---|---|
| Magic Boost (Deep Search per record) | 5 |
| Data Fixer Pro (per use) | 10 |
| Data Fixer Ultra (per use) | 25 |
| Enrichment Pro (per batch) | 20 |
| Enrichment Ultra (per batch) | 50 |
| Provider Intelligence (per profile) | 5 |
| API: provider/search | 1 |
| API: provider/lookup | 1 |
| API: drug/interactions | 2 |
| API: drug/label | 1 |
| API: drug/adverse-events | 2 |
| API: drug/recalls | 1 |
| API: drug/ndc | 1 |
| API: drug/rxnorm | 1 |
| API: drug/pricing | 2 |
| API: trials/search | 2 |
| API: diagnosis/icd10 | 1 |
| API: hospital/quality | 2 |
Revenue vs API Cost Analysis
| Product | Our Revenue (per use at $0.01/credit) | Our API Cost | Gross Margin |
|---|---|---|---|
| API call (1-credit endpoint) | $0.01 | $0.00 | ~100% |
| API call (2-credit endpoint) | $0.02 | $0.00 | ~100% |
| Magic Data Fixer (Pro) | $0.10 | ~$0.001 (gpt-5.4-nano) | ~99% |
| Magic Data Fixer (Ultra) | $0.25 | ~$0.03 (gpt-5.4) | ~88% |
| Deep Search | $0.05 | $0.00 | ~100% |
| Enrichment Pro | $0.20 | $0.00 | ~100% |
| Chatbot (per message) | $0.00 (free) | ~$0.002 (gpt-5.4-mini) | N/A (marketing cost) |
Blended gross margin: 90-95%. Competitors (Definitive Healthcare, ZoomInfo, IQVIA) charge $15K-$50K/year. We serve the long tail at 100x lower price points with equivalent or better margins because our data sources are free.
6. User Management
How Signup Works
- User fills out the signup form on
/account(email, password, optional first/last name). - Frontend POSTs to
/.netlify/functions/authwithaction: 'signup'. - Supabase Auth creates an
auth.usersrecord and sends a confirmation email via Resend. - The
handle_new_usertrigger fires on theauth.usersinsert, creating ausersrow. - The trigger reads
raw_user_meta_data->'first_name'and'last_name'from the auth record. - The trigger checks the email against the founder list. If a match, sets tier to
godand credits to999999999.
Founder Detection
Two emails are hardcoded as founder accounts in both the database trigger and the backend functions:
const FOUNDER_EMAILS = [
'jscrocco@diagnosticsolutionsgroup.com',
'kweller@diagnosticsolutionsgroup.com'
];
These addresses appear in auth.js and account.js. The trigger in Supabase has its own copy. Founders get:
- Subscription tier set to
god - Credits set to 999,999,999
is_admin: truereturned from the profile API- Access to the Admin Dashboard in the account sidebar
- Visual "God Mode" badge and golden effects in the dashboard UI
God Mode Features
- Admin Dashboard: Shows total users, breakdown by tier (free/pro/ultra/god), total credits consumed, total credits purchased, and per-tool usage breakdown.
- Toggle View: A sidebar option to temporarily hide the admin section (and restore it).
- Unlimited everything: No batch limits, no enrichment limits, maximum data fixer capacity, API key creation with 1,000/day rate limit.
- Credits never run out: 999,999,999 initial balance ensures effectively unlimited usage.
How to View Users in Supabase
- Go to supabase.com/dashboard
- Select your project
- Navigate to Table Editor in the left sidebar
- Click
userstable - You can filter, sort, and search by any column
How to Manually Adjust Credits/Tier
-- Add 1000 credits to a user
UPDATE users
SET credits = credits + 1000,
updated_at = now()
WHERE email = 'user@example.com';
-- Upgrade a user to Pro
UPDATE users
SET subscription_tier = 'pro',
subscription_status = 'active',
updated_at = now()
WHERE email = 'user@example.com';
-- Grant God Mode to someone
UPDATE users
SET subscription_tier = 'god',
credits = 999999999,
updated_at = now()
WHERE email = 'user@example.com';
7. Code Architecture
File Map
HTML Pages (26+)
| File | Route | Purpose |
|---|---|---|
index.html | / | Homepage with hero, 7 products (5 audience views), capabilities, contact |
npi.html | /npi | NPI ProLookup (5 tabs, smooth taxonomy transitions) |
drug-checker.html | /drug-checker | Drug Intelligence Center (breadcrumb nav) |
icd10.html | /icd10 | ICD-10 Code Explorer (breadcrumb nav) |
trial-finder.html | /trial-finder | Clinical Trial Finder (condition tree, patient/clinical views, PDF export, cancel button) |
recall-monitor.html | /recall-monitor | FDA Recall Monitor (breadcrumb nav) |
recall-center.html | /recall-center | Recall Command Center (watchlist, response tracking, CSV export, manufacturer analysis) |
drug-watch.html | /drug-watch | DrugWatch Intelligence (FAERS analysis, class comparison, label intel, safety signals) |
hospital-quality.html | /hospital-quality | Facility Quality Explorer (state explorer, filterable grid, detail overlays, comparison mode) |
hospital-benchmarker.html | /hospital-benchmarker | Hospital Benchmarker (multi-hospital comparison, HCAHPS/infection detail, scatter plot) |
code-navigator.html | /code-navigator | Clinical Code Navigator (ICD-10 to trials, drugs, providers, hospitals cross-reference) |
explorer.html | /explorer | Healthcare API Explorer (breadcrumb nav) |
tools.html | /tools | Tools hub page (audience pills for filtering) |
tools-advanced.html | /tools-advanced | Advanced tools listing |
pricing.html | /pricing | Pricing page (tiers + credit packs) |
account.html | /account | Auth + dashboard (Magic Data Fixer Pro UI, session refresh, email memory) |
api-docs.html | /api-docs | API docs (try-it forms, multi-language examples, error codes, schemas) |
api-keys.html | /api-keys | API key management (per-key stats, sparklines, budget controls) |
academy.html | /academy | Cloud Academy SPA (14 sections, sidebar nav, progress tracking) |
demos.html | /demos | Interactive LLM demos |
formulary.html | /formulary | FormularyAI landing page |
data-sources.html | /data-sources | Data source attribution |
legal.html | /legal | Privacy, terms, HIPAA notice, disclaimers |
admin-guide.html | /admin-guide | This page (internal admin docs + GPT-5.4 guide bot) |
for-providers.html | /for-providers | New Audience page for healthcare providers |
for-pharma.html | /for-pharma | New Audience page for pharma companies |
for-developers.html | /for-developers | New Audience page for developers |
for-marketers.html | /for-marketers | New Audience page for marketing agencies |
trialpulse.html | /trialpulse | TrialPulse product page |
drugscope.html | /drugscope | DrugScope product page |
formularyedge.html | /formularyedge | FormularyEdge product page |
blog/index.html | /blog | Blog index + 16 posts (2024-2026) |
JavaScript Files
| File | Purpose |
|---|---|
js/auth-nav.js | Swaps "Sign In" to "My Account" when logged in. Handles Supabase hash redirects. |
js/auth-utils.js | New Session auto-refresh (5-min check, auto-refresh when <10min remain), login email memory (localStorage save/restore), toast notifications. Reusable utility for any page. |
js/chatbot.js | 3-tier chatbot UI: floating panel, bot personas, escalation, specialist activation, Team Mode |
js/nav.js | Universal nav: generates the entire header on all 44 pages (single source of truth). Includes theme toggle (dark/light), active page highlighting, blog link, and auth-aware sign-in/account link. All CSS classes use cc- prefix. |
css/nav-fix.css | Loads first in <head>, hides old static headers instantly, sets scrollbar-gutter: stable and 8px scrollbar standardization to prevent nav shift. |
js/theme.js | Dark/light mode toggle (legacy; nav.js now handles theme toggle internally on most pages) |
js/admin.js | Admin dashboard functionality |
js/signup.js | Signup form handling |
js/feedback.js | User feedback collection |
js/particles.js | Background particle effects |
js/tools.js | Tools page functionality |
js/solutions.js | Solutions page functionality |
js/ai-content.js | AI-generated content handling |
CSS Files
| File | Purpose |
|---|---|
css/styles.css | Main stylesheet (homepage + shared) |
css/theme.css | CSS custom properties for dark/light theme system |
css/tools.css | Tools page styles |
css/demos.css | Demos page styles |
css/formulary.css | FormularyAI landing page styles |
How the Chatbot Works
Architecture
- Frontend:
js/chatbot.jscreates a floating panel (IIFE, no dependencies). Three bot personas (Navigator, Advisor, Strategist) with distinct colors, avatars, and greetings. - Backend:
netlify/functions/site-chat.js(clean URL:/api/chat) processes messages. Builds a system prompt from shared knowledge blocks plus tier-specific context plus any active specialist knowledge. Updated April 2, 2026 with full product catalog, all pricing, API details, and audience routing across all 11 specialists. - Model: gpt-5.4-mini for all tiers.
- Daily limit: 500 messages per session (tracked in localStorage).
3-Tier Escalation
| Tier | Name | Color | Role |
|---|---|---|---|
| 1 | Navigator | Teal (#0d9488) | Friendly first contact. Handles general inquiries, product questions, basic navigation. |
| 2 | Advisor | Indigo (#6366f1) | Deep technical expertise. PBM tech, pharma data systems, IQVIA, FDA APIs. |
| 3 | Strategist | Amber (#f59e0b) | Executive consulting. ROI frameworks, implementation planning, competitive analysis. |
11 Specialists
Specialists activate automatically when keywords in the user's message match their trigger lists. Up to 2 specialists can be active at once (Team Mode). Each specialist injects domain-specific knowledge into the system prompt.
| # | Specialist | Key | Color | Trigger Keywords (sample) |
|---|---|---|---|---|
| 1 | IQVIA Specialist | iqvia | Blue | iqvia, xponent, plantrak, onekey, formulary impact analyzer |
| 2 | Drug Safety | drug-safety | Red | faers, adverse event, pharmacovigilance, safety signal, drug recall |
| 3 | Clinical Pipeline | clinical-pipeline | Purple | clinical trial, drug pipeline, trial phase, clinicaltrials.gov |
| 4 | Formulary | formulary | Teal | formulary, pbm, prior authorization, step therapy, p&t committee |
| 5 | Healthcare AI | healthcare-ai | Cyan | healthcare ai, machine learning, clinical decision support, llm |
| 6 | HIPAA | hipaa | Gold | hipaa, phi, compliance, data privacy, baa, hitrust |
| 7 | Drug Data | drug-data | Emerald | rxnorm, ndc, drug classification, atc code, dailymed |
| 8 | CMS/Medicare | cms-medicare | Violet | medicare, part d, star rating, inflation reduction act, 340b |
| 9 | Interoperability | interoperability | Orange | fhir, hl7, smart on fhir, da vinci, interoperability |
| 10 | Biosimilars | biosimilars | Pink | biosimilar, glp-1, gene therapy, specialty pharmacy, rems |
| 11 | Harm Reduction | harm-reduction | Lime | opioid, test strip, harm reduction, fentanyl, xylazine, naloxone |
Team Mode: Up to 2 specialists active simultaneously. When a second specialist domain is detected, both knowledge blocks are injected into the system prompt. If a third domain is detected, the oldest specialist is deactivated (FIFO). The header shows both specialist names connected by an ampersand with the "Team Mode" label.
Sound System
The chatbot includes a Web Audio API sound system with distinct audio signatures per tier:
- Navigator receive: Gentle 2-note chime (698Hz, 880Hz), sine wave
- Advisor receive: Deeper 2-note chord (523Hz, 659Hz), triangle wave
- Strategist receive: Rich 3-note arpeggio (392Hz, 494Hz, 587Hz)
- Escalation: Ascending frequency sweep (300Hz to 800Hz), followed by target bot's chime
- Reset: White noise burst through a 2kHz bandpass filter (whoosh effect)
Sound is enabled by default and togglable. Audio context creation is deferred to first user gesture for Chrome autoplay policy.
Product Signal Detection
The chatbot silently monitors every user message for product intelligence signals, storing them in localStorage under cc-product-ideas (FIFO capped at 100 entries). Four categories: pain points, feature requests, workflow gaps, and buying signals. Each captured signal includes timestamp, user message, matched keywords, active bot tier, current page, and conversation context. The admin dashboard (js/admin.js) reads and displays these.
How Magic Search Works (npi-smart.js)
The Magic Search engine uses a 3-wave strategy to find providers even with misspelled names, nicknames, or partial information.
Wave 1: AI-Parsed Exact Searches
Parses the input text to extract structured fields (first name, last name, state, city, specialty). Fires exact queries against NPPES.
Wave 2: Spelling Variations
- Nickname expansion: 100+ nickname mappings (Bob to Robert, Jenny to Jennifer, etc.) with bidirectional lookups.
- Consonant doubling/un-doubling: "Smit" to "Smitt" and vice versa.
- Vowel swaps: a/e, e/i, i/y, o/u substitutions.
- Character swaps: Common typos (s/c, k/c, ph/f, etc.).
- Wildcard truncation: "Cinderel*" to catch partial spellings.
Wave 3: Broad Fallback
If Waves 1 and 2 produce too few results, Wave 3 fires last-name-only searches and wildcard truncations to cast a wider net.
Scoring and Ranking
Every result gets a confidence score (0-100) based on weighted factors:
| Factor | Points |
|---|---|
| Exact last name match | +40 |
| Partial last name match (prefix) | +30 |
| Similar last name (Levenshtein 1-2) | +25 |
| Exact first name match | +25 |
| Nickname match (bidirectional lookup) | +22 |
| First name starts with query | +20 |
| State match | +15 |
| Specialty/taxonomy match | +15 |
| ZIP code match | +12 |
| City match | +10 |
| Active provider status | +5 |
The Levenshtein distance function is implemented inline. The nickname dictionary contains 90+ bidirectional mappings. Results are deduplicated by NPI, sorted by score, and returned with per-result confidence objects.
The engine fires 20-30 parallel queries across all waves. NPPES has no documented rate limits, and this approach consistently delivers results in under 2 seconds.
How the API Auth Middleware Works (api-v1.js)
- Request arrives at
/api/v1/?endpoint=ENDPOINT - If no
x-api-keyheader is present, the request proceeds as anonymous (no metering) - If an API key is present:
- The key is SHA-256 hashed
- Hash is looked up in
api_keystable (must beis_active = true) - The associated user's credits and tier are fetched
- If insufficient credits, HTTP 402 is returned with details
- The endpoint's handler function executes the upstream API call
- Response time is measured
- For authenticated requests, three parallel fire-and-forget operations run: credit deduction (
deduct_creditsRPC), usage logging (api_key_usageinsert), andlast_used_atupdate - Response includes headers:
X-Auth,X-Credits-Used,X-Credits-Remaining,X-Response-Time,X-Rate-Limit
How Stripe Webhooks Process Payments
- Stripe sends a POST to
/api/webhook(stripe-webhook.js) with the event payload and astripe-signatureheader. - The function verifies the signature using
STRIPE_WEBHOOK_SECRETto prevent spoofed events. - For
checkout.session.completed:- Extracts customer email and Stripe customer ID from the session
- Calls
findOrCreateUserwhich checks for an existing user by email, creates one if needed, and links the Stripe customer ID - Lists the session's line items and maps each price ID to the
PRICE_TIERSconfig - If it is a subscription, updates
subscription_tier,subscription_status, and adds monthly credits - If it is a credit pack, adds the credits to the balance
- Logs the purchase in
credit_purchases
- For
customer.subscription.updated: updates subscription status in the users table - For
customer.subscription.deleted: resets user to free tier
8. Third-Party API Reference
All upstream APIs are free government APIs. This section documents each one with exact URLs, parameters, response structures, rate limits, and known quirks.
NPPES NPI Registry
| Base URL | https://npiregistry.cms.hhs.gov/api/?version=2.1 |
| Auth | None required |
| Rate Limits | No documented limits. We fire 20-30 parallel queries safely. |
| Max Results | 200 per request (via limit param) |
| Used By | api-v1.js, npi-lookup.js, npi-smart.js, npi-enrich.js, npi-csv.js, provider-intel.js, site-chat.js |
Key params: number (NPI), first_name, last_name (supports * wildcard), organization_name, state, city, postal_code, taxonomy_description, enumeration_type (NPI-1/NPI-2), use_first_name_alias=True, limit (max 200).
openFDA
| Base URL | https://api.fda.gov/ |
| Auth | None for basic access. Optional API key for higher limits. |
| Rate Limits (no key) | 240 requests/minute, 1,000 requests/day |
| Rate Limits (with key) | 240 requests/minute, 120,000 requests/day |
| Max Results | 1,000 per request. Use skip for pagination. |
| Used By | api-v1.js, tools.js (client-side), provider-intel.js |
| Endpoint | Path | Data |
|---|---|---|
| Drug Adverse Events (FAERS) | /drug/event.json | Spontaneous adverse event reports. 31M+ entries. |
| Drug Labels (SPL) | /drug/label.json | FDA-approved drug labeling, prescribing info, warnings. |
| Drug Enforcement | /drug/enforcement.json | Drug recall and enforcement actions. |
| NDC Directory | /drug/ndc.json | National Drug Codes, package-level identifiers. |
| Drugs@FDA | /drug/drugsfda.json | Drug approval history. |
RxNorm (NLM)
| Base URL | https://rxnav.nlm.nih.gov/REST/ |
| Auth | None required |
| Rate Limits | 20 requests/second (documented) |
| Used By | api-v1.js, tools.js (client-side) |
| Endpoint | URL Pattern | Purpose |
|---|---|---|
| RxCUI Lookup | /rxcui.json?name={drug}&search=1 | Resolve drug name to RxCUI. search=1 enables approximate matching. |
| Drug Names | /drugs.json?name={drug} | All drug products matching a name, including variants, strengths, dose forms. |
| Drug Interactions | /interaction/interaction.json?rxcui={rxcui} | Discontinued by NLM January 2024. Code handles gracefully with empty responses. |
| RxClass | /rxclass/class/byDrugName.json?drugName={drug}&relaSource=ATC | Drug classifications (ATC, VA, MeSH). |
drug/interactions API endpoint still resolves RxCUIs but the upstream interaction data is no longer available. NLM recommends FDB MedKnowledge or DrugBank as alternatives.ClinicalTrials.gov
| Base URL | https://clinicaltrials.gov/api/v2/studies |
| Auth | None required |
| CORS | No CORS headers. Proxied through ct-proxy.js with 1-hour cache. |
| Max Results | 1,000 per page. Token-based pagination via pageToken. |
| Used By | api-v1.js, ct-proxy.js, tools.js, provider-intel.js |
Key params: query.cond (condition), query.intr (intervention), query.spons (sponsor), filter.overallStatus (pipe-delimited), filter.phase, pageSize, format=json.
NLM Clinical Tables (ICD-10)
| URL | https://clinicaltables.nlm.nih.gov/api/icd10cm/v3/search?sf=code,name&terms=QUERY |
| Auth | None required |
| Response Format | Raw JSON array (not object): [total_count, code_strings, extra_data, [[code, name], ...]] |
| Used By | api-v1.js (transforms to standard format) |
CMS Hospital Compare
| URL | https://data.cms.gov/provider-data/api/1/datastore/query/xubh-q36u |
| Method | POST (unlike other APIs, uses POST with JSON body) |
| Auth | None required |
| Used By | api-v1.js (hospital/quality endpoint) |
Request body uses conditions array with property, value, operator (=, CONTAINS, !=). The score field is returned as a string. The api-v1.js function uppercases inputs since CMS stores facility names in uppercase.
API Integration Summary
| API | Auth | Method | Max per Request | Rate Limit | Files Using It |
|---|---|---|---|---|---|
| NPPES | None | GET | 200 | None documented | 7 functions + site-chat |
| openFDA | Optional key | GET | 1,000 | 240/min, 1K or 120K/day | api-v1, tools, provider-intel |
| RxNorm | None | GET | Varies | 20 req/sec | api-v1, tools |
| DailyMed | None | GET | Varies | Not documented | Referenced in chatbot only |
| ClinicalTrials.gov | None | GET | 1,000 | Not documented | api-v1, ct-proxy, tools, provider-intel |
| NLM Clinical Tables | None | GET | 100 | Not documented | api-v1 |
| CMS Hospital Compare | None | POST | 100 | Not documented | api-v1 |
9. April 2, 2026 Feature Details
Clean URL Routing System
All customer-facing serverless function endpoints were migrated from raw /.netlify/functions/xxx paths to clean /api/xxx routes. This involved 16 new redirect rules in netlify.toml and 44 endpoint reference updates across 15 source files.
How it works: Each redirect in netlify.toml uses status = 200 (transparent proxy), so the browser sees /api/chat but Netlify internally routes to /.netlify/functions/site-chat. The raw paths still work for backward compatibility, but all UI code, documentation, and customer-facing references now use the clean paths.
Exception: auth-confirm.js uses /auth/confirm (not /api/) because it handles browser redirects from Supabase email confirmation, not direct API calls.
/.netlify/functions/ visible to customers anywhere.Academy SPA Redesign
The Cloud Academy at /academy was transformed from a single long scroll page into a fully functional single-page application:
- 14 sections covering healthcare data landscape, APIs, regulatory compliance, AI applications, platform tools, and advanced topics
- Persistent sidebar navigation with section icons and titles, collapsible on mobile
- Progress tracking: sections marked as "read" (green checkmarks) when the user scrolls through them. Progress percentage shown in the sidebar header. Uses
localStoragefor persistence. - Hash-based routing: each section has a unique URL hash (e.g.,
/academy#healthcare-data-landscape). Direct linking to any section works. Browser back/forward buttons navigate between sections. - Keyboard shortcuts: arrow keys or j/k for section navigation
- Mobile responsive: sidebar collapses to hamburger menu, content fills viewport
4 Audience Landing Pages
Four new pages targeting key audience segments, each with tailored messaging, relevant product spotlights, use cases, and CTAs:
| Page | Route | Target | Key Products Highlighted |
|---|---|---|---|
| For Providers | /for-providers | Healthcare providers, hospitals, credentialing teams | NPI ProLookup, ICD-10 Explorer, Provider Intelligence |
| For Pharma | /for-pharma | Pharma sales ops, medical affairs, market access | Drug Intelligence, Clinical Trial Finder, FormularyAI, Healthcare API |
| For Developers | /for-developers | Health IT, integration engineers, API consumers | Healthcare Data API, API Explorer, API Documentation |
| For Marketers | /for-marketers | Healthcare marketing agencies, lead enrichment teams | NPI ProLookup, Data Enrichment, Provider Intelligence |
The homepage also has a "Built for Your Team" section linking to these pages, and the tools hub has audience pills for filtering.
Homepage Product Views (7 Products, 5 Audiences)
The homepage products section now displays 7 product cards (was 6; FormularyAI added) with 5 audience view tabs:
- All (default): Shows all 7 products with general descriptions
- Providers: Tailored for healthcare providers, hospitals, credentialing
- Pharma: Tailored for pharma sales ops, medical affairs, market access
- Developers: Tailored for health IT, integration, API consumers
- Marketers: Tailored for marketing agencies, lead enrichment
Each audience view shows the same 7 products but with audience-specific descriptions, examples, and value propositions. Switching tabs is instant (DOM manipulation, no page reload).
NPI Taxonomy UX Improvements
The Taxonomy Explorer tab on /npi received significant UX polish:
- Smooth directional slide transitions: content slides left or right depending on which tab is clicked, providing spatial context
- Sticky tab bar: the category tabs stay visible at the top while scrolling through results
- Animated underline: a teal underline indicator smoothly follows the active tab
- Height-locked container: prevents layout jumping by maintaining consistent container height during transitions
Tool Breadcrumb Back-Navigation
All 6 tool pages now have a sticky breadcrumb bar below the header:
- Pages: drug-checker, icd10, trial-finder, recall-monitor, hospital-quality, explorer
- Pattern: Home > Tools > [Tool Category] > [Tool Name]
- Sticky positioning keeps the breadcrumb visible while scrolling
- Consistent design across all tool pages
API Docs Enhancement
The /api-docs page was overhauled with developer-friendly features:
- Try-It forms: interactive parameter forms for each of the 20 endpoints. Fill in fields and click "Execute" to make a live API call.
- Multi-language examples: every endpoint shows code examples in cURL, JavaScript (fetch), and Python (requests)
- Error code reference: comprehensive table of HTTP status codes (400, 401, 402, 403, 404, 429, 500, 502) with descriptions and resolution steps
- Pagination guide: token-based pagination with examples and best practices
- Rate limiting docs: per-tier rate limits (Free: none, Pro: 100/day, Ultra/God: 1000/day)
- Authentication guide: step-by-step key creation and usage
- Response schemas: typed field descriptions for all 20 endpoint responses
Magic Data Fixer Pro UI
A full interactive Magic Data Fixer section was added to the account dashboard (/account):
- Textarea input: paste messy, unstructured data
- Format selector: dropdown to choose output format (CSV, JSON, Markdown table)
- Tier gating: Free users limited to 500 characters, Pro to 5,000, Ultra to 50,000. Character count shown with limit indicator.
- Credit cost display: shows cost before execution (Pro: 10 credits, Ultra: 25 credits, Free: 0 credits within limit)
- Results area: copy-to-clipboard and download buttons for the structured output
- Model info: displays which OpenAI model will be used (gpt-5.4-nano for Free/Pro, gpt-5.4 for Ultra)
Trial Finder Fixes and Current State
Fixes Shipped
- Phase filter fix: Changed from invalid
filter.phasetofilter.advanced=AREA[Phase]; addedcountTotal=truefor accurate result counts. - Search crash fix:
document.querySelector('.header-nav')returned null after nav.js replaced old header classes withcc-prefixed classes. Updated to use.cc-navwith null-safety checks. - Browse button fix: A literal
</script>inside a PDF export template literal caused the HTML parser to truncate all JS after that point. Fixed by escaping to<\/script>. - Cancel button: The condition tree browser modal now includes a Cancel button alongside Select.
Current Capabilities
- Search 400,000+ clinical trials by condition, phase, status, and location
- Interactive condition tree for browsing conditions hierarchically
- Patient and Clinical view modes
- Cancel button during search
- PDF export in patient-friendly and clinical formats
- Light and dark theme support
Roadmap
- Facility info integration: Cross-reference trial locations with Hospital Quality data for deeper facility context.
Nav Centering Fix
The header-inner element's max-width was inconsistent across pages, causing the navigation bar to appear at slightly different horizontal positions. This was fixed on 20+ pages by ensuring a consistent max-width: 1200px on all .header-inner elements.
API Keys Endpoint Fix
The API keys management page (/api-keys) was calling a non-existent auth-profile function to load user data. This was fixed to correctly call the /api/account endpoint (account.js function), which returns the user profile, subscription tier, and credit balance needed by the API keys UI.
10. Deployment Guide
How to Deploy (Exact Commands)
# Standard deploy (HTML/CSS/JS changes only)
cd "G:/My Drive/_Claude_Share_Joe_and_Kevin/_DSG/Work/Cognizant_Cloud_Site"
NETLIFY_AUTH_TOKEN=nfp_B8yRMEsz3b2b8EuUQis6yEaipRHnTWFN162d \
npx netlify deploy --prod --dir=. \
--site 572137ea-4eca-4318-ad09-a0df1aaa76a4 --no-build
# Deploy with function cache reset (when function code changed)
NETLIFY_AUTH_TOKEN=nfp_B8yRMEsz3b2b8EuUQis6yEaipRHnTWFN162d \
npx netlify deploy --prod --dir=. \
--site 572137ea-4eca-4318-ad09-a0df1aaa76a4 --no-build --skip-functions-cache
How to Add a New Netlify Function
- Create a new
.jsfile innetlify/functions/ - Export a
handlerfunction:exports.handler = async function(event) { ... } - The function is automatically available at
/.netlify/functions/FILENAME - Add a clean URL redirect in
netlify.toml(all functions should have/api/xxxroutes):[[redirects]] from = "/api/your-function" to = "/.netlify/functions/your-function" status = 200 - Update this admin guide and guide-bot.js system prompt with the new function
- Deploy with
--skip-functions-cache
How to Add a New Page
- Create a new
.htmlfile in the site root - Add a clean URL redirect in
netlify.toml:[[redirects]] from = "/your-page" to = "/your-page.html" status = 200 - Include
<link rel="stylesheet" href="/css/theme.css">for theme support - Include
<link rel="stylesheet" href="/css/nav-fix.css">in<head>(must be first stylesheet) and<script src="/js/nav.js" defer></script>for the universal nav header - Include
<script src="/js/auth-nav.js"></script>for auth-aware navigation - Include
<script src="/js/chatbot.js" defer></script>for the chatbot - Deploy
How to Add a New Stripe Product
- Create the product and price in Stripe Dashboard
- Copy the price ID (format:
price_...) - Add the price ID to
PRICESinstripe-checkout.js - Add the price ID to
PRICE_TIERSinstripe-webhook.jswith{ tier, credits } - Update the pricing page UI if needed
- Deploy with
--skip-functions-cache
How to Run SQL in Supabase
- Go to supabase.com/dashboard
- Select your project
- Click "SQL Editor" in the left sidebar
- Paste your SQL and click "Run"
How to Update DNS
- Log in to GoDaddy DNS management
- Select cognizantcloud.com
- Add, edit, or delete records as needed
- DNS changes propagate in 1-48 hours (usually under 1 hour for TTL-based caching)
How to Update Email Templates
Email templates are configured in Supabase Auth settings. Go to Supabase Dashboard, select Authentication, then Templates. You can customize the confirmation email, password reset email, and magic link email. Templates support HTML and variables like {{ .ConfirmationURL }}.
Available Template Variables
| Variable | Description |
|---|---|
{{ .ConfirmationURL }} | The link users click to confirm their action |
{{ .Token }} | The raw OTP token (if using token-based flow) |
{{ .SiteURL }} | Your configured site URL |
{{ .Email }} | The recipient's email address |
npm Install Gotcha (Google Drive)
Google Drive's filesystem has extremely slow I/O for small-file operations. Running npm install directly on a Google Drive path can take 10 to 30 minutes and sometimes hangs because npm creates thousands of small files in node_modules.
Workaround: Install in /tmp, Then Copy
# 1. Copy package.json to a local temp directory
cp netlify/functions/package.json /tmp/fn-install/package.json
# 2. Install in the fast local filesystem
cd /tmp/fn-install
npm install
# 3. Copy the finished node_modules back to Google Drive
cp -r /tmp/fn-install/node_modules netlify/functions/node_modules
This reduces install time from 20+ minutes to under 30 seconds. Always use this pattern when adding or updating function dependencies.
| Scenario | Use /tmp Workaround? |
|---|---|
| Adding a new npm package to functions | Yes |
Running npm install after pulling changes | Yes |
| Editing a single function file | No (just deploy) |
| Deploying without dependency changes | No |
11. Known Issues & Roadmap
Current Known Issues
| Issue | Severity | Notes |
|---|---|---|
| Fixed | Smooth directional slide transitions, sticky tab bar, animated underline, height-locked container. | |
| Fixed | Redesigned as SPA: 14 sections, sidebar nav, progress tracking, hash routing, keyboard shortcuts (April 2). | |
| Fixed | Enhanced with per-key usage stats, project labels, budget controls, sparklines, and creation modal. | |
| Fixed | Budget & Spending section added to account dashboard with progress bars, auto-refill controls, and usage breakdown. | |
| Fixed | All 6 tool pages now have sticky breadcrumb bars with category trails. | |
| Fixed | All 44 endpoint references across 15 files migrated to clean /api/xxx routes (April 2). | |
| Fixed | Try-it forms, multi-language code examples (cURL/JS/Python), error codes, pagination, schemas (April 2). | |
| Fixed | Changed from invalid filter.phase to filter.advanced=AREA[Phase]; added countTotal=true (April 2). | |
| Fixed | 4 audience landing pages + audience-filtered homepage product views (April 2). | |
| RxNorm drug interaction API discontinued by NLM January 2024 | Low | Code handles gracefully with empty responses. NLM recommends FDB MedKnowledge or DrugBank as alternatives. |
| Fixed | querySelector null crash fixed (cc-nav selector), cancel button added to condition tree modal, browse button restored (template literal escape fix). |
All Improvements Shipped April 2, 2026
| # | Feature | Pages Affected | Description |
|---|---|---|---|
| 1 | Chatbot KB Update | All pages | site-chat.js updated with all products, APIs, pricing, audience routing across 11 specialists. |
| 2 | Academy SPA Redesign | /academy | Transformed from scroll page to SPA with 14 sections, sidebar nav, progress tracking, hash routing, keyboard shortcuts. |
| 3 | Admin Guide Bot | /admin-guide | GPT-5.4 floating chat widget (guide-bot.js, /api/guide-bot) with full platform knowledge. |
| 4 | Admin Guide Content Merge | /admin-guide | 4 temp section files (sections 2-12) integrated into single admin-guide.html. |
| 5 | API Docs Enhancement | /api-docs | Try-it forms, multi-language examples (cURL/JS/Python), error codes, pagination, rate limiting, auth guide, response schemas for all 20 endpoints. |
| 6 | Login Email Memory | /account | localStorage save/restore of email via "Remember my email" checkbox. New js/auth-utils.js utility. |
| 7 | Session Auto-Refresh | /account + any page with auth-utils.js | JWT auto-refresh every 5 min, toast on expiry, auto-redirect. |
| 8 | NPI Taxonomy UX | /npi | Smooth directional slide transitions, sticky tab bar, animated underline, height-locked container. |
| 9 | Tool Back-Navigation | 6 tool pages | Sticky breadcrumb bar with category trails on drug-checker, icd10, trial-finder, recall-monitor, hospital-quality, explorer. |
| 10 | 4 Audience Landing Pages | /for-providers, /for-pharma, /for-developers, /for-marketers | Tailored messaging, product spotlights, and CTAs for each audience segment. |
| 11 | Audience Nav Links | / (homepage) | "Built for Your Team" section on homepage, audience pills on tools hub. |
| 12 | Nav Centering Fix | 20+ pages | Fixed header-inner max-width for consistent nav positioning across all pages. |
| 13 | Magic Data Fixer Pro UI | /account | Full interactive section in account dashboard: textarea, format selector, tier-gating, copy/download. |
| 14 | API Keys Endpoint Fix | /api-keys | Was calling non-existent auth-profile function; now correctly calls /api/account. |
| 15 | Clean URLs | 15 files, netlify.toml | All customer-facing /.netlify/functions/xxx replaced with /api/xxx routes. 16 new redirects. 44 replacements. |
| 16 | Audience-Filtered Products | / (homepage) | Products section has 5 audience views (All, Providers, Pharma, Developers, Marketers) with tailored descriptions. |
| 17 | FormularyAI Product Card | / (homepage) | Added as 7th product on homepage across all audience views. |
| 18 | Trial Finder Phase Fix | /trial-finder | Phase filter changed from invalid filter.phase to filter.advanced=AREA[Phase]; added countTotal=true. |
| 19 | Trial Finder Upgrades | /trial-finder | Condition tree browser, patient/clinical view modes, PDF export (dual format), cancel button, search crash fix all shipped. Roadmap: facility info integration with Hospital Quality data. |
Roadmap (Next Priorities)
| Priority | Item | Effort | Impact | Details |
|---|---|---|---|---|
| 1 | CMS Hospital Data Deep Integration | Medium | High | Supabase caching for faster response, additional CMS datasets (HCAHPS, infections, complications), cross-referencing with NPI data, free/pro tool tiers. |
| 2 | Tier Simulation | Small | Medium | Let founders toggle between customer views (Free, Pro, Ultra) to experience the platform as each tier sees it. |
| 3 | Admin Dashboard Expansion | Medium | High | Revenue metrics, user management, product analytics, signup funnels, credit consumption trends. |
| 4 | Additional Audience Pages | Medium | Medium | 4 more audience pages: /for-payers, /for-health-systems, /for-government, /for-researchers (8 total). |
| 5 | Enterprise Custom Plans | Medium | High | "Contact Sales" flow for custom credit volumes, SLAs, dedicated support, bulk API access. |
| 6 | New API Endpoints (26 Identified) | Large | High | 26 potential new endpoints across additional data lookups, batch operations, analytics queries. See projects/api-research/. |
| 7 | Academy Progress Persistence | Small | Medium | Save progress tracking to Supabase (currently localStorage only) so it persists across devices. |
| 8 | Badges and Achievements | Small | Medium | Gamification system for user engagement and viral sharing. |
Product Strategy Summary
The full product strategy is documented in projects/product-strategy/PRODUCT_SUITE.md (1,796 lines). It covers 19 products across 8 audience segments.
Product Categories
| Category | Products | Revenue Model |
|---|---|---|
| Lookup Tools | NPI Lookup, NDC Search, Taxonomy Explorer, HCPCS Lookup | Freemium (limited free, credits for bulk) |
| AI-Powered Tools | Magic Search, Data Fixer, AI Chatbot | Credit-based (higher cost per query) |
| Specialty Products | FormularyAI, Compliance Checker, DrugScope, TrialPulse | Subscription tiers |
| Developer APIs | REST endpoints for all tools | API key + credit-based |
| Education | Academy | Free (lead generation) |
Eight Target Audiences
- Pharma companies (sales ops, medical affairs, market access)
- PBMs and payers (formulary, quality, compliance)
- Health IT companies (API integration, embedded analytics)
- Healthcare marketing agencies (provider targeting, lead enrichment)
- CROs (clinical trial recruitment, site identification)
- Health systems (quality reporting, credentialing)
- Government/public health (surveillance, compliance)
- Individual healthcare professionals (daily workflow tools)
The 26 new APIs identified for future integration are documented in projects/api-research/CLAUDE.md.
12. Security & Compliance
What Data We Store
| Data Type | Stored Where | Purpose | Retention |
|---|---|---|---|
| Email address | Supabase (users table) | Account identification, communication | Until account deletion |
| First/last name | Supabase (users table) | UI personalization | Until account deletion |
| Credit balance | Supabase (users table) | Usage metering and billing | Until account deletion |
| Stripe customer ID | Supabase (users table) | Payment identity linking | Until account deletion |
| API key hashes | Supabase (api_keys table) | Authentication for API access | Until key revoked |
| Usage logs | Supabase (usage_log table) | Billing, rate limiting, abuse detection | Indefinite |
| Credit purchases | Supabase (credit_purchases) | Purchase audit trail | Indefinite |
| API call logs | Supabase (api_key_usage) | Per-key usage analytics | Indefinite |
API keys are stored as hashes only. Raw API keys are shown to the user exactly once at creation time. After that, only the SHA-256 hash is stored. There is no way to recover a lost API key; the user must generate a new one.
What We Do NOT Store
| Data Type | Handled By | Details |
|---|---|---|
| Passwords | Supabase Auth | Supabase handles all password hashing, storage, and verification. We never see or store passwords in our own tables. |
| Credit card numbers | Stripe | All payment processing happens through Stripe's PCI-compliant infrastructure. Card details never touch our servers. We store only Stripe customer IDs as references. |
| Protected Health Information (PHI) | Not applicable | The platform does not collect, store, process, or transmit PHI. All healthcare data comes from publicly available government APIs. |
| Search queries | Not logged | We do not log what users search for in our tools. |
| Chat transcripts | Browser only | Chatbot conversations are not stored server-side. History exists only in the browser session. |
| Session tokens | Client-side | Auth tokens are managed client-side via localStorage. Our backend does not maintain session state. |
HIPAA Status
AI Disclosure
LLMs are used in the following features:
- AI Chatbot: gpt-5.4-mini for all tiers. Generates conversational responses. May hallucinate details about specific drugs, providers, or regulations. Users should verify AI-generated information against authoritative sources.
- Magic Data Fixer: gpt-5.4-nano (Free/Pro) or gpt-5.4 (Ultra). Structures and cleans messy text. Output should be reviewed for accuracy.
- NPI Smart Search: No LLM used. This is a deterministic fuzzy matching engine using spelling variations and nickname lookups.
FTC Compliance
The platform follows FTC guidelines for digital subscriptions and auto-renewal transparency.
| Requirement | Implementation |
|---|---|
| Auto-Renewal Disclosure | The pricing page and checkout flow clearly state that subscriptions renew automatically. The renewal frequency and date are displayed on the account dashboard. Stripe sends reminder emails before each renewal. |
| Cancellation Process | Users can cancel at any time from their account dashboard. Two clicks: "Manage Subscription" then "Cancel Plan." No phone calls or retention funnels. Cancellation takes effect at end of billing period. |
| Refund Policy | 7-day refund window for subscription charges. Credit packs are non-refundable once credits have been used. Unused credit packs can be refunded within 7 days. Published on /legal. |
| Clear Pricing | All prices in USD with billing frequency. No hidden fees, setup charges, or surprise costs. Total charge shown before payment confirmation. |
Data Source Attribution
All data comes from US government sources. Under 17 U.S.C. Section 105, works produced by US government employees are in the public domain.
| Dataset | Source Agency | Update Frequency | License |
|---|---|---|---|
| NPI Registry | CMS (Centers for Medicare & Medicaid Services) | Monthly | Public domain |
| openFDA (Labels, FAERS, Recalls, NDC) | FDA (Food & Drug Administration) | Regular updates | Public domain |
| RxNorm / RxClass | NLM (National Library of Medicine) | Monthly | Public domain |
| ClinicalTrials.gov | NLM | Continuous | Public domain |
| ICD-10-CM (Clinical Tables) | NLM | Annual | Public domain |
| Hospital Compare | CMS | Quarterly | Public domain |
Full attribution details are published on the /data-sources page.
Content Security Policy
The site uses a Content Security Policy header (set in netlify.toml) that restricts script sources to 'self' and 'unsafe-inline' plus Stripe, restricts connection sources to the site and known API domains, and blocks framing with frame-ancestors 'none'.
13. Contacts & Accounts
| Service | Account | Login URL | Notes |
|---|---|---|---|
| Netlify | kweller@diagnosticsolutionsgroup.com Team: Cognizant Cloud |
app.netlify.com | Site: cognizant-cloud. Auth token stored in deploy command. |
| Supabase | kweller@diagnosticsolutionsgroup.com | supabase.com/dashboard | Database, Auth, RLS. Keys stored as Netlify env vars. |
| Stripe | Cognizant Cloud account | dashboard.stripe.com | Secret key + webhook secret stored as Netlify env vars. |
| Resend | Cognizant Cloud account | resend.com | Configured in Supabase Auth settings for transactional email. |
| GoDaddy | Domain: cognizantcloud.com | dcc.godaddy.com | DNS records managed here. Domain registration also here. |
| OpenAI | Cognizant Cloud API key | platform.openai.com | API key stored as Netlify env var OPENAI_API_KEY. Shared with FormularyAI site. |
Where API Keys Are Stored
All production API keys and secrets are stored as environment variables in Netlify (Settings > Environment Variables). They are never committed to code. The local reference document is at API_Keys_and_Tokens/CLAUDE.md in the DSG workspace.
Key Management Rules
| Rule | Details |
|---|---|
| Never commit keys to code | All keys are injected via Netlify environment variables for production. The .env file is in .gitignore. |
| Rotate on suspected exposure | If a key is accidentally exposed, rotate it immediately in the service dashboard and update Netlify env vars. |
| Use scoped keys when possible | Stripe restricted keys, Supabase service role vs anon key, OpenAI project-scoped keys. Minimum permissions for each function. |
Account Access Matrix
| Service | Kevin | Joe | 2FA Required |
|---|---|---|---|
| Netlify | Owner | Has credentials | Yes |
| Stripe | Has credentials | Owner | Yes |
| Supabase | Owner | Has credentials | Yes |
| Resend | Owner | Can be added | No |
| GoDaddy | Has credentials | Owner | Yes |
| OpenAI | Owner | No access | Yes |
| USPTO | Has 2FA device | Owner | Yes (real-time code) |
Vendor Support Contacts
| Service | Support Channel | Typical Response Time |
|---|---|---|
| Netlify | In-dashboard support chat, community forums | 1 to 2 business days |
| Stripe | In-dashboard chat, email, phone (urgent billing) | Hours for chat, 1 day for email |
| Supabase | GitHub Discussions, Discord, dashboard support | 1 to 3 business days |
| Resend | Email support, Discord | 1 to 2 business days |
| GoDaddy | Phone (best), live chat, help center | Immediate for phone |
| OpenAI | help.openai.com, API status page | 1 to 5 business days |
14. Brand Identity Guide
14.1 Brand Overview
Healthcare data intelligence platform. We build AI-powered tools that make healthcare professionals smarter and faster when they access, analyze, and act on data. Founded 2023.
Mission
Build tools that augment human intelligence in healthcare, making professionals smarter and faster when they access, analyze, and act on healthcare data.
Core Values
Precision
Data accuracy and clinical rigor in everything we build
Transparency
Clear about capabilities, limitations, and pricing
Innovation
Modern technology applied to real healthcare problems
Accessibility
Making complex healthcare data usable for everyone
Company Description
Our product suite spans three tiers. The Healthcare Data API provides 12 authenticated REST endpoints covering provider lookup (NPI), drug information, clinical trials, medical coding (ICD-10), recall monitoring, and quality metrics. Nine free tools give any healthcare professional instant access to clinical data without an account. FormularyAI, our flagship platform, transforms formulary management for health plans and PBMs with AI-driven optimization.
We aggregate data from federal sources including NPPES, openFDA, ClinicalTrials.gov, DailyMed, and RxNorm into a single, well-documented API. Our infrastructure runs on Netlify with Supabase for authentication, Stripe for billing, and credit-based pricing that scales from free tiers to enterprise subscriptions.
Cognizant Cloud serves enterprise healthcare organizations, pharmaceutical companies, health systems, and public health agencies. Our technology philosophy centers on precision, transparency, and accessibility. We cite our data sources, explain our limitations, and price our products clearly. Every tool we build is measured by a single standard: does it make the human using it better at their job?
14.2 Logo System
The Cognizant Cloud logo is a bold double-C monogram with three horizontal data-stream lines. The outer arc (6px stroke) and inner arc (3px, 40% opacity) read as "CC" for Cognizant Cloud. The data lines in the gap suggest information flowing into a human system, visually depicting augmentation. The arcs represent the human core; the data-stream lines represent external intelligence flowing in.
Primary Logo Display
Logo Mark at Multiple Sizes
Full Wordmark
Full Logo with Tagline
The approved horizontal composition used on QuickBooks invoices and formal documents. Includes the C monogram mark, company name, and tagline in a single lockup.
Color Variant Downloads
Do's and Don'ts
Clear Space and Minimum Size
Minimum clear space around the logo equals the height of one data-stream line. No other elements should intrude into this zone. Minimum sizes: 120px wide (full logo) or 24px (icon only) for digital. 1 inch (full logo) or 0.25 inch (icon only) for print.
Approved Composition
The approved primary logo is a custom horizontal layout refined from a 20-option exploration, selected and fine-tuned on April 6, 2026.
| Property | Value |
|---|---|
| Layout | Horizontal (mark left, text right) |
| Mark size | 220px |
| Mark-to-text gap | 10px |
| Company name | "Cognizant Cloud LLC" in Outfit Bold (700), 40px |
| Company name color | Navy #0f172a |
| Tagline | "Augmenting Human Intelligence" in Inter Medium (500), 21px |
| Tagline color | Navy #0f172a |
| Name-to-tagline gap | 11px |
| Default background | White |
14.3 Color System
Primary Colors
Cloud Teal
RGB 13, 148, 136
HSL 174, 84%, 32%
--teal-600
Bright Teal
RGB 45, 212, 191
HSL 173, 68%, 50%
--teal-400
Deep Navy
RGB 15, 23, 42
HSL 222, 47%, 11%
--navy-900
Navy Scale
Navy scale: #020617 (950) through #f8fafc (50). Used for backgrounds, text hierarchy, and borders.
Teal Scale
Teal scale: #0f766e (700) through #5eead4 (300). The accent and interactive color family.
Semantic Colors
Success
#22c55e
Live badges, confirmations
Warning
#f59e0b
Caution, attention needed
Error
#ef4444
Danger, critical alerts
Info
#3b82f6
Informational notices
AI / Insight
#a855f7
AI features, insights
The 60-30-10 Rule
60% navy or white backgrounds. 30% supporting neutrals from the navy scale. 10% teal accent for interactive elements, buttons, and links. Teal should never be used as a large background fill.
Contrast Checker (WCAG 2.1 AA)
| Text | Background | Ratio | Normal | Large |
|---|---|---|---|---|
| #f1f5f9 (White) | #0f172a | 15.4:1 | PASS | PASS |
| #2dd4bf (Teal 400) | #0f172a | 8.6:1 | PASS | PASS |
| #0d9488 (Teal 600) | #ffffff | 4.6:1 | PASS | PASS |
| #0f172a (Navy) | #ffffff | 17.1:1 | PASS | PASS |
| #94a3b8 (Navy 400) | #0f172a | 5.7:1 | PASS | PASS |
| #64748b (Navy 500) | #0f172a | 3.8:1 | FAIL | PASS |
| #0d9488 (Teal 600) | #0f172a | 3.7:1 | FAIL | PASS |
Gradient Gallery
Download CSS Variables
14.4 Typography
Outfit (Headings, Buttons, Labels)
Outfit
abcdefghijklmnopqrstuvwxyz
Modern, geometric, and clean. Outfit anchors every heading on the site, giving Cognizant Cloud a distinct visual identity. Its wide apertures and even stroke widths ensure clarity at every scale.
Inter (Body Text, Paragraphs)
Inter
abcdefghijklmnopqrstuvwxyz
Highly readable and neutral. Inter handles body text, paragraphs, and descriptions. Built for screens with optimized kerning and tall x-height, it stays crisp even in data-dense interfaces and small sizes.
JetBrains Mono (Code, API Content)
JetBrains Mono
abcdefghijklmnopqrstuvwxyz
const apiKey = "cc_live_xxxxxxxxxx";
fetch("/api/v1/npi?name=Smith", { headers: { Authorization: apiKey } });
Type Scale
60px / 800 Healthcare Data
40px / 700 API Reference
36px / 800 FormularyAI
20px / 700 Drug Interaction Checker
13px / 600 UC Free Healthcare Tools
19px / 400 The only complete 5-analyte test portfolio in the US.
16px / 400 Pass your API key in the Authorization header. Returns JSON.
48px / 800 730K+
Google Fonts Import
https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Outfit:wght@500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap
Responsive Behavior
Hero titles scale down to ~36px on mobile viewports. Section titles drop to ~28px. Body text stays at 16px minimum. On screens narrower than 768px, the sidebar collapses and content takes full width. All type remains sharp at these reduced sizes because both Outfit and Inter were designed for screen rendering first.
14.5 Brand Voice
We Are / We Are Not
We Are
- Authoritative Deep domain expertise, backed by data
- Direct Clear commitments, specific claims
- Trustworthy Transparent about capabilities and limits
- Modern Current technology, current thinking
We Are NOT
- Condescending or academic
- Vague or hedging ("solutions-oriented")
- Salesy or hyperbolic
- Trendy or buzzword-driven
Tagline System
| Variation | Format | When to Use |
|---|---|---|
| Full | Augmenting Human Intelligence | Hero sections, social bios, email signatures |
| With company | Cognizant Cloud | Augmenting Human Intelligence | Business cards, pitch decks, invoices |
| With domain | Augmenting Human Intelligence in Healthcare Data | Conference materials, industry contexts |
| Internal only | AHI | Internal docs only. Never customer-facing. |
Tone by Context
| Context | Tone | Example |
|---|---|---|
| Marketing | Confident, forward-looking | "The only complete 5-analyte test portfolio in the US." |
| API Docs | Precise, neutral, instructive | "Pass your API key in the Authorization header. Returns JSON." |
| Error Messages | Helpful, calm, actionable | "That API key has expired. Generate a new one in your dashboard." |
| Customer Email | Warm but professional | "Thanks for reaching out. Here is what we can do." |
| Legal | Formal, precise, unambiguous | Standard legal register, no personality |
Vocabulary
Approved Terms
- Augment, enhance, empower
- Precision, accuracy, rigor
- Healthcare professionals
- Transparent pricing
- Enterprise-grade
- Clinical data
Banned Terms
- "Cutting-edge" or "bleeding-edge"
- "Synergy" or "leverage" (as verbs)
- "One-stop shop"
- "Disrupt" or "disruptive"
- "End-to-end" without specifics
- Em dashes (rewrite the sentence)
- Clinical claims without citation
Copy Examples
"Our Healthcare Data API serves 20 endpoints covering NPI lookup, drug interactions, clinical trials, hospital quality data (7 CMS endpoints), and more. Pricing starts at $0 with 100 free credits."
"Our cutting-edge, end-to-end AI solution disrupts the healthcare data landscape with synergistic capabilities that leverage best-in-class technology."
Healthcare-Specific Rules
- No fear-based language about drug use or overdose
- Frame products as tools for organizations, not interventions for individuals
- Reference published data when making product claims (e.g., Lieberman study: V2 xylazine 8x better)
- Do not include real patient data in screenshots or examples
- All marketing materials include appropriate disclaimers
14.6 Visual Patterns
Card Hover Demo
Interactive Card
Hover over this card to see the lift effect, teal border transition, and shadow. Every card on the site uses this pattern.
Button System
Border Radius Tokens
Shadow System
Glassmorphism Demo
Glass Panel
Background blur with subtle border and transparency. Used for overlays, modals, and floating elements on gradient backgrounds.
Icon Style (Lucide/Feather)
All icons follow the Lucide/Feather style: 24x24 viewBox, 2px stroke, round caps and joins, minimal fills.
14.7 Design Preferences
Established during the 20-option logo exploration with Kevin and Joe on April 6, 2026. These apply to all brand collateral going forward.
Approved Patterns
Horizontal Layouts
Mark left, text right. All top-ranked options used this layout. Stacked compositions are acceptable only in compact contexts.
Tight Spacing
10px mark-to-text gap, 11px name-to-tagline gap. Elements should read as one unified block.
Mark Always Present
The C Monogram must always accompany the company name. It is the visual anchor of the brand.
Navy Text on Light
Both the company name and tagline use #0f172a on light backgrounds. Unified navy creates a serious, cohesive appearance.
Medium Scale
The mark is prominent but not dominant. Both oversized and minimal approaches were rejected.
Flexible Backgrounds
White (default), dark navy, teal, slate, and light gray backgrounds all approved.
Rejected Patterns
Badge/Border Treatments
Rounded rectangles, circles, double borders, colored accents all rejected. The logo floats freely.
Text-Only Logos
Two text-only options were rejected outright. No text without the mark.
Heavy Letter-Spacing
Extended spacing makes the composition feel diffuse. Standard or slightly tight tracking only.
Oversized Compositions
Oversized mark treatments were rejected. Keep scale at the medium sweet spot.
Visual Style Philosophy
Premium consulting firm aesthetic inspired by Stripe, Linear, and Vercel. Dark hero sections transitioning to light content areas. Glassmorphism with blurred translucent panels. Micro-interactions on card hovers. Noise/grain texture at 3% opacity on dark sections. Animated gradient borders on feature cards. Staggered scroll reveals with incremental delays.
14.8 Digital Asset Downloads
Logo Pack
Primary (Teal)
Default icon, light backgrounds
White
Dark backgrounds
Navy
Print, single-color
Wordmark
Icon + company name
Transparent PNG
512x512, transparent bg
Color and Type Files
Brand Guide and Tools
| Resource | Location |
|---|---|
| Full Brand Style Guide (source of truth) | Branding/00_Brand_Guidelines/Brand_Style_Guide.md |
| Brand Overview (interactive HTML) | Branding/Brand_Overview.html |
| Interactive Logo Editor | Branding/01_Logo/Logo_Editor.html |
| Design Preferences and feedback log | Branding/00_Brand_Guidelines/Design_Preferences.md |
| Tagline Strategy | Branding/00_Brand_Guidelines/Tagline_Strategy.md |
| Logo files (SVG, PNG, PDF) | Branding/01_Logo/Primary/ |
| QuickBooks logos (1000x1000 PNG) | Branding/01_Logo/Primary/CognizantCloud_Logo_QB_*.png |
| Color palette and CSS variables | Branding/02_Colors/ |
| Typography specs | Branding/03_Typography/ |
| Templates (letterhead, invoices, decks) | Branding/05_Templates/ |
File Naming Convention
All brand assets follow this pattern: CognizantCloud_[Asset]_[Variation]_[Color].[ext]
Examples: CognizantCloud_Logo_Primary_FullColor.svg, CognizantCloud_Logo_Icon_White.png
Branding/Brand_Overview.html in a browser for a full walkthrough. The interactive Logo Editor at Branding/01_Logo/Logo_Editor.html lets you toggle presets, adjust spacing, and export in SVG, PNG, JPEG, or WebP.