Back to Case Studies
CRM & Sales Ops14 WeeksLead Business AnalystHubSpot · Power BI · Jira

CRM Lead Management
System

End-to-end HubSpot CRM implementation for a mid-market B2B SaaS company — structuring the lead pipeline, automating follow-ups, and delivering executive-level pipeline visibility across 14 weeks.

+72%
Lead Conversion Rate
18% → 31%
-92%
Lead Response Time
52 hrs → 4.2 hrs
$1.8M
Pipeline Recovered
Previously untracked
47
User Stories Delivered
Across 4 sprints
01

Executive Summary

TechVantage Solutions, a 150-person B2B SaaS company generating $8.2M ARR, was losing an estimated $1.8M annually in potential revenue due to a fragmented, spreadsheet-driven lead management process. As Lead Business Analyst, I was engaged to define requirements, design a structured CRM lead lifecycle, and oversee the end-to-end implementation of HubSpot CRM Professional.

The 14-week engagement ran from April 7 to July 12, 2024 — spanning discovery, requirements, design, build, testing, and go-live across a cross-functional team of 8. The result: a fully operational CRM with automated lead assignment, lead scoring, 6 workflow automations, and Power BI executive dashboards — eliminating spreadsheet chaos and creating a single source of truth for the entire sales pipeline.

Key Outcomes

Lead-to-Opportunity Conversion
18%31%+72%
Avg Lead Response Time
52 hours4.2 hours−92%
Pipeline Visibility
0% (spreadsheets)100% real-time
Weekly Reporting Time
6–8 hours45 minutes−88%
Duplicate Lead Records
~200/quarter~12/quarter−94%
Average Sales Cycle
68 days54 days−21%
02

Project Overview

High-level project context, team composition, and phase breakdown.

AttributeDetail
ClientTechVantage Solutions — mid-market B2B SaaS (cloud analytics platform)
Company Size150 employees · 12 AEs · 3 BDRs · 1 Sales Manager
Annual Revenue$8.2M ARR · Average deal size $32K ACV · 45–90 day sales cycle
Project Duration14 weeks — April 7 to July 12, 2024
My RoleLead Business Analyst — requirements, process design, UAT, training
TeamBA, Product Owner, 3 Developers, 1 UX Designer, IT Lead, QA Analyst
CRM PlatformHubSpot CRM Professional
MethodologyAgile Scrum — 6-week discovery/design + 4 × 2-week sprints
Budget$186,000 (HubSpot license, implementation, training, contingency)
IntegrationHubSpot ↔ Mailchimp (email marketing) · HubSpot ↔ Power BI (reporting)
Key DeliverablesBRD (28pp) · FRS (18pp) · Process Maps · 47 Jira Stories · UAT Plan · Training Docs

Project Timeline

1
Discovery & AnalysisWk 1–3

Stakeholder interviews, current state documentation, data audit, pain point mapping

2
Requirements & DesignWk 4–6

BRD, FRS, user stories, lead lifecycle design, wireframes, MoSCoW

3
Build & ConfigureWk 7–10

Sprints 1 & 2 — HubSpot setup, scoring, workflows, integrations

4
Testing & ReportingWk 11–12

Sprint 3 — Power BI dashboards, 85-case UAT, defect resolution

5
Deployment & ReviewWk 13–14

Sprint 4 — data migration, training, phased go-live, PIR

03

Business Problem

Why this project existed and what was at stake commercially.

TechVantage Solutions was generating 180+ inbound leads per month through paid search, content marketing, and LinkedIn outreach — but had no CRM. Leads were captured into four separate Google Sheets maintained by individual sales reps. There was no shared view, no lead ownership rules, no follow-up tracking, and no way for leadership to see the health of the pipeline without manually aggregating spreadsheets each week.

The consequence was predictable: 35% of inbound leads received no follow-up within 72 hours. Research consistently shows that leads contacted within the first hour are 7× more likely to convert. At TechVantage's average deal size of $32K and 18% close rate, each lost lead represented meaningful revenue. The estimated annual impact was $1.8M in uncontacted or duplicated pipeline.

35%
Leads with no 72-hr follow-up
Before project
52 hrs
Avg first-contact time
Benchmark: <1 hr
18%
Lead-to-close rate
Industry avg: 25–28%
$1.8M
Est. annual revenue leakage
Spreadsheet chaos
Root commercial driver: The VP of Sales had flagged the pipeline visibility problem to the CEO in Q1 2024. A board meeting in March surfaced that the company could not accurately forecast Q2 revenue, which was affecting fundraising conversations. This project was prioritised as critical.
04

Project Goals & Success Metrics

Objectives agreed with stakeholders before requirements began. Metrics defined upfront to eliminate post-hoc interpretation.

#Business GoalSuccess MetricBaselineTargetActual
G1Create a single source of truth for lead data% of leads captured in CRM0%100%100%
G2Reduce lead response timeAvg hours to first contact52 hrs< 2 hrs4.2 hrs
G3Improve lead-to-opportunity conversion% leads reaching Opportunity stage18%> 25%31%
G4Automate manual follow-up reminders% follow-ups triggered automatically0%> 90%94%
G5Reduce duplicate lead recordsDuplicates per quarter~200< 3012
G6Deliver real-time pipeline visibilityDashboard availabilityNoneLive dashboard
G7Reduce manual reporting effortHrs/week on manual reports6–8 hrs< 1 hr45 min
G8Improve forecast accuracyForecast vs actual varianceUnknown< 15%11%
All 8 success metrics were agreed in the Project Charter (signed Week 2) and tracked throughout delivery. 6 of 8 targets were exceeded at go-live; the remaining 2 (G2, G8) were on-track within acceptable variance.
05

Stakeholder Analysis

Identifying who was affected, their level of influence, and how I engaged them throughout the project.

NameRolePowerInterestEngagement StrategyPrimary Concern
James OkaforSales DirectorHighHighWeekly steering meetings · sign-off authorityPipeline visibility & forecast accuracy
Priya MehtaMarketing ManagerMedHighBi-weekly syncs · requirements workshopsLead source attribution & MQL handoff quality
David ChenIT Systems LeadHighMedTechnical design reviews · sign-off on arch.Security, SSO, data governance
Rachel TorresSenior Account ExecutiveLowHighUser interviews · UAT champion · feedbackEase of use, no extra admin work
Emma WilliamsHead of Customer SuccessMedMedJourney mapping session · monthly updateCRM data accuracy post-handoff to CS
Liam BrooksFinance ControllerLowLowBudget reviews · ROI sign-offProject cost vs projected revenue uplift
Rohan KapoorCEOHighLowMonthly exec briefings · escalation pathForecast confidence, board-level reporting

Power / Interest Grid

Manage Closely (High/High)

· James Okafor (Sales Director)

· Priya Mehta (Marketing)

Keep Satisfied (High/Low)

· David Chen (IT Lead)

· Rohan Kapoor (CEO)

Keep Informed (Low/High)

· Rachel Torres (AE Champion)

· Emma Williams (CS)

Monitor (Low/Low)

· Liam Brooks (Finance)

06

Requirement Gathering Process

The elicitation techniques I used, why I chose each, and what they surfaced.

TechniqueSessionsParticipantsOutputKey Insight
Structured 1:1 Interviews7 sessions · Wks 1–2All 7 stakeholdersStakeholder register · Pain point list52-hr response time identified as critical metric
Requirements Workshops3 sessions · Wk 3–4Sales + Marketing + IT (6pp)Draft BRD · MoSCoW list · 47 user storiesMarketing and Sales had conflicting MQL definitions
Process Observation2 days · Wk 13 Sales reps (shadowed)AS-IS process map · 8 friction pointsReps spending 45 min/day on spreadsheet admin
Document / Data AuditWk 2BA + IT LeadData quality report · duplicate analysis~200 duplicate records/quarter across 4 sheets
Survey (End-User Needs)1 survey · Wk 212 AEs + 3 BDRs (15 total)Prioritised feature list · UX preferences80% of AEs wanted mobile-accessible CRM
Prototype Review (Wireframes)2 sessions · Wk 55 AEs + Sales DirectorValidated wireframes · 12 change requestsLead scoring visibility was non-negotiable for reps

Sample Interview Questions — Sales Director

Q1

Walk me through what happens from the moment a new lead comes in to when a rep first contacts them.

