Skip to content

Ascendly — Development progress report

Audience: Leadership / product stakeholders
Last updated: July 15, 2026
This is a summary status document. Detailed technical specs live in the linked docs under Documentation index.


Executive summary

AreaStatus
Scorecard operations (7 submission pages + task delivery)Complete — CRUD, filters, export, audit logs, month-lock UX, bulk Excel upload (ATW/SBS/Non-SBS/Additional Points/Incidents), SBS duplicate-as-new-entry, similar entry warning on form Save and upload preview (five main entry types), soft delete + recycle bin, Additional Points, Incidents
Scorecard configurationComplete — per-cycle eval quotas, BSC metrics, goals, SBS rubric, schedule day codes, global brands list
BSC fiscal cycles (2025 / 2026)Complete — versioned config per fiscal cycle
OrganizationComplete — chart (by section + full company), list, department tasks, schedules
Employee schedulesComplete — monthly grid, day codes, working_days, wired into BSC attendance + task delivery
Employees adminComplete — directory, edit, access levels
Dashboard / BSC rollupsLive — five dashboard pages (incl. Bonus qualification matrix); Mongo + optional BigQuery; sync, finalize, reopen; BSC + bonus eligibility filters; bonus qualification badge, filter, export, manager matrix; performance comparison (multi-site / level 5)
Learning (Learn)L0 in progress — modules, player, author studio; plan
Assistant / MCP / AI botPlannedAssistant/MCP plan (separate track)
Desktop appPhase 2 — BSC Home, notifications, My ATW, system tray, activity heartbeat, offline banner; installer + auto-update deferred
Platform adminLive — system status, admin email compose, permissions matrix, welcome email, auth domain allowlist, activity tracking (web/desktop split), maintenance mode

Recent milestones (July 2026):

  • Bonus qualification dashboard (July 15) — Manager matrix at /dashboard/bsc-bonus: Goal threshold + remark, six gate columns, Total BSC / KPMs, SBS tenure; sticky employee/qualification columns; sortable headers (default Total BSC high→low); Excel export. Guide: Bonus qualification, Dashboard overview.
  • Similar entry warning (July 14) — Advisory duplicate check on form Save and bulk upload preview for SBS, Non-SBS, ATW, Attendance, and Productivity (same similarity keys; never blocks submit/commit). Upload commit skips the check for speed. Guide: Scorecard § Similar entry warning.
  • Task delivery UX & scoring (July 11) — Today without an entry is pending (excluded from month average / BSC KPI until saved); past missing workdays still score as 0%. Grid highlights: amber = pending today, red = missing earlier days. Avg (to date) column tooltips explain the breakdown. Schedule day code abbreviations (VL, SL, H, OFF, etc.) shown on non-WD cells. Separate is_task_delivery_day flag on schedule day codes so VL/SL accept entries without counting toward attendance working_days. Guides: Fiscal cycles § Task delivery, Scorecard § Task Delivery, Employee schedules.
  • Org chart overhaul (July 7)By section drill-down and Full company toggle; divisional layout (GM → clusters → departments → vertical staff); SME layer (access level 2) between managers and members; level-1 members sorted by hire date; leader role labels and variable compact card sizes; multi-manager units no longer duplicate manager child cards; pan/zoom explore mode for full view; text selection disabled for easier dragging. Guide: Organization.
  • Production data cutover (July 3) — One-shot Mongo copy (ascendlyascendly-production) and scoped BigQuery BSC 2025 migration; Jul 2026 BSC backfill. Runbook: design-log/2026-07-03-staging-to-production-data-migration.md.
  • Maintenance mode (July 3) — Env-driven API 503 with email bypass; web /maintenance page and GET /v1/public/app-status. Guide: Platform & admin § Maintenance mode.
  • Ops: month entry purge scriptdelete_scorecard_month_entries.py for hard-delete by occurrence month + optional BQ resync. Reference: BigQuery dashboard § One-shot month purge.

