Bob Finance: Safeguards & Refresh for Financial Models
Building the Model Data Refresh workflow, dimensionality change diffing, and automated Playwright E2E coverage for mission-critical financial planning software.
At a Glance
Bob Finance empowers high-growth companies to run sophisticated FP&A and workforce financial models syncing across multiple external accounting and HR systems.
When upstream general ledger accounts or dimensions changed, refreshing financial models without a clear preview made it hard for finance users to understand what would change before applying updates.
Designed a multi-stage preview pipeline in the UI. Customers can inspect pending GL and account diffs, review added/modified/removed dimensions, and confirm changes before refreshing financial models.
Gave finance teams visibility into GL and account changes before refresh, improved table rendering performance for dense financial sheets, and established Playwright automation around the refresh workflow.
Context
At HiBob, I worked as a Senior Frontend Engineer on Bob Finance—workforce financial modeling used by FP&A teams to forecast compensation, headcount, and multi-entity budgets. My focus was the Model Data Refresh workflow and modernizing dense financial model tables for performance and design-system alignment.
The Problem
Financial models depend on upstream general ledger structure—accounts, cost centers, and other dimensions. When that structure changed in the GL / ERP, those updates needed to reach live models without surprises:
- Invisible account changes when GL accounts were added, renamed, merged, or removed
- Blind refreshes that applied dimensionality updates without a clear preview of impact
- UI freezes in dense multi-column grids under aggressive Angular change detection
What I Built
I built a refresh workflow that surfaces pending general ledger and account changes before anything is applied: detect upstream diffs, present them clearly in the UI, require confirmation, then refresh the model.
Model Data Refresh Architecture
4-Stage VerificationDetect added, renamed, merged, or deleted GL accounts and dimensions from upstream sources.
Categorize pending updates—new accounts, modified mappings, removed dimensions—so finance users can scan impact quickly.
Show a clear preview of GL and account changes, then require explicit confirmation before refresh.
Apply the confirmed dimensionality updates to the financial model after user approval.
| Dimension / Account | GL Code | Status | Change Detail |
|---|---|---|---|
| Engineering R&D (Cost Center) | GL-6100 | Modified | Split into GL-6110 / GL-6120 |
| AI Compute & Cloud Infra | GL-6120 | New Account | Added from upstream GL sync |
| Legacy Marketing Events | GL-5040 | Removed | No longer present in upstream chart of accounts |
Supporting engineering work
- Refactored financial grids to
ChangeDetectionStrategy.OnPushwith immutable updates to reduce unnecessary re-renders in dense tables. - Built compound multi-column filtering across dense sheets (department, entity, variance thresholds).
- Established Playwright E2E coverage for refresh/diff flows and filter behavior—using fixtures that wait on UI readiness instead of arbitrary timeouts.
Outcome
- Visible GL impact: finance users preview account and dimensionality changes before refresh.
- ~60% faster grid updates after OnPush and memoized filtering work.
- Safer continuous delivery with Playwright coverage around the refresh workflow.
Interested in discussing this architecture?
I'm currently open to Senior Frontend, Product Engineering, and Tech Lead opportunities. Let's talk about technical planning, high-concurrency systems, or frontend craftsmanship.