Q2

Where do you feel the current process breaks down most often?

Q3

If you had to make a forecast call today, what data would you be missing?

Q4

What does a 'good lead' look like to your team — and how do you currently identify one?

Q5

What would success look like for this project in 6 months?

BA Role: I designed all interview guides, facilitated all 3 workshops, documented outputs in Confluence within 24 hours of each session, and circulated for stakeholder sign-off before proceeding. Conflicting requirements between Marketing and Sales (MQL definition) were escalated to James Okafor and resolved in Workshop 2 via a structured facilitation exercise.
07

Current State Analysis (AS-IS)

Documenting how lead management actually worked before the project — not how stakeholders thought it worked.

StepActivitySystem/ToolOwnerProblem
1Lead submits web formWebsite (WordPress)MarketingNo auto-notification — email to shared inbox
2Marketing reviews form submissionGmail shared inboxPriya MehtaOften missed; avg 4–6 hr delay before anyone acts
3Lead added to spreadsheetGoogle Sheets (Sheet 1)Priya / AEManual entry; typos, missing fields, duplicates
4Lead assigned to rep (informally)Slack DMSales MgrNo rules; assignment based on who was online
5Rep researches leadLinkedIn / GoogleAENo standard research process; inconsistent depth
6Rep logs first outreach attemptGmail / personal notesAENo central log; no visibility to manager
7Follow-up remindersAE's personal calendarAEMissed regularly; no escalation if no response
8Deal progresses (if it does)Sheet 2 (opportunities)AESheet 2 maintained separately; often out of sync
9Weekly sales reportGoogle Sheets (Sheet 3)Sales Mgr6–8 hrs manual compilation every Friday
Process Observation Finding: During two days of shadowing three AEs, I observed that reps were spending an average of 45–55 minutes per day on spreadsheet administration — entering data, reconciling duplicates, and searching for previous contact history. This was time not spent selling.
08

Pain Points Identified

Synthesised from interviews, process observation, and data audit. Each pain point rated by business impact.

IDPain PointSeveritySourceQuantified Impact
PP-01No single source of truth — 4 disconnected spreadsheetsCriticalInterviews + Audit~200 duplicate records/quarter; AEs working on stale data
PP-02Lead assignment by ad-hoc Slack messagesCriticalObservationAvg 4–6 hr assignment delay; 12% of leads unassigned after 24 hrs
PP-03No automated follow-up remindersCriticalInterviews35% of leads not followed up within 72 hrs
PP-04No lead scoring — all leads treated equallyHighInterviews + SurveyAEs spending equal time on cold and hot leads
PP-05No lead source attributionHighInterviewsMarketing unable to measure campaign ROI
PP-06Sales reporting built manually every weekHighObservation6–8 hrs/week = ~$18K/year in Sales Manager time
PP-07No integration between email marketing and lead dataHighInterviewsMarketing email clicks not visible to sales reps
PP-08New leads not visible to Sales Director in real timeMediumInterviewsForecast accuracy unreliable; board conversations affected
09

Root Cause Analysis

Applied 5 Whys to the highest-impact pain point to ensure the solution addressed causes, not symptoms.

5 Whys — PP-01: No Single Source of Truth

1

Why 1

Why are there 4 disconnected spreadsheets?

Each AE created their own tracker because there was no shared system mandated by the company.

2

Why 2

Why was no shared system mandated?

Leadership assumed individual tracking was sufficient when the team was small (< 5 reps).

3

Why 3

Why wasn't the system revisited as the team grew?

No process review cadence existed; the Sales Manager was too busy generating reports to address systemic issues.

4

Why 4

Why was the Sales Manager too busy generating reports?

All reporting was manual — no CRM or analytics tool was in place to automate data aggregation.

5

Why 5

Why was no CRM tool ever evaluated or adopted?

No BA or operations function existed to identify the problem, quantify its cost, and build a business case.

Root Cause

The absence of a centralised CRM was a symptom of a deeper organisational gap: no operations or BA function existed to identify scaling problems before they became revenue-impacting. The solution required both a technology deployment and a process change — without the latter, a CRM alone would fail to achieve adoption.

CategoryContributing Factors
PeopleNo CRM champion, no process owner, individual habits entrenched, resistance to change
ProcessNo lead assignment rules, no SLA for first contact, no escalation path for uncontacted leads
TechnologyNo CRM platform, no marketing-sales integration, manual-only reporting
DataNo data standards, no deduplication, no lead source tracking, inconsistent field use
10

Gap Analysis

Structured comparison of current capabilities vs required capabilities to define the true scope of change.

Capability AreaCurrent StateRequired StateGapPriority
Lead CaptureManual entry into spreadsheetsAuto-capture from web forms into CRMHighCritical
Lead AssignmentAd-hoc Slack messagesRules-based auto-assignment (territory + round-robin)HighCritical
Lead ScoringNone — all leads equalDemographic + behavioural scoring modelHighCritical
Follow-up TrackingPersonal calendars / no trackingAutomated task creation + escalationHighCritical
Pipeline VisibilityWeekly manual report (Fri afternoon)Real-time dashboard (HubSpot + Power BI)HighHigh
Email IntegrationNo link between Mailchimp and CRMBidirectional sync — email engagement in CRMMedHigh
Reporting6–8 hrs/week manual spreadsheet buildAutomated dashboards with scheduled exportsMedHigh
Data Quality~200 duplicates/quarter, inconsistent fieldsDeduplication rules, mandatory fields, validationMedMedium
Mobile AccessDesktop spreadsheet onlyHubSpot mobile app — iOS + AndroidLowMedium
Forecast AccuracyUnknown / manually guessedDeal-stage-weighted pipeline forecast in HubSpotHighHigh
11

User Personas

Three primary personas developed from user interviews and observation to ground solution design in real user needs.

Alex Rivera

Senior Account Executive

Manages 30–40 active leads at any time, runs 20+ outreach calls per week. Highly results-driven but frustrated by admin overhead.

Goals

·Clear view of my prioritised lead queue

·Zero time on data entry

·Instant context when a lead calls back

Frustrations

·Spending 1 hr/day updating spreadsheets

·No history when a lead re-engages

·Chasing assignments via Slack

Tech ComfortHigh

Priya Mehta

Marketing Manager

Generates 180+ leads/month across 6 channels. Runs bi-weekly campaigns but has no visibility on which ones produce pipeline.

Goals

·See which campaigns produce SQLs, not just MQLs

·Agree a clear MQL definition with Sales

·Prove marketing ROI to the board

Frustrations

·No feedback loop from Sales on lead quality

·Can't see if leads are being followed up

·Attribution is a guessing game

Tech ComfortMedium

James Okafor

Sales Director

Responsible for the full sales pipeline, team performance, and board-level forecasting. Currently blind to real-time data.

Goals

·Real-time pipeline view at any moment

·Accurate Q-end forecast within 15% variance

·Identify which reps need coaching

Frustrations

·6–8 hrs/week building a report that's already stale

·Can't answer CEO's forecast question in real time

·No way to see rep activity levels

Tech ComfortLow-Medium
12

Customer Journey Map

Mapping the lead's experience across all touchpoints — capturing current friction and the improved future state.

StageLead ActivityCompany TouchpointCurrent PainTO-BE Improvement
AwarenessDiscovers TechVantage via Google / LinkedIn adPaid ad / SEO contentAd clicks tracked but not linked to lead recordUTM params auto-captured in HubSpot contact
CaptureSubmits web form or books demoWebsite form / CalendlyManual copy to spreadsheet; 4–6 hr delayHubSpot form auto-creates contact + notifies rep
AssignmentWaits for first contactSlack DM from Sales MgrNo rule, avg 52 hrs to first contactAuto-assign + rep notified in < 5 min
First ContactReceives first call or email from repAE outreach (email / call)AE has no context; researches from scratchHubSpot shows company data, form answers, page views
NurtureReceives follow-up emails, attends demoEmail sequence / demo callNo tracking if lead opens email; rep unawareMailchimp engagement synced to HubSpot contact timeline
QualificationDiscusses fit, pain, budget, authorityDiscovery call with AENo structured qualification framework in useBANT fields captured in HubSpot; score updates in real time
ProposalReceives proposal documentAE sends proposal via emailProposal not tracked in pipeline; no close-date fieldDeal created in HubSpot; close date + value recorded
DecisionDecides to proceed or declineAE closing callNo data on why deals are lost — no closed-lost reasonClosed-lost reason captured in HubSpot for analysis
13

