🚀 7/16 Release
✨ Enhancements
🔧 Job-Based Plans (new plan type)
Brand-new plan type where awards are calculated per job from your field-service data: plan structure, API, calculation engine, and award rollup
Plan builder wizard: eligibility + award rules, award modes, additional KPIs and qualifiers steps, and a distribution review + confirmation flow
Admin plan view: Plan Summary cards with right sidebar, Performance tab with a Jobs sub-pane (expandable per-employee drill-down) and an Individual Performance sub-pane
Per-rule payout breakdown drawer on the admin Payouts tab
Employee experience: Jobs tab on the plan page (web)
"Refresh sync" on the Performance tab triggers an Integration Hub sync + award recalc, and awards now also recalc automatically when a sync completes
New "Job Name" system field, saved and shown alongside Job ID on job results
Data attributes catalog powering job-field mapping
Text-based eligibility rules (e.g., Callbacks is "No")
Custom SQL job-award metrics for advanced award formulas
Per-plan dataset selection (primary + optional join dataset) in backoffice
Employee matching on job data now works across all providers (Google Sheets, Jobber, Housecall Pro, etc.), not just ServiceTitan
Integration Hub metric preview now shows the actual list of jobs with amount, date, and employee
Award titles now show the metric name (e.g., "Gross Profit") instead of the raw formula
Custom attribute naming is now inline in the dropdown instead of a separate component
👥 People
Role levels can now be changed even when actively used in a plan
🐛 Bug Fixes
🔧 Job-Based Plans
Added mapping-time warnings that flag columns whose values can't be read as the target attribute (e.g., dollar strings mapped to a percent field)
Job rows missing an employee value are now skipped instead of failing the whole dataset
Job-rows date filter no longer silently returns every job for every period on sheet-based sources
💰 Payouts & Plans
Fixed ratings not saving during distribution review after enrollments were changed mid-session on a pool plan
Fixed data not saving on manual review distributions
📊 Metrics & Data
Dataset "last updated" date now matches the actual last sync time
