How to describe a software idea so someone can build it
Turn business goals, user journeys, rules, content and constraints into an actionable project brief.
Start with the problem and outcome
A development team cannot build a business idea clearly if the brief begins with a list of screens. Start by explaining who has a problem, when it occurs, what happens today and what a better result would look like. “We want a dashboard” is vague. “A coordinator needs to see unassigned requests each morning and act on the urgent ones before customers call” gives the team context.
Describe the business outcome in observable terms. You may want fewer manual errors, faster response, more completed bookings, clearer reporting or a new service that cannot be delivered with current tools. Avoid promising a solution before the problem is understood. The same outcome could require a web app, a workflow change, an integration or better content rather than a large custom product.
Add the reason the project matters now. Explain deadlines, existing costs, customer expectations, compliance needs or dependencies. This helps a team understand trade-offs when every request cannot fit the first release. A clear reason also makes it easier to decide what success should be measured after launch.
Describe users and journeys
List the people who will use, manage, approve or be affected by the software. For each role, explain their goal, starting point, information available and desired result. A customer may submit a request, an employee may review it and a manager may approve an exception. These roles need different permissions and views even when they share one system.
Write each important journey as a sequence of actions. Include what starts it, what the person sees, what they enter, what decision they make and what confirms completion. Use plain examples with realistic values. “The user creates a record” is less useful than “The adviser selects a customer, adds the service date, uploads the signed document and receives a confirmation.”
Include journeys that do not end successfully. What if information is missing, a payment fails, an appointment is no longer available or a person loses access? Exceptions often contain the real complexity of a product. Describing them early prevents a polished main path from hiding an unusable service.
Turn rules into examples
Business rules should be written so another person can apply them consistently. Explain conditions, calculations, approvals, limits and consequences. Instead of saying “show suitable options”, describe what makes an option suitable. Instead of “send a reminder when needed”, say which event starts it, who receives it, through which channel and what happens if it is ignored.
Use examples and counterexamples. If a discount applies only to a certain customer group, show one case where it applies and one where it does not. If a request can be approved under a threshold, explain what happens above it. Examples reveal gaps in language and help developers create tests without guessing the business meaning.
Separate a firm rule from a preference. Mark decisions that are required by law, contracts, safety or the operating model. Identify choices that can be tested or changed later. This prevents a temporary opinion from becoming expensive logic that is difficult to remove.
Define content, data and integrations
Software needs content as well as code. List labels, instructions, status messages, email templates, help text, empty states and error messages that users require. Explain who supplies, approves and updates them. A placeholder can hide a major piece of work if the product needs detailed guidance or many language versions.
Describe the important data. What is collected, who owns it, how long it is needed and who may access it? Identify the source of truth when information comes from another system. Clarify which fields are required, which can change and what should appear in exports or reports. Good data definitions prevent different parts of the product from using the same word in different ways.
List integrations with their purpose rather than only their brand names. Explain what should be sent, received, when it happens and what a failure looks like. Include payments, calendars, customer records, messages or analytics when relevant. A team can then estimate the connection and its ongoing maintenance more accurately.
Set scope and acceptance criteria
Divide requirements into must have, should have, could have and later ideas. The must-have group should be the smallest complete journey that delivers the first outcome. If a feature does not support that journey, answer a critical risk or satisfy a firm requirement, it probably does not belong in the first release.
For each important item, write acceptance criteria that describe observable behaviour. “The form is easy” is difficult to test. “A user can submit it on a phone, sees which field needs correction and receives confirmation after a successful submission” is specific. Include permissions, errors, loading states, accessibility and performance expectations where they affect the outcome.
Ask the development team to identify assumptions, dependencies and open questions. A brief should create a conversation, not pretend every detail is known. Mark decisions that need a prototype or research. This keeps estimates honest and exposes risk before work is underway.
Make the brief useful after launch
Add how success will be measured. Name events such as completed submissions, approved requests, successful payments, support contacts or repeat use. Explain the baseline if you have one and what change would count as meaningful. Analytics should answer a business question rather than collect every possible click.
Include ownership after launch. Who approves content, manages users, responds to support, reviews data and decides priorities? Note expected maintenance, training, security updates and integration monitoring. A product is easier to build when the team understands how it will be operated.
Review the brief with real users, the people who know the process and the people who will maintain the result. Remove contradictions, define unfamiliar terms and check that the scope still supports the original outcome. A strong brief does not tell developers every implementation detail; it gives them enough shared context to build the right thing and ask the right questions.
Sources
- Web accessibility · MDN
- Events · Google Analytics
Frequently asked
- How technical should a software brief be?
- It should be clear about outcomes, users, rules, data, integrations and constraints without dictating implementation unnecessarily. Technical decisions can be made with the development team.
- Should every feature be specified before development starts?
- No. Define the first complete journey and the important risks. Mark assumptions and questions that should be resolved through research or prototyping.
- What is the difference between a feature and a requirement?
- A feature is a proposed capability. A requirement describes the outcome, rule or constraint that must be satisfied. Several implementations may meet one requirement.
- Who should review the brief?
- The business owner, people who perform the workflow, representative users and the team responsible for building and maintaining the software should all review the relevant parts.
Sjors Hooijen Builds ChatBuild and writes about getting a business online without turning it into a project. Questions about this article? Email hi@chatbuild.com.