Either Way Hurts
This is one result from the Build-or-Buy Calculator. It describes a situation where neither path is clean. Building means accepting significant operational burden. Buying means accepting vendor constraints, workflow mismatch, or loss of control. There is no easy answer here, only a choice about which kind of pain you are better equipped to manage.
What this profile means
Either Way Hurts is the profile nobody writes blog posts about. Most build-or-buy advice ends with a clear recommendation: build if you need control, buy if you do not. Your situation does not cooperate with that framework. The operational surface is large enough that building is expensive. The vendor path has enough fit, trust, or control cost to be frustrating. Both pressure scores are high and close together.
This is not a failure of analysis. It is an accurate reading of a genuinely hard decision. Some problems do not have a clean solution, and pretending one path is obviously better would be worse advice than acknowledging the difficulty.
Why both paths have real costs
The build path hurts because your stakes are high, your dependencies are meaningful, and the people who depend on this tool need it to work reliably. That combination creates a maintenance surface that compounds. You are not building a weekend project. You are accepting an operational commitment with real consequences when things break.
The buy path hurts because your control requirements or workflow specificity is high enough that a vendor's product will not fit cleanly. You will spend time on workarounds, on fighting the vendor's assumptions, on requesting features they will not build, and on adapting your process to match their model. That friction is ongoing and cumulative, just like maintenance.
The core tension: building costs you time on maintenance. Buying costs you time on workarounds. Both are recurring. Both compound. Neither goes away.
The hybrid answer most people land on
When both paths hurt, the answer usually is not "build" or "buy." It is "build the core, buy the periphery, and accept that some friction is structural." This is messier than either pure path. It is also usually more honest.
Map the system you need into two parts. The core is the piece that requires your judgment, your workflow, your specific logic. The periphery is everything else: the commodity functions, the standard integrations, the parts where any decent vendor's product would work fine.
Build the core. Buy the periphery. The seam between them will be ugly. There will be glue code, adapter layers, and integration work that feels inelegant. That ugliness is the cost of honesty. The alternative, building everything or buying everything, creates a different kind of ugliness: either unsustainable maintenance or unsustainable friction.
How to decide which piece to keep
Ask yourself: if you could only control one piece of this system and had to trust someone else with the rest, which piece would you keep? The answer to that question is your core. Everything else is negotiable.
The core is usually smaller than you think. People conflate "the piece I care about most" with "everything I have opinions about." Caring about something and needing to control it are different. You can care about data formatting without needing to build the formatting tool. You can care about uptime without needing to run the infrastructure. The core is specifically the piece where a vendor's assumptions would create structural problems, not preferences, not irritations, but problems.
Once you have identified the core, test the boundary. Could the core function as a standalone module that connects to purchased services? If yes, you have a viable hybrid. If the core is so entangled with the periphery that separating them is more work than building everything, then you are back to Custom Necessity and the question is whether the carrying cost of building everything is justified.
What to do from here
Split the build-buy boundary. Map which parts of this system require your control and which are commodity. Be ruthless about the distinction. Preferences are not requirements. Build only the parts where a vendor's product would create real problems.
Test the failure mode, not the happy path. Before choosing build or buy for any component, simulate the worst day: an API changes, a user hits an edge case, and you are in a meeting. Who fixes it? How long does it take? Run this simulation for both the build path and the buy path. The path with the less catastrophic failure mode is usually the better choice for that component.
Accept structural friction. This profile does not have a clean answer. If you are looking for one, you will keep going back and forth without deciding. The goal is not zero friction. The goal is choosing the friction you can sustain. Maintenance friction and vendor friction feel different, and you are better at tolerating one of them. Choose that one.
Review the split regularly. The boundary between core and periphery shifts as the business changes. What required custom control this year may be a commodity next year. What a vendor handled well this year may become a liability when they pivot their product. Set a review cadence. At each review, ask whether the split still makes sense.