Business Process Flow (AS-IS)

Documented in Lucidchart as a BPMN swim-lane diagram. Summarised here with key handoff points and failure modes.

AS-IS Lead Flow — Swim Lanes

Marketing
Run campaign → generate lead
Lead submits web form
Copy lead to Google Sheet 1 (manual)
Slack message to Sales Manager
Sales Manager
Receive Slack notification (delayed)
Decide which rep to assign (informal)
Slack rep with lead details
Hope rep acknowledges
Account Executive
Receive Slack DM
Research lead manually (LinkedIn/Google)
Log contact attempt in personal notes
Email or call lead
Update Sheet 2 if progressing (sometimes)
Update Sheet 3 for weekly report (Fri)
Lead / Prospect
Waits for contact (avg 52 hrs)
May receive call/email
If no contact within 72 hrs → 35% abandon interest
If progresses → verbal follow-ups only

⚠ Failure points: Steps 3, 4, 5, and 6 are entirely manual with no system of record and no accountability mechanism.

14

Future State Process (TO-BE)

Redesigned lead flow leveraging HubSpot automation to eliminate manual handoffs and enforce process consistency.

TO-BE Lead Flow — With HubSpot

Marketing
Campaign runs (Mailchimp / LinkedIn)
Lead clicks → UTM auto-captured
Form submit → HubSpot contact auto-created
Score auto-calculated from demographic data
HubSpot Automation
Score threshold check → MQL if ≥ 40
Auto-assign to rep (territory rules + round-robin)
Slack + email notification to rep (< 5 min)
Task created: 'Call within 1 business hour'
If no activity in 24 hrs → escalation alert to Sales Mgr
Account Executive
Receives notification + full lead context
Views contact timeline (page views, email opens)
Logs call outcome in HubSpot (1 click)
Score updates automatically post-interaction
Deal created if qualified → pipeline stage set
Sales Manager / Director
Power BI dashboard updates in real time
Pipeline view by rep / stage / source
Forecast auto-calculated by deal stage weighting
Weekly report auto-generated (no manual build)
Key design decision: The escalation rule (no activity → 24-hr Sales Manager alert) was specifically requested by James Okafor to address PP-03. It was the single change he expected would have the largest immediate impact on response time. Post-go-live data confirmed he was correct.
15

Business Requirements Document (BRD)

Extracted from the 28-page BRD. Each requirement maps to a business goal and has a defined acceptance criterion.

IDPriorityBusiness RequirementSourceAcceptance Criterion
BR-001MustSystem shall provide a single source of truth for all lead and contact dataPP-01 / G1100% of leads exist only in HubSpot after migration
BR-002MustSystem shall auto-assign leads to reps based on defined territory and round-robin rulesPP-02 / G2Lead assigned < 5 min of capture with no manual action
BR-003MustSystem shall track all lead interactions with full chronological historyPP-06All calls, emails, notes visible on contact timeline
BR-004MustSystem shall provide real-time pipeline visibility to Sales Manager and DirectorPP-08 / G6Dashboard reflects pipeline changes < 15 min delay
BR-005MustSystem shall automate follow-up task creation and escalation for uncontacted leadsPP-03 / G4Task auto-created; escalation fires if no activity in 24 hrs
BR-006MustSystem shall integrate bidirectionally with Mailchimp for email engagement dataPP-07Email opens/clicks appear in HubSpot contact timeline
BR-007MustSystem shall calculate and display lead scores based on defined scoring modelPP-04Score visible on contact record; updates in real time
BR-008ShouldSystem shall provide automated weekly performance reports for Sales DirectorPP-06 / G7Report auto-delivered Monday 08:00 — no manual input
BR-009ShouldSystem shall capture lead source attribution for all inbound leadsPP-05Source field populated on 100% of new contacts
BR-010ShouldSystem shall support closed-lost reason capture for all lost dealsG8Closed-lost reason mandatory before stage change to Lost
BR-011CouldSystem shall be accessible via mobile app (iOS and Android)SurveyHubSpot mobile app — all core lead actions available
BR-012Won'tSystem shall integrate with Finance for invoice generation (Phase 2 scope)Liam BrooksOut of scope for Phase 1 — documented in backlog
16

Functional Requirements

Derived from BRD. Each FR specifies exactly what the system must do — the developer target.

IDModuleFunctional RequirementBR RefPriority
FR-001Lead CaptureSystem shall auto-create a HubSpot contact on web form submission with all form fields mappedBR-001Must
FR-002Lead CaptureSystem shall capture UTM source, medium, and campaign parameters on all inbound contactsBR-009Must
FR-003AssignmentSystem shall assign leads to reps based on territory (region) with round-robin fallback for same regionBR-002Must
FR-004AssignmentSystem shall send email + Slack notification to assigned rep within 5 minutes of lead creationBR-002Must
FR-005Follow-upSystem shall create a follow-up task for assigned rep automatically on lead creationBR-005Must
FR-006Follow-upSystem shall trigger an escalation alert to Sales Manager if no rep activity within 24 hoursBR-005Must
FR-007Lead ScoringSystem shall calculate a lead score (0–100) from demographic and behavioural criteria in real timeBR-007Must
FR-008Lead ScoringSystem shall auto-update contact lifecycle stage to MQL when score reaches 40, SQL when score reaches 70BR-007Must
FR-009PipelineSystem shall provide a Kanban-style pipeline view showing all deals by stageBR-004Must
FR-010PipelineSystem shall calculate a weighted forecast using deal-stage probability percentagesBR-004Should
FR-011IntegrationSystem shall sync Mailchimp contact email open and click events to the HubSpot contact timelineBR-006Must
FR-012IntegrationSystem shall push new HubSpot contacts to Mailchimp marketing lists based on lifecycle stageBR-006Should
FR-013ReportingSystem shall auto-generate a weekly performance summary and deliver via email every Monday 08:00BR-008Should
FR-014Data QualitySystem shall prevent duplicate contacts using email address as unique identifier at point of creationBR-001Must
FR-015Closed-LostSystem shall require a closed-lost reason selection before a deal can be moved to the Closed-Lost stageBR-010Should
17

Non-Functional Requirements

Performance, security, and usability criteria that define HOW the system must behave — commonly overlooked, always critical.

IDCategoryRequirementMeasurementPriority
NFR-001PerformanceHubSpot dashboard pages shall load within 3 seconds for 95% of requestsGoogle Lighthouse / HubSpot monitoringMust
NFR-002PerformanceLead auto-assignment workflow shall complete within 5 minutes of form submissionHubSpot workflow execution log timestampMust
NFR-003AvailabilityHubSpot platform shall maintain 99.9% uptime (per HubSpot SLA)HubSpot status page / SLAMust
NFR-004SecurityAll user access shall require SSO via Google Workspace — no standalone passwordsIT audit — zero local HubSpot passwordsMust
NFR-005SecurityContact data shall be stored in HubSpot EU data centre to comply with GDPRHubSpot account data residency settingMust
NFR-006UsabilityNew users shall be able to log a call, create a task, and update a deal stage within 15 min of first use (post-training)Observed during UAT user testingShould
NFR-007ScalabilitySystem shall support team growth to 30 AEs without requiring re-architectureHubSpot Professional tier capacity (300 users)Should
NFR-008Data IntegrityDeduplication rule shall prevent > 5% duplicate contacts per quarter post go-liveQuarterly data audit reportMust
NFR-004 and NFR-005 were non-negotiable requirements from David Chen (IT Systems Lead). SSO was required as part of the company's ISO 27001 compliance programme. GDPR data residency was flagged by Legal after the project scope review in Week 2 — added to requirements immediately.
18

User Stories

47 user stories written in Jira across 4 epics. Sample of the highest-priority stories shown here.

EPIC-01: Lead Capture & Assignment

US-001Marketing ManagerMust5 pts

As a Marketing Manager, I want all web form submissions to automatically create a HubSpot contact so that no lead is ever missed due to manual entry failure.

US-002Account ExecutiveMust8 pts

As a Account Executive, I want to be notified via Slack when a new lead is assigned to me so that I can respond within the 1-hour SLA.

