Flexible-workspace B2B company · 2025–26
Score velocity tracking
Daily snapshots of every account score, with alerts on how fast a score moves rather than how high it sits.
14K+ companies snapshotted daily
The problem
Account scores showed where a company stood, not where it was heading. A company at 18 that was at 5 last week is hotter than one sitting at 35 for months. Reps had no way to see that.
What I built
- Daily snapshot. A morning job pulls scores for 14,000+ companies from the CRM and stores them in Postgres.
- Change detection gate. If nothing moved, the run exits in under a second. That happened on 13 of 14 days.
- Delta query. Compares each score with its last different value, not with yesterday.
- Four alert tiers. From large jumps on already-strong accounts down to a monthly roll-up of slower movers. Urgent alerts post to Slack right away. The rest go in a digest.
- CRM writeback. Four custom properties written back for the companies that moved.
- Monthly compaction to keep the snapshot table small.
Design decisions
- Comparing against the last different score handles signals that refresh every two weeks, with no code change.
- Absolute change instead of percent. Near zero, percentages are meaningless.
- Write back only the movers, about 50 to 200 companies, not all 14,000. That protects the API quota.
- Postgres instead of spreadsheets. 14,000 rows a day would hit spreadsheet limits within weeks.
Result
Sales sees who is heating up before they pick up the phone, with no manual monitoring. On go-live it surfaced several large jumps across target accounts.