Automation Solutions

How to Write a Software Requirements Document (Without Being Technical)

Aaron · · 6 min read

You know what your business needs. You just don’t know how to write it down in a way that a developer can build from. So you describe it vaguely — “we need a better way to manage jobs” — and then you’re frustrated when the result doesn’t match what you had in your head.

Most advice about writing software requirements is written for other developers, full of terms like “user stories” and “acceptance criteria.” Here’s how to write a requirements document in plain English that gets you the software you actually need.

Start with the Problem, Not the Solution

Before you describe any features, write down why you need this software. What problem are you solving? What does your current process look like, and why doesn’t it work?

This context matters more than you’d think. A developer who understands the problem can suggest solutions you’d never think of. A developer who only gets a feature list builds exactly what you asked for — which may not be what you needed.

Good problem statement: “We create quotes in Excel. Each takes 15-20 minutes because pricing depends on job type, location, and contract status. We make pricing errors on roughly 10% of quotes because the formulas are complex. We also can’t track which quotes are outstanding, so follow-up is inconsistent.”

Bad problem statement: “We need a quoting module.”

Describe Outcomes and Rules, Not Screens

The key principle: describe outcomes and business rules, not interfaces. Let the developer figure out the best way to present it.

Too vague: “The system should handle job scheduling.”

Too prescriptive: “There should be a calendar with drag-and-drop, colour coding by job type, and a pop-up showing details on hover.”

Just right: “We need to assign jobs to technicians based on their location, qualifications, and availability. Each technician has specific qualifications (e.g., gas fitting licence) and can only be assigned matching jobs. The scheduler needs to see who’s available and where their other jobs are. When assigned, the technician should be notified on their phone.”

The third version tells the developer what the system must achieve, including business rules, without dictating design.

Separate Must-Haves from Nice-to-Haves

This is the single most important thing you can do to prevent scope creep.

Must-have (Phase 1). The system cannot launch without this. Be ruthless — most businesses have far fewer genuine must-haves than they think.

Should-have (Phase 2). Important but not critical for launch. The system is useful without this, but you’ll want it soon after go-live.

Nice-to-have (Future). Would be great eventually. Park these — don’t discard them, but don’t let them expand the initial scope.

Example for a job management system:

Must-have: Create and assign jobs, track job status, generate invoices on completion, sync invoices to Xero.

Should-have: Customer portal for status viewing, automated SMS reminders, photo uploads from the field.

Nice-to-have: Route optimisation, inventory tracking linked to job materials, customer satisfaction surveys.

Include Your Business Rules

Business rules are the logic that makes your business yours — the stuff off-the-shelf software usually can’t handle, and the most important thing to capture.

Pricing logic. “Standard rate is $120/hour commercial, $95/hour residential. Travel charges beyond 30km. Contract customers get 10% off labour but not materials. Emergency callouts: $150 flat fee plus 1.5x hourly.”

Approval workflows. “Quotes over $5,000 need manager approval. Variations need customer sign-off. Purchase orders over $500 need director authorisation.”

Status transitions. “A job moves from ‘quoted’ to ‘scheduled’ when the customer accepts. To ‘in progress’ when the technician checks in. To ‘complete’ when the completion report is submitted. It can’t be invoiced until the report is reviewed.”

If these rules aren’t documented, the developer will guess based on general industry norms, not your specific processes.

What Else to Include

Who uses the system and what they can do. “Technicians can view their assigned jobs and update status. They cannot see pricing, other technicians’ schedules, or payment details.”

What the system connects to. List every tool it needs to exchange data with, what data flows, in which direction, and how current it needs to be.

Team size and growth plans. Current headcount and expected growth — this affects technical decisions the developer needs to plan for.

Compliance requirements. Data residency, record retention periods, access logging. “Client records must be stored on Australian servers and retained for 7 years.”

Common Mistakes to Avoid

Writing requirements as solutions. “We need a dropdown for job types” is a solution. “Users need to categorise jobs by type, and the category should determine default pricing and estimated duration” is a requirement.

Assuming the developer knows your industry. Explain terms, acronyms, and processes. What’s obvious to you may be unfamiliar to someone outside your field.

Skipping edge cases. The happy path is easy. But what happens when a customer changes their mind after scheduling? When a job can’t be completed in one visit? When an invoice is disputed? Document the exceptions — they’re where software breaks down.

Vague Requirements

  • We need a quoting system
  • The system should handle scheduling
  • Users should see reports
  • Integrate with Xero
  • Handle permissions

Useful Requirements

  • Auto-calculate pricing based on job type, location, and contract status. Flag errors before sending.
  • Assign jobs to qualified, available technicians with location-based optimisation. Notify via mobile.
  • Monthly profit by job type, technician utilisation by week, outstanding quotes over 7 days.
  • Draft invoices synced to Xero within 5 minutes of job completion, matching our chart of accounts.
  • Technicians see their jobs only. Managers see their team. Directors see everything including financials.

The Payoff

A well-written requirements document delivers three things. Accurate quotes — developers can price properly when they know what’s involved. Fewer surprises — business rules documented upfront don’t appear as costly “change requests” during development. A testable outcome — when requirements are specific, acceptance testing becomes a checklist, not an argument.

You don’t need engineering expertise. You just need to be clear about what your business does, how it does it, and what you wish were different. That knowledge is already in your head. A requirements document just gets it onto paper in a way someone else can build from.

A

Aaron

Founder, Automation Solutions

Building custom software for businesses that have outgrown their spreadsheets and off-the-shelf tools.

Keep Reading

Ready to stop duct-taping your systems together?

We build custom software for growing businesses. Tell us what's slowing you down — we'll show you what's possible.