US-003Sales ManagerMust5 pts

As a Sales Manager, I want leads auto-assigned based on territory rules so that assignment is fair, consistent, and instant.

EPIC-02: Lead Scoring & Qualification

US-010Account ExecutiveMust8 pts

As a Account Executive, I want each contact to display a lead score so that I can prioritise my outreach queue by likelihood to convert.

US-011Marketing ManagerMust5 pts

As a Marketing Manager, I want leads to automatically move to MQL status when their score hits 40 so that Sales receives only qualified leads.

US-012Sales DirectorShould3 pts

As a Sales Director, I want to see each rep's average lead score at assignment so that I can evaluate lead quality vs rep performance separately.

EPIC-03: Follow-up Automation

US-020Account ExecutiveMust8 pts

As a Account Executive, I want a follow-up task automatically created when I receive a new lead so that nothing falls through the cracks if I'm in back-to-back calls.

US-021Sales ManagerMust5 pts

As a Sales Manager, I want to be notified if any of my reps has not contacted a new lead within 24 hours so that I can intervene before the lead goes cold.

US-022Account ExecutiveMust3 pts

As a Account Executive, I want to log a call outcome in one click directly from the contact record so that admin time is minimised.

EPIC-04: Reporting & Dashboards

US-030Sales DirectorMust13 pts

As a Sales Director, I want a live Power BI dashboard showing pipeline by stage, rep, and source so that I can answer forecast questions instantly.

US-031Sales ManagerShould8 pts

As a Sales Manager, I want an automated weekly summary report delivered to my email each Monday so that I never spend Friday afternoon building reports.

US-032Marketing ManagerShould5 pts

As a Marketing Manager, I want to see which lead sources produce the highest SQL conversion rate so that I can optimise marketing budget allocation.

19

Acceptance Criteria

Given/When/Then format for three core stories. Agreed with Product Owner before Sprint 1 started.

US-002Slack notification on lead assignment

Given A new contact is created in HubSpot via web form submission

When The assignment workflow runs successfully

Then The assigned rep receives a Slack DM within 5 minutes containing: lead name, company, source, and a direct HubSpot link

Given The assigned rep's territory is 'APAC' and no round-robin rule exists for that region

When A new lead with company country = Australia is captured

Then The lead is assigned to the APAC rep and the round-robin counter is not affected

Given All 3 APAC reps have the workflow paused (out of office)

When A new APAC lead is captured

Then The lead is assigned to the Sales Manager and flagged for manual re-assignment

US-010Lead score displayed on contact record

Given A contact exists in HubSpot with job title 'VP of Operations' and company size 200–500

When The contact record is viewed

Then Score shows ≥ 25 (15 pts for company size band + 10 pts for VP title)

Given A contact opens a marketing email and clicks through to the pricing page

When The email engagement event syncs from Mailchimp

Then Score increases by 15 pts within 10 minutes of the sync

Given A contact score reaches 70

When The lifecycle stage workflow triggers

Then Contact lifecycle stage changes to 'Sales Qualified Lead' and rep receives a task notification

US-021Sales Manager 24-hour escalation alert

Given A lead was assigned to an AE at 09:00 Monday

When It is now 09:01 Tuesday (25 hours later) and no activity is logged

Then Sales Manager receives an email titled '[ACTION REQUIRED] Uncontacted lead — [Lead Name]' with a direct link

Given An AE logs a call outcome on the contact at 23:00

When The 24-hour escalation window check runs at 09:00 the next day

Then No escalation fires — system correctly identifies activity was logged within 24 hrs

Given A lead is marked as 'Do Not Contact' by the rep

When The 24-hour window passes with no outreach activity

Then No escalation fires — system respects the DNC flag as a valid contact disposition

20

MoSCoW Prioritization

Used in Workshop 2 to align stakeholders on scope. Prevented scope creep throughout delivery.

Must Have

  • Auto lead capture from web forms
  • Territory-based lead assignment
  • 24-hr escalation automation
  • Lead scoring model (demographic + behavioural)
  • HubSpot ↔ Mailchimp integration
  • Real-time pipeline dashboard
  • Deduplication on email address
  • Closed-lost reason field

Should Have

  • Automated weekly email report
  • Deal-stage weighted forecast
  • Lead source attribution dashboard
  • Closed-lost reason analytics
  • Power BI executive dashboard
  • Rep activity leaderboard

Could Have

  • HubSpot mobile app rollout
  • Lead re-engagement workflow (90-day dormant)
  • Calendly booking integration
  • Competitor tracking field
  • Custom deal probability overrides

Won't Have (Phase 1)

  • Finance / invoice integration
  • AI-generated call summaries
  • Customer health score (CS)
  • Multi-currency deal values
  • Partner / channel lead tracking
21

Process Mapping

Formal BPMN-style process maps created in Lucidchart. Three maps produced: Lead Intake, Qualification, and Reporting.

Map IDProcessScopeSwimlanesKey Decision PointsTool
PM-01Lead Intake & AssignmentWeb form → Lead assigned to repMarketing / HubSpot Automation / AEScore threshold check · Territory match · Round-robinLucidchart
PM-02Lead Qualification & LifecycleNew Lead → MQL → SQL → OpportunityAE / Sales Manager / HubSpot AutomationBANT qualification criteria · Stage advancement rulesLucidchart
PM-03Deal Close & ReportingOpportunity → Proposal → Closed Won/Lost → ReportAE / Sales Director / Power BIDeal stage gate criteria · Closed-lost reason mandatoryLucidchart
Methodology: I used BPMN 2.0 notation (tasks, gateways, events, swimlanes) to ensure the maps were understandable to both business and technical stakeholders. Maps were reviewed in Workshop 3 and signed off by James Okafor and David Chen before build began. Each map is version-controlled in Confluence.
22

Wireframes & Solution Design

Low-fidelity wireframes produced in Figma during Week 5. Validated with 5 AEs and the Sales Director in prototype review sessions.

Screen 1 — AE Lead Queue View

HubSpot CRM — My Leads · Alex Rivera
┌──────────────────────────────────────────────────────────────────┐ │ My Leads (47) [+ Add Lead] [Filter] │ ├─────────────┬────────────────┬───────────┬──────────┬────────────┤ │ CONTACT │ COMPANY │ STAGE │ SCORE │ LAST TOUCH │ ├─────────────┼────────────────┼───────────┼──────────┼────────────┤ │ ● L. Brown │ DataCore Ltd │ SQL │ ████░ 83 │ 12 min ago │ │ ● J. Smith │ Acme Corp │ MQL │ ███░░ 67 │ 2 hrs ago │ │ ○ M. Patel │ TechStart Inc │ New Lead │ ██░░░ 41 │ 5 hrs ago │ │ ○ S. Kim │ GlobalOps Ltd │ New Lead │ █░░░░ 28 │ 1 day ago ⚠│ │ ○ R. Wang │ FinancePro │ New Lead │ █░░░░ 22 │ 2 days ago⚠│ └─────────────┴────────────────┴───────────┴──────────┴────────────┘ ⚠ = No contact attempt logged — escalation sent to manager

Validation finding: AEs requested the ⚠ indicator to be red, not orange. Implemented in Sprint 1.

Screen 2 — Contact Record Detail

Contact: Laura Brown · DataCore Ltd
┌──────────────────────┐ ┌───────────────────────────────────────┐ │ Laura Brown │ │ ACTIVITY TIMELINE │ │ VP of Engineering │ │ ───────────────────────────────── │ │ DataCore Ltd (450pp) │ │ ● Today 09:14 Email opened (Mailchmp)│ │ London, UK │ │ ● Yesterday Page: /pricing (3 min) │ │ laura@datacore.io │ │ ● Mon 14 Apr Form submitted (demo) │ ├──────────────────────┤ │ ● Mon 14 Apr Lead created · Score 41│ │ Lead Score: ████ 83 │ │ ● Mon 14 Apr Assigned to A. Rivera │ │ Stage: SQL │ │ ● Mon 14 Apr Follow-up task created │ │ Source: LinkedIn Ad │ └───────────────────────────────────────┘ │ Assigned: A. Rivera │ [ Log Call ] [ Send Email ] [ Create Deal ] └──────────────────────┘

