Work I connected a bank's lead pipeline, from campaign to who can see the lead.
End-to-end lead pipeline in five stages: campaign, lead created, rule matched, assigned, who can see it. Below, the three systems involved: the legacy campaign system, the new back office and the sales tablet app.
ttbNew sales platform (CRM)Apr 2025 – Jun 2026

I connected a bank's lead pipeline, from campaign to who can see the lead.

ttb built its own sales platform. I designed the back office (campaigns, lead rules, assignment, visibility) as one flow across three systems and two departments.

My role
UX and business analyst. Discovery, business rules, examples (SBE), prototypes, functional spec, UAT. Visual design by the product design team.
Team
PO, business owners, solution architect, 6 dev and QA teams (35+ people)
When
Apr 2025 – Jun 2026, onsite
Tools
Figma, Miro, Jira, Confluence, Excel

Impact

5stages in one lead pipeline
3systems it had to work with
8 / 8participants passed both core tasks

Context

The platform serves 7,600 user licenses and 2,000+ user role configurations.

Another department, the Sales Tablet team, rebuilt the front end. My team owned the back office and its services.

The brief was one line: "Redesign the CRM interface to improve usability." I interviewed 20+ stakeholders and users across frontline, ops, supervisors and business owners. The problems sat in the workflow and the operating model.

Five insight themes

01Role overload paralysed access control

2,000+ role configurations. People couldn't reach what their job needed.

02Role capabilities ≠ real responsibilities

Support staff couldn't see what they were meant to support.

03Integration gaps failed silently

Batch jobs and status updates failed with no alert; teams found the errors downstream.

04No onboarding path

New joiners learned by interrupting colleagues.

05Expectations were ahead of the system

Users wanted help analysing customers, spotting opportunities and tracking team health.

Assumptions that didn't survive

AssumptionRedesigning the screen will fix the problem.
→
RealityThe workflow and operating model had to change first.
AssumptionAll teams follow the same process.
→
RealityEach business unit had a different workflow.
AssumptionSystem inflexibility is the main issue.
→
RealityPolicy constraints and process gaps were the deeper causes.

How I worked

Every stage ran the same loop, from domain experts to the dev backlog.

Six steps: domain-expert sessions, examples as result tables (specification by example), clarify with business, design with solution architect, prototype until solid, then UI design and dev backlog.
The same six steps at every stage.

I studied Zoho and monday first. Zoho's lead matching became our model, with far fewer fields, and monday's sentence-style recipes shaped the rule editor.

The pipeline

Five stages: campaign, lead created, rule matched, assigned, who can see it. Below, the three systems: the legacy campaign system, the new back office, and the sales tablet app.
One lead's path through the back office, and the three systems around it.

No single team owned the whole path, so I mapped it end to end and wrote the rules at each hand-off.

Stage 1 · Campaign

Keep the marketing team's structure, remove the manual work. The module also had to sync with the legacy campaign system.

Decision 01Parent and child

The parent holds structure and dates. The child holds what generates leads: product, channel, sub-type. Marketing already worked this way.

Decision 02Edits after publishing can only extend

Once published, the data is in the legacy system and leads may exist. End dates can move later, never earlier. Most fields lock at start. Expired and cancelled campaigns are read-only.

Decision 03Lead expiry follows the campaign

A lead can expire with its campaign, so it never outlives it.

The other rules

  • Publishing needs a saved draft and at least one child campaign.
  • A child's dates sit inside its parent's.
  • The stage is derived from the dates and the publish status.
  • Hold and resume work only on a published child.
New becomes Executed when the start date is reached and the campaign is published, then Expired at the end date. Child campaigns can be put On Hold and resumed. Published campaigns can be cancelled. A publish gate requires a saved draft and at least one child.
Campaign stages, as I mapped them for business and dev.

I drew every stage that changes the flow, so business, architect and dev argued over one picture.

Form for a parent campaign: name, code, stage fixed to New, start and end date, type, priority, owner, customer segment, attach link. The Publish button stays disabled with the hint 'Save as draft before publishing'.
Creating a parent campaign: Publish waits for a saved draft.
Campaign list showing parent campaigns with their child campaigns indented beneath, each with a stage chip: New, Executed, On Hold, Expired, plus parent, dates and published status.
The campaign list, children under their parent.
Shipped screens, redrawn and anonymised. My prototype set the structure and rules; the product design team did the visuals.

Stage 2 · Lead

Score, rating, SLA

Every new lead gets a score from weighted fields (total 100%). Rating bands, Very hot to Cold, must cover 1 to 100 with no gaps or overlaps, and the rating sets the SLA clock.

Four rating levels: Very hot 80 to 100, Hot 60 to 79, Warm 40 to 64, Cold 1 to 39. Warm overlaps Hot, so an 'Overlapping range' error explains that every score from 1 to 100 must belong to exactly one level.
Shipped screen, redrawn and anonymised. The overlap error is shown on purpose.

Duplicates

Duplicates are checked per lead source, then restaged or sent to a user or team pool.

The smaller rules

RuleWhat it protects
SLA by lead type, product and ratingHot leads get a shorter clock, with a reminder before and an action after
Only licensed staffA lead only goes to staff licensed to sell that product
Bulk re-target uploadRows that pass checks are saved; failed rows come back as a file to fix
ExpiryBy created date or by campaign end date

