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.
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
Project Overview
High-level project context, team composition, and phase breakdown.
| Attribute | Detail |
|---|---|
| Client | TechVantage Solutions — mid-market B2B SaaS (cloud analytics platform) |
| Company Size | 150 employees · 12 AEs · 3 BDRs · 1 Sales Manager |
| Annual Revenue | $8.2M ARR · Average deal size $32K ACV · 45–90 day sales cycle |
| Project Duration | 14 weeks — April 7 to July 12, 2024 |
| My Role | Lead Business Analyst — requirements, process design, UAT, training |
| Team | BA, Product Owner, 3 Developers, 1 UX Designer, IT Lead, QA Analyst |
| CRM Platform | HubSpot CRM Professional |
| Methodology | Agile Scrum — 6-week discovery/design + 4 × 2-week sprints |
| Budget | $186,000 (HubSpot license, implementation, training, contingency) |
| Integration | HubSpot ↔ Mailchimp (email marketing) · HubSpot ↔ Power BI (reporting) |
| Key Deliverables | BRD (28pp) · FRS (18pp) · Process Maps · 47 Jira Stories · UAT Plan · Training Docs |
Project Timeline
Stakeholder interviews, current state documentation, data audit, pain point mapping
BRD, FRS, user stories, lead lifecycle design, wireframes, MoSCoW
Sprints 1 & 2 — HubSpot setup, scoring, workflows, integrations
Sprint 3 — Power BI dashboards, 85-case UAT, defect resolution
Sprint 4 — data migration, training, phased go-live, PIR
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.
Project Goals & Success Metrics
Objectives agreed with stakeholders before requirements began. Metrics defined upfront to eliminate post-hoc interpretation.
| # | Business Goal | Success Metric | Baseline | Target | Actual |
|---|---|---|---|---|---|
| G1 | Create a single source of truth for lead data | % of leads captured in CRM | 0% | 100% | 100% |
| G2 | Reduce lead response time | Avg hours to first contact | 52 hrs | < 2 hrs | 4.2 hrs |
| G3 | Improve lead-to-opportunity conversion | % leads reaching Opportunity stage | 18% | > 25% | 31% |
| G4 | Automate manual follow-up reminders | % follow-ups triggered automatically | 0% | > 90% | 94% |
| G5 | Reduce duplicate lead records | Duplicates per quarter | ~200 | < 30 | 12 |
| G6 | Deliver real-time pipeline visibility | Dashboard availability | None | Live dashboard | ✓ |
| G7 | Reduce manual reporting effort | Hrs/week on manual reports | 6–8 hrs | < 1 hr | 45 min |
| G8 | Improve forecast accuracy | Forecast vs actual variance | Unknown | < 15% | 11% |
Stakeholder Analysis
Identifying who was affected, their level of influence, and how I engaged them throughout the project.
| Name | Role | Power | Interest | Engagement Strategy | Primary Concern |
|---|---|---|---|---|---|
| James Okafor | Sales Director | High | High | Weekly steering meetings · sign-off authority | Pipeline visibility & forecast accuracy |
| Priya Mehta | Marketing Manager | Med | High | Bi-weekly syncs · requirements workshops | Lead source attribution & MQL handoff quality |
| David Chen | IT Systems Lead | High | Med | Technical design reviews · sign-off on arch. | Security, SSO, data governance |
| Rachel Torres | Senior Account Executive | Low | High | User interviews · UAT champion · feedback | Ease of use, no extra admin work |
| Emma Williams | Head of Customer Success | Med | Med | Journey mapping session · monthly update | CRM data accuracy post-handoff to CS |
| Liam Brooks | Finance Controller | Low | Low | Budget reviews · ROI sign-off | Project cost vs projected revenue uplift |
| Rohan Kapoor | CEO | High | Low | Monthly exec briefings · escalation path | Forecast 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)
Requirement Gathering Process
The elicitation techniques I used, why I chose each, and what they surfaced.
| Technique | Sessions | Participants | Output | Key Insight |
|---|---|---|---|---|
| Structured 1:1 Interviews | 7 sessions · Wks 1–2 | All 7 stakeholders | Stakeholder register · Pain point list | 52-hr response time identified as critical metric |
| Requirements Workshops | 3 sessions · Wk 3–4 | Sales + Marketing + IT (6pp) | Draft BRD · MoSCoW list · 47 user stories | Marketing and Sales had conflicting MQL definitions |
| Process Observation | 2 days · Wk 1 | 3 Sales reps (shadowed) | AS-IS process map · 8 friction points | Reps spending 45 min/day on spreadsheet admin |
| Document / Data Audit | Wk 2 | BA + IT Lead | Data quality report · duplicate analysis | ~200 duplicate records/quarter across 4 sheets |
| Survey (End-User Needs) | 1 survey · Wk 2 | 12 AEs + 3 BDRs (15 total) | Prioritised feature list · UX preferences | 80% of AEs wanted mobile-accessible CRM |
| Prototype Review (Wireframes) | 2 sessions · Wk 5 | 5 AEs + Sales Director | Validated wireframes · 12 change requests | Lead scoring visibility was non-negotiable for reps |
Sample Interview Questions — Sales Director
Walk me through what happens from the moment a new lead comes in to when a rep first contacts them.
Where do you feel the current process breaks down most often?
If you had to make a forecast call today, what data would you be missing?
What does a 'good lead' look like to your team — and how do you currently identify one?
What would success look like for this project in 6 months?
Current State Analysis (AS-IS)
Documenting how lead management actually worked before the project — not how stakeholders thought it worked.
| Step | Activity | System/Tool | Owner | Problem |
|---|---|---|---|---|
| 1 | Lead submits web form | Website (WordPress) | Marketing | No auto-notification — email to shared inbox |
| 2 | Marketing reviews form submission | Gmail shared inbox | Priya Mehta | Often missed; avg 4–6 hr delay before anyone acts |
| 3 | Lead added to spreadsheet | Google Sheets (Sheet 1) | Priya / AE | Manual entry; typos, missing fields, duplicates |
| 4 | Lead assigned to rep (informally) | Slack DM | Sales Mgr | No rules; assignment based on who was online |
| 5 | Rep researches lead | LinkedIn / Google | AE | No standard research process; inconsistent depth |
| 6 | Rep logs first outreach attempt | Gmail / personal notes | AE | No central log; no visibility to manager |
| 7 | Follow-up reminders | AE's personal calendar | AE | Missed regularly; no escalation if no response |
| 8 | Deal progresses (if it does) | Sheet 2 (opportunities) | AE | Sheet 2 maintained separately; often out of sync |
| 9 | Weekly sales report | Google Sheets (Sheet 3) | Sales Mgr | 6–8 hrs manual compilation every Friday |
Pain Points Identified
Synthesised from interviews, process observation, and data audit. Each pain point rated by business impact.
| ID | Pain Point | Severity | Source | Quantified Impact |
|---|---|---|---|---|
| PP-01 | No single source of truth — 4 disconnected spreadsheets | Critical | Interviews + Audit | ~200 duplicate records/quarter; AEs working on stale data |
| PP-02 | Lead assignment by ad-hoc Slack messages | Critical | Observation | Avg 4–6 hr assignment delay; 12% of leads unassigned after 24 hrs |
| PP-03 | No automated follow-up reminders | Critical | Interviews | 35% of leads not followed up within 72 hrs |
| PP-04 | No lead scoring — all leads treated equally | High | Interviews + Survey | AEs spending equal time on cold and hot leads |
| PP-05 | No lead source attribution | High | Interviews | Marketing unable to measure campaign ROI |
| PP-06 | Sales reporting built manually every week | High | Observation | 6–8 hrs/week = ~$18K/year in Sales Manager time |
| PP-07 | No integration between email marketing and lead data | High | Interviews | Marketing email clicks not visible to sales reps |
| PP-08 | New leads not visible to Sales Director in real time | Medium | Interviews | Forecast accuracy unreliable; board conversations affected |
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
Why 1
Why are there 4 disconnected spreadsheets?
Each AE created their own tracker because there was no shared system mandated by the company.
Why 2
Why was no shared system mandated?
Leadership assumed individual tracking was sufficient when the team was small (< 5 reps).
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.
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.
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.
| Category | Contributing Factors |
|---|---|
| People | No CRM champion, no process owner, individual habits entrenched, resistance to change |
| Process | No lead assignment rules, no SLA for first contact, no escalation path for uncontacted leads |
| Technology | No CRM platform, no marketing-sales integration, manual-only reporting |
| Data | No data standards, no deduplication, no lead source tracking, inconsistent field use |
Gap Analysis
Structured comparison of current capabilities vs required capabilities to define the true scope of change.
| Capability Area | Current State | Required State | Gap | Priority |
|---|---|---|---|---|
| Lead Capture | Manual entry into spreadsheets | Auto-capture from web forms into CRM | High | Critical |
| Lead Assignment | Ad-hoc Slack messages | Rules-based auto-assignment (territory + round-robin) | High | Critical |
| Lead Scoring | None — all leads equal | Demographic + behavioural scoring model | High | Critical |
| Follow-up Tracking | Personal calendars / no tracking | Automated task creation + escalation | High | Critical |
| Pipeline Visibility | Weekly manual report (Fri afternoon) | Real-time dashboard (HubSpot + Power BI) | High | High |
| Email Integration | No link between Mailchimp and CRM | Bidirectional sync — email engagement in CRM | Med | High |
| Reporting | 6–8 hrs/week manual spreadsheet build | Automated dashboards with scheduled exports | Med | High |
| Data Quality | ~200 duplicates/quarter, inconsistent fields | Deduplication rules, mandatory fields, validation | Med | Medium |
| Mobile Access | Desktop spreadsheet only | HubSpot mobile app — iOS + Android | Low | Medium |
| Forecast Accuracy | Unknown / manually guessed | Deal-stage-weighted pipeline forecast in HubSpot | High | High |
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
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
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
Customer Journey Map
Mapping the lead's experience across all touchpoints — capturing current friction and the improved future state.
| Stage | Lead Activity | Company Touchpoint | Current Pain | TO-BE Improvement |
|---|---|---|---|---|
| Awareness | Discovers TechVantage via Google / LinkedIn ad | Paid ad / SEO content | Ad clicks tracked but not linked to lead record | UTM params auto-captured in HubSpot contact |
| Capture | Submits web form or books demo | Website form / Calendly | Manual copy to spreadsheet; 4–6 hr delay | HubSpot form auto-creates contact + notifies rep |
| Assignment | Waits for first contact | Slack DM from Sales Mgr | No rule, avg 52 hrs to first contact | Auto-assign + rep notified in < 5 min |
| First Contact | Receives first call or email from rep | AE outreach (email / call) | AE has no context; researches from scratch | HubSpot shows company data, form answers, page views |
| Nurture | Receives follow-up emails, attends demo | Email sequence / demo call | No tracking if lead opens email; rep unaware | Mailchimp engagement synced to HubSpot contact timeline |
| Qualification | Discusses fit, pain, budget, authority | Discovery call with AE | No structured qualification framework in use | BANT fields captured in HubSpot; score updates in real time |
| Proposal | Receives proposal document | AE sends proposal via email | Proposal not tracked in pipeline; no close-date field | Deal created in HubSpot; close date + value recorded |
| Decision | Decides to proceed or decline | AE closing call | No data on why deals are lost — no closed-lost reason | Closed-lost reason captured in HubSpot for analysis |
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
⚠ Failure points: Steps 3, 4, 5, and 6 are entirely manual with no system of record and no accountability mechanism.
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
Business Requirements Document (BRD)
Extracted from the 28-page BRD. Each requirement maps to a business goal and has a defined acceptance criterion.
| ID | Priority | Business Requirement | Source | Acceptance Criterion |
|---|---|---|---|---|
| BR-001 | Must | System shall provide a single source of truth for all lead and contact data | PP-01 / G1 | 100% of leads exist only in HubSpot after migration |
| BR-002 | Must | System shall auto-assign leads to reps based on defined territory and round-robin rules | PP-02 / G2 | Lead assigned < 5 min of capture with no manual action |
| BR-003 | Must | System shall track all lead interactions with full chronological history | PP-06 | All calls, emails, notes visible on contact timeline |
| BR-004 | Must | System shall provide real-time pipeline visibility to Sales Manager and Director | PP-08 / G6 | Dashboard reflects pipeline changes < 15 min delay |
| BR-005 | Must | System shall automate follow-up task creation and escalation for uncontacted leads | PP-03 / G4 | Task auto-created; escalation fires if no activity in 24 hrs |
| BR-006 | Must | System shall integrate bidirectionally with Mailchimp for email engagement data | PP-07 | Email opens/clicks appear in HubSpot contact timeline |
| BR-007 | Must | System shall calculate and display lead scores based on defined scoring model | PP-04 | Score visible on contact record; updates in real time |
| BR-008 | Should | System shall provide automated weekly performance reports for Sales Director | PP-06 / G7 | Report auto-delivered Monday 08:00 — no manual input |
| BR-009 | Should | System shall capture lead source attribution for all inbound leads | PP-05 | Source field populated on 100% of new contacts |
| BR-010 | Should | System shall support closed-lost reason capture for all lost deals | G8 | Closed-lost reason mandatory before stage change to Lost |
| BR-011 | Could | System shall be accessible via mobile app (iOS and Android) | Survey | HubSpot mobile app — all core lead actions available |
| BR-012 | Won't | System shall integrate with Finance for invoice generation (Phase 2 scope) | Liam Brooks | Out of scope for Phase 1 — documented in backlog |
Functional Requirements
Derived from BRD. Each FR specifies exactly what the system must do — the developer target.
| ID | Module | Functional Requirement | BR Ref | Priority |
|---|---|---|---|---|
| FR-001 | Lead Capture | System shall auto-create a HubSpot contact on web form submission with all form fields mapped | BR-001 | Must |
| FR-002 | Lead Capture | System shall capture UTM source, medium, and campaign parameters on all inbound contacts | BR-009 | Must |
| FR-003 | Assignment | System shall assign leads to reps based on territory (region) with round-robin fallback for same region | BR-002 | Must |
| FR-004 | Assignment | System shall send email + Slack notification to assigned rep within 5 minutes of lead creation | BR-002 | Must |
| FR-005 | Follow-up | System shall create a follow-up task for assigned rep automatically on lead creation | BR-005 | Must |
| FR-006 | Follow-up | System shall trigger an escalation alert to Sales Manager if no rep activity within 24 hours | BR-005 | Must |
| FR-007 | Lead Scoring | System shall calculate a lead score (0–100) from demographic and behavioural criteria in real time | BR-007 | Must |
| FR-008 | Lead Scoring | System shall auto-update contact lifecycle stage to MQL when score reaches 40, SQL when score reaches 70 | BR-007 | Must |
| FR-009 | Pipeline | System shall provide a Kanban-style pipeline view showing all deals by stage | BR-004 | Must |
| FR-010 | Pipeline | System shall calculate a weighted forecast using deal-stage probability percentages | BR-004 | Should |
| FR-011 | Integration | System shall sync Mailchimp contact email open and click events to the HubSpot contact timeline | BR-006 | Must |
| FR-012 | Integration | System shall push new HubSpot contacts to Mailchimp marketing lists based on lifecycle stage | BR-006 | Should |
| FR-013 | Reporting | System shall auto-generate a weekly performance summary and deliver via email every Monday 08:00 | BR-008 | Should |
| FR-014 | Data Quality | System shall prevent duplicate contacts using email address as unique identifier at point of creation | BR-001 | Must |
| FR-015 | Closed-Lost | System shall require a closed-lost reason selection before a deal can be moved to the Closed-Lost stage | BR-010 | Should |
Non-Functional Requirements
Performance, security, and usability criteria that define HOW the system must behave — commonly overlooked, always critical.
| ID | Category | Requirement | Measurement | Priority |
|---|---|---|---|---|
| NFR-001 | Performance | HubSpot dashboard pages shall load within 3 seconds for 95% of requests | Google Lighthouse / HubSpot monitoring | Must |
| NFR-002 | Performance | Lead auto-assignment workflow shall complete within 5 minutes of form submission | HubSpot workflow execution log timestamp | Must |
| NFR-003 | Availability | HubSpot platform shall maintain 99.9% uptime (per HubSpot SLA) | HubSpot status page / SLA | Must |
| NFR-004 | Security | All user access shall require SSO via Google Workspace — no standalone passwords | IT audit — zero local HubSpot passwords | Must |
| NFR-005 | Security | Contact data shall be stored in HubSpot EU data centre to comply with GDPR | HubSpot account data residency setting | Must |
| NFR-006 | Usability | New 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 testing | Should |
| NFR-007 | Scalability | System shall support team growth to 30 AEs without requiring re-architecture | HubSpot Professional tier capacity (300 users) | Should |
| NFR-008 | Data Integrity | Deduplication rule shall prevent > 5% duplicate contacts per quarter post go-live | Quarterly data audit report | Must |
User Stories
47 user stories written in Jira across 4 epics. Sample of the highest-priority stories shown here.
EPIC-01: Lead Capture & Assignment
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.
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.
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
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.
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.
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
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.
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.
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
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.
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.
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.
Acceptance Criteria
Given/When/Then format for three core stories. Agreed with Product Owner before Sprint 1 started.
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
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
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
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
Process Mapping
Formal BPMN-style process maps created in Lucidchart. Three maps produced: Lead Intake, Qualification, and Reporting.
| Map ID | Process | Scope | Swimlanes | Key Decision Points | Tool |
|---|---|---|---|---|---|
| PM-01 | Lead Intake & Assignment | Web form → Lead assigned to rep | Marketing / HubSpot Automation / AE | Score threshold check · Territory match · Round-robin | Lucidchart |
| PM-02 | Lead Qualification & Lifecycle | New Lead → MQL → SQL → Opportunity | AE / Sales Manager / HubSpot Automation | BANT qualification criteria · Stage advancement rules | Lucidchart |
| PM-03 | Deal Close & Reporting | Opportunity → Proposal → Closed Won/Lost → Report | AE / Sales Director / Power BI | Deal stage gate criteria · Closed-lost reason mandatory | Lucidchart |
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
Validation finding: AEs requested the ⚠ indicator to be red, not orange. Implemented in Sprint 1.
Screen 2 — Contact Record Detail
Validation finding: “Create Deal” CTA was added after AE feedback in prototype session — not in v1 wireframe.
CRM Data Model
Core entities configured in HubSpot with custom properties defined by BA. 12 custom properties added beyond HubSpot defaults.
| Entity | Key Fields | Type | Custom? | Purpose |
|---|---|---|---|---|
| Contact | First Name, Last Name, Email, Phone, Company, Job Title, Lead Score, Lifecycle Stage, Lead Source, Territory, BANT Qualified (Y/N) | Standard + Custom | 5 custom | Primary person record — unique by email |
| Company | Company Name, Domain, Industry, Company Size Band, Annual Revenue Band, Country, ICP Tier | Standard + Custom | 3 custom | Parent record — contacts associated to company |
| Deal | Deal Name, Amount, Close Date, Deal Stage, Pipeline, Closed-Lost Reason, Deal Source, AE Owner | Standard + Custom | 2 custom | Opportunity tracking — created when lead qualifies |
| Activity | Call Date/Time, Call Duration, Call Outcome, Email Subject, Email Direction, Meeting Date, Notes | Standard | 0 custom | Interaction log on contact/deal timeline |
| Task | Task Type, Due Date, Status, Associated Contact, Owner, Auto-Created Flag | Standard + Custom | 1 custom | Follow-up actions — auto-created by workflows |
Lead Lifecycle Design
7-stage lifecycle defined in HubSpot. Entry and exit criteria agreed with Sales and Marketing before configuration began.
| Stage | Definition | Entry Criteria | Exit Criteria / Next Stage | Auto Trigger |
|---|---|---|---|---|
| New Lead | Contact exists in CRM, not yet assessed | Form submit / manual import | Score calculated; if < 40 → Subscriber. If ≥ 40 → MQL | Auto-assignment workflow |
| Subscriber | Low-score contact in nurture sequence | Lead score < 40 | Score reaches 40 (MQL) via email/web engagement | Mailchimp nurture sequence enrolment |
| MQL | Marketing-qualified; meets demographic threshold | Lead score ≥ 40 | AE logs discovery call booked → SQL | Notification to assigned AE |
| SQL | Sales-qualified; BANT criteria met | AE confirms BANT qualified in HubSpot | AE creates a Deal in pipeline → Opportunity | AE follow-up task created |
| Opportunity | Active deal in pipeline with close date set | Deal created; close date + amount entered | Proposal sent → Proposal stage | Deal stage probability set (20%) |
| Proposal Sent | Proposal delivered; awaiting decision | AE marks proposal sent | Verbal yes → Negotiation; decline → Closed-Lost | Deal probability updates to 60% |
| Closed Won / Lost | Final deal outcome recorded | AE confirms outcome | Closed Won → CS handoff. Closed Lost → reason required | CS handoff task / lost reason mandatory |
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)
| Criterion | Value / Band | Points |
|---|---|---|
| Job Title — Decision Maker | C-Suite, VP, Director | 25 |
| Job Title — Influencer | Manager, Lead, Senior | 15 |
| Job Title — No Influence | Analyst, Coordinator | 5 |
| Company Size — ICP Fit | 100–1,000 employees | 15 |
| Company Size — Stretch | 1,001–5,000 employees | 10 |
| Company Size — Poor Fit | > 5,000 or < 50 | 0 |
| Industry — Primary ICP | SaaS, FinTech, HealthTech | 15 |
| Industry — Secondary ICP | Professional Services, Retail | 8 |
| Industry — Tertiary | All others | 0 |
| Region — Core Market | UK, USA, Canada | 5 |
| Region — Growth Market | ANZ, DACH, Benelux | 3 |
Behavioural Score (Max 40 pts)
| Behaviour | Event | Points |
|---|---|---|
| Demo Request | Form submit: book-a-demo | +30 |
| Pricing Page Visit | > 90 sec on /pricing | +15 |
| Email Click-Through | Clicks CTA in Mailchimp email | +10 |
| Email Open | Opens a Mailchimp email | +5 |
| Case Study View | Visits any /case-study page | +8 |
| Webinar Attended | Attends a live webinar | +15 |
| Re-engagement | Returns to site after 30+ days | +10 |
| Score Decay | No activity for 30 days | −10 |
| Unsubscribe | Mailchimp unsubscribe event | −30 |
Dashboard Requirements
Three dashboards specified for different audiences. Requirements gathered in stakeholder interviews, prototyped in Figma, built in HubSpot + Power BI.
| Dashboard | Audience | Update Frequency | Key Widgets | Delivery |
|---|---|---|---|---|
| Sales Rep Daily View | Account Executives (12) | Real-time (< 5 min) | My lead queue (by score) · Today's tasks · Lead response time · Activity log | HubSpot in-app |
| Sales Manager Pipeline | Sales Manager | Real-time (< 15 min) | Pipeline by stage (count + value) · Rep activity heatmap · MQL → SQL conversion · Overdue follow-ups | HubSpot + Power BI |
| Executive Pipeline View | Sales Director / CEO | Daily refresh (06:00) | Total pipeline value · Weighted forecast · Win rate trend (12 months) · Revenue by lead source · Avg sales cycle | Power BI (embedded) |
Reporting Requirements
Scheduled reports defined, agreed, and automated to replace the 6–8 hours of manual Friday reporting.
| Report Name | Audience | Frequency | Delivery | Key Metrics |
|---|---|---|---|---|
| Weekly Pipeline Summary | Sales Director | Monday 08:00 | Auto email | New leads WTD · SQLs created · Deals opened · Pipeline value added |
| Rep Activity Report | Sales Manager | Monday 08:00 | Auto email | Calls logged / rep · Emails sent / rep · Tasks completed vs overdue |
| Lead Source Attribution | Marketing Manager | Monthly (1st) | Auto email | Leads by source · MQL rate by source · SQL rate by source · Revenue by source |
| Pipeline Health Check | Sales Manager | Wednesday 08:00 | Auto email | Deals with no activity > 7 days · Deals past expected close date · Avg days per stage |
| Closed-Lost Analysis | Sales Director | Monthly (1st) | Auto email + meeting | Lost reasons breakdown · Lost by stage · Lost by competitor · Lost vs won ratio |
| Forecast vs Actual | CEO / Finance | Monthly (1st) | Power BI auto-refresh | Monthly bookings vs forecast · 3-month rolling accuracy · Pipeline coverage ratio |
Data Analysis Performed
I conducted three analytical workstreams during discovery to quantify the problem, validate scoring thresholds, and build the business case.
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.
-- 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 rateAnalysis 2 — Lead Source Performance
-- 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)
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 simultaneouslyFinding: 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.
Risk Assessment
Risk register maintained throughout the project. Reviewed weekly in steering meetings. Ratings: Likelihood 1–5, Impact 1–5.
| ID | Risk | L | I | Rating | Mitigation | Owner |
|---|---|---|---|---|---|---|
| R-001 | Low user adoption — reps revert to spreadsheets | 4 | 4 | 16 | Champions programme · training · manager enforcement · quick wins in Sprint 1 | Sales Mgr |
| R-002 | Data quality issues during migration corrupt CRM | 3 | 5 | 15 | Data cleanse sprint before migration · duplicate audit · mandatory field validation | BA + IT Lead |
| R-003 | Mailchimp ↔ HubSpot integration fails in production | 3 | 4 | 12 | Full integration test in HubSpot sandbox · rollback plan documented | IT Lead |
| R-004 | Scope creep inflates Sprint 2 & 3 beyond capacity | 4 | 3 | 12 | MoSCoW signed off in week 4 · change control process enforced by BA | BA / PO |
| R-005 | Key stakeholder unavailable during critical phases | 2 | 4 | 8 | Deputy sign-off authority defined in RACI · decisions documented in Confluence | BA |
| R-006 | HubSpot configuration does not support required scoring logic | 2 | 4 | 8 | PoC of scoring model built in sandbox before Sprint 1 commitment | Dev + BA |
| R-007 | Lead assignment rules fail for edge cases (e.g. APAC leaves) | 3 | 2 | 6 | All territory edge cases documented; fallback rule: assign to Sales Manager | Dev |
| R-008 | Power BI data refresh delay exceeds 15-minute SLA | 2 | 3 | 6 | HubSpot API rate limits reviewed; incremental refresh configured | IT Lead |
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
Sprint Planning
4 sprints of 2 weeks each following the 6-week discovery and design phase. Velocity established at 22 story points per sprint.
| Sprint | Dates | Focus | Stories | Points | Key Deliverables |
|---|---|---|---|---|---|
| Sprint 1 | Wk 7–8 (May 19–Jun 1) | Core CRM Configuration | US-001 to US-009 | 22 pts | HubSpot account setup · 7 pipeline stages · 12 custom properties · user accounts (15) · SSO · web form integration |
| Sprint 2 | Wk 9–10 (Jun 2–Jun 15) | Automation & Integration | US-010 to US-025 | 24 pts | Lead scoring model · 6 workflows · Mailchimp integration · escalation rules · data migration (1,082 contacts) |
| Sprint 3 | Wk 11–12 (Jun 16–Jun 29) | Dashboards & UAT | US-026 to US-038 | 28 pts | 3 HubSpot dashboards · Power BI executive dashboard · 85 UAT test cases executed · 9 defects resolved |
| Sprint 4 | Wk 13–14 (Jun 30–Jul 12) | Training & Go-Live | US-039 to US-047 | 18 pts | 3 training sessions (15 users) · phased go-live (SMB first, Enterprise Wk 2) · PIR · handover to Sales Ops |
Product Backlog
47 stories managed in Jira. Top 15 highest-priority backlog items shown, reflecting the Must Have and Should Have scope.
| ID | Story Title | Epic | Points | Sprint | Priority | Status |
|---|---|---|---|---|---|---|
| US-001 | Auto-create HubSpot contact on form submission | Lead Capture | 5 | S1 | Must | Done |
| US-002 | Slack notification on lead assignment | Lead Capture | 8 | S1 | Must | Done |
| US-003 | Territory-based auto-assignment with round-robin | Lead Capture | 5 | S1 | Must | Done |
| US-004 | Deduplication on email at point of contact creation | Lead Capture | 3 | S1 | Must | Done |
| US-005 | UTM source/medium/campaign auto-capture | Lead Capture | 3 | S1 | Must | Done |
| US-010 | Lead score visible on contact record (real-time) | Lead Scoring | 8 | S2 | Must | Done |
| US-011 | Auto lifecycle stage change at score 40 (MQL) / 70 (SQL) | Lead Scoring | 5 | S2 | Must | Done |
| US-020 | Auto follow-up task on lead assignment | Follow-up | 8 | S2 | Must | Done |
| US-021 | 24-hr escalation alert to Sales Manager | Follow-up | 5 | S2 | Must | Done |
| US-022 | One-click call outcome logging | Follow-up | 3 | S2 | Must | Done |
| US-026 | Mailchimp email engagement sync to HubSpot timeline | Integration | 8 | S2 | Must | Done |
| US-030 | Power BI executive pipeline dashboard | Reporting | 13 | S3 | Must | Done |
| US-031 | Automated weekly email report (Monday 08:00) | Reporting | 5 | S3 | Should | Done |
| US-032 | Lead source attribution dashboard | Reporting | 8 | S3 | Should | Done |
| US-015 | Closed-lost reason mandatory field | Deal Mgmt | 3 | S3 | Should | Done |
UAT Strategy
85 test cases executed across 2 weeks. UAT led by me with Rachel Torres as end-user champion.
| Attribute | Detail |
|---|---|
| UAT Period | Week 11–12 (June 16–29, 2024) |
| Test Cases | 85 total — 42 functional, 28 integration, 10 regression, 5 performance |
| UAT Lead | Akash Ghosh (BA) — test plan design, defect logging, triage |
| End-User Champion | Rachel Torres (Sr. AE) — executed all user-facing test cases |
| Other Participants | Priya Mehta (Marketing scenarios) · David Chen (SSO / security tests) |
| Entry Criteria | All 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 Environment | HubSpot sandbox (full copy of production configuration) · Mailchimp test account |
| Defect Tracking | Jira — P1 (blocker) / P2 (major) / P3 (minor) / P4 (cosmetic) |
| Sign-off Authority | James Okafor (UAT sign-off) + David Chen (security sign-off) |
Test Cases
Sample of 5 representative test cases from the 85-case UAT plan.
| TC ID | Test Case | Precondition | Steps | Expected Result | Priority |
|---|---|---|---|---|---|
| TC-001 | Lead auto-created on form submission | HubSpot form live on test website | 1. Submit test form with valid data 2. Check HubSpot contacts within 5 min | New contact created with all fields populated; no duplicates; UTM fields captured | P1 |
| TC-012 | Escalation fires after 24 hrs no activity | Lead assigned to test AE; no activity logged | 1. Assign lead 2. Wait 25 hrs (simulate via workflow trigger) 3. Check Sales Mgr email | Sales Manager receives escalation email with lead name, assigned rep, and HubSpot link | P1 |
| TC-025 | Lead score updates on email open | Contact exists in HubSpot; linked to Mailchimp list | 1. Send test email from Mailchimp 2. Open email in test inbox 3. Wait for sync (up to 10 min) 4. Check contact score in HubSpot | Score increases by +5 pts; email open event appears on contact timeline | P2 |
| TC-041 | Power BI dashboard reflects new deal within 15 min | Power BI connected to HubSpot via API; dashboard open | 1. Create a new deal in HubSpot for £45,000 2. Start timer 3. Refresh Power BI dashboard | Deal appears on dashboard within 15 minutes; pipeline total updates correctly | P2 |
| TC-058 | Duplicate contact prevented on form re-submission | Contact with email test@acme.com already exists in HubSpot | 1. Submit web form using email test@acme.com 2. Check HubSpot contacts | No new contact created; existing contact updated; no duplicate record in database | P1 |
Defect Management
9 defects raised during UAT. All P1 and P2 defects resolved before go-live sign-off. Log extract shown below.
| ID | Defect | Priority | Root Cause | Resolution | Status |
|---|---|---|---|---|---|
| DEF-001 | Lead score not updating when Mailchimp email is opened | P1 | Mailchimp webhook not sending 'email_open' event to HubSpot due to misconfigured API key scope | Updated Mailchimp API key with 'reports:read' scope; re-tested successfully | Closed |
| DEF-002 | Round-robin assignment skipping Rep 3 consistently | P1 | HubSpot workflow 'rotate' action not resetting counter after rep 2; off-by-one in config | Workflow reconfigured with explicit counter reset; 50 test leads distributed evenly | Closed |
| DEF-003 | Power BI pipeline total 3.2% below HubSpot total | P2 | Deals in 'Closed Won' stage excluded from Power BI query due to filter error | DAX measure updated to include all deal stages; totals now match within 0.01% | Closed |
| DEF-004 | Escalation email not firing for APAC time zone leads | P2 | Workflow trigger using static 24-hr delay based on UK time; APAC leads outside business hours | Workflow updated to use business-hours-aware delay; APAC rep confirmed receipt in test | Closed |
| DEF-005 | Company size field blank for Mailchimp-sourced contacts | P3 | Mailchimp integration mapping missing 'company_size' field from form submission payload | Mailchimp form updated to capture company size; mapping added in HubSpot integration settings | Closed |
Deployment Strategy
Phased go-live to reduce risk. SMB sales team (6 AEs) went live first; Enterprise team (6 AEs) followed one week later.
| Phase | Date | Users | Scope | Rollback Plan |
|---|---|---|---|---|
| Data Migration | Jun 30 | IT Lead + BA | 1,082 contacts migrated from 4 Google Sheets into HubSpot; deduplication applied; 214 duplicates merged; data quality report signed off | Spreadsheets retained read-only for 30 days post migration |
| Wave 1 Go-Live | Jul 1 | SMB 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 days | Reinstate Sheet access within 4 hrs if critical failure; HubSpot support on standby |
| Wave 2 Go-Live | Jul 8 | Enterprise AEs (6) | Enterprise pipeline migrated and activated; full team on HubSpot; Power BI dashboard live for Sales Director | Same rollback as Wave 1 — no critical issues encountered in Wave 1 |
| Stabilisation | Jul 8–12 | All users (15) | Daily adoption monitoring; open-door BA support sessions; defect fixes deployed; PIR prepared | No rollback needed — stabilisation was smooth |
Change Management Plan
Applied the ADKAR model to structure the people-side of the change. Adoption was the project's highest-rated risk.
| ADKAR Stage | Activity | Owner | Timing | Success Measure |
|---|---|---|---|---|
| Awareness — Why the change is needed | All-hands presentation by Sales Director (Week 3): 'Why spreadsheets are costing us $1.8M/year' — data shown | James Okafor + BA | Week 3 | 100% of team attended or watched recording |
| Desire — Motivation to participate | Champions programme: Rachel Torres (AE champion) and Priya Mehta involved from Week 1; early access to wireframes for feedback | BA | Wk 1–6 | Champions actively advocating — measured in Workshop 3 survey |
| Knowledge — How to use the new system | 3 × 90-min training sessions segmented by role (AE, BDR, Manager); Confluence training guides published | BA + Champions | Wk 13 | Post-training quiz ≥ 80% score for all participants |
| Ability — Practise the new way | 2-week supervised use with daily 15-min open Q&A sessions; BA available on Slack for queries | BA | Wk 13–14 | All 15 users logged at least one activity in HubSpot by Day 5 |
| Reinforcement — Sustaining the change | Manager enforcement: call outcomes logged before weekly sales review; quarterly data audits; PIR published to full team | Sales Mgr | Ongoing | 100% adoption at 30-day post go-live check |
Training Documentation
32-page training guide published to Confluence. Three role-based training sessions delivered in Week 13.
| Session | Audience | Duration | Format | Topics Covered | Materials |
|---|---|---|---|---|---|
| Session 1 — AE Fundamentals | 12 AEs | 90 min | Live demo + hands-on practice | Lead queue navigation · logging calls · updating stages · using mobile app · activity timeline | Confluence guide (15pp) · Quick-reference card (1pp) |
| Session 2 — BDR & Lead Management | 3 BDRs | 60 min | Live demo + Q&A | Form-to-contact flow · lead assignment visibility · task management · escalation awareness | Confluence guide (8pp) · Video walkthrough (12 min) |
| Session 3 — Manager & Reporting | Sales Director, Sales Mgr, Marketing Mgr | 90 min | Dashboard walkthrough + hands-on | Pipeline views · Power BI navigation · report scheduling · lead source attribution · forecast reading | Confluence guide (9pp) · Power BI user guide (5pp) |
Post-Implementation Review
Conducted at Week 14 (July 12). Reviewed all 8 success metrics. Findings shared with full project team and CEO.
| Goal | Metric | Baseline | Target | Actual (Wk 14) | Status |
|---|---|---|---|---|---|
| G1 — Single source of truth | % leads in CRM | 0% | 100% | 100% | Met |
| G2 — Reduce response time | Avg hrs to first contact | 52 hrs | < 2 hrs | 4.2 hrs | Partial |
| G3 — Improve conversion rate | Lead → Opportunity % | 18% | > 25% | 31% | Exceeded |
| G4 — Automate follow-ups | % follow-ups auto-triggered | 0% | > 90% | 94% | Exceeded |
| G5 — Reduce duplicates | Duplicates / quarter | ~200 | < 30 | 12 | Exceeded |
| G6 — Real-time pipeline visibility | Dashboard availability | None | Live | ✓ Live | Met |
| G7 — Reduce reporting effort | Manual hrs/week | 6–8 hrs | < 1 hr | 45 min | Exceeded |
| G8 — Improve forecast accuracy | Forecast vs actual variance | Unknown | < 15% | 11% | Met |
KPI Tracking Dashboard
Metrics tracked monthly in Power BI for the 3 months following go-live. Steady improvement trend confirmed.
| KPI | Baseline (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.0 | 4.2 | 2.8 | 2.1 | 1.9 | ↓ |
| Leads Uncontacted (72 hrs) | 35% | 8% | 5% | 4% | 3% | ↓ |
| Win Rate % | 18% | 22% | 23% | 24% | 24% | ↑ |
| Sales Cycle (days) | 68 | 54 | 52 | 51 | 50 | ↓ |
| Forecast Accuracy (%) | N/A | 11% | 9% | 8% | 7% | ↓ (improving) |
| Reporting Time (hrs/wk) | 6–8 | 0.75 | 0.75 | 0.5 | 0.5 | ↓ |
| CRM Adoption Rate (%) | 0% | 86% | 95% | 100% | 100% | ↑ |
Before vs After Comparison
| Area | Before (AS-IS) | After (TO-BE) | Change |
|---|---|---|---|
| Lead System | 4 disconnected Google Sheets | Single HubSpot CRM — 1 source of truth | Eliminated |
| Lead Assignment | Manual Slack DM — avg 52-hr delay | Auto-assign — < 5 min, zero manual action | −92% time |
| Lead Scoring | None — all leads treated equally | Real-time 100-pt score — MQL at 40, SQL at 70 | New capability |
| Follow-up Automation | Personal calendars — 35% missed | Auto-task + 24-hr escalation — 3% missed | −91% miss rate |
| Email Integration | No visibility of email engagement in sales flow | Mailchimp sync — all opens/clicks in CRM timeline | New capability |
| Pipeline Visibility | Weekly manual report (Friday PM build) | Real-time HubSpot + Power BI dashboard (live) | Real-time |
| Reporting Time | 6–8 hrs/week — Sales Manager manual build | 45 min/week — auto-generated Monday 08:00 | −88% effort |
| Duplicates/Quarter | ~200 duplicate records | ~12 duplicate records | −94% |
| Conversion Rate | 18% lead-to-opportunity | 31% lead-to-opportunity | +72% |
| Sales Cycle | 68 days average | 54 days average | −21% |
| Forecast Accuracy | Unknown / manually estimated | 11% variance vs actuals | Measurable |
| CRM Adoption | 0% (no CRM) | 100% at Month 2 | Full adoption |
Business Impact
Quantified outcomes and estimated ROI calculated at 3-month post go-live review.
ROI Summary
| Impact Category | Calculation | Annual Value |
|---|---|---|
| Pipeline recovered from uncontacted leads | 35% → 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 Cost | HubSpot licence + implementation + training | $186,000 |
| ROI (Year 1) | $2.3M benefit / $186K cost | 1,137% |
Lessons Learned
Documented in the PIR and shared with the project team. Six lessons applicable to future CRM and process improvement projects.
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.
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.
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.
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.
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.
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.
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
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.