// projects

Things I've shipped

A selection of Salesforce and RevOps builds — what the business needed, how it was solved, the stack behind it, and what changed after go-live.

01 / 10
Salesforce · Implementation · Migration
Client
PropTech
Year
2024
Stack
SalesforceSales CloudZoho MigrationRightmoveZooplaXeroFlow

Greenfield Salesforce Implementation & Migration

Migrated a ~40-person property business from 12 years of fragmented data across Zoho, spreadsheets and email into a fully integrated Salesforce org — the foundation for every other CRM project.

// problem

The business had 12 years of history spread across disconnected tools: Zoho, spreadsheets and email. Data was siloed, reporting was manual, and there was no single source of truth for sales, marketing or operations.

// solution

Implemented Salesforce as the central CRM, migrating core data and rebuilding sales processes in Sales Cloud. Connected Rightmove, Zoopla and Xero so leads, stock and financial data flowed into one place.

// business impact
  • Replaced fragmented tools with a single source of truth
  • Enabled integrated reporting and automation across sales and finance
  • Created the platform the rest of the business's CRM work is built on
02 / 10
Salesforce · Custom Objects · Architecture
Client
PropTech
Year
2024
Stack
SalesforceCustom ObjectsFlowApexRecord Types

Custom Lead Conversion → Property Lifecycle

Replaced Salesforce's standard lead conversion with a bespoke flow that spins up a custom Property record and its full opportunity structure — the backbone of how the business acquires, sells and trades every property.

// problem

Standard lead conversion couldn't model the reality of the business — a single property has purchase, sale and investor sides that all need to hang off one parent record. Trying to force it through the out-of-the-box flow left data fragmented and reporting unreliable.

// solution

Designed a custom conversion process that turns a qualified Lead into a Property record, then automatically creates and links the Purchase, Sale and Investor Opportunities against it — each with the right record type, stage and ownership.

// business impact
  • One property, one parent record — clean lineage across purchase, sale and investor deals
  • Underpins the entire acquisition and sales process on the platform
  • Reporting and automation downstream all key off a consistent structure
03 / 10
Salesforce · Finance · Reporting
Client
PropTech
Year
2024
Stack
SalesforceCustom ObjectsFlowReports & DashboardsFormula Fields

Property Financials, Profitability & Executive Reporting

Built the financial layer on top of the property lifecycle — tracking budgets, costs, overheads, gross profit and EBITDA per property, plus the executive dashboards leadership uses to run the business.

// problem

Property profitability was being tracked across spreadsheets. Leadership had no real-time view of budget vs actual, gross profit or performance across the pipeline, and finance was burning hours reconciling numbers manually.

// solution

Modelled Property as the parent record with child Opportunities, Costs, Overheads and Budgets. Automated gross profit calculations tie listing, purchase and sale prices together, and everything rolls up into dashboards covering pipeline, budget vs actual, and negotiator performance.

// business impact
  • Real-time visibility of gross profit and EBITDA at a per-property level
  • Budget vs actual comparisons are instant instead of spreadsheet-based
  • Executive dashboards give leadership the numbers they need to make calls quickly
  • Removed a significant chunk of manual finance admin
04 / 10
Salesforce · Architecture · Performance
Client
PropTech
Year
2025
Stack
SalesforceDLRSSOQLApexPlatform Limits

DLRS Rollup Architecture at Scale

Diagnosed and redesigned a large DLRS rollup implementation that was hitting SOQL governor limits — around 25 rollups feeding a single Property parent, failing in realtime but passing on full recalculation.

// problem

The Property record had grown to depend on ~25 declarative rollups. Realtime calculations were breaching the SOQL 101 governor limit while full recalcs ran fine, meaning the numbers were correct in theory but unreliable in day-to-day use.

// solution

Rather than piling on more automation, stepped back and redesigned the rollup architecture — consolidating fields, rethinking which values genuinely needed to be realtime, and shifting the rest to scheduled recalculations to stay well inside platform limits.

// business impact
  • Realtime rollups stopped failing silently in production
  • Platform stayed within governor limits with headroom for future growth
  • Numbers on Property records could finally be trusted at any moment in time
05 / 10
Salesforce · Apex · Integration
Client
PropTech
Year
2025
Stack
SalesforceApexREST APIWebhooksSupabaseStripeJSON

Salesforce ↔ Property Platform Integration

Built a bidirectional integration between Salesforce and the investor marketplace platform — Salesforce is the source of truth for stock, and offers, reservations and Stripe-backed subscription payments flow back in automatically.

// problem

Property data lived in Salesforce but listing it to the investor app meant manual re-entry. Offers, reservations and subscription payments coming back from the platform had no automated route into the CRM, creating admin overhead and visibility gaps.

// solution

A custom Apex integration layer serialises property records and pushes them to the platform's API. Inbound webhooks land offers, reservations and Stripe subscription/reservation payment events back on Salesforce records, keeping both systems in sync in real time.

