Admin: Full Access
Clinical Pipeline Intelligence Live Demo

TrialPulse

Clinical Pipeline Intelligence with Post-Market Safety Overlay.

The first platform to combine clinical trial pipeline data with real-world FAERS safety signals in a single, unified view.

0+
Clinical Trials Indexed
0+
Countries Covered
0+
FAERS Safety Reports
Real-time
Correlation Engine
Drugs: Conditions:
Phase:
Status:
Has Results:
Try:
Drugs:
Sponsors:
Conditions:

How TrialPulse Works

The Innovation
TrialPulse is the first platform to overlay clinical trial pipeline data with post-market pharmacovigilance signals, connecting pre-market development timelines with post-market safety intelligence in a single, correlated view.
Why This Matters
Pharma companies, investors, and analysts typically use separate tools for pipeline tracking (EvaluatePharma at $50K+/year) and safety monitoring (separate FAERS analysis subscriptions). TrialPulse unifies both workflows using free federal data sources for a fraction of the cost.
Data Sources
ClinicalTrials.gov - 500K+ clinical studies, updated Mon-Fri, global coverage across 220+ countries.
openFDA FAERS - 20M+ adverse event reports since 2004, updated quarterly by the FDA.
RxNorm - NLM drug name resolution and therapeutic classification.
Pharma BD&L Teams
Identify acquisition targets by tracking competitor pipelines across therapeutic areas. See who is investing in which indications and how far along they are.
Safety & Pharmacovigilance Teams
Correlate clinical trial timelines with real-world safety signals. Identify whether adverse event spikes coincide with Phase 3 enrollment or post-approval prescribing growth.
Venture Capital & Investors
Evaluate pharma investment opportunities using pipeline-to-safety overlay. See which drugs have clean safety profiles alongside strong Phase 3 data.
Regulatory Affairs
Monitor emerging safety concerns for drugs in late-stage trials. Get early warning of FAERS signal trends before they become regulatory actions.
Feature Free Tier TrialPulse Pro
Pipeline search (drugs, conditions, sponsors)IncludedIncluded
Pipeline dashboard with analyticsIncludedIncluded
FAERS safety overlay with correlation markersIncludedIncluded
Sponsor tracker with pipeline gridIncludedIncluded
Condition landscape explorerIncludedIncluded
Portfolio monitoring (multiple drugs)-Included
Weekly pipeline digest emails-Included
FAERS safety signal alerts (threshold-based)-Included
Competitive landscape PDF exports-Included
API access for internal dashboards-Included

Unlock TrialPulse Pro

Advanced competitive intelligence for pharma commercial strategy and BD&L teams.

'); // Cover pdfWin.document.write('

TrialPulse Pipeline Report

' + escapeHtml(query) + ' | Generated ' + new Date().toLocaleDateString('en-US', {month:'long',day:'numeric',year:'numeric'}) + '
Cognizant Cloud LLC | cognizantcloud.com/trialpulse
'); // Summary stats pdfWin.document.write('

Summary

'); pdfWin.document.write('
' + studies.length + '
Total Trials
' + formatCompact(totalEnroll) + '
Total Enrollment
' + phaseCounts.p3 + '
Phase 3
' + topSponsors.length + '
Sponsors
'); // Phase Distribution pdfWin.document.write('

Phase Distribution

'); var phaseItems = [{l:'Phase 1',v:phaseCounts.p1},{l:'Phase 2',v:phaseCounts.p2},{l:'Phase 3',v:phaseCounts.p3},{l:'Phase 4',v:phaseCounts.p4},{l:'Other',v:phaseCounts.other}]; var maxPh = Math.max.apply(null, phaseItems.map(function(p){return p.v})) || 1; for (var pi = 0; pi < phaseItems.length; pi++) { pdfWin.document.write('
' + phaseItems[pi].l + '
' + phaseItems[pi].v + '
'); } // Top Sponsors pdfWin.document.write('

Top Sponsors

'); var maxSp = sponsorCounts[topSponsors[0]] || 1; for (var sp = 0; sp < topSponsors.length; sp++) { var spn = topSponsors[sp], spc = sponsorCounts[spn]; pdfWin.document.write('
' + escapeHtml(spn.substring(0, 30)) + '
' + spc + '
'); } // Safety Overlay if (topAEs.length > 0) { pdfWin.document.write('

