“Platform” is a flattering word. It suggests other people will arrive with their own work and find a place for it. That only happens if the seams are real: a contract, a permission model, and a way to fail that does not require the original team in the room.
A product can be enough
There is no shame in a product that one team operates well. Shame is promising a platform so the roadmap looks larger, then spending a year on an abstraction nobody asked to use.
If the second team still needs a call, you have a product with extra nouns.
The smallest honest contract
type Contract = {
input: string;
output: string;
whoMayCall: string;
whatHappensWhenItFails: string;
};
function isPlatform(surface: { contract: Contract | null }) {
return surface.contract !== null;
}Write the contract first. If you cannot, you are not ready to invite a second team. Build the product. Name it accurately. The word can wait.
