Pasley Hill / Redline Specs
← All projects QUICK WIN — BUILD NOW

Merchandising Specialist Success Plan Tracking

A scheduled job sends each Merchandising Specialist a personalized Slack recap of their prior period — hours worked, billing, VINs serviced, utilization, and progress against the $20k weekly goal. Redline did this by hand years ago; it was a lot of effort. This is the same cron → script → Slack pattern Pasley Hill already runs reliably.

Effort S Value High Risk Low Depends on Predian + Rippling API access

The Problem Today

Redline has a "Success Plan" framework for Merchandising Specialists and a set of Canned Emails / Performance Management templates, but the data that should drive coaching lives in two systems that don't talk to anyone automatically. Billing and income sit in Predian. Hours worked sit in Rippling. To tell an MS how their week actually went, a manager has to open both, reconcile the numbers, and write it up.

Redline ran a version of this manually a few years ago. It worked — reps respond to "here's your week, here's the goal" — but it was enough hand-effort that it didn't survive. Today most MSs get goal context only through the periodic regional Slack updates ("Last Week $3,003.88, VIN's Serviced 176, Weekly Billing Goal $20,000"), which are coverage-focused and not per-rep. The individual feedback loop the Success Plan assumes simply isn't running.

2
disconnected systems (Predian + Rippling)
$20k
weekly billing goal each recap measures against
100+
Merchandising Specialists to personalize for
0
automated per-rep recaps running today

The cost here is not a big software bill — it's the missing routine. Without an automatic, per-rep recap, the Success Plan is a document instead of a habit, and managers either spend hours assembling numbers or skip the individual feedback entirely.

How It Works

A scheduled job wakes up on a cadence (weekly to start — see open questions), pulls each MS's prior-period numbers from Predian and Rippling, computes a small set of KPIs, and posts a personalized recap as a Slack DM to that MS. A second pass builds a manager rollup. There is no AI magic required here and we won't pretend there is — this is deterministic data assembly plus templated messaging. The only "intelligence" is the KPI math and a clean, readable message.

The KPI set

Every recap is built from a fixed core, plus opt-in metrics each MS or Redline can toggle on:

Personalization matters: an MS who consistently clears goal gets a different framing than one trending down three weeks running. The message template can pull the right tone and (where Redline wants) the matching Canned Email / Performance Management language, so the recap reinforces the Success Plan 2026 framework instead of being a bare number dump.

Data flow

cron (weekly, Mon AM)
   │
   ├─► Predian API ──► billing $, VINs serviced  (per MS, prior period)
   ├─► Rippling API ─► hours worked              (per MS, prior period)
   │
   ▼
compute KPIs per MS
   • utilization = billing / capacity(hours)
   • wow trend   = this period vs. stored last period
   • goal attain = billing / $20,000
   │
   ├─► render per-MS template ──► Slack DM to each MS
   └─► aggregate ──────────────► Slack manager rollup (region/team)
   │
   ▼
persist this period's KPIs (for next week's WoW + Success Plan history)

Manager summary

Alongside the individual DMs, the job posts a manager rollup: a sorted table of reps by goal attainment and utilization, so a Regional Manager sees at a glance who's ahead, who's slipping, and who to coach this week. This is where the Success Plan stops being paperwork and becomes a weekly review artifact.

Architecture & Stack

This reuses muscle Pasley Hill already has in production: a scheduled Lambda pulls from upstream APIs, does light computation, writes to a small store, and posts to Slack. No new infrastructure pattern, no servers to babysit.

AWS Lambda (scheduled) EventBridge cron Predian API (billing / income) Rippling API (hours worked) Slack API (chat.postMessage DM) DynamoDB (KPI history) S3 (raw pulls / audit) Secrets Manager
EventBridge ─► Lambda (Python)
                 ├─ fetch: Predian, Rippling
                 ├─ join on MS identity (employee ↔ billing rep)
                 ├─ compute KPIs, diff vs. DynamoDB last-period
                 ├─ post: Slack DM per MS + manager rollup
                 └─ write: DynamoDB (this period) + S3 (raw)
Secrets Manager ─► API tokens (Predian, Rippling, Slack)