FAERS Safety Overlay

'); pdfWin.document.write(''); for (var ae = 0; ae < topAEs.length; ae++) { pdfWin.document.write(''); } pdfWin.document.write('
Adverse EventReport Count
' + escapeHtml(topAEs[ae].term) + '' + formatNum(topAEs[ae].count) + '
'); } // Trial Appendix pdfWin.document.write('

Trial Detail Appendix (' + studies.length + ' trials)

'); pdfWin.document.write(''); for (var ti = 0; ti < studies.length; ti++) { var tr = studies[ti]; pdfWin.document.write(''); } pdfWin.document.write('
NCT IDTitlePhaseStatusSponsorEnrollmentStart
' + tr.nctId + '' + escapeHtml(tr.title.substring(0, 60)) + '' + phaseLabel(tr.phases) + '' + statusLabel(tr.status) + '' + escapeHtml(tr.sponsor.substring(0, 30)) + '' + formatNum(tr.enrollment) + '' + (tr.startDate || 'N/A') + '
'); // Footer pdfWin.document.write(''); pdfWin.document.write(' '); pdfWin.document.close(); setTimeout(function() { pdfWin.print(); }, 500); } function showSponsorComparison() { var studies = state._exportStudies; if (!studies || !studies.length) { alert('No data. Run a search first.'); return; } // Find top 3 sponsors var sponsorCounts = {}; for (var i = 0; i < studies.length; i++) sponsorCounts[studies[i].sponsor] = (sponsorCounts[studies[i].sponsor] || 0) + 1; var top3 = Object.keys(sponsorCounts).sort(function(a,b) { return sponsorCounts[b] - sponsorCounts[a]; }).slice(0, 3); var exportEl = document.getElementById('export-content'); var chtml = '

Sponsor Comparison: Top 3 for "' + escapeHtml(state._exportQuery) + '"

