Background
DLH Consulting Services is a boutique Salesforce consulting firm. Like many small businesses, their team is small enough that every hour spent reconciling data between systems is an hour not spent on client work — and the small business workflow automation tools available off-the-shelf are usually too generic to fit how a consultancy actually operates.
This case study walks through the custom platform we built for DLH: a full-stack application that automates the workflows their consultants run every day, ties Salesforce to the rest of their operations, and gives leadership the real-time visibility a stack of disconnected SaaS tools couldn't. The platform is live in production at sfdcdlh.com and used by the DLH team daily.
The problem
DLH had Salesforce — and they had it dialed in for managing clients, opportunities, and deliverables. What they didn't have was a way to operate around Salesforce. The day-to-day work of a small consulting business — submitting timesheets, enriching prospect lists, tracking what every team member was doing across accounts, generating content for marketing — lived in spreadsheets, in inboxes, and in tools that didn't talk to Salesforce.
The pain points compound at small-firm scale:
- Time entries lived in a separate system, which meant reconciling timesheets to Salesforce for billing was a manual weekly chore.
- Account data went stale fast. There was no automatic way to enrich Salesforce records with current firmographic or contact data, so the team was either working from outdated records or hand-researching each one before outreach.
- Investor and prospect intelligence — the kind of institutional data that drives DLH's commercial work — sat in static CSV exports, not in a system anyone could query.
- Leadership had no real-time view of activity across the firm. Asking "what is everyone working on this week" required pinging people on Slack.
- Marketing content existed when someone had time to write it, which is rarely.
None of these are unique problems. What's specific is that an off-the-shelf solution exists for none of them, and chaining together five SaaS subscriptions to approximate one rarely produces something a small team will actually use.
The approach: a custom workflow automation platform built around Salesforce
We designed and built a custom full-stack web application for DLH — one that they own, that runs on their infrastructure, and that is shaped specifically around their workflows. Rather than bolting third-party tools onto Salesforce, the platform sits next to it: bidirectionally synchronized, but free to model the parts of their operation that Salesforce alone doesn't represent well.
Bidirectional Salesforce sync
The core integration is a two-way Salesforce sync. Accounts, contacts, opportunities, leads, campaigns, invoices, and time logs flow between Salesforce and the application's own data model, with a last-write-wins reconciliation strategy and per-record sync state so the team can see at a glance what's in sync, what's been edited locally, and what needs attention.
This is the unlock that makes everything else possible. Time entered into the platform's timesheet UI lands in Salesforce automatically. Account edits made by a team member working in the platform's CRM dashboard show up in Salesforce on the next sync cycle. The team uses whichever interface fits the task — sometimes Salesforce's own UI is the right tool, sometimes a custom view tuned to their actual workflow is faster — and the data stays consistent either way.
Apollo.io account enrichment
For prospect research and ICP scoring, we wired Apollo.io into the platform. Salesforce account records can be enriched with current firmographic, technographic, and contact data in a single click; the Apollo data lives alongside the Salesforce record so any analyst can see both views in one place.
This replaces the previous workflow — manually hand-researching each account before outreach — with a one-step enrichment that runs against current data. It also opens up an ICP-scoring layer: the platform can identify the accounts in DLH's pipeline that best match an ideal customer profile, surfacing them at the top of the dashboard so the team doesn't have to remember which records are most worth their time.
Institutional data gap analysis
DLH's commercial work involves the institutional investor universe. We built a gap-analysis pipeline that compares the institutional records in DLH's Salesforce against an external reference dataset and surfaces accounts that should be in CRM but aren't. The output is an upload-ready file the team can review and bulk-import, so prospect coverage stays current without a research analyst's full attention.
The pattern matters more than the volume: the platform turned a one-off "we should reconcile our investor coverage someday" project into a routine the team can run any time the reference dataset updates.
Activity tracking and real-time dashboards
Every authenticated request through the platform is automatically logged by middleware and classified into a structured set of activity types — page view, create, update, delete, integration sync, report run, and so on. On top of that activity stream sits a set of analytics endpoints that drive real-time dashboards: pipeline health, user engagement, system activity, account-touch trends, integration sync status, error rates.
For leadership, this is the visibility that previously required asking the team. For the team, it's an audit trail that's there if anyone needs it. None of this required a separate logging tool — it's built into the same platform that runs the workflows being logged.
Internal CRM and timesheet workflows
The platform's CRM views are tuned to how a consulting team actually works — drag-and-drop opportunity pipelines, account health scoring, weekly timesheet entry with searchable account dropdowns and automatic Salesforce sync, project tracking that ties deliverables to client engagements, and document storage scoped to each project.
These are the small business workflow automation features that off-the-shelf SaaS tools approximate from the outside. Built from the inside, against DLH's actual data, they cost a fraction of the seat-count fees a stack of generic tools would, and they fit how the team works.
AI-powered blog and marketing site
The platform also serves DLH's public marketing site, including a blog with AI-assisted content generation. The blog automation is grounded in Salesforce context — it knows the kind of work DLH does, the audience they write for, and the topics relevant to their practice — so generated drafts are useful starting points rather than generic copy.
This was the smallest piece of the build by lines of code, but it's the part the team hits most often: a marketing channel that doesn't go quiet whenever the consultants get busy with billable work.
Outcomes
A few honest things that are true about this build:
- It runs in production, daily, for DLH's team. That's the most important outcome — many internal-tooling projects get built and abandoned. This one is part of the firm's operating rhythm.
- Salesforce data stays current with the rest of the operation without anyone having to manually reconcile it.
- Account enrichment that used to be hand-research is now a single click; ICP scoring is automatic.
- Leadership has visibility into team activity that didn't exist before, including audit-grade logs of every action authenticated users take.
- Marketing content publishes regularly, on a cadence the team controls, without a backlog.
We don't publish hard numbers on this engagement — partly because they aren't ours to share, and partly because the kind of metric that matters most for a small consulting firm ("do they actually use it") isn't a number, it's a yes.
The stack
The platform runs on a Django 5.2 + React 19 + TypeScript foundation, with PostgreSQL for storage, Celery for scheduled work, and deployment on DigitalOcean fronted by Nginx. Integrations include the Salesforce REST API, Apollo.io, OpenAI, Mailgun, and Gmail. The codebase is owned by DLH; Purcell Analytics maintains it on a continuing engagement basis.
If your small business is running on Salesforce plus a half-dozen disconnected SaaS tools and you're looking at a custom workflow automation build that fits how you actually operate — that's exactly the kind of work we do.