Recent milestones (June 2026):

  • Platform admin (June 25) — System status (/system), admin email compose (/system/email), permissions matrix (/permissions), employee welcome email, ALLOWED_EMAIL_DOMAINS sign-in gate, legal pages (/privacy, /terms), web/desktop activity heartbeat split, Gmail notification email delivery. Guide: Platform & admin.
  • ATW entry requests (June 24) — Employees submit via desktop My ATW (proof upload); managers approve/reject on web ATW page; notifications on submit/approve/reject. Guide: Scorecard § ATW entry requests, Desktop § My ATW.
  • BSC async sync jobs (June 24) — Background sync/finalize with job polling; per-employee cycle refresh. Guide: Dashboard overview § BSC sync jobs.
  • Notifications + desktop/web parity (June 23) — Shared inbox hooks; UTC-safe relative times; desktop Home refetch on scorecard.* notifications; soft-deleted entries excluded from all KPI/export paths; self-view BSC always live Mongo. Guides: Notifications, Desktop app, Scorecard § Recycle bin.
  • Bonus qualification — Per user-month bonus_qualified flag (Goal band + zero attendance + zero incidents + no red-flag No + timely weekly when cadence applies); dashboard ⭐ Bonus Qualified badge, filter, export, hover breakdown; Bonus qualification manager matrix. Guide: User-month calculation § Bonus qualification, Bonus qualification dashboard, BigQuery dashboard § Eligibility.
  • Incidents scorecard — NTE, IR, CAR, Coaching log entries; bulk upload; recycle bin; feeds bonus qualification (re-sync after changes). Guide: Scorecard § Incidents.
  • Additional Points bulk upload — Excel template → preview → commit (parity with ATW/SBS/Non-SBS). Guide: Scorecard § Bulk upload.
  • Additional Points scorecard — Managers record discretionary percentage boosts to a KPM or KPI for a month; flows into live BSC compute, BigQuery sync, and dashboard UI (+ markers and hover breakdown). Recycle bin on seven submission pages (retention: any open non-finalized month). Guide: Scorecard § Additional Points, User-month calculation § Additional points.
  • Performance comparison dashboard — Compare sites, clusters, or departments across a BSC cycle; trend chart with scope benchmark, vs cycle avg column, coverage warnings, CSV export, drill-through to Monthly performance. Guide: Performance comparison.
  • Evaluation coverage semantics — Data health and comparison coverage use scored / expected (gap vs not-started), so mid-cycle hires no longer inflate missing counts. Guide: Monthly performance § Data health.
  • Scorecard bulk upload — Excel template → preview → commit on ATW, SBS, Non-SBS, Additional Points, and Incidents pages. Guide: Scorecard § Bulk upload.
  • Bonus eligibility — Separate from BSC cycle eligibility; dashboard filters, export, and overview labels on BSC and Monthly performance pages.
  • Monthly performance dashboard — full-cycle trend, remark distribution, remark table with MoM and cycle insights, data health coverage strip, KPM trend metrics, CSV export. Guide: Monthly performance.
  • Target Score Report — Cycle lens — Month | Cycle toggle; Running Score, remaining-month targets, nearest achievable remark, timeline strip, Plan [month] drill to Month scope. Guide: Target Score Report.
  • Monthly performance — bonus qualification views — Remark | Bonus Qualification toggles on distribution chart and table (independent per section); cycle column shows qualified-month count in BQ lens; CSV includes Employee ID.
  • BSC detailed export — Employee ID column; Not Qualified Reason (failed gates only) beside Bonus Qualification.
  • Goal band classification fix — API and UI use lower-bound thresholds without integer rounding (94.69 no longer misclassified as Goal when min is 95).
  • Performance comparison filter independence — Comparison cycle/scope no longer overwritten when changing filters on other dashboards.

Application pages

