← Back to Studio Notes

How to Write Software Requirements for a Custom Software Project

Learn how to write clear software requirements before building custom software, including goals, users, workflows, features, permissions, data, and success criteria.

KEHEM / Studio Notes
  KEHEM

A custom software project becomes easier to build when the requirements are clear.

Not perfect. Not overly technical. Clear.

Many businesses know the problem they want to solve, but they struggle to explain the system they need. The process lives in spreadsheets, emails, staff habits, approvals, and repeated manual steps.

Software requirements turn that scattered knowledge into a shared plan.

They help the business, designer, and development team understand what the software should do, who it should serve, and what success should look like.

It is worth knowing why this document matters so much. Most custom software projects that go wrong do not fail at coding. They fail at understanding — the build was technically correct and solved the wrong problem, or solved the right problem for the person who wrote the brief rather than the people who do the work. Requirements are the cheapest place to fix that, because an hour spent clarifying a workflow saves days of rebuilding it.

What Are Software Requirements?

Software requirements describe what a system needs to do.

They explain the users, workflows, features, data, rules, permissions, and outcomes expected from the software.

In simple terms, requirements answer:

  • Who will use the software?
  • What problem should it solve?
  • What actions should users be able to take?
  • What data should the system manage?
  • What rules should the system follow?
  • What does success look like?

Good requirements reduce guessing.

Why Software Requirements Matter

Custom software is built around a business process.

If that process is unclear, the software can become unclear too.

Strong requirements help:

  • Reduce misunderstandings
  • Improve cost estimates
  • Clarify project scope
  • Prevent unnecessary features
  • Identify risks early
  • Support better design decisions
  • Make testing easier
  • Keep everyone aligned

Requirements do not need to describe every technical detail. But they should give the project a stable direction.

There is a commercial reason too. A developer quoting without requirements is guessing, and they know it — which is why vague projects attract padded estimates or fixed prices loaded with contingency. Clear requirements typically reduce the quoted price, because the team can see what they are actually building.

1. Start With the Business Problem

Do not begin with features.

Begin with the problem.

A business should first explain what is not working today and why it matters.

Examples:

  • Reports take too long to prepare
  • Customer requests are missed
  • Staff copy data between tools
  • Managers cannot see real-time status
  • Spreadsheets are becoming risky
  • Clients need a better way to submit information
  • Approvals are slow and unclear

The problem gives the software purpose.

Put a number on it if you can. "Weekly reporting takes one person four hours, and it is wrong often enough that managers keep their own version" is a far stronger foundation for a project than "our reporting could be better". Numbers also become your success criteria later.

2. Define the Goal of the Software

After the problem is clear, define the goal.

The goal should describe what the software should improve.

Weak goal:

We need a dashboard.

Stronger goal:

We need a dashboard that helps managers see project status, overdue tasks, team workload, and client requests in one place.

A clear goal helps the team decide which features matter and which can wait.

3. Identify the Users

Custom software often serves multiple user types.

Each user may need different access, screens, and actions.

Common user types include:

  • Admin
  • Manager
  • Staff
  • Client
  • Partner
  • Viewer
  • Approver

For each user type, define what they need to do.

Example:

  • Admin can manage users and settings
  • Manager can view reports and approve requests
  • Staff can update task status
  • Client can submit requests and view progress

Clear user roles help prevent confusion later.

Add a line for what each role must not be able to do. "Clients can only see their own requests" is a requirement with security consequences, and it belongs in writing before development starts rather than in a bug report afterwards.

4. Describe the Current Workflow

Before designing the new system, document how the work happens now.

This does not need to be beautiful. It needs to be honest.

Write the current process step by step:

  1. A client sends a request by email.
  2. Staff copy the request into a spreadsheet.
  3. A manager assigns the task.
  4. Staff update the status manually.
  5. The client asks for progress.
  6. The manager prepares a weekly report.

This shows where the system can reduce manual work.

Include the messy parts. If someone maintains a private spreadsheet to track what the official system misses, write that down — it is one of the most useful requirements you will capture, and it is exactly what gets left out when requirements are written by management alone.

