The PullmanMorrison Analytics Dashboard is a comprehensive business intelligence tool designed for recruitment agencies. It provides real-time insights into recruiter productivity, revenue analytics, data quality metrics, and team performance through an intuitive and interactive interface.
Built with React and modern UI components, this dashboard offers a complete view of your recruitment operations with customizable filters, interactive charts, and detailed data tables to help make data-driven decisions.
- Overview Dashboard: Quick snapshot of all key performance indicators
- Recruiter Productivity: Analyze individual recruiter performance metrics
- Revenue Analytics: Track financial performance by client, industry, and team
- Data Quality: Monitor database health and input tracking
- Team Performance: Compare team metrics and identify top performers
- Date Range Filtering: Filter data by predefined periods or custom date ranges
- Entity Filtering: Filter by recruiters, clients, teams, and industries
- Metric Selection: Choose which metrics to display in each dashboard
- Filter Persistence: Filters are maintained when switching between tabs
- Multiple Chart Types: Bar charts, line charts, pie charts, and more
- Real-Time Updates: Charts update dynamically based on selected filters
- Responsive Design: Visualizations adapt to different screen sizes
- Tooltips: Hover over chart elements to see detailed information
- Sortable Columns: Click column headers to sort data
- Pagination: Navigate through large data sets with ease
- Export Functionality: Export data to CSV, Excel, or PDF formats
- Empty State Handling: Clear messages when no data matches filters
The dashboard follows a modular component-based architecture organized into logical categories:
- MainDashboard: The entry point component that orchestrates the entire dashboard.
- Dashboard: A layout component that provides the overall structure.
- Grid & GridItem: Flexible grid layout system for responsive dashboard design.
- MetricCard: Displays key metrics with optional trends and charts.
The dashboard is divided into 5 main analytical modules:
- OverviewPanel: Provides a high-level summary of all key metrics.
- RecruiterProductivity: Focuses on individual recruiter activities and performance.
- RevenueAnalytics: Tracks financial performance across clients and industries.
- DataInputTracking: Monitors data quality and input activities.
- TeamPerformance: Compares metrics across different teams.
- BarChartComponent: Renders bar charts for comparing categorical data.
- LineChartComponent: Displays trends over time.
- PieChartComponent: Shows data composition and proportions.
- StackedBarChartComponent: Compares multiple categories within segments.
- MultiLineChartComponent: Compares multiple trends over time.
- DataTable: Renders tabular data with sorting and pagination capabilities.
- ExportButton: Provides functionality to export data in different formats.
The filtering system is composed of several interconnected components:
- GlobalFilterButton: Entry point for filtering across the entire dashboard.
- FilterModal: Modal dialog for selecting different filter criteria.
- DateRangeSelector: Calendar-based date range selection.
- EntitySelector: Multi-select component for filtering by entity types.
- MetricsSelector: Allows selection of which metrics to display.
- FilterBadges: Visual representation of active filters with removal capability.
The dashboard implements a unidirectional data flow pattern:
- State Management: Each tab (Overview, Recruiter, Revenue, etc.) maintains its own filter state.
- Filter Changes: When filters are updated:
- Filter state is updated in the parent component (MainDashboard)
- Changes propagate downward to analytical components
 
- Data Filtering: Each analytical component applies filters to its data
- Visualization Updates: Charts and tables re-render with filtered data
MainDashboard
βββ Tabs (Overview, Recruiter, Revenue, Data, Team)
βββ GlobalFilterButton
β   βββ FilterModal
β       βββ DateRangeSelector
β       βββ EntitySelector
β       βββ MetricsSelector
βββ FilterBadges
βββ Analytics Panels
    βββ MetricCards
    β   βββ Charts (Bar, Line, Pie, etc.)
    βββ DataTables
        βββ ExportButton
