Apps and digital products
MVP scope: how to decide what goes into version one
Part of the guide: How to Build a Mobile App: A Step-by-Step Process for the Client
MVP scope is the smallest set of features that lets one user walk the main path from start to finish and get the result they came for. An MVP is not “the same app with fewer buttons” — it is one path closed properly instead of five broken off halfway. Below is how the cut works in practice, on one fictional example built from situations that keep coming back.
MVP, clickable prototype or concierge MVP — what is enough to start
Pick the cheapest of the three that answers the question you genuinely cannot answer yet; they cost different money because they settle different things.
- A clickable prototype is linked screens with no code and no database, built in Figma, Sketch or Adobe XD. Figma wires screens into interactive flows before anyone writes a line of code. It answers “does the user know where to tap”.
- A concierge MVP is the process run by hand instead of by code: a form, a spreadsheet and a person doing the work the system is meant to do. It answers “will anyone use this regularly”.
- An MVP is a working product with a narrow but complete scope. It answers “will this survive daily use”.
Sometimes the cheapest answer is no app at all. If the process handles a dozen or so events a week, two months of a concierge MVP gives you harder data than any code — and shows how much time it really takes.
The example: sixteen features that come to mind on day one
A first meeting produces a wish list, not a scope. A property management company looks after forty residential buildings and wants an app for reporting maintenance faults. The wish list: report a fault with a photo, pick the building and unit, request status, chat with the property manager, push notifications, email notifications, an admin panel, assigning requests to maintenance crews, a technician visit calendar, ratings after the repair, CSV export, monthly reports, SMS login, onboarding with a tutorial, a building noticeboard and an accounting integration.
Sixteen items. Most will exist one day — the problem is a list of wishes, not a path.
The second is a scope, because you can see where it ends. The first is an inventory each person on the team reads differently.
Three questions that push a feature into version two
A feature drops out of the MVP if even one of three answers is yes. Ask them of every item, in order.
- Can this be handled manually for the first few weeks? With forty buildings, one person assigns requests to crews from the panel. That costs fifteen-odd minutes a day; the code you avoided writing costs weeks.
- Does it cover edge cases? A fault needing a technician visit calendar is far rarer than an ordinary plumbing request. You do not automate the margin before the core.
- Will the main path close without it? A resident reports a fault and sees its status with no chat at all. Chat does not block the path, so it waits.
If all three answers are no, the feature stays in the first release. That is the only criterion you need.
MoSCoW in practice: feature, category, decision, reason
MoSCoW splits scope into four categories — Must have, Should have, Could have and Won’t have — and only Must have goes into the MVP. The last column matters most: a category without a reason is just an opinion, and it comes back at the next meeting.
| Feature | MoSCoW | Decision | Reason |
|---|---|---|---|
| Fault report with a photo | Must have | MVP | The whole value for the resident; without it the app has no reason to exist. |
| Building and unit picker | Must have | MVP | Without an address the request is useless to the crew. |
| Request status in three states | Must have | MVP | No status means calls to the office. |
| Login | Must have | MVP | Requests hold personal data and addresses. |
| Email notification on status change | Must have | MVP | Closes the loop on the cheapest channel. |
| Manager panel: list and status change | Must have | MVP | Someone must accept the request, or the process stops. |
| Push notifications | Should have | v2 | Email closes the loop; push needs a mobile release and consent. |
| Assigning requests to crews | Should have | v2 | At this scale one person splits them by hand. |
| CSV export of requests | Should have | v2 | A monthly report is enough for the first audit. |
| Chat with the property manager | Could have | v2 | Duplicates comments and invites replies within minutes. |
| Technician visit calendar | Could have | v3 | A separate process with its own rules. |
| Onboarding with a tutorial | Could have | v2 | If three screens need a tutorial, fix the interface. |
| SMS login | Could have | v2 | Adds gateway cost and an external dependency. |
| Monthly reports and charts | Won’t have | out of scope | No data yet for them to be built from. |
| Ratings after the repair | Won’t have | out of scope | They measure the crew, not the app. |
| Building noticeboard | Won’t have | out of scope | Two apps in one: different path, goal and user. |
| Accounting system integration | Won’t have | out of scope | Fault reports do not feed accounting. |
Sixteen items became six. Choosing the stack, testing and release come next — the guide on how to build a mobile app covers them, and the effect of scope on budget is broken down in mobile app development cost. One decision the cut does not settle is where the product runs at all: a web app or a mobile app follows from where the user stands when they reach for it.
Admin panel, onboarding, notifications and export — the four most common arguments
These are the features clients fight hardest for, so each gets its own rule rather than a general appeal to keeping things minimal.
An admin panel enters the MVP in minimal form whenever someone on the other side has to react: a list, a detail view and a status change. Account, role and configuration management stays with the technical team to handle by hand.
Onboarding waits almost every time. A tutorial is a prosthetic for an interface the user does not understand; better to fix the screen than write instructions for it.
Notifications stay on one channel, the cheapest to run — usually email. Push needs a mobile release, consent handling and separate infrastructure, so it is a natural second-release candidate; how long it takes to build an app depends mostly on how much you fit into the first scope. If you were hoping to skip the release and send push from the browser instead, check what progressive web apps do and do not do on iOS first, because there notifications only arrive once the user has added the app to the home screen.
Data export moves to version two for as long as you can produce a report on request. One condition: the data must be complete from day one. Missing data cannot be recovered retroactively; a missing “download” button can.
What you must never cut from an MVP
Five things stay in scope however aggressively you cut the rest, because leaving them out is not a saving but a debt: authentication, backups with a working restore, GDPR compliance, basic accessibility and error handling.
Authentication and backups make the version fit to show users at all. GDPR compliance here means a lawful basis for processing, a notice for the user and the ability to delete an account — added later it touches the data model, the most expensive part of the system. This article is informational and is not legal advice. Basic accessibility means contrast, keyboard operation and sensible field labels; error handling means a message when a photo fails to upload rather than a blank screen.
The only thing you may narrow is scope, not quality: one login method instead of three, one backup export format instead of a full console.
How to write scope so it can be ticked off
Scope is ready when every item has acceptance criteria written as questions answered only YES or NO. A question you can answer with “partly” is not an acceptance criterion.
Start with a user story in the “As a [role] I want [feature] so that [benefit]” template, then attach the questions. A good story is testable — if you cannot phrase a question that settles it, the description is too vague.
"As a resident I want to report a fault with a photo so that I do not have to call the office during working hours. Done when: does the request save with the unit and the photo? does the resident see the status after logging in? does the property manager get a message about the new request?"
Put the stories in the order the user touches them — that is user story mapping — and cut the map with a horizontal line. Everything above it is the first release, everything below waits. Two-week sprints close that scope incrementally, and the map shows after each sprint whether the line has moved.
The same set of stories is ready-made material for a software project brief — you only need to add the business context. If you would rather have the cut sanity-checked first, tell us about the project and we will come back with a proposed scope.
Checklist
Write down every feature that comes to mind before you start judging any of them.
Pick one main user path and check whether someone can walk it from start to finish.
Give every feature a MoSCoW category and one sentence explaining the decision.
Defer to version two anything one person can handle manually in the first weeks.
Keep authentication, backups, GDPR compliance, basic accessibility and error handling in scope.
Write acceptance criteria as questions that can only be answered YES or NO.
Decide which data from the first weeks will shape the scope of the next release.
Frequently asked questions
- What is an MVP and how is it different from a prototype?
- An MVP is a working product that people genuinely use: data is saved and the process closes from start to finish. A clickable prototype is a set of linked screens with no code and no database, usually built in Figma, and it exists to check whether the interface makes sense. A prototype answers a usability question; an MVP answers whether the product survives daily use.
- How many features should an MVP have?
- Feature count is the wrong measure — what matters is the number of paths. A good MVP supports one main user path carried through to the end, rather than several started and broken off halfway. In practice that tends to come out at somewhere between a few and a dozen or so screens, but the reference point is always the path, not the feature list.
- Does the admin panel have to be in the first version?
- A panel is needed when someone on the other side has to react to what the user does — accepting and closing a request, for example. In that case its minimum belongs in the MVP: a list, a detail view and a status change. Managing users, permissions and configuration can be done by hand by the technical team at the start, so it can wait.
- Can an MVP be shown to real customers, or is it a test build?
- An MVP is meant for real users — without them you never get the data you built it for. The condition is that the version works correctly within its narrow scope: login, data storage, backups and error handling all have to be finished. A version that is technically incomplete is not an MVP, it is a product that does not work.
- What if a competitor has more features than my MVP?
- A competitor usually added those features over years, responding to requests from users you do not have yet. Copying the whole list at the start means building features without knowing which of them get used. It works better to pick one path and do it noticeably better, then plan later releases on data from your own app.
Sources and methodology
These links lead to primary sources and the rules we use to prepare and update our material.