← Case studies

Case Study · Stull CPA · Tax & Wealth Advisory

Stull CPA runs tax season on Salesforce. Intake to invoice, one system.

A US tax and wealth advisory firm ran two businesses on one client base, and the work lived everywhere: organizers as PDF attachments, documents by email, handoffs by memory, billing in a system nobody reconciled until month end. As their embedded Salesforce team we built the practice a single operating system - typed cases that route themselves, tax organizers clients fill online, e-signature and document filing that never touch a staff inbox, and a Stripe bill that goes out from the same screen the work was done on. Over 2,200 hours delivered and still building.

2,200+
hours delivered, engagement ongoing
One click
from case to Stripe invoice or charge
2
tax organizers taken fully digital (1040, S-Corp)
1,000+
hours of data migration and cleanup
Book a Free Consultation Free · 30 minutes · a senior architect, not a rep

Industry

Tax, accounting & wealth advisory

Platform

Salesforce + Stripe + Titan + Box

Timeline

Ongoing, 2,200+ hours to date

Outcome

Intake to invoice in one system

Built withSalesforce Cases & FlowsApex & LWCStripe APITitan Forms & e-SignBoxExperience CloudDevOps Center

The challenge

Stull CPA: a tax and wealth practice that outgrew its inbox

Stull CPA serves its clients twice over: tax preparation on one side, wealth management on the other. Before the rebuild, the operational glue was email and memory. Organizers went out as PDF attachments, completed documents came back to inboxes, work moved between staff verbally, consent-sensitive assignments depended on people remembering who had signed what, and billing lived in a separate system reconciled at month end. Tax season meant volume the process could not absorb.

Work lived in email

Organizers, client documents, and signatures all moved through inboxes, and every attachment needed a human to file it somewhere a colleague might find it.

Consent routing by memory

IRS Section 7216 consent determines who may touch a return. Assignment depended on staff remembering each client’s consent status, with no enforcement behind it.

Billing disconnected from the work

Invoices were raised in a separate system with its own version of the client list, reconciled at month end, with recurring fees invoiced by hand.

Two businesses, one client base

Tax and wealth ran different work on the same accounts: cashiering, distributions, and financial-account moves needed different fields, routing, and visibility than tax returns.

An empty system is a dead system

None of it works if the book of business is not in it: years of accounts, contacts, tasks, and engagement history had to move over clean.

The architecture

Intake to invoice, without leaving the case

Every engagement becomes a typed case. The case routes itself by type and consent status, collects its documents through organizers and Titan e-sign into Box, and bills itself through Stripe when the work is done.

Sources

Client onboarding
Tax return cases
Organizer submissions
Stripe webhooks

Built by Cloudsheer

Consent-aware case routing
LWC organizers + Titan e-sign
Stripe billing in Apex

Outcomes

Right queue, every case
Signed documents file to Box
Invoice from the case
Dashboards emailed daily

What we built

A case-driven workflow engine

Typed cases for tax returns, onboarding, payroll setup, cashiering, and missing documents, routed by record-triggered flows to the right queues, with IRS 7216 consent deciding which staff group may receive the work.

Digital tax organizers

1040 and S-Corp organizers as custom LWC forms on public links. Client answers write to Salesforce, a generated PDF files to the client’s Box folder, and Titan handles the signatures.

Stripe billing from the case

A Send Invoice button that computes the amount from the engagement’s own rate fields, offers invoice versus immediate charge, finalizes in Stripe, and emails the client. Subscription schedules cover recurring engagements; a webhook listener syncs customers and payment methods both ways.

Box document automation

Client folders created by callout when accounts are created, with batch retry and failure logging, and Box events flowing back onto the Salesforce record.

A client portal and feedback loop

An Experience Cloud portal for secure uploads, automated welcome emails, and post-engagement surveys reported on a leadership dashboard that emails itself out daily.

Payroll and CAS automation

Payroll setup and run workflows, monthly CAS reconciliation cases, and bookkeeping communications, following the same case pattern as the tax side.

The book of business, migrated

Over a thousand hours of record migration and cleanup: accounts, contacts, tasks, opportunity contact roles, deduplication, owner reassignment, and default rates backfilled across the book.

How we did it

One operating system for a two-sided practice

Stull CPA is really two firms sharing one client base: a tax practice with brutal seasonal peaks and a wealth advisory business with compliance obligations of its own. The system we built treats every piece of work as a typed Salesforce case - tax return, onboarding, payroll setup, cashiering, missing documents - and routes it automatically to the right queue. The routing is consent-aware: clients who have signed IRS Section 7216 consent route to one staff group, and everyone else routes to a restricted operations team. That distinction used to live in people's memories; now the automation enforces it on every single case.

The client-facing half is where tax season changed shape. We built the firm's 1040 and S-Corp organizers as custom Lightning Web Component forms served from public links: the client fills the organizer in a browser, the answers write straight onto their Salesforce records, a generated PDF files itself into the client's Box folder, and the engagement letter and returns route for signature through Titan. Documents that used to arrive as email attachments and get dragged into folders by hand now file themselves, and the Box automation logs and retries its own failures.

Billing moved to where the work happens. We built the Stripe integration in Apex: a Send Invoice button on the case reads the engagement's own rate fields - planning fees, hourly rates by role, flat annual fees - computes the amount, lets staff choose between an invoice and an immediate charge, creates and finalizes it in Stripe, and emails it to the client, logged back on the case. Recurring engagements run on Stripe subscription schedules, and a webhook listener keeps customers and payment methods in sync in both directions. The named Apex classes behind this ship with test coverage between 85% and 100%.

None of it would matter if the system had started empty. Over a thousand hours of the engagement went into migrating and cleaning the firm's book: accounts, contacts, task history, opportunity contact roles, deduplication, owner reassignment, and rate fields backfilled across every client. It is the unglamorous half of a platform build, and it is the half that decides whether a team trusts the new system on day one. The engagement is ongoing: the core routing flow is past its eightieth version, which is what a system that keeps pace with a real practice looks like.

How we delivered

Ongoing, 2,200+ hours to date, start to finish

1

Discovery & foundation

Record types, case taxonomy, and queues that mirror how the practice actually hands work around.

2

Migrate the book

The long haul: accounts, contacts, history, and rates moved and cleaned, so the system starts full.

3

The workflow engine

Routing flows by type, subtype, and 7216 consent; task automation; the queues and dashboards behind them.

4

Organizers & e-sign

LWC organizers on public links, PDF generation, Titan signatures, and Box filing with retry logging.

5

Billing & beyond

The Stripe suite, payroll and CAS automation, the portal, surveys, and continuous iteration in production.

The results

What changed for the business

MetricBeforeAfter
Tax organizersPDF attachments by emailFilled online, filed to Box, signed via Titan
Work assignmentHandoffs by memoryTyped cases auto-routed, consent-aware
InvoicingSeparate system, month-end reconcileSend Invoice on the case, two clicks
Recurring feesRaised by handStripe subscription schedules
Client documentsInbox archaeologyBox folders created and retried automatically
Leadership visibilityAsk aroundDashboards emailed daily

Running a practice on inboxes and memory?

Book a free 30-minute scoping call. We will map how work actually moves through your firm, show you what a case-driven practice system looks like on Salesforce, and hand you a plan - migration included in the estimate, not discovered after it.

Client identifying details have been anonymized at the client's request. Metrics reflect the outcomes of a real engagement.

Ask me anything