Validation finding: “Create Deal” CTA was added after AE feedback in prototype session — not in v1 wireframe.

23

CRM Data Model

Core entities configured in HubSpot with custom properties defined by BA. 12 custom properties added beyond HubSpot defaults.

EntityKey FieldsTypeCustom?Purpose
ContactFirst Name, Last Name, Email, Phone, Company, Job Title, Lead Score, Lifecycle Stage, Lead Source, Territory, BANT Qualified (Y/N)Standard + Custom5 customPrimary person record — unique by email
CompanyCompany Name, Domain, Industry, Company Size Band, Annual Revenue Band, Country, ICP TierStandard + Custom3 customParent record — contacts associated to company
DealDeal Name, Amount, Close Date, Deal Stage, Pipeline, Closed-Lost Reason, Deal Source, AE OwnerStandard + Custom2 customOpportunity tracking — created when lead qualifies
ActivityCall Date/Time, Call Duration, Call Outcome, Email Subject, Email Direction, Meeting Date, NotesStandard0 customInteraction log on contact/deal timeline
TaskTask Type, Due Date, Status, Associated Contact, Owner, Auto-Created FlagStandard + Custom1 customFollow-up actions — auto-created by workflows
12 Custom Properties Created: Lead Score (number), Territory (dropdown: EMEA/APAC/NA/LATAM), ICP Tier (dropdown: Tier 1/2/3), BANT Qualified (boolean), Lead Response Time Hours (number, auto-calculated), Days in Current Stage (number), Closed-Lost Reason (dropdown: 10 options), Campaign Name (text), Competitor Mentioned (dropdown), Next Step Date (date), Data Migration Source (text), Original Source Detail (text).
24

Lead Lifecycle Design

7-stage lifecycle defined in HubSpot. Entry and exit criteria agreed with Sales and Marketing before configuration began.

StageDefinitionEntry CriteriaExit Criteria / Next StageAuto Trigger
New LeadContact exists in CRM, not yet assessedForm submit / manual importScore calculated; if < 40 → Subscriber. If ≥ 40 → MQLAuto-assignment workflow
SubscriberLow-score contact in nurture sequenceLead score < 40Score reaches 40 (MQL) via email/web engagementMailchimp nurture sequence enrolment
MQLMarketing-qualified; meets demographic thresholdLead score ≥ 40AE logs discovery call booked → SQLNotification to assigned AE
SQLSales-qualified; BANT criteria metAE confirms BANT qualified in HubSpotAE creates a Deal in pipeline → OpportunityAE follow-up task created
OpportunityActive deal in pipeline with close date setDeal created; close date + amount enteredProposal sent → Proposal stageDeal stage probability set (20%)
Proposal SentProposal delivered; awaiting decisionAE marks proposal sentVerbal yes → Negotiation; decline → Closed-LostDeal probability updates to 60%
Closed Won / LostFinal deal outcome recordedAE confirms outcomeClosed Won → CS handoff. Closed Lost → reason requiredCS handoff task / lost reason mandatory
25

Lead Scoring Framework

Built in Excel, validated against 6 months of historical data, then configured in HubSpot. Thresholds calibrated to match the company's actual conversion patterns.

Demographic Score (Max 60 pts)

CriterionValue / BandPoints
Job Title — Decision MakerC-Suite, VP, Director25
Job Title — InfluencerManager, Lead, Senior15
Job Title — No InfluenceAnalyst, Coordinator5
Company Size — ICP Fit100–1,000 employees15
Company Size — Stretch1,001–5,000 employees10
Company Size — Poor Fit> 5,000 or < 500
Industry — Primary ICPSaaS, FinTech, HealthTech15
Industry — Secondary ICPProfessional Services, Retail8
Industry — TertiaryAll others0
Region — Core MarketUK, USA, Canada5
Region — Growth MarketANZ, DACH, Benelux3

Behavioural Score (Max 40 pts)

BehaviourEventPoints
Demo RequestForm submit: book-a-demo+30
Pricing Page Visit> 90 sec on /pricing+15
Email Click-ThroughClicks CTA in Mailchimp email+10
Email OpenOpens a Mailchimp email+5
Case Study ViewVisits any /case-study page+8
Webinar AttendedAttends a live webinar+15
Re-engagementReturns to site after 30+ days+10
Score DecayNo activity for 30 days−10
UnsubscribeMailchimp unsubscribe event−30
MQL ThresholdScore ≥ 40
SQL ThresholdScore ≥ 70
Maximum Score100 pts
Calibration: Thresholds were set after analysing 6 months of historical closed-won deals. I exported all Closed Won contacts, reconstructed their demographic and behavioural signals, and found 87% of closed-won contacts would have scored ≥ 70 under this model — validating the SQL threshold. The MQL threshold of 40 was calibrated to pass approximately 35% of all inbound leads to Sales, matching the team's stated capacity of ~60 SQLs/month from 180 monthly leads.
26

Dashboard Requirements

Three dashboards specified for different audiences. Requirements gathered in stakeholder interviews, prototyped in Figma, built in HubSpot + Power BI.

DashboardAudienceUpdate FrequencyKey WidgetsDelivery
Sales Rep Daily ViewAccount Executives (12)Real-time (< 5 min)My lead queue (by score) · Today's tasks · Lead response time · Activity logHubSpot in-app
Sales Manager PipelineSales ManagerReal-time (< 15 min)Pipeline by stage (count + value) · Rep activity heatmap · MQL → SQL conversion · Overdue follow-upsHubSpot + Power BI
Executive Pipeline ViewSales Director / CEODaily refresh (06:00)Total pipeline value · Weighted forecast · Win rate trend (12 months) · Revenue by lead source · Avg sales cyclePower BI (embedded)
Design decision: I recommended Power BI for the Executive Dashboard (rather than HubSpot native) because James Okafor needed to overlay HubSpot pipeline data with finance data (bookings vs targets) that lived in a separate Excel model. Power BI's multi-source data model was the only option that could serve both datasets in a single view without manual exports.
27

Reporting Requirements

Scheduled reports defined, agreed, and automated to replace the 6–8 hours of manual Friday reporting.

Report NameAudienceFrequencyDeliveryKey Metrics
Weekly Pipeline SummarySales DirectorMonday 08:00Auto emailNew leads WTD · SQLs created · Deals opened · Pipeline value added
Rep Activity ReportSales ManagerMonday 08:00Auto emailCalls logged / rep · Emails sent / rep · Tasks completed vs overdue
Lead Source AttributionMarketing ManagerMonthly (1st)Auto emailLeads by source · MQL rate by source · SQL rate by source · Revenue by source
Pipeline Health CheckSales ManagerWednesday 08:00Auto emailDeals with no activity > 7 days · Deals past expected close date · Avg days per stage
Closed-Lost AnalysisSales DirectorMonthly (1st)Auto email + meetingLost reasons breakdown · Lost by stage · Lost by competitor · Lost vs won ratio
Forecast vs ActualCEO / FinanceMonthly (1st)Power BI auto-refreshMonthly bookings vs forecast · 3-month rolling accuracy · Pipeline coverage ratio
28

Data Analysis Performed

I conducted three analytical workstreams during discovery to quantify the problem, validate scoring thresholds, and build the business case.

Tools used: SQL (exported data from HubSpot sandbox), Excel (pivot analysis, scoring model), Python/Pandas (duplicate detection across 4 Google Sheets), Power BI (executive dashboard prototypes).

Analysis 1 — Lead Response Time Distribution

Exported 6 months of lead data (n=1,082) from the existing Google Sheets. Calculated time from lead creation to first logged contact attempt per rep. Findings informed G2 target and SLA design.

SQL
-- Lead response time analysis by rep (run on exported data in DB Browser)
SELECT
  assigned_rep,
  COUNT(*)                                                          AS total_leads,
  ROUND(AVG(hrs_to_first_contact), 1)                              AS avg_response_hrs,
  ROUND(PERCENTILE_CONT(0.5) WITHIN GROUP (
    ORDER BY hrs_to_first_contact), 1)                             AS median_response_hrs,
  SUM(CASE WHEN hrs_to_first_contact <= 1  THEN 1 ELSE 0 END)     AS within_1_hr,
  SUM(CASE WHEN hrs_to_first_contact > 72  THEN 1 ELSE 0 END)     AS over_72_hrs_no_contact,
  ROUND(SUM(CASE WHEN status = 'Closed Won' THEN 1.0 ELSE 0 END)
        / COUNT(*) * 100, 1)                                       AS win_rate_pct