'; chtml += '
'; for (var si = 0; si < top3.length; si++) { var sp = top3[si]; var spStudies = studies.filter(function(s) { return s.sponsor === sp; }); var spEnroll = 0, spPhases = {p1:0,p2:0,p3:0,p4:0}; var spRecruiting = 0; for (var j = 0; j < spStudies.length; j++) { spEnroll += (spStudies[j].enrollment || 0); var mp = spStudies[j].phases.length ? spStudies[j].phases[0] : 'NA'; if (mp === 'PHASE1' || mp === 'EARLY_PHASE1') spPhases.p1++; else if (mp === 'PHASE2') spPhases.p2++; else if (mp === 'PHASE3') spPhases.p3++; else if (mp === 'PHASE4') spPhases.p4++; if (spStudies[j].status === 'RECRUITING') spRecruiting++; } chtml += '
'; chtml += '
' + escapeHtml(truncate(sp, 30)) + '
'; chtml += '
'; chtml += '
' + spStudies.length + '
Trials
'; chtml += '
' + formatCompact(spEnroll) + '
Enrolled
'; chtml += '
'; chtml += '
'; chtml += '
' + spPhases.p3 + '
Phase 3
'; chtml += '
' + spRecruiting + '
Recruiting
'; chtml += '
'; // Phase bar var totalPh = spPhases.p1 + spPhases.p2 + spPhases.p3 + spPhases.p4 || 1; chtml += '
'; if (spPhases.p1) chtml += '
'; if (spPhases.p2) chtml += '
'; if (spPhases.p3) chtml += '
'; if (spPhases.p4) chtml += '
'; chtml += '
'; chtml += '
P1: ' + spPhases.p1 + 'P2: ' + spPhases.p2 + 'P3: ' + spPhases.p3 + 'P4: ' + spPhases.p4 + '
'; chtml += '
'; } chtml += '
'; chtml += ''; exportEl.innerHTML = chtml; } // ---------------------------------------------------------------- // PRO FEATURE 5: API ACCESS PREVIEW (INTERACTIVE EXPLORER) // ---------------------------------------------------------------- function renderApiExplorer(container) { var html = '
Pro Feature
'; html += '
API Access Preview
'; html += '
Interactive API explorer showing live calls to our wrapped endpoints. Test queries and see formatted responses.' + srcTip('Live API calls to ClinicalTrials.gov via our ct-proxy and openFDA FAERS directly. Shows real data with response timing.') + '
'; var apis = [ { id: 'api-pipeline', title: 'Drug Pipeline', method: 'GET', placeholder: 'semaglutide', desc: 'Search trials for a drug and get structured pipeline data' }, { id: 'api-safety', title: 'Safety Overlay', method: 'GET', placeholder: 'metformin', desc: 'Get FAERS adverse event counts for a drug' }, { id: 'api-sponsor', title: 'Sponsor Pipeline', method: 'GET', placeholder: 'Pfizer', desc: 'Get all trials for a specific sponsor' }, { id: 'api-landscape', title: 'Condition Landscape', method: 'GET', placeholder: 'breast cancer', desc: 'Search trials for a condition' } ]; html += '
'; for (var i = 0; i < apis.length; i++) { var api = apis[i]; html += '
'; html += '
' + api.title + '
' + api.method + '
'; html += '
'; html += '
' + api.desc + '
'; html += '
' + getApiEndpoint(api.id, api.placeholder) + '
'; html += '
'; html += '
'; html += ''; html += ''; html += '
'; html += '
Click "Try It" to see live API response
'; html += '
'; html += '
'; } html += '
'; container.innerHTML = html; } function getApiEndpoint(id, query) { if (id === 'api-pipeline') return '/api/ct-proxy?query.term=' + encodeURIComponent(query) + '&pageSize=3'; if (id === 'api-safety') return 'https://api.fda.gov/drug/event.json?search=patient.drug.openfda.generic_name:"' + encodeURIComponent(query) + '"&count=patient.reaction.reactionmeddrapt.exact&limit=10'; if (id === 'api-sponsor') return '/api/ct-proxy?query.spons=' + encodeURIComponent(query) + '&pageSize=3'; if (id === 'api-landscape') return '/api/ct-proxy?query.term=' + encodeURIComponent(query) + '&pageSize=3&filter.overallStatus=RECRUITING'; return ''; } function updateApiEndpoint(id) { var input = document.getElementById(id + '-input'); var endpointEl = document.getElementById(id + '-endpoint'); if (input && endpointEl) endpointEl.textContent = getApiEndpoint(id, input.value || ''); } function tryApiCall(id) { var input = document.getElementById(id + '-input'); var resultEl = document.getElementById(id + '-result'); var metaEl = document.getElementById(id + '-meta'); var query = input ? input.value.trim() : ''; if (!query) return; resultEl.innerHTML = '
 Fetching...