Stage 3 · Match and assign

The riskiest feature: lead assignment rules. Every rule change needed IT, even after hours. The goal: a self-serve engine that routes leads by user, queue, AI model or product.

Criteria use a few operators: null, not null, equal and not equal for text, and ranges for numbers.

Lead source→Assignment rule→Criteria check→Distribute→Sales owner

How a rule works

  • Rules have a numbered priority. The first rule that matches wins.
  • Each rule combines a trigger, a lead source, a sales model and criteria.
  • Actions assign the lead, send it on to other systems, notify someone, or run a check.
  • The target is a person, a team, or round robin within a group, by branch, zone, region or coverage area.
  • A default rule catches leads that match nothing, for example when the named owner is inactive.

I mapped all of this with developers and business owners before drawing a screen, so the spec was clear and we avoided rework.

LeadRuleExpected result
Home loan, branch "North 1"Group: lending staff · level: branch · round robinNext licensed staff member at North 1
Home loan, branch "North 1"Same, level: zoneNext licensed staff member in North 1's zone
Car loan, brand X, district YGroup: auto staff · coverage area with brandNext staff member covering district Y who sells brand X
Any lead, owner inactiveAssign to named personFalls to the default rule
Rules written as examples, with sample data.
Rule list with visible priority numbers 1 to 4, rule name, trigger chips such as Created and Updated, lead source, sales model and status, plus Default rule and Create rule buttons.
Shipped screen, redrawn and anonymised.

Test setup

FormatModerated, in person, on a lo-fi Figma prototype, before development
Group A3 experienced users: 1+ year of CRM and rule configuration
Group B5 first-time users, to test learnability from scratch
Session40–50 minutes, 2 core task flows

Five iterations from testing

Testing showed friction we couldn't see on our own. Each became a fix before handoff.

1 · Rule list: empty state and entry point5/8 participants

5/8 hesitated: default rule or custom rule first?

BeforeTwo equal buttons, "Set up Default Rule" and "Set up Customize Rule", and no guidance.
AfterA recommended path: default rule first, custom rules on top.
2 · Custom rule: Trigger / Criteria / Action4/8 participants

4/8 read Trigger, Criteria and Action as three unrelated settings.

BeforeThree separate panels with no visual connection.
AfterOne sentence: "When [Trigger] and [Criteria], then [Action]", with connector lines and a summary.
3 · Assignment type labels3/8 participants

3/8, all first-timers, couldn't tell "Assign by Queue" from "Assign by Model".

BeforeOptions named in system terms: By User, By Queue, By Model, By Product.
AfterBusiness labels with a one-line description, and a tooltip for AI-model assignment.
4 · Validation timing6/8 participants

6/8 expected feedback as they filled in criteria.

BeforeErrors showed only on save, so users scrolled back to find the field.
AfterInline validation per field, plus a rule health indicator throughout the flow.
5 · Rule priority7/8 participants

7/8 never found drag-to-reorder. They expected numbered priorities.

BeforePriority set by drag and drop, found only by accident.
AfterVisible priority numbers, a "Priority" column header and a hover hint. Drag still works.

Outcomes

5 minaverage time for task 1
1–3 minaverage for tasks 2.1–2.3

Confidence after the test (1–5)

GroupParticipantConfidence
First-timeBeginner A3.75
First-timeBeginner B3.77
ExperiencedAdvanced A4.4
ExperiencedAdvanced B4.8

Stage 4 · Who can see the lead

Campaign leads go to sales staff in bulk, and the existing roles couldn't say who should get them. So we grouped staff by department or division.

  • Rules run in priority order. Each sets a level, a value and who sees the lead: everyone, or only the same department or division.
  • With no matching rule, a user sees only their own leads.
  • A rule does nothing until a module reads it, so modules could adopt sharing one at a time.
Priority-ordered sharing rules: Department A sees all leads, Department B sees leads within its department, Division C within its division. Each row has a drag handle and an active toggle. A note says that with no matching rule a user sees only their own leads.
Shipped screen, redrawn and anonymised.
User's departmentRuleSees
Department AAllEvery lead
Department BWithin departmentLeads in Department B
Department D(no rule)Only their own leads
Sample data.

One lead's audit trail

EventByDetail
Lead createdSystemUnder campaign "Home loan · Tablet"
Rule matchedSystemRule 2 "Home loan leads" → team pool
Sent onSystemDistributed to the sales system
Picked upStaffOwner set to a sales staff member
Re-assignedManagerOwner changed
Status updatedStaffNew → Offered
Every hand-off writes an event, so anyone can trace a lead from campaign to owner. Sample data.

UAT and handover

All four areas reached UAT before my contract ended in June 2026. I logged the business impact of every carried-over item and must-have gap, so the team knew what to do next.

Deliverables

Future-state journey

End to end, customer and service

User flows

Role-based, per user type

Service blueprint

Frontstage, backstage, support systems

Functional requirements

By epic and feature

Epics and features

Prioritised, with acceptance criteria

Jira backlog

Ready for 6 development teams

What I learned

Fix the workflow before the screen.From the CRM discovery

The brief asked for a new interface. The interviews showed the problems sat in roles, hand-offs and policy, so I mapped the whole lead path and wrote the rules at each hand-off before drawing screens.

Next caseEvery visual dimension is a mode.