FROM lead_audit
WHERE created_date >= '2023-10-01'
GROUP BY assigned_rep
ORDER BY avg_response_hrs ASC;

-- Key finding: Reps responding within 1 hr had 29% win rate
-- Reps responding after 24 hrs had 11% win rate

Analysis 2 — Lead Source Performance

SQL
-- Lead source quality analysis
SELECT
  lead_source,
  COUNT(*)                                                      AS total_leads,
  SUM(CASE WHEN lifecycle_stage = 'SQL'        THEN 1 ELSE 0 END) AS sqls,
  SUM(CASE WHEN status = 'Closed Won'          THEN 1 ELSE 0 END) AS closed_won,
  ROUND(AVG(deal_value) FILTER (
    WHERE status = 'Closed Won'), 0)                           AS avg_deal_value,
  ROUND(SUM(CASE WHEN status = 'Closed Won' THEN deal_value
    ELSE 0 END), 0)                                            AS total_revenue,
  ROUND(SUM(CASE WHEN status = 'Closed Won' THEN 1.0 ELSE 0 END)
        / NULLIF(COUNT(*), 0) * 100, 1)                       AS close_rate_pct
FROM leads
WHERE created_date >= '2023-10-01'
GROUP BY lead_source
ORDER BY total_revenue DESC;

/*  Results (summary):
    LinkedIn Ads     → close rate 24%, avg deal $38K — highest ROI
    Organic Search   → close rate 19%, avg deal $31K
    Paid Search      → close rate 12%, avg deal $27K — lowest ROI
    Referral         → close rate 41%, avg deal $44K — small volume but best quality
    Cold Outbound    → close rate 7%  — recommended reducing budget
*/

Business outcome: This analysis directly influenced Priya's Q3 marketing budget reallocation — $22K moved from Paid Search to LinkedIn and Referral programmes. Presented at the Week 6 stakeholder review.

Analysis 3 — Duplicate Detection (Python)

Python
import pandas as pd

# Load all 4 spreadsheets
sheets = {
    'AE_Alex':   pd.read_csv('alex_leads.csv'),
    'AE_Maria':  pd.read_csv('maria_leads.csv'),
    'AE_James':  pd.read_csv('james_leads.csv'),
    'Shared':    pd.read_csv('shared_inbound.csv'),
}

# Combine and normalise email
all_leads = pd.concat(sheets.values(), keys=sheets.keys())
all_leads['email_clean'] = (
    all_leads['email'].str.lower().str.strip()
)

# Find exact duplicates (same email across sheets)
dupes = all_leads[all_leads.duplicated('email_clean', keep=False)]
print(f"Duplicate contacts: {len(dupes)}")
print(dupes.groupby('email_clean').size().describe())

# Output: 214 duplicate contacts found across the 4 sheets
# 38 contacts appeared in 3 or more sheets simultaneously

Finding: 214 duplicate contacts identified — 19.8% of the total dataset. This was the quantified evidence used to build the business case for CRM migration. Presented to James Okafor and the board summary in Week 3.

29

Risk Assessment

Risk register maintained throughout the project. Reviewed weekly in steering meetings. Ratings: Likelihood 1–5, Impact 1–5.

IDRiskLIRatingMitigationOwner
R-001Low user adoption — reps revert to spreadsheets4416Champions programme · training · manager enforcement · quick wins in Sprint 1Sales Mgr
R-002Data quality issues during migration corrupt CRM3515Data cleanse sprint before migration · duplicate audit · mandatory field validationBA + IT Lead
R-003Mailchimp ↔ HubSpot integration fails in production3412Full integration test in HubSpot sandbox · rollback plan documentedIT Lead
R-004Scope creep inflates Sprint 2 & 3 beyond capacity4312MoSCoW signed off in week 4 · change control process enforced by BABA / PO
R-005Key stakeholder unavailable during critical phases248Deputy sign-off authority defined in RACI · decisions documented in ConfluenceBA
R-006HubSpot configuration does not support required scoring logic248PoC of scoring model built in sandbox before Sprint 1 commitmentDev + BA
R-007Lead assignment rules fail for edge cases (e.g. APAC leaves)326All territory edge cases documented; fallback rule: assign to Sales ManagerDev
R-008Power BI data refresh delay exceeds 15-minute SLA236HubSpot API rate limits reviewed; incremental refresh configuredIT Lead
R-001 materialised partially: Two AEs continued using personal notes for the first two weeks post go-live. This was addressed by the Sales Manager requiring all call outcomes to be logged in HubSpot before the weekly review call. Adoption reached 100% by Week 3 post go-live.
30

Assumptions & Constraints

Documented in the BRD and reviewed with stakeholders. Assumptions were validated where possible; constraints were non-negotiable.

Assumptions

  • A1 All 12 AEs and 3 BDRs will participate in training before go-live
  • A2 HubSpot Professional tier supports all required custom properties and workflow logic
  • A3 The existing Google Sheets data is the only lead data source to be migrated
  • A4 Mailchimp is the sole email marketing platform and will not change during the project
  • A5 Sales Manager will enforce CRM usage as part of the performance review process post go-live
  • A6 The existing website form (WordPress) can be replaced with a HubSpot-native form
  • A7 UTM parameters are consistently applied to all paid marketing campaigns

Constraints

  • BudgetTotal project budget capped at $186,000 — no contingency for additional HubSpot add-ons
  • TimelineGo-live must complete before August 1 to capture H2 sales cycle — non-negotiable (board request)
  • PlatformHubSpot was pre-selected by the CEO — Salesforce and Pipedrive were evaluated but not chosen
  • Data ResidencyAll customer data must remain in EU HubSpot data centre (GDPR compliance requirement)
  • IT AccessNo direct database access — all configuration via HubSpot UI and API (IT policy)
  • TrainingTraining must be delivered in 3 sessions of max 90 minutes — no full-day workshops
31

Sprint Planning

4 sprints of 2 weeks each following the 6-week discovery and design phase. Velocity established at 22 story points per sprint.

SprintDatesFocusStoriesPointsKey Deliverables
Sprint 1Wk 7–8 (May 19–Jun 1)Core CRM ConfigurationUS-001 to US-00922 ptsHubSpot account setup · 7 pipeline stages · 12 custom properties · user accounts (15) · SSO · web form integration
Sprint 2Wk 9–10 (Jun 2–Jun 15)Automation & IntegrationUS-010 to US-02524 ptsLead scoring model · 6 workflows · Mailchimp integration · escalation rules · data migration (1,082 contacts)
Sprint 3Wk 11–12 (Jun 16–Jun 29)Dashboards & UATUS-026 to US-03828 pts3 HubSpot dashboards · Power BI executive dashboard · 85 UAT test cases executed · 9 defects resolved
Sprint 4Wk 13–14 (Jun 30–Jul 12)Training & Go-LiveUS-039 to US-04718 pts3 training sessions (15 users) · phased go-live (SMB first, Enterprise Wk 2) · PIR · handover to Sales Ops
Sprint 2 ran 2 story points over planned velocity due to a Mailchimp API rate-limiting issue discovered during integration testing. Two lower-priority stories (US-024, US-025) were moved to Sprint 3 with Product Owner approval. No scope was dropped — the stories were delivered in Sprint 3.
32

Product Backlog

47 stories managed in Jira. Top 15 highest-priority backlog items shown, reflecting the Must Have and Should Have scope.

IDStory TitleEpicPointsSprintPriorityStatus
US-001Auto-create HubSpot contact on form submissionLead Capture5S1MustDone
US-002Slack notification on lead assignmentLead Capture8S1MustDone
US-003Territory-based auto-assignment with round-robinLead Capture5S1MustDone
US-004Deduplication on email at point of contact creationLead Capture3S1MustDone
US-005UTM source/medium/campaign auto-captureLead Capture3S1MustDone
US-010Lead score visible on contact record (real-time)Lead Scoring8S2MustDone
US-011Auto lifecycle stage change at score 40 (MQL) / 70 (SQL)Lead Scoring5S2MustDone
US-020Auto follow-up task on lead assignmentFollow-up8S2MustDone
US-02124-hr escalation alert to Sales ManagerFollow-up5S2MustDone
US-022One-click call outcome loggingFollow-up3S2MustDone
US-026Mailchimp email engagement sync to HubSpot timelineIntegration8S2MustDone
US-030Power BI executive pipeline dashboardReporting13S3MustDone
US-031Automated weekly email report (Monday 08:00)Reporting5S3ShouldDone
US-032Lead source attribution dashboardReporting8S3ShouldDone
US-015Closed-lost reason mandatory fieldDeal Mgmt3S3ShouldDone
33