The one piece of real engineering is identity joining — matching a Rippling employee record to the right Predian billing rep so hours and billing line up for the same person. Worth getting right once; cheap to maintain after.

Build Plan

Phase 1 — Data access & identity join
~2–3 days · validated per-MS dataset

Get read access to Predian and Rippling. Confirm the fields (billing $, VINs, hours) and build the MS identity map between the two systems. This phase is the actual risk; everything downstream is straightforward once data flows.

Phase 2 — KPI engine + store
~2 days · computed KPIs with WoW history

Implement utilization, week-over-week trend, and goal attainment vs. $20k. Stand up DynamoDB to persist each period so trends and Success Plan history accumulate. Verify the math against a hand-checked sample week.

Phase 3 — Slack delivery + templates
~2 days · per-MS DM and manager rollup

Build the personalized message template, wire opt-in metric toggles, and tie tone/language to the Success Plan 2026 + Canned Email framework. Add the manager rollup table. Dry-run to a test channel before any real DMs go out.

Phase 4 — Schedule, monitor, launch
~1 day · live cron + alerting

Put it on EventBridge, add failure alerts (a job that silently stops is worse than no job), pilot with one region, then roll out. Total build is small — call it ~1.5 weeks of focused work, faster with AI-assisted dev.

Data & Access Needed

Build time is short; the schedule is gated entirely on Redline providing access to the two upstream systems. Nothing below is exotic, but each needs a credential and a confirmed field mapping.

SourceWhat we needUsed for
PredianAPI/read access to billing & income per rep, plus VINs serviced, per periodBilling $, VINs, goal attainment
RipplingAPI/read access to hours worked per employee (and the MS roster)Hours, utilization, identity map
SlackBot token with DM + channel post scopes; manager channel IDsPer-MS DM delivery + manager rollup
Redline (people)MS ↔ billing-rep identity mapping; expected capacity / billing-per-hour baselineJoining the two systems; utilization math
Redline (framework)Success Plan 2026 doc + Canned Email / Performance Management templatesRecap tone, coaching language, goal definitions
Redline (config)Cadence decision + default/opt-in KPI list per MSSchedule + personalization

Risks & Open Questions

RISK

Data access is the whole project. The build is small and well-understood; the dependency that can stall it is getting clean, programmatic read access to Predian and Rippling. If either only exposes data via export or an awkward integration, Phase 1 grows. Confirm both APIs (and the fields we need) before committing a date.

RISK

Identity matching. Hours (Rippling) and billing (Predian) must resolve to the same person. Mismatches produce wrong utilization numbers — and a confidently-wrong recap erodes trust fast. We hand-verify the mapping in Phase 1 and fail loudly on unmatched reps rather than guessing.

OPEN

Cadence — weekly, biweekly, or monthly? The source frames this as undecided. Weekly matches the existing $20k weekly goal and the regional update rhythm, so it's our default recommendation, but Redline should confirm. Cadence affects nothing structural; it's a config value.

OPEN

Opt-in metrics. Core KPIs are fixed (billing, VINs, hours, utilization, WoW, goal). Which extras can an MS toggle on, and who controls that — the rep, the RM, or Redline ops? Needs a short decision so we know how configurable to make it.

OPEN

Manager rollup scope. One company-wide summary, or per-region rollups to each RM? Drives Slack channel/permission setup, not the build.

Cost to Own

LOW

This is a scheduled job, so run cost is negligible — a Lambda that fires weekly plus a tiny DynamoDB table and a few S3 objects lands in single-digit dollars per month. There's no server, no always-on service, nothing to scale.

The real ongoing cost is upstream change. If Predian or Rippling changes an API or a field, the job breaks and someone has to fix the mapping. That's why Phase 4 includes failure alerting: a recap job that quietly stops sending is worse than never having built it, because everyone assumes the numbers are still flowing. Budget a few hours a quarter for that kind of maintenance and nothing more.

Net: low build, low run, low maintenance. The honest caveat is the dependency, not the cost — once Predian and Rippling access is in hand, this is one of the cheapest high-value automations on the board and it directly powers the Success Plan coaching loop Redline already wants to run.