How atharvakatre/pharmsight-forecast works
PharmSight is a web app for forecasting ten years of drug revenue across editable scenarios. Forecasters enter or import year-by-year funnel assumptions, then review patient and revenue results, compare scenarios, export CSVs, and save immutable workspace snapshots; Brand Leads can review and comment. The React UI calls a FastAPI backend, whose scenario services persist inputs and invoke the Decimal forecast engine; PostgreSQL stores scenarios, versions, and comments. The graph includes documented versioning and dashboard capabilities, though some of their backend implementation was not excerpted.
Main entry points: client.ts API client · routes.tsx Feature routing · ScenarioEditor.tsx Scenario editing · scenarios.py Scenario service
Components 24
Web client
- Feature routing
frontend/src/routes.tsx - Login
frontend/src/features/login/LoginPage.tsx - Session state
frontend/src/auth/AuthContext.tsx - API client
frontend/src/api/client.ts - Workspace state
frontend/src/workspace/WorkspaceContext.tsx - Scenario editing
frontend/src/features/scenarios/ScenarioEditor.tsx - Assumption grid
frontend/src/features/scenarios/InputGrid.tsx - CSV input import
frontend/src/features/scenarios/csvInputs.ts - Forecast dashboard
frontend/src/features/dashboard/DashboardPage.tsx - Version history
frontend/src/features/versions/VersionsPage.tsx - Snapshot review
frontend/src/features/versions/VersionDetailView.tsx
API and access
- Authentication routes
backend/app/api/auth.py - Scenario routes
backend/app/api/scenarios.py - Version and comment routes
backend/app/api/versions.py - Identity and permissions
backend/app/api/deps.py - Credential service
backend/app/services/auth.py
Forecast domain
- Scenario service
backend/app/services/scenarios.py - Version service
backend/app/services/versions.py - Forecast calculations
backend/app/forecast/engine.py - Forecast models
backend/app/forecast/models.py
Workspace data
- Workspace records
backend/app/db_models.py - Database sessions
backend/app/database.py - PostgreSQL
Other components
- Forecaster / Brand Lead
Connections 36
- Forecaster / Brand Lead → Feature routing: uses
frontend/src/routes.tsx - Feature routing → Login: routes to
frontend/src/routes.tsx - Feature routing → Forecast dashboard: routes to
frontend/src/routes.tsx - Feature routing → Scenario editing: routes to
frontend/src/routes.tsx - Feature routing → Version history: routes to
frontend/src/routes.tsx - Login → Session state: uses session
frontend/src/features/login/LoginPage.tsx - Session state → API client: sets token
frontend/src/auth/AuthContext.tsx - Scenario editing → Assumption grid: renders
frontend/src/features/scenarios/ScenarioEditor.tsx - Scenario editing → CSV input import: imports CSV
frontend/src/features/scenarios/ScenarioEditor.tsx - Scenario editing → Workspace state: uses state
frontend/src/features/scenarios/ScenarioEditor.tsx - Forecast dashboard → Workspace state: uses scenarios
frontend/src/features/dashboard/DashboardPage.tsx - Version history → Snapshot review: shows detail
- Login → API client: calls API
frontend/src/features/login/LoginPage.tsx - Workspace state → API client: calls API
frontend/src/workspace/WorkspaceContext.tsx - Forecast dashboard → API client: requests data
frontend/src/features/dashboard/DashboardPage.tsx - Scenario editing → API client: requests data
frontend/src/features/scenarios/ScenarioEditor.tsx - Snapshot review → API client: requests data
frontend/src/features/versions/VersionDetailView.tsx - API client → Authentication routes: HTTP API
README.md - API client → Scenario routes: HTTP API
README.md - API client → Version and comment routes: HTTP API
README.md - Authentication routes → Credential service: authenticates via
backend/app/api/auth.py - Authentication routes → Identity and permissions: uses identity
backend/app/api/auth.py - Scenario routes → Identity and permissions: checks access
backend/app/api/scenarios.py - Scenario routes → Scenario service: delegates to
backend/app/api/scenarios.py - Version and comment routes → Version service: delegates to
- Credential service → Workspace records: reads users
backend/app/services/auth.py - Credential service → Identity and permissions: verifies passwords
- Scenario service → Workspace records: persists scenarios
backend/app/services/scenarios.py - Scenario service → Forecast calculations: calculates forecasts
backend/app/services/scenarios.py - Scenario service → Forecast models: builds inputs
backend/app/services/scenarios.py - Version service → Scenario service: loads scenarios
backend/app/services/versions.py - Version service → Forecast calculations: calculates snapshots
backend/app/services/versions.py - Version service → Workspace records: stores snapshots/comments
backend/app/services/versions.py - Forecast calculations → Forecast models: uses models
backend/app/forecast/engine.py - Workspace records → Database sessions: uses base
backend/app/db_models.py - Database sessions → PostgreSQL: connects
backend/app/database.py