5. Describe the Ideal Workflow

Next, describe how the process should work after the software exists.

Example:

  1. Client submits a request through a portal.
  2. The system creates a task automatically.
  3. A manager assigns the task.
  4. Staff update progress inside the system.
  5. The client sees status updates from the portal.
  6. The dashboard updates reports automatically.

The ideal workflow becomes the foundation for the product.

Describe the happy path first, then list the exceptions that matter: what happens when nobody responds, when a request is rejected, when a client disappears, when two people edit the same record. Exceptions are where most of the design work lives.

6. List the Core Features

Now list the features.

Keep the first version focused. A requirement document should separate must-have features from nice-to-have features.

Example core features:

  • User login
  • Client portal
  • Admin dashboard
  • Request submission form
  • Task assignment
  • Status tracking
  • File upload
  • Notifications
  • Reports
  • User management

Each feature should connect to a real workflow.

7. Prioritize the Features

Not every feature belongs in the first version.

Use simple priority levels:

  • Must have
  • Should have
  • Could have
  • Later

Example:

FeaturePriority
User loginMust have
Request formMust have
Admin dashboardMust have
Email notificationsShould have
Advanced analyticsLater
Mobile appLater

Prioritization protects the project from becoming too large too early.

8. Define Permissions

Permissions are important in business software.

Different users should have access to different parts of the system.

Ask:

  • Who can view all data?
  • Who can edit records?
  • Who can delete records?
  • Who can approve requests?
  • Who can manage users?
  • What can clients see?
  • What should remain private?

Permissions should be planned before development begins.

Permissions are also one of the most common sources of change requests. Adding a role mid-project means revisiting screens, queries, tests and reports, so spend the extra hour now mapping every role completely.

9. Define the Data the System Needs

Most custom software manages data.

List the main types of information the system should store.

Example:

  • Users
  • Clients
  • Requests
  • Projects
  • Tasks
  • Files
  • Payments
  • Comments
  • Status updates
  • Reports

For each data type, list important fields.

Example request fields:

  • Request title
  • Client name
  • Priority
  • Description
  • Status
  • Assigned staff
  • Due date
  • Attached files

Good data planning makes the system easier to build and maintain.

Two additions that save rebuilding later: record who changed what and when (an audit trail), and keep history rather than only current state. If a report later needs to know how long requests took to close, the system must have stored the status changes, not just the present status.

10. Define Statuses and Rules

Business software usually has rules.

Examples:

  • A request starts as "New"
  • A manager must assign each request
  • Staff cannot close a task without adding notes
  • Clients can only see their own requests
  • Overdue tasks should appear in the dashboard
  • Admins can reopen completed items

These rules shape how the system behaves.

Write them in a consistent "the system must…" format so they can be tested. Every rule that can be stated precisely becomes a test case, and every rule left vague becomes a disagreement during acceptance.

11. Include Reports and Dashboards

Many businesses need custom software because they need better visibility.

Define what reports or dashboards should show.

Examples:

  • Total active projects
  • Overdue tasks
  • Requests by status
  • Work assigned by staff member
  • Monthly completed requests
  • Client activity
  • Revenue or payment status

A dashboard should answer useful business questions, not just display numbers.

For each report, name the decision it supports. A dashboard of twelve charts is usually a sign that nobody decided which two questions the page is meant to answer, and those two questions are the requirement.

12. Define Notifications

Notifications help users know when something important happens.

Examples:

  • New request submitted
  • Task assigned
  • Status changed
  • Comment added
  • File uploaded
  • Approval required
  • Deadline approaching

Keep notifications useful. Too many notifications create noise.

Specify the channel for each (email, in-app, SMS) and who receives it. A notification nobody reads is a feature that costs money and delivers nothing.

13. Mention Integrations

If the software needs to connect with other tools, list them early.

Common integrations include:

  • Email
  • Payment gateway
  • CRM
  • Accounting software
  • Google Sheets
  • Calendar
  • Analytics
  • SMS
  • Third-party APIs