The dashboard uses a CSS variables-based theming system:
- Light/Dark Modes: Full support for light and dark color schemes.
- Color Tokens: Semantic color variables for consistent UI.
- Component Styling: Consistent styling across all UI components.
The dashboard leverages a comprehensive UI component library built with:
- RadixUI: For accessible and customizable UI primitives
- Tailwind CSS: For utility-based styling
- Recharts: For interactive data visualizations
Key UI components include:
- Button: Various button styles and variants
- Dialog: Modal dialogs for actions and detailed views
- Tabs: For switching between different dashboard sections
- Popover: For tooltips and contextual information
- Calendar: For date selection
- Table: For tabular data display
- Badge: For status indicators and filter tags
- Card: For containing related information
- Dropdown: For selection inputs
- Form inputs: Text inputs, checkboxes, etc.
The dashboard supports multiple filter types:
- 
Date Filters: - Custom date ranges with calendar selection
- Predefined ranges (Last Week, Last Month, Last Quarter, YTD)
 
- 
Entity Filters: - Recruiters: Filter by individual recruiters
- Clients: Filter by specific clients
- Industries: Filter by industry sectors
- Teams: Filter by team groups
 
- 
Metric Filters: - Control which metrics are displayed in each dashboard
- Show/hide specific data points
 
- Filters are maintained separately for each dashboard tab
- When switching tabs, the appropriate filters for that context are applied
- The filter state is preserved during navigation
- FilterModal: Main interface for setting all filter criteria
- DateRangeSelector: Calendar interface with presets
- EntitySelector: Searchable multi-select with checkboxes
- MetricsSelector: Toggle switches for metric visibility
- FilterBadges: Visual display of active filters
The dashboard provides robust data export capabilities:
- CSV Export: Structured data in comma-separated format
- Excel Export: For more complex formatting and analysis
- PDF Export: For reporting and sharing
The ExportButton component handles these exports, with appropriate formatting for each export type.
The dashboard implements several techniques to ensure optimal performance:
- Memoization: useMemoanduseCallbackto prevent unnecessary re-renders
- Virtualization: Efficient rendering of large datasets
- Code Splitting: Lazy loading components as needed
- Optimized Charts: Performant chart rendering with appropriate animations
Issue: Charts appear blank or incorrectly sized.
Solution:
- Ensure container has a defined height
- Check that data format matches chart requirements
- Verify that required props are correctly passed
- For responsive issues, check if parent containers have proper sizing
Issue: Setting filters doesn't update the visualizations.
Solution:
- Check filter state in browser console
- Verify filter callback functions are correctly passed down component tree
- Ensure filter logic in data filtering functions is correct
- Confirm that filtered data is correctly passed to visualization components
Issue: Date range filtering is not working as expected.
Solution:
- Check date format consistency (all dates should use the same format)
- Verify start and end dates are correctly passed
- Ensure date comparison logic handles time zones properly
- For "Last X days/months" presets, verify calculation logic
Issue: Data exports missing data or formatting incorrectly.
Solution:
- Verify export data is correctly formatted
- Check for any transformations needed before export
- Ensure export functions are handling async operations correctly
- For large datasets, implement pagination or chunking
Issue: Dashboard is slow to respond, especially with large datasets.
Solution:
- Implement pagination and limit initial data load
- Add memoization for expensive calculations
- Optimize chart rendering (reduce animations, simplify data)
- Consider server-side filtering for very large datasets
The dashboard is optimized for modern browsers:
- Chrome 80+
- Firefox 75+
- Safari 13+
- Edge 80+
For older browsers, consider polyfills for:
- ES6+ features
- CSS Variables
- Flexbox/Grid layout
When encountering display issues on mobile devices:
- Check viewport settings
- Verify grid breakpoints are correctly configured
- Ensure charts have minimum heights to prevent collapse
- Test filter modals on small screens for usability
To add new metrics to the dashboard:
- Add the metric to the data model
- Create visualization components if needed
- Update filter options to include the new metric
- Add the metric to relevant analytical components
To implement custom visualizations:
- Create a new chart component following existing patterns
- Implement Recharts components with appropriate props
- Add data transformation functions
- Integrate with MetricCard or standalone container
To add new filter types:
- Update the FilterModal component to include the new filter
- Create a selector component for the filter if needed
- Modify filter state structure in MainDashboard
- Update filter application logic in analytical components
When extending the dashboard:
- Follow existing component patterns
- Maintain unidirectional data flow
- Keep components focused on single responsibilities
- Document props and key functions
- Implement proper error handling