Shared VisitSend engine
Core improvements to auth, quotes, jobs, visits, rewards, areas, reporting, and security ship once and can be pulled into every client app.
Custom client apps
Maintenance Magicians becomes a client on the platform: its app can keep custom commissions, contractor accounting, territory rules, and brand-specific screens while still receiving shared VisitSend updates.
Core improvements to auth, quotes, jobs, visits, rewards, areas, reporting, and security ship once and can be pulled into every client app.
Custom behavior lives behind feature flags, settings, and client-specific modules so Maintenance Magicians can keep its contractor-heavy workflow.
VisitSend can receive product updates first, while custom apps get reviewed releases with private notes and extra verification.
Client separation
Source
Shared VisitSend Core
Delivery
shared app tenant
Review
client-reviewed release channel
Custom scope
6 thin modules
Maintenance Magicians
Custom App
Incorporated Custom App tenant
Contractor-heavy, commission-driven, territory-aware Growth Operator configuration
Shared VisitSend engine plus Maintenance Magicians custom workflow layer
VisitSend Core
Starter / Team / Growth / Multi-Location / Franchise System
Platform product
General trade operations for people, contractors, rewards, areas, locations, and franchises
Primary product releases
Long-term operating rule
New work starts in shared core unless it is clearly configuration or a thin client layer. Manual separate forks are a temporary migration bridge, not the release model.
VisitSend repo
If a change would help normal VisitSend tenants and MM, build it once in core first.
business settings, feature flags, plan/model metadata
If a behavior can be expressed as settings, flags, or seeded business data, do that before adding code.
custom app manifest plus client-reviewed release channel
Custom code must depend on shared core APIs and stay isolated behind feature flags, manifests, or custom app records.
blocked pattern
Do not choose this for new work. Use only as a temporary migration bridge with an explicit retirement note.
1. Core first
Land shared engine work in VisitSend Core with tests and docs before client-specific wiring.
2. Configuration review
Decide whether the customer difference is plan/model/feature-flag/business-setting data.
3. Custom layer review
Add only the small client module that cannot be represented as configuration.
4. Client release
Record release-channel status and verify against the custom client before rollout.
Client-specific logo, colors, app name, domain, email sender, and onboarding copy.
Custom roles, feature gates, and rollout permissions without weakening platform security.
Custom calculators, forms, dashboards, exports, importers, and client-specific operational logic.