{"id":840,"slug":"client-bjf-custom-vs-industry-erp","title":"B&J architectural decision: custom platform vs Manage Petro / PDI / Cargas — why custom won","kind":"decision-record","scope":"client-case-studies","status":"current","audiences":["kevin","candid-team","client-prospect"],"topics":["crm-systems","pricing-models","client-boucher-jones","case-study-source","architectural-decisions"],"reference_body":"**This is the most interesting story angle outside the tanks-as-objects decision.** The KB has flagged it as worth interrogating, and it is.\n\n## Industry-standard options that B&J could have bought\n\n- **Manage Petro** — cloud, marketed at exactly this segment\n- **PDI Enterprise** — legacy big-iron ERP\n- **Cargas Energy** — Microsoft-stack ERP\n- **RR Fuel / Adam Software / Boltrics** — regional ERPs\n\n## Why custom won — six reasons\n\n1. **Pricing model.** Industry ERPs charge per-seat or per-tank; for an operation of B&J's size this is consistently more expensive over a 3–5 year horizon than building it.\n2. **AI integration.** B&J's roadmap explicitly includes AI-assisted lubricant search and AI-assisted consumption modeling — neither is available in the industry ERPs, and the integration cost on top of those platforms approaches the cost of building from scratch.\n3. **Custom marketing-site integration.** The marketing site, the customer portal, the CRM, the lubricants catalog, and the embedded data widgets all share a design system, component library, and API layer. No industry ERP integrates with a marketing site in this way; they integrate by exporting a CSV.\n4. **Domain modeling fidelity.** Generic CRMs (HubSpot, Salesforce) do not model tanks, contracts, degree-day zones, or multi-site accounts. Industry ERPs do, but they impose their own data model — which does not always match how B&J actually operates.\n5. **Self-hosting.** No subscription costs, full data sovereignty, no platform lock-in. B&J's data lives on a self-hosted VPS at ~$10–20 CAD/month all-in.\n6. **The Petro-Canada relationship.** B&J is a Petro-Canada authorized wholesale marketer. The lubricants catalog (350+ products), the cardlock network (SuperPass/Petro-Pass), the brand surfacing — all need to be modeled in a way that an off-the-shelf ERP does not support natively.\n\n**[Verified — synthesized from `crm_project_plan.docx`, `BoucherJones_MarketingSite_TechStack.docx`, Kevin's memory]**\n\n## Honest counter-argument (for balance in any writing)\n\n> Building custom takes longer than buying. The trade-off is short-term speed vs. long-term fit + cost + AI capability. B&J chose long-term fit.\n\n**[Our observation]** — this is the line to include if the case study reader is comparing approaches.","rationale_body":"Decision-record because the entry codifies a specific architectural choice with explicit alternatives weighed. Should be cited any time a Candid case study or sales conversation touches on custom-vs-buy for an operations stack.","metadata":null,"links":{"outgoing":[{"slug":"client-bjf-manifold-data-platform","title":"Manifold data platform — Candid Creative product powering embedded widgets on the B&J site","kind":"reference","scope":"client-case-studies","link_type":"relates-to"},{"slug":"client-bjf-data-model-tanks-first-class","title":"B&J data model — first-class entities, including TANKS (the most quotable architecture decision)","kind":"decision-record","scope":"client-case-studies","link_type":"relates-to"}],"incoming":[{"slug":"client-bjf-case-study-source-v1","title":"Boucher & Jones Fuels — case-study source material, v1 (parent index)","kind":"reference","scope":"client-case-studies","link_type":"relates-to"},{"slug":"client-bjf-data-model-tanks-first-class","title":"B&J data model — first-class entities, including TANKS (the most quotable architecture decision)","kind":"decision-record","scope":"client-case-studies","link_type":"relates-to"}]},"created_at":"2026-05-24T00:26:55.456Z","updated_at":"2026-05-24T00:26:55.456Z"}