Non Profit Portfolio

Non Profit CRM — Project Summary
Salesforce Implementation Project
Non Profit CRM
B2B Relationship Management
A Salesforce CRM solution enabling a UK furniture reuse charity to manage its partner network, track grant funding, and record strategic initiatives — built in a Salesforce Developer Edition org.
Salesforce Admin CRM Implementation Non Profit Sector Grant Tracking Flow Automation ✓ Live in Production
5
Salesforce Objects
4
Automated Flows
4
Validation Rules
6
Custom Reports
📋
Project Overview

Non Profit CRM is a UK-based furniture reuse charity that collects, refurbishes, and redistributes donated furniture and household goods to individuals and families in need. The organisation works with a wide network of local authorities, housing associations, grant providers, referral agencies, and community partners.

Prior to this implementation, relationship information was scattered across spreadsheets, individual email inboxes, and personal knowledge of staff members. There was no central record, no consistent way to track grant opportunities, and no visibility of planned partner initiatives. This project delivered a structured Salesforce CRM to solve these problems — built from scratch in a Salesforce Developer Edition org.

⚠️
Business Problems Solved
Fragmented Data
Partner information scattered across spreadsheets and personal email inboxes with no shared, central record accessible to the whole team.
No Visibility of Relationships
No way to see which contacts had been engaged, when, or what had been agreed. Key relationships were going unmanaged.
Missed Initiatives
Partner initiatives discovered too late to respond. No structured way to track what was planned and over what timescale.
No Grant Tracking
Grant deadlines missed. No central pipeline, no status tracking, no visibility of funding secured versus funding in progress.
Manual Reporting
Every report required manually collating data from multiple sources — time-consuming, error-prone, and person-dependent.
No Data Consistency
No controlled classification of organisations by type, no required fields enforced, no audit trail of interactions.
🗄️
Solution — Data Model
Standard 🏢
Account
Partner Organisations
Large & Small Record Types
Standard 👤
Contact
Organisation Staff
Decision-maker flagging
Repurposed 💰
Opportunity
Grants & Funding
Custom Stage pipeline
Standard
Task
Interactions &
Follow-Up Reminders
Custom 💡
Initiative__c
Partner Initiatives
Master-Detail to Account

Design principle: standard objects first. Opportunity was repurposed for grant tracking rather than building a custom object. Initiative__c is the only custom object — justified because no standard object fits the requirement of recording structured partner intelligence about planned initiatives.

Automation — 4 Flows
📅
Grant Deadline Reminder
Creates Task 3 days before application deadline
Opportunity · After Save
🤝
New Org Follow Up
Auto-creates follow-up Task for every new organisation
Account · After Save
🔗
Sync Primary Contact
Keeps primary contact synced to parent Organisation
Contact · After Save
📋
Update Last Interaction
Cross-object: updates Org date when Task completed
Task · After Save · Cross-Object
🛡️
Validation Rules
Account
Relationship Type Required — every organisation must be classified before saving
Opportunity
Deadline Must Be Future — prevents past dates on new grant records
Opportunity
Submitted Date Required — enforced when Stage = Submitted
Initiative__c
Timescale Required — every initiative must have a timescale category
Key Capabilities Delivered
🏢
Partner Organisation Records
Structured records for every partner — from large councils with political and officer structures to small local charities. Classified by Relationship Type with Account hierarchy for departments.
💰
Grant Pipeline Management
Full grant lifecycle from Identified through to Awarded or Declined. Custom Stage values, deadline tracking, and a live Fundraising Manager dashboard with 6 components.
💡
Initiative Tracking
Custom object recording what partner organisations are planning, over what timescale, and whether politically or officer led. Linked directly to organisations and grant opportunities.
📊
Real-Time Reporting
6 named reports and a live dashboard giving the Fundraising Manager a complete view of the grant pipeline, upcoming deadlines, awarded funding, and stale funder contacts.
🔐
Security Model
Custom profile for Fundraising Manager with object-level permissions. Field-Level Security configured independently of page layout — access controlled at the profile level, not just layout.
Automated Engagement Tracking
Cross-object Flow updates Organisation's Last Interaction Date automatically when a Task is completed — no manual input required. Built using the WhatId relationship on Task.
👥
Personas & Stakeholders
💼 Fundraising Manager
  • Primary system user — owns the grant pipeline
  • Tracks opportunities from identification to award
  • Manages funder relationships and contacts
  • Uses dashboard for real-time pipeline visibility
🔬 Relationship Researcher
  • Maps and maintains partner organisation records
  • Records political and officer structures
  • Tracks partner initiatives and geographic priorities
  • Keeps contact and interaction history current
👔 CEO / Senior Leadership
  • Strategic oversight of partner network
  • Views funding pipeline and awards YTD
  • Monitors relationship health across the network
⚙️ System Administrator
  • Built and configured the Salesforce org
  • Manages profiles, FLS, and page layouts
  • Owns Flow automation and validation rules
  • Maintains data model and object design
🎯
Key Design Decisions
📐
Standard Objects First
I repurposed Opportunity for grants rather than creating a custom object — it already had Stage, Amount, Close Date, and Contact Roles. Only one custom object was created (Initiative__c) and only after exhausting all standard options.
🔗
Master-Detail for Initiatives
I chose Master-Detail over Lookup for Initiative__c to Account because an Initiative without an organisation is meaningless data. This also enables Roll-Up Summary fields in a future phase — only possible with Master-Detail.
🏷️
Shared Layout — Deliberate Choice
Two Record Types were created for Large and Small Organisations but I kept a shared page layout. The data capture needs are currently the same — splitting layouts would add overhead without benefit. Infrastructure is in place to split when requirements diverge.
🔒
FLS Not Just Layout
I set Field-Level Security at the profile level for sensitive fields rather than relying on hiding them on a layout. A hidden layout field is still accessible via the API — FLS is the only reliable access control mechanism.

👉 Cleaning Operations Portfolio
👉 Apex Operations Portfolio