PageRouteStatusNotes
Login / OAuth/login, /auth/callbackDoneGoogle sign-in; domain allowlist; legal links
Maintenance/maintenanceDoneShown when API reports maintenance; login/callback exempt
Privacy / Terms/privacy, /termsDonePublic legal pages
Dashboard — BSC/dashboard/bscDoneMonth snapshot, KPI cards, eligibility, sync/finalize/reopen (level 5)
Dashboard — Target/dashboard/bsc-targetDoneMonth + Cycle lenses; remark ladder, what-if, multi-KPI path, running score
Dashboard — Performance/dashboard/bsc-performanceDoneFull cycle: averages, trend (Total/KPM), remark/BQ distribution toggles, remark/BQ table, data health
Dashboard — Comparison/dashboard/bsc-comparisonDoneSegment comparison (site/cluster/department); gated to level 5 or multi-site managers
Scorecard — SBS/scorecard/sbsDoneCycle-aware rubric from API
Scorecard — Non-SBS/scorecard/non-sbsDoneOutput review entries
Scorecard — ATW/scorecard/attitude-towards-workDoneAttitude entries
Scorecard — Attendance/scorecard/attendance-issuesDoneTardiness, absenteeism, etc.
Scorecard — Productivity/scorecard/productivity-issuesDoneCall-outs, performance issues
Scorecard — Additional Points/scorecard/additional-pointsDoneDiscretionary KPM/KPI percentage boosts; BSC + dashboard integration; bulk upload
Scorecard — Incidents/scorecard/incidentsDoneNTE, IR, CAR, Coaching log; bulk upload; bonus qualification input
Scorecard — Task Delivery/scorecard/task-deliveryDoneDaily counts on scheduled workdays
Scorecard — Missing/Excess evals/scorecard/missing-excess-evalsDoneEvaluation gap report
Scorecard — Configurations/scorecard/configurationsDonePer-cycle quotas, metrics, goals, SBS rubric
Organization — Chart/organizationDoneBy section drill-down + Full company view; SME hierarchy; hire-date member sort
Organization — List/organization?view=listDoneHierarchy list + tasks drawer
Organization — Schedules/organization/schedulesDoneMonthly schedule grid
Employees/employeesDoneAdmin (access level gated); row selection; welcome email; nullable BSC level
Permissions/permissionsDoneAccess-level matrix; impersonation (level 5)
Learning/learningBaselineCourses / assignments (/learn redirects)
Profile/profileDoneUser profile + photo; PATCH preserves email/image/password; initials fallback when image fails
Notifications/notificationsDoneIn-app inbox, bell, toasts; delivery prefs; scorecard + ATW request types
System — Status/systemDoneOps health: Mongo, BQ, S3, worker, rolling sync (level 5)
System — Email/system/emailDoneAdmin broadcast compose — email and/or in-app (level 5)
System — Notifications/system/notificationsDoneAdmin type catalog + email test (level 5)
Desktop — BSC Home/bsc (desktop)DoneEmployee score snapshot; 15s poll; notification-driven refresh; desktop activity minutes
Desktop — My ATW/my-atw (desktop)DoneSubmit/cancel ATW entry requests with proof upload
Desktop — Notifications/notifications (desktop)DoneSame API as web; titlebar bell + optional native toast
Desktop — Tray(shell)DoneMinimize-to-tray; sign out / quit from context menu

June 2026 enhancements (since prior report)

