Open most learning platforms and you will find menu items you cannot use, tables with no rows, and buttons that exist to sell you an upgrade. The product is quietly advertising to its own customer, all day, forever.
We took the opposite rule early, and it has been one of the most consequential decisions in the product: a feature that is off ships nothing at all.
What "nothing" means
No sidebar entry. No column in a table. No field in a form. No row in a CSV export. No route on the server. If your academy does not use quizzes, there is no quiz builder to ignore, no "quizzes" column in your student export, and no quiz endpoint sitting there as attack surface.
It is harder to build. Every feature has to be able to disappear cleanly, which means thinking about the seams before you write the feature rather than after.
Why it is worth the cost
Your staff learn one interface, not one interface plus a list of things to ignore. Every ignorable element is a small tax on every person you ever train.
Your platform looks like your academy. Not like our feature list with your logo on it.
Less surface, fewer bugs. A feature that does not run cannot break, and cannot be attacked.
Nobody is being sold to inside a product they already paid for. We find that basic, and it is surprisingly rare.
The same rule, applied outward
It is why our add-on system leaves zero traces when you own no modules — no empty marketplace tab, no teaser.
It is why analytics tags are opt-in per install and nothing is injected by default.
And it is why we would rather tell you a plan is more than you need than sell you switches you will never turn on.