'; metaEl.innerHTML = ''; var url; if (id === 'api-pipeline') url = API_CT + '?query.term=' + encodeURIComponent(query) + '&pageSize=3'; else if (id === 'api-safety') url = API_FDA + '?search=' + encodeURIComponent('patient.drug.openfda.generic_name:"' + query + '"') + '&count=patient.reaction.reactionmeddrapt.exact&limit=10'; else if (id === 'api-sponsor') url = API_CT + '?query.spons=' + encodeURIComponent(query) + '&pageSize=3'; else if (id === 'api-landscape') url = API_CT + '?query.term=' + encodeURIComponent(query) + '&pageSize=3&filter.overallStatus=RECRUITING'; var startTime = performance.now(); fetch(url).then(function(r) { var elapsed = Math.round(performance.now() - startTime); return r.json().then(function(json) { var text = JSON.stringify(json, null, 2); var resultCount = json.totalCount || (json.studies ? json.studies.length : (json.results ? json.results.length : 'N/A')); resultEl.innerHTML = '
' + escapeHtml(text.substring(0, 4000)) + (text.length > 4000 ? '\n\n... (truncated, ' + formatNum(text.length) + ' total chars)' : '') + '
'; metaEl.innerHTML = 'Response time: ' + elapsed + 'msResults: ' + resultCount + 'Size: ' + formatCompact(text.length) + ' chars'; }); }).catch(function(err) { resultEl.innerHTML = '
Error: ' + escapeHtml(err.message) + '
'; }); } function copyApiCurl(id) { var input = document.getElementById(id + '-input'); var query = input ? input.value.trim() : ''; var url; if (id === 'api-pipeline') url = window.location.origin + '/api/ct-proxy?query.term=' + encodeURIComponent(query) + '&pageSize=3'; else if (id === 'api-safety') url = 'https://api.fda.gov/drug/event.json?search=' + encodeURIComponent('patient.drug.openfda.generic_name:"' + query + '"') + '&count=patient.reaction.reactionmeddrapt.exact&limit=10'; else if (id === 'api-sponsor') url = window.location.origin + '/api/ct-proxy?query.spons=' + encodeURIComponent(query) + '&pageSize=3'; else if (id === 'api-landscape') url = window.location.origin + '/api/ct-proxy?query.term=' + encodeURIComponent(query) + '&pageSize=3&filter.overallStatus=RECRUITING'; var curl = 'curl -s "' + url + '" | python -m json.tool'; navigator.clipboard.writeText(curl).then(function() { var btn = document.querySelector('#' + id + '-result').closest('.api-call-card').querySelector('.api-call-btn-copy'); if (btn) { var orig = btn.textContent; btn.textContent = 'Copied!'; setTimeout(function() { btn.textContent = orig; }, 1500); } }); } // ---------------------------------------------------------------- // PRO FEATURES: RENDERING ORCHESTRATOR // ---------------------------------------------------------------- function renderProFeatures() { var grid = document.getElementById('pro-grid'); if (!grid) return; var features = [ { id: 'portfolio', title: 'Portfolio Monitoring Dashboard', desc: 'Track multiple drugs, conditions, and sponsors. Real-time trial counts, phase distribution, and status monitoring. Replaces $50K/year EvaluatePharma.', renderer: renderPortfolioDashboard }, { id: 'digest', title: 'Weekly Pipeline Digest', desc: 'See what changed this week for your portfolio items. New trials, phase advances, completed trials, all from live data.', renderer: renderWeeklyDigest }, { id: 'signals', title: 'Safety Signal Alerts', desc: 'FAERS safety signal detection for portfolio drugs. Flags quarters >40% above rolling average. The unique TrialPulse differentiator.', renderer: renderSafetySignals }, { id: 'export', title: 'Competitive Landscape Export', desc: 'Generate PDF pipeline reports, CSV data exports, and sponsor comparisons for BD&L teams and board presentations.', renderer: renderExportPanel }, { id: 'api', title: 'API Access Preview', desc: 'Interactive API explorer. Test live endpoints, see formatted JSON responses, copy cURL commands.', renderer: renderApiExplorer } ]; var html = ''; for (var i = 0; i < features.length; i++) { var f = features[i]; var locked = !state.isAdmin; html += '
'; if (locked) { html += '
'; html += ''; html += '
' + escapeHtml(f.title) + '
' + escapeHtml(f.desc) + '
'; html += '
'; html += '
'; } else { html += '
'; } html += '
'; } grid.innerHTML = html; // If admin, render all features if (state.isAdmin) { for (var j = 0; j < features.length; j++) { var contentEl = document.getElementById('pro-' + features[j].id + '-content'); if (contentEl) features[j].renderer(contentEl); } } } function openSignup() { if (window.CognizantSignup) { window.CognizantSignup.open({ product: 'trialpulse', title: 'TrialPulse', subtitle: 'Unlock pipeline intelligence and safety monitoring' }); } } // ---------------------------------------------------------------- // PUBLIC API // ---------------------------------------------------------------- window.TP = { searchPipeline: searchPipeline, runDashboard: runDashboard, runSafetyOverlay: runSafetyOverlay, runSponsorTracker: runSponsorTracker, runConditionLandscape: runConditionLandscape, togglePhase: togglePhase, toggleStatus: toggleStatus, openSignup: openSignup, quickSearch: quickSearch, // Pro features addToPortfolio: addToPortfolio, removeFromPortfolio: removeFromPortfolio, refreshPortfolio: refreshPortfolio, showAddPortfolioPrompt: showAddPortfolioPrompt, runExport: runExport, exportCSV: exportCSV, exportPDF: exportPDF, showSponsorComparison: showSponsorComparison, tryApiCall: tryApiCall, copyApiCurl: copyApiCurl, updateApiEndpoint: updateApiEndpoint }; // Init on load if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();