AreaEnhancement
Platform adminSystem status, admin email compose, permissions matrix, welcome email, auth domain allowlist, legal pages
Notification emailGmail delivery per user prefs; admin email test; quiet hours
ATW entry requestsEmployee submit (desktop/web) with proof; manager approve/reject on web ATW; notifications
Activity trackingSplit last active (web/desktop), visibility-only heartbeats; User activity
BSC sync jobsAsync sync/finalize with job polling; per-employee cycle refresh; UI progress persistence
Scorecard filter persistenceDate + org filters in URL search params (shareable links)
Desktop tray & offlineMinimize-to-tray; connectivity banner; refresh token rotation
Bonus qualificationbonus_qualified + breakdown on BQ user-month; Scope panel badge; filter + export; Bonus qualification manager matrix (/dashboard/bsc-bonus); incidents + attendance + Goal band + red-flag + timely weekly gates
Incidents scorecardNew page: CRUD, export, recycle bin, bulk upload; gates bonus qualification
Additional Points uploadExcel template → preview → commit (same flow as ATW/SBS/Non-SBS)
Additional PointsKPM/KPI-target boosts; KPM boosts apply to KPM total (not scaled onto KPIs); dashboard + markers; BQ sync stores boosted scores
Recycle binSeven submission pages; restore while occurrence month is not finalized (any open month)
Performance comparisonNew dashboard: compare by site / cluster / department; benchmark line, vs cycle avg, coverage warnings, CSV export, drill-through to Monthly performance
Evaluation coverageScored / expected / gap / not-started semantics on Monthly performance data health and comparison table
Site scope filterSite filter on Monthly performance and comparison when access pool spans multiple sites
Scorecard uploadATW, SBS, Non-SBS, Additional Points, Incidents: download personalized Excel template → preview validation → commit valid rows
Scorecard UXSBS Duplicate entry from row context menu; modals close on Escape; add/upload enabled when current month open even if filter month is finalized; page actions float (activity log + recently deleted hub)
Scorecard recycle binSoft delete on seven submission pages; restore (edit) and permanent purge (delete) from drawer; worker backstop for expired bin rows
Brands listGlobal config under Scorecard → Configurations; datalist on entry forms; auto-append new brands on save
BSC eligibilitybsc_eligible on BQ user-month (cycle rule: regularized on/before July 1 of cycle)
Bonus eligibilitybonus_eligible on BQ user-month (regular on/before first day of that month); dashboard filters + export
Target score reportImproved multi-KPI path planner and Current vs Needed chart
ProfileImages keyed by employee id; initials avatar when load fails; self-service PATCH no longer wipes protected fields
PlatformSeparate login vs app theme; login page redesign; audit log listing performance + impersonation scope
NotificationsIn-app inbox (web + desktop); scorecard submit/delete + ATW request types; scheduled eval reminders (worker); UTC timestamps
Soft delete hardeningActive filter on all seven entry types in lists, exports, BSC compute; scoped BQ resync after delete/restore/purge
Desktop Home refresh15s poll + invalidate on scorecard notifications so BSC % and ATW points stay aligned
OrganizationTighter header spacing on org chart page

July 2026 enhancements

AreaEnhancement
Task delivery — pending todayNo entry on today's scheduled workday → pending (excluded from average); past missing days → 0%; KPI breakdown status: pending; unit tests in test_task_delivery_kpis.py
Task delivery — grid UXAmber/red cell highlights; Pending / Missing / Future labels in employee detail; hover tooltips on month average column and cells; schedule day code abbreviations on off/non-WD days
Schedule day codes — task delivery flagis_task_delivery_day per catalog row (VL/SL default true); decouples TD eligibility from attendance working_days; config UI checkbox; backfill from is_working_day for legacy rows
Org chart — Full companyToggle from By section; compact cards; GM → cluster → department → vertical members; explore pan/zoom (50%–200%, default 75%)
Org chart — HierarchyDept managers on leader card only (no duplicate child cards); SME (level 2) between manager and members; level-1 members by hire date
Org chart — LeadersRole labels (General / Cluster / Department Manager, SME); wider leader cards in full view
Org chart — UXselect-none on canvas; drag-to-pan from cards; layout fixes for even partial rows
Org tree APIhire_date on employee nodes in GET /v1/organization/tree

Doc: Organization.


Dashboard pages (shipped)

PageRouteDoc
Balanced Scorecard/dashboard/bscDashboard overview
Target Score Report/dashboard/bsc-targetDashboard overview
Monthly performance/dashboard/bsc-performanceMonthly performance
Performance comparison/dashboard/bsc-comparisonPerformance comparison

Performance comparison highlights (June 2026):

  • Access gating — Level 5+ or 2+ sites with 2+ employees; nav hidden when ineligible
  • Compare dimensions — Site, cluster, or department tabs (≥ 2 segments required)
  • Summary table — Cycle avg, snapshot month, vs cycle avg, band mix, evaluation coverage
  • Trend chart — One line per segment + dashed scope benchmark
  • Drill-through — Row links to Monthly performance with cycle and segment filters pre-applied
  • CSV export — Full comparison table download

