LLM.coPrivate, self-hosted LLM deployments
Legal AI infrastructure for firms
AI RFP discovery and response drafting
Automatic.coBusiness process automation
Secure AI virtual data rooms10 business days
To start a Salesforce engagement
Scoping through first sprint
100%
Senior engineers, US-based
Certified where the work calls for it
Every sprint
Working changes in a sandbox you can click through
Not a slide deck between milestones
100%
Configuration and code you own
In your org, from the first change set
What we build on Salesforce
Salesforce work, by what's actually being asked for
"Salesforce developer" covers a wide range of work, from a declarative fix inside Sales Cloud to a custom Apex application that happens to live on the platform. The right person and the right approach depend on which of these you actually need.
Sales Cloud and Service Cloud configuration
Page layouts, record types, validation rules, approval processes, and automation built with Flow rather than code wherever Flow can carry the logic. Most of what teams assume needs a developer is actually a configuration decision made correctly.
Custom Apex applications
Triggers, batch and scheduled Apex, and custom business logic for the cases declarative tools genuinely can't cover — complex multi-object transactions, callouts to external systems inside a save, or logic that has to run outside governor limits a Flow would hit.
Lightning Web Components
Custom UI on Lightning pages, Experience Cloud portals, and embedded components that need to feel native to the platform rather than bolted onto it — built with the same component discipline as any modern frontend, on Salesforce's own framework.
Integrations
Salesforce rarely stands alone. Middleware or direct API integration with an ERP, marketing automation platform, billing system, or data warehouse, built so a record updated in Salesforce and a record updated downstream never quietly disagree.
AppExchange and managed packages
Evaluating whether a problem is better solved by an AppExchange package than custom code, and building the glue configuration or Apex a package needs to fit your specific process once it's installed.
Reporting and analytics
Reports and dashboards built to match how your team actually reviews pipeline and service metrics, plus the CRM Analytics or external BI connections needed when native reporting hits its limits on volume or cross-object complexity.
The decision that matters most
Configuration or custom code, decided per object and written down
The single biggest driver of a Salesforce org's long-term maintenance cost is how many of these decisions got made by default instead of on purpose. Unmanaged Apex — triggers and classes nobody documented a reason for — is where most orgs' maintenance bill actually hides.
Start with Flow, not Apex
Record-triggered and screen Flows now cover the large majority of what used to require a trigger. Reaching for Apex before confirming Flow can't do it is the most common source of code an org didn't need to write.
Governor limits are a real design constraint
Salesforce's multi-tenant architecture enforces limits on SOQL queries, DML statements, and CPU time per transaction. Code that works in a sandbox with ten records can hit a limit in production with ten thousand — bulkification isn't an optimization, it's a requirement.
Managed packages trade flexibility for stability
A managed package upgrades cleanly but can't be edited directly; an unmanaged package or custom Apex gives full control but is entirely your org's responsibility to maintain through every Salesforce release. Neither is automatically the right call — the tradeoff has to be made deliberately per feature.
Every customization is a future upgrade's problem
Salesforce ships three releases a year, and every custom trigger, Visualforce page, or heavily modified page layout is something that release has to not break. Documenting why a customization exists is what lets a future developer — or Salesforce's own release notes — tell you when it's safe to remove.
Sandboxes exist to be used, not skipped
Configuration changes made directly in production because a sandbox refresh felt like overhead are the single most common way orgs become unmaintainable — nobody can reconstruct what changed, when, or why.
Apex has a real testing bar
Salesforce requires 75% code coverage to deploy Apex to production, but coverage is not correctness — tests that assert nothing meaningful hit the number without catching the bug. We write tests against actual expected behavior, not just for the deployment gate.
What's involved
Salesforce engagement types
What moves the scope is not the number of objects touched — it's how much of the work is genuinely custom versus how much of it is Salesforce doing what it already does, configured correctly.
| Engagement | Commitment | Timeline | What's included |
|---|---|---|---|
| Org health & architecture audit | Fixed scope | 1 – 3 weeks | Data model review, unmanaged Apex and automation inventory, and a prioritized list of what to fix before the next phase of work. |
| Sales or Service Cloud implementation | Fixed scope | 6 – 14 weeks | Org build-out around your actual process, data migration, user training, and a deployment pipeline your admins can run without us. |
| Custom Apex or Lightning app development | Fixed scope | 4 – 12 weeks | Custom logic or UI for the cases declarative tools can't cover, built with test coverage and documentation a future developer can act on. |
| Integration build | Fixed scope | 4 – 10 weeks | Salesforce connected to an ERP, marketing platform, or billing system, with the reconciliation logic that keeps both sides honest. |
| Classic to Lightning migration | Fixed scope | 4 – 8 weeks | Page layouts, Visualforce, and custom components rebuilt for Lightning, prioritized by which teams are still working around the old interface. |
| Ongoing admin & development retainer | Ongoing retainer | Ongoing | Standing ownership of configuration, releases, and custom code through Salesforce's three-times-a-year release cycle. |
Ranges assume US-based senior engineers and Salesforce-certified developers where the work calls for it. The audit is usually the fastest way to find out whether a project is really an implementation, an integration, or a cleanup of five years of unmanaged automation.
Absorbed from implementation best practices and common mistakes
Salesforce implementation: what separates the projects that land
Most failed Salesforce implementations do not fail technically. They fail because the org was configured around what the team said they do, rather than what the CRM data shows they actually do — and nobody finds out until adoption stalls six weeks after launch. The practices below are the direct inverse of the mistakes we see most often.
Model the process you have, not the one in the slide deck
Discovery should surface the workflow reps actually follow, including the workarounds, before anyone designs a data model to fit an idealized version of it. Fix the process deliberately if it needs fixing — don't let the org paper over a broken process by accident.
Decide configuration vs. custom code per object, and write the reason down
A decision made in a kickoff meeting and never documented is a decision a future developer will re-litigate from scratch. Unmanaged Apex nobody can explain is where the real maintenance bill hides.
Migrate data early and dirty, not late and clean
Loading real, messy production data into the new org early surfaces the data model's actual flaws — duplicate accounts, orphaned records, fields nobody uses — while there's still time to redesign around them, instead of discovering them in the week before go-live.
Name an owner with authority to say no before go-live, not after
Every implementation accumulates field and automation requests. Without someone empowered to push back before launch, the org accretes special cases that make the eventual admin's job unmanageable.
Load-test against production volumes, not a 200-record sandbox
A report or list view that's instant against sandbox data can time out against real volume. Testing at scale before go-live is the only way to catch this before a user does.
Budget training as its own line item
Adoption failure looks exactly like a technical failure in the metrics — low usage, reps reverting to spreadsheets — but the fix is training and change management, not another sprint of configuration.
Keep sandboxes in a real deployment pipeline
Change sets or a CI tool moving metadata from sandbox to production, with a record of what shipped and when, is what keeps an org auditable. Click-ops directly in production is how orgs become unmaintainable within a year.
Plan the second phase before launching the first
A CRM that ships as a finished, static thing gets used less every quarter. Naming what phase two actually is — before phase one ships — is what keeps an org evolving with the business instead of falling behind it.
Hiring a Salesforce developer
What to look for when you're hiring, not just what we bring
Whether you're staffing an in-house role or bringing in a partner, the skills that separate a good Salesforce developer from someone who can click through the setup menu are specific and checkable.
Apex and the Lightning component framework
Comfort writing bulkified, test-covered Apex and Lightning Web Components — not just declarative configuration — is what a developer role is actually for. An admin who can build a Flow is a different, equally valuable, but different skill set.
Object-oriented fundamentals that transfer
Apex is a Java-like, strongly typed language, and the object-oriented concepts that make code maintainable elsewhere apply here too. A developer coming from another OOP background can usually ramp on Salesforce specifics faster than someone learning both at once.
Salesforce certification as a floor, not a ceiling
Platform Developer certifications confirm someone has studied governor limits, sharing rules, and deployment mechanics — useful as a baseline, but not a substitute for reviewing actual code they've shipped.
A deployment discipline, not just coding ability
Someone who develops directly in production, or without version control, will eventually ship a change nobody can trace. Ask how they move metadata between environments before you ask what they can build.
Related
Related services
What Salesforce work usually connects to.
Questions
Common questions about Salesforce development
What teams ask before a first call.
What moves the number isn't hours billed, it's the mix of declarative configuration versus custom Apex and Lightning work, plus how many outside systems the org has to integrate with cleanly. A declarative-heavy engagement costs less than one that needs custom triggers, batch jobs, and a Lightning Web Component interface.
An org health audit is usually the fastest way to find out which category a project actually falls into before committing to a larger scope.
Writes and maintains the Apex code and Lightning Web Components that declarative tools like Flow can't handle — custom business logic, integrations that run inside a save, and interfaces built to feel native to the platform. That's a different job from a Salesforce administrator, who configures the org using clicks rather than code.
Many projects need both roles at different points, which is why the first step is usually figuring out which one a given request actually is.
Salesforce is a cloud CRM platform businesses use to manage customer data, sales pipeline, and service cases, with a declarative layer (Flow, page layouts, validation rules) that covers most day-to-day configuration. Custom development becomes necessary when the logic needed is genuinely beyond what Flow can express — complex multi-object transactions, external API calls that have to happen inside a save, or a UI Lightning's standard components can't produce.
A large share of requests that get treated as development work are actually configuration decisions, which is why we start by confirming which one a request really is.
Start with Flow. Record-triggered and screen Flows now cover most automation that used to require a trigger, and configuration is cheaper to maintain and easier for an in-house admin to modify later than code.
Apex earns its place when you hit governor limits Flow can't work around, need logic that spans more than a handful of objects reliably, or require a callout pattern Flow doesn't support cleanly. The decision belongs to a specific object and requirement, not a blanket policy — and it's worth writing down why, so a future developer doesn't have to re-derive the reasoning.
Yes. The real work is rebuilding Visualforce pages and heavily customized Classic layouts as Lightning-native components rather than just flipping the interface toggle, which is what causes the broken pages and missing functionality that make teams stall a Lightning migration halfway through.
We prioritize by which teams are actively working around the old interface first, so the migration delivers value in the order your users actually feel it.
Yes — this is most of what a mature Salesforce org's engineering work actually is. The integration runs through middleware or direct API calls depending on volume and latency needs, and the real engineering is the reconciliation logic: making sure a record updated in Salesforce and the same record updated downstream never silently disagree.
We'll tell you early if a requested integration is closer to a data-model redesign than a connector, because those are different projects with different timelines.
Usually, yes. Most failed implementations aren't a technical dead end — they're an org configured around an idealized process instead of the one the team actually follows, plus unmanaged automation nobody documented. An audit typically finds a prioritized list of fixes rather than a case for a full rebuild.
Where a rebuild genuinely is the right call — usually when the data model itself is unworkable — we'll say so plainly rather than bill for incremental fixes to something that needs to be replaced.
Yes. Every change — Apex classes, Lightning components, Flows, and configuration — is deployed into your org under your ownership, with a documented change history rather than undocumented click-ops. That's the only arrangement that doesn't lock your CRM to a single vendor for its next release, audit, or hire.