// business impact
  • Listing a property became a one-click action instead of manual re-entry
  • Offers, reservations and payments land directly on the right Salesforce record
  • Sales team gets instant visibility of what's happening on the platform
  • Foundation for further automation as both systems scale together
06 / 10
Salesforce · Finance · Integration
Client
PropTech
Year
2024
Stack
SalesforceXeroFlow

Salesforce → Xero Invoicing Automation

Connected Salesforce to Xero so invoices are created automatically from CRM data — removing the manual re-keying work between deal-close and invoice-out.

// problem

Finance was manually re-keying invoice data from Salesforce into Xero every time a deal closed. Slow, repetitive, and a regular source of errors.

// solution

Built a Salesforce-to-Xero integration that passes contact and line-item data through automatically, creates the invoice in Xero, and updates the CRM record with the result.

// business impact
  • Removed the manual copy-paste step between Salesforce and Xero
  • Invoices go out faster and with fewer errors
  • Freed up finance time for higher-value work
  • Created a repeatable pattern for syncing CRM deals to accounting
07 / 10
Salesforce · Marketing Cloud · Automation
Client
PropTech
Year
2024
Stack
SalesforceMarketing CloudJourney BuilderFlow

Marketing Cloud Journeys Driven by Salesforce

Wired Marketing Cloud journeys to fire directly from Salesforce activity — automated, contact-linked communications that follow what's actually happening in the CRM instead of a separate marketing silo.

// problem

Marketing comms sat disconnected from the CRM. Sends were manual, timing was inconsistent, and there was no clean way to trigger the right message off a real Salesforce event.

// solution

Configured Marketing Cloud journeys to trigger from Salesforce events, using the Contact (Who) relationship as the link. Records flow into the right journey automatically based on CRM stage and activity.

// business impact
  • Comms fire off real CRM activity rather than manual list pulls
  • Every send is tied back to the right contact and record
  • Consistent, timely messaging across the customer lifecycle
08 / 10
Salesforce · AI · Telephony
Client
PropTech
Year
2025
Stack
SalesforceApexAI TelephonyREST APISentiment AnalysisFlow

AI Outbound Calling — Prospect Engagement at Scale

Integrated an external AI calling platform into Salesforce to automatically dial prospects, with calls tied directly to Salesforce records — transcriptions, sentiment analysis, and follow-up tasks all written back automatically.

// problem

Sales reps were spending a significant portion of their day manually calling prospects and logging call notes. Follow-up tasks were inconsistent and dependent on individual discipline, leading to dropped leads and slow pipeline progression.

// solution

Connected an AI outbound calling tool to Salesforce using the record ID as the anchor. Once a call completed, the integration pushed the full transcription back to the Salesforce record, applied AI-generated sentiment scoring, and created follow-up tasks based on the content of the conversation — all without manual input.

// business impact
  • Dramatically reduced time reps spent on manual dialling and call logging
  • Every call automatically transcribed and stored against the correct Salesforce record
  • Sentiment analysis flagged hot leads and at-risk prospects for prioritisation
  • Follow-up tasks created automatically based on call content, improving pipeline consistency
09 / 10
Salesforce · AI · Telephony
Client
PropTech
Year
2025
Stack
SalesforceApexAI TelephonyREST APISentiment AnalysisFlow

AI Inbound Call Handling — Automated Triage & Logging

Extended the AI telephony integration to handle inbound calls — matching callers to existing Salesforce records, transcribing conversations, scoring sentiment, and generating follow-up tasks automatically.

// problem

Inbound calls from prospects and vendors were being handled manually, with notes logged inconsistently or not at all. There was no structured way to capture what was discussed or ensure the right follow-up happened afterwards.

// solution

The inbound AI system matched callers to Salesforce records using their ID or phone number, handled the call, and on completion pushed a full transcript back to the record. Sentiment was scored and follow-up tasks were automatically generated based on what was said during the call.

// business impact
  • Inbound calls matched to the correct Salesforce record automatically — no manual lookup required
  • Full transcripts captured against every record, creating a complete contact history
  • Sentiment scoring gave the team instant context before any follow-up interaction
  • Automated task creation ensured no inbound lead fell through the cracks
10 / 10
Salesforce · Security · Integration
Client
PropTech
Year
2025
Stack
SalesforceConnected AppsOAuthApex RESTPermission Sets

Secure Integration Infrastructure

The plumbing behind every integration — Connected Apps, custom REST endpoints, dedicated integration users, OAuth flows, domain verification and IP allowlisting, so external systems can talk to Salesforce safely.

// problem

As the number of integrations grew, ad-hoc auth and shared credentials became a real risk. Each new integration needed a proper, auditable path in and out of Salesforce.

// solution

Set up Connected Apps with scoped OAuth, built custom REST endpoints for inbound calls, provisioned dedicated integration users with least-privilege permission sets, and locked down access with domain verification and IP allowlisting.

// business impact
  • Every integration authenticates through a proper, auditable path
  • Least-privilege access reduces blast radius if credentials are ever compromised
  • New integrations can be onboarded quickly on top of the same foundation