Integrations can affect cost, timeline, and technical planning.

Name the actual systems rather than the categories. "Accounting" is a category; "Xero, with invoice push and payment reconciliation" is a requirement that can be estimated.

14. Define Success Criteria

Success criteria explain how the business will know the software is working.

Examples:

  • Weekly reporting time reduced from 4 hours to 30 minutes
  • Clients can submit requests without email
  • Managers can see task status in real time
  • Staff no longer copy data between sheets
  • Fewer missed follow-ups
  • Faster approval process

Success criteria keep the project focused on outcomes.

Make them measurable and dated, because vague success cannot be reviewed. "Reporting time under 30 minutes by the end of month one" gives you something to check, celebrate or correct.

15. Add Examples and Screenshots

Examples are useful.

If your team already uses spreadsheets, forms, or old software, include screenshots. They help explain the current process and reduce confusion.

Useful materials include:

  • Existing spreadsheets
  • Current reports
  • Form examples
  • Email templates
  • Screenshots of old tools
  • Process notes
  • Sample records

These details help the development team understand the real workflow.

Include a sample of the output you want too — a report, an invoice, a certificate. Teams reproduce a document far more accurately from an example than from a description.

What Good Acceptance Criteria Look Like

For each must-have feature, write what "done" means in a testable form:

Given a client is logged in
When they submit a request with an attachment
Then the request appears in the admin queue as "New"
 And the assigned manager receives an email within 5 minutes
 And the client sees the request in their portal

Written this way, the criteria become tests, and acceptance becomes a checklist instead of an argument about whether the software "feels finished".

Controlling Scope Creep

Requirements are not frozen — businesses learn as they build. What matters is managing change deliberately rather than absorbing it silently.

  • Agree a change process up front. New requests go to a written list, are priced, and are scheduled.
  • Keep a second list for everything deferred, with the reason. It legitimises good ideas instead of rejecting them.
  • Expect around 10 to 20% change on a normal project, and budget for it.
  • Never trade testing time for extra features. Shifting scope into the build phase is how projects ship late and unstable.

Simple Software Requirements Template

Use this structure:

Project Name:

Business Problem:

Project Goal:

Users:
- Admin:
- Manager:
- Staff:
- Client:

Current Workflow:

Ideal Workflow:

Must-Have Features:

Should-Have Features:

Later Features:

User Permissions:

Data Types:

Business Rules:

Reports and Dashboards:

Notifications:

Integrations:

Success Criteria:

Examples or Attachments:

This is enough to begin a serious project conversation.

Common Mistakes to Avoid

Avoid these mistakes when writing requirements:

  • Starting with features before explaining the problem
  • Trying to build every idea in version one
  • Forgetting admin users
  • Ignoring permissions
  • Not defining reports
  • Leaving business rules unclear
  • Skipping examples
  • Writing vague requirements
  • Not prioritizing features
  • Writing them alone, without the people who do the work

Clear requirements make the project smoother before design or development begins.

How KEHEM IT Uses Software Requirements

KEHEM IT helps businesses turn rough ideas, spreadsheets, and manual workflows into clear software plans.

We work through the business problem, users, workflows, features, permissions, data, and success criteria before building. This helps create software that is practical, reliable, and easier for the team to use.

The goal is not just to collect requirements.

The goal is to understand the business well enough to build the right system.

Final Thoughts

Good software starts before code.

It starts with clear thinking.

When the business problem, users, workflows, features, permissions, data, and success criteria are understood, the project becomes easier to design, estimate, build, and improve.

Software requirements do not need to be complicated. They need to be clear enough for everyone to move in the same direction.

If your business is planning custom software, start by writing what the system needs to solve.

Then build from there.

Related reading: Requirements are step one of the discovery phase; fixed price vs hourly explains how a written specification changes what you pay; and outsourcing without losing control covers who should write the brief.

Staring at a blank requirements document? Send us what you have — even four bullet points is enough to start.

Have a project in mind?

KEHEM designs and builds thoughtful websites, SaaS products, and business systems.

Talk to KEHEMExplore Services