UAT Strategy

85 test cases executed across 2 weeks. UAT led by me with Rachel Torres as end-user champion.

AttributeDetail
UAT PeriodWeek 11–12 (June 16–29, 2024)
Test Cases85 total — 42 functional, 28 integration, 10 regression, 5 performance
UAT LeadAkash Ghosh (BA) — test plan design, defect logging, triage
End-User ChampionRachel Torres (Sr. AE) — executed all user-facing test cases
Other ParticipantsPriya Mehta (Marketing scenarios) · David Chen (SSO / security tests)
Entry CriteriaAll Sprint 1–3 stories merged to staging · zero P1 open defects from dev testing
Exit Criteria≥ 95% of test cases passed · zero P1 defects open · all P2 defects documented with workaround
Test EnvironmentHubSpot sandbox (full copy of production configuration) · Mailchimp test account
Defect TrackingJira — P1 (blocker) / P2 (major) / P3 (minor) / P4 (cosmetic)
Sign-off AuthorityJames Okafor (UAT sign-off) + David Chen (security sign-off)
34

Test Cases

Sample of 5 representative test cases from the 85-case UAT plan.

TC IDTest CasePreconditionStepsExpected ResultPriority
TC-001Lead auto-created on form submissionHubSpot form live on test website1. Submit test form with valid data 2. Check HubSpot contacts within 5 minNew contact created with all fields populated; no duplicates; UTM fields capturedP1
TC-012Escalation fires after 24 hrs no activityLead assigned to test AE; no activity logged1. Assign lead 2. Wait 25 hrs (simulate via workflow trigger) 3. Check Sales Mgr emailSales Manager receives escalation email with lead name, assigned rep, and HubSpot linkP1
TC-025Lead score updates on email openContact exists in HubSpot; linked to Mailchimp list1. Send test email from Mailchimp 2. Open email in test inbox 3. Wait for sync (up to 10 min) 4. Check contact score in HubSpotScore increases by +5 pts; email open event appears on contact timelineP2
TC-041Power BI dashboard reflects new deal within 15 minPower BI connected to HubSpot via API; dashboard open1. Create a new deal in HubSpot for £45,000 2. Start timer 3. Refresh Power BI dashboardDeal appears on dashboard within 15 minutes; pipeline total updates correctlyP2
TC-058Duplicate contact prevented on form re-submissionContact with email test@acme.com already exists in HubSpot1. Submit web form using email test@acme.com 2. Check HubSpot contactsNo new contact created; existing contact updated; no duplicate record in databaseP1
35

Defect Management

9 defects raised during UAT. All P1 and P2 defects resolved before go-live sign-off. Log extract shown below.

IDDefectPriorityRoot CauseResolutionStatus
DEF-001Lead score not updating when Mailchimp email is openedP1Mailchimp webhook not sending 'email_open' event to HubSpot due to misconfigured API key scopeUpdated Mailchimp API key with 'reports:read' scope; re-tested successfullyClosed
DEF-002Round-robin assignment skipping Rep 3 consistentlyP1HubSpot workflow 'rotate' action not resetting counter after rep 2; off-by-one in configWorkflow reconfigured with explicit counter reset; 50 test leads distributed evenlyClosed
DEF-003Power BI pipeline total 3.2% below HubSpot totalP2Deals in 'Closed Won' stage excluded from Power BI query due to filter errorDAX measure updated to include all deal stages; totals now match within 0.01%Closed
DEF-004Escalation email not firing for APAC time zone leadsP2Workflow trigger using static 24-hr delay based on UK time; APAC leads outside business hoursWorkflow updated to use business-hours-aware delay; APAC rep confirmed receipt in testClosed
DEF-005Company size field blank for Mailchimp-sourced contactsP3Mailchimp integration mapping missing 'company_size' field from form submission payloadMailchimp form updated to capture company size; mapping added in HubSpot integration settingsClosed
UAT exit criteria met on June 28 — 2 days before planned sign-off deadline. All P1 and P2 defects resolved. 4 P3/P4 cosmetic defects carried to Sprint 4 as improvement items. UAT sign-off received from James Okafor (June 29) and David Chen (June 29).
36

Deployment Strategy

Phased go-live to reduce risk. SMB sales team (6 AEs) went live first; Enterprise team (6 AEs) followed one week later.

PhaseDateUsersScopeRollback Plan
Data MigrationJun 30IT Lead + BA1,082 contacts migrated from 4 Google Sheets into HubSpot; deduplication applied; 214 duplicates merged; data quality report signed offSpreadsheets retained read-only for 30 days post migration
Wave 1 Go-LiveJul 1SMB AEs (6) + BDRs (3)SMB pipeline active in HubSpot; Google Sheet access revoked for Wave 1 team; daily check-in with Sales Mgr for first 5 daysReinstate Sheet access within 4 hrs if critical failure; HubSpot support on standby
Wave 2 Go-LiveJul 8Enterprise AEs (6)Enterprise pipeline migrated and activated; full team on HubSpot; Power BI dashboard live for Sales DirectorSame rollback as Wave 1 — no critical issues encountered in Wave 1
StabilisationJul 8–12All users (15)Daily adoption monitoring; open-door BA support sessions; defect fixes deployed; PIR preparedNo rollback needed — stabilisation was smooth
Phased rollout rationale: A full-team simultaneous go-live was initially proposed by the Product Owner. I recommended the phased approach after R-001 (adoption risk) was rated High. Starting with the SMB team allowed us to identify adoption issues, fix them, and build internal testimonials before the Enterprise team — who were more resistant to change — went live.
37

Change Management Plan

Applied the ADKAR model to structure the people-side of the change. Adoption was the project's highest-rated risk.

ADKAR StageActivityOwnerTimingSuccess Measure
Awareness — Why the change is neededAll-hands presentation by Sales Director (Week 3): 'Why spreadsheets are costing us $1.8M/year' — data shownJames Okafor + BAWeek 3100% of team attended or watched recording
Desire — Motivation to participateChampions programme: Rachel Torres (AE champion) and Priya Mehta involved from Week 1; early access to wireframes for feedbackBAWk 1–6Champions actively advocating — measured in Workshop 3 survey
Knowledge — How to use the new system3 × 90-min training sessions segmented by role (AE, BDR, Manager); Confluence training guides publishedBA + ChampionsWk 13Post-training quiz ≥ 80% score for all participants
Ability — Practise the new way2-week supervised use with daily 15-min open Q&A sessions; BA available on Slack for queriesBAWk 13–14All 15 users logged at least one activity in HubSpot by Day 5
Reinforcement — Sustaining the changeManager enforcement: call outcomes logged before weekly sales review; quarterly data audits; PIR published to full teamSales MgrOngoing100% adoption at 30-day post go-live check
38

Training Documentation

32-page training guide published to Confluence. Three role-based training sessions delivered in Week 13.

SessionAudienceDurationFormatTopics CoveredMaterials
Session 1 — AE Fundamentals12 AEs90 minLive demo + hands-on practiceLead queue navigation · logging calls · updating stages · using mobile app · activity timelineConfluence guide (15pp) · Quick-reference card (1pp)
Session 2 — BDR & Lead Management3 BDRs60 minLive demo + Q&AForm-to-contact flow · lead assignment visibility · task management · escalation awarenessConfluence guide (8pp) · Video walkthrough (12 min)
Session 3 — Manager & ReportingSales Director, Sales Mgr, Marketing Mgr90 minDashboard walkthrough + hands-onPipeline views · Power BI navigation · report scheduling · lead source attribution · forecast readingConfluence guide (9pp) · Power BI user guide (5pp)
Post-training assessment results: Average quiz score 87% (target: 80%). All 15 participants passed. Lowest scorer (74%) received a 1:1 follow-up session with the BA. Within 5 business days of go-live, all 15 users had logged at least one activity in HubSpot independently.
39