Monthly performance highlights (June 2026):

  • BSC cycle selector (all months Jul–Jun in one view)
  • Cycle averages — Total BSC + per-KPM means
  • Trend chart — multi-employee lines; KPM metric dropdown; band reference lines; Final month styling
  • Remark distribution — 12-month stacked band mix
  • Remark table — cycle avg + band, MoM deltas, cycle ? tooltip, sort, CSV export
  • Data health — per-month scored / expected coverage; gap and not-started counts; report status (draft/final)

API: GET /v1/dashboard/bsc/performance?cycle_id=


BSC 2025 / 2026 rollout (June 2026)

CapabilityStatus
Fiscal cycle registry (Jul–Jun, cycle id = start year)Done
Per-cycle config documents + migration from legacy single docsDone
BSC 2026 metrics: revised productivity formulas (four KPIs, new compute)Done
June 2026: fiscal BSC 2025, metrics from 2025 bundleDone
Per-cycle SBS checklist rubric (API + form)Done
Task delivery collection, API, scorecard pageDone
Dashboard finalize / re-generate / reopenDone
Scorecard entry lock when month finalizedDone
Disabled edit UI with lock tooltipsDone

Doc: Fiscal cycles & locks


Scorecard & BSC

CapabilityStatus
Seven operational submission surfaces + task delivery + Additional Points + IncidentsDone
Soft delete + recycle bin (seven submission pages)Done
Config: per-cycle eval quotas, metrics, goals, SBS rubricDone
Server-side KPI helpers + bsc_employee_computeDone
Per-employee working_days from schedules in BSC runDone
Live dashboard / employee BSC cardsDone
BigQuery user-month ETL + read pathDone (optional via env); bsc_eligible, bonus_eligible, bonus_qualified on summary rows
Rolling sync + Final Report + ReopenDone

Docs: Scorecard, BSC metrics, Fiscal cycles & locks, BigQuery dashboard, User-month calculation


Platform & operations

CapabilityStatus
FastAPI + MongoDBDone
JWT auth via tbl_employees + GoogleDone
Audit logging (tbl_logs) on scorecard + schedulesDone
Activity log UI (per page)Done on scorecard pages, employees, org, learn, profile
In-app notifications (web + desktop)Done
Notification email (Gmail)Done (when NOTIFICATION_EMAIL_ENABLED)
Desktop app — BSC Home, My ATW, notifications, trayDone (Phase 2)
Desktop installer + auto-updateDeferred (Phase 3)
Docker Mongo (local) / AtlasSupported

  1. Deep data health — TD / eval / attendance gaps on dashboard (see Roadmap).
  2. July 2026 validation — Full fiscal BSC 2026 cycle in production; confirm metrics and task delivery in live scores.
  3. Learning dashboard — When Learn is prioritized for managers.

Documentation index

DocumentContents
Documentation homeDoc index
Dashboard overviewFive dashboard pages and how they relate
Bonus qualificationManager bonus gate matrix (month)
Monthly performanceCycle performance page (sections, filters, export)
Performance comparisonSegment comparison dashboard (access, table, drill-through)
User activityLast active, active minutes, heartbeat rules
Platform & adminSign-in domains, system status, admin email, permissions
OrganizationOrg chart (by section + full company), list, SME hierarchy, hire-date sort
NotificationsIn-app + email inbox, types, web/desktop parity
Desktop appWindows employee client
ScorecardScorecard pages, API, schemas
Fiscal cycles & locksFiscal cycles, task delivery, month locks
Employee schedulesSchedules, day codes, working days
BSC metricsKPM/KPI config and formulas
Total score goalsTotal score goal tiers
Progress reportThis file
BigQuery dashboardBQ ETL, sync, finalize; eligibility + bonus qualification flags
User-month calculationPer employee-month compute
RoadmapPlanned dashboard enhancements

When to update docs: Any new page, collection, or breaking API change should update the feature doc and a one-line entry in this progress report (date + summary).