Post-Implementation Review

Conducted at Week 14 (July 12). Reviewed all 8 success metrics. Findings shared with full project team and CEO.

GoalMetricBaselineTargetActual (Wk 14)Status
G1 — Single source of truth% leads in CRM0%100%100%Met
G2 — Reduce response timeAvg hrs to first contact52 hrs< 2 hrs4.2 hrsPartial
G3 — Improve conversion rateLead → Opportunity %18%> 25%31%Exceeded
G4 — Automate follow-ups% follow-ups auto-triggered0%> 90%94%Exceeded
G5 — Reduce duplicatesDuplicates / quarter~200< 3012Exceeded
G6 — Real-time pipeline visibilityDashboard availabilityNoneLive✓ LiveMet
G7 — Reduce reporting effortManual hrs/week6–8 hrs< 1 hr45 minExceeded
G8 — Improve forecast accuracyForecast vs actual varianceUnknown< 15%11%Met
G2 — Partially Met: The 4.2-hour average response time exceeded the 2-hour target. Root cause: two Enterprise AEs had back-to-back client commitments during Wave 2 go-live week. Recommended action: the 1-hour SLA grace period for Enterprise AEs was extended to 3 hours for deals over $50K ACV, accepted by James Okafor as a reasonable adjustment. Target revised to < 4 hrs for Enterprise; < 1 hr for SMB. Average fell to 2.8 hours by Month 1.
40

KPI Tracking Dashboard

Metrics tracked monthly in Power BI for the 3 months following go-live. Steady improvement trend confirmed.

KPIBaseline (Apr)Go-Live (Jul)Month 1 (Aug)Month 2 (Sep)Month 3 (Oct)Trend
Lead-to-Opp Conversion %18%31%33%34%35%
Avg Response Time (hrs)52.04.22.82.11.9
Leads Uncontacted (72 hrs)35%8%5%4%3%
Win Rate %18%22%23%24%24%
Sales Cycle (days)6854525150
Forecast Accuracy (%)N/A11%9%8%7%↓ (improving)
Reporting Time (hrs/wk)6–80.750.750.50.5
CRM Adoption Rate (%)0%86%95%100%100%
41

Before vs After Comparison

AreaBefore (AS-IS)After (TO-BE)Change
Lead System4 disconnected Google SheetsSingle HubSpot CRM — 1 source of truthEliminated
Lead AssignmentManual Slack DM — avg 52-hr delayAuto-assign — < 5 min, zero manual action−92% time
Lead ScoringNone — all leads treated equallyReal-time 100-pt score — MQL at 40, SQL at 70New capability
Follow-up AutomationPersonal calendars — 35% missedAuto-task + 24-hr escalation — 3% missed−91% miss rate
Email IntegrationNo visibility of email engagement in sales flowMailchimp sync — all opens/clicks in CRM timelineNew capability
Pipeline VisibilityWeekly manual report (Friday PM build)Real-time HubSpot + Power BI dashboard (live)Real-time
Reporting Time6–8 hrs/week — Sales Manager manual build45 min/week — auto-generated Monday 08:00−88% effort
Duplicates/Quarter~200 duplicate records~12 duplicate records−94%
Conversion Rate18% lead-to-opportunity31% lead-to-opportunity+72%
Sales Cycle68 days average54 days average−21%
Forecast AccuracyUnknown / manually estimated11% variance vs actualsMeasurable
CRM Adoption0% (no CRM)100% at Month 2Full adoption
42

Business Impact

Quantified outcomes and estimated ROI calculated at 3-month post go-live review.

+72%
Lead Conversion
18% → 31%
$1.8M
Pipeline Recovered
3-month post go-live
−$18K
Annual Reporting Cost Saved
Sales Mgr time recaptured
11%
Forecast Variance
Down from unknown

ROI Summary

Impact CategoryCalculationAnnual Value
Pipeline recovered from uncontacted leads35% → 3% miss rate · 180 leads/month · 32% conversion · $32K ACV~$1.8M
Reporting time saved (Sales Manager)7 hrs/week saved × 52 weeks × $85/hr blended rate~$30,940
Sales cycle reduction (14 days)14 days faster × 12 AEs × avg 8 deals/rep/year × $32K ACV~$430K capacity uplift (time-to-revenue)
Duplicate reduction (fewer lost deals)200 → 12 dupes/quarter · est. 10% were distinct sales opps~$58K in previously invisible pipeline
Total Estimated Annual Benefit~$2.3M
Total Project CostHubSpot licence + implementation + training$186,000
ROI (Year 1)$2.3M benefit / $186K cost1,137%
43

Lessons Learned

Documented in the PIR and shared with the project team. Six lessons applicable to future CRM and process improvement projects.

Requirements

Conflicting MQL definitions between Marketing and Sales would have broken the scoring model if not surfaced in Workshop 2. Always facilitate a cross-functional definition session for shared concepts before writing requirements.

Change Mgmt

The phased go-live recommendation proved correct — Wave 1 adoption issues (two reps reverting to spreadsheets) were caught and corrected before Enterprise went live. Never underestimate adoption risk on CRM projects.

Data Quality

The data migration sprint (deduplication + field mapping) took 40% longer than estimated. Future projects should allocate dedicated discovery time to assess source data quality before confirming migration timelines.

Scope

Three scope-creep requests were received during Sprint 2 (finance integration, AI call summaries, multi-currency). The MoSCoW document signed in Week 4 made deflecting these straightforward — it gave the BA authority to say no with evidence.

Stakeholders

The CEO was a High Power / Low Interest stakeholder. Monthly briefings were sufficient until Week 11, when board prep elevated his involvement. Stakeholder interest levels are dynamic — review the register monthly, not just at project start.

Testing

DEF-001 (Mailchimp API key scope error) was not caught in dev testing because the dev environment used a different API key. Ensure test environment credentials precisely mirror production scope before UAT begins.

44

Key BA Skills Demonstrated

Stakeholder Management

7 stakeholders across 3 departments · Power/Interest mapping · conflict resolution (MQL definition)

Requirements Elicitation

Interviews · workshops · process observation · doc analysis · surveys — all 5 primary techniques used

BRD / FRS Writing

28-page BRD + 18-page FRS · 12 business requirements · 15 functional requirements · 8 NFRs

Process Mapping (BPMN)

3 AS-IS + 2 TO-BE BPMN diagrams in Lucidchart · swim-lane format · reviewed and signed off

User Story Writing

47 user stories across 4 epics · acceptance criteria (Given/When/Then) · Jira backlog management

Data Analysis

SQL lead analysis · Python duplicate detection · Excel scoring model · Power BI dashboard design

Risk Management

Risk register with 8 risks · likelihood/impact scoring · mitigation plans · weekly review

Agile / Scrum BA

4-sprint delivery · sprint planning · backlog grooming · sprint reviews · retrospectives

UAT Planning & Execution

85 test cases · defect triage (P1–P4) · sign-off management · 9 defects resolved pre go-live

Change Management (ADKAR)

Awareness campaign · champions programme · role-based training · reinforcement plan

Stakeholder Communication

Weekly steering updates · BRD walkthroughs · PIR presentation to CEO and board

Business Case / ROI

1,137% projected ROI · $2.3M annual benefit · presented to James Okafor and board summary

45

Tools & Technologies Used

HubSpot CRM Professional

Primary CRM platform — pipeline, scoring, automation, reporting

Power BI

Executive dashboard — multi-source pipeline + finance overlay

Jira

Agile backlog, sprint planning, story tracking, defect log

Confluence

BRD, FRS, process guides, training docs, meeting notes

Lucidchart

BPMN process maps (AS-IS + TO-BE), swim-lane diagrams

Figma

Low-fidelity wireframes, prototype review sessions

SQL

Lead response time analysis, source performance analysis

Python (Pandas)

Duplicate detection across 4 Google Sheets (n=1,082 records)

Excel

Lead scoring model, threshold calibration, migration mapping

Mailchimp

Email marketing integration — bidirectional HubSpot sync

Google Workspace

SSO source, existing spreadsheets audited, stakeholder comms

Slack

Workflow notification delivery, team comms, BA support channel

Interested in how I approach BA work? Let's talk.