Skip to main content
Globalbit
Back to Blog
Project ManagementBest Practices

Software Specification Template: A Full Worked Example for a System or App

Published ·Sasha Feldman
Software Specification Template: A Full Worked Example for a System or App

TL;DR: A useful software specification covers eleven sections: goal and metrics, users and roles, main flows, screens, business rules, permissions, data and integrations, non-functional requirements, analytics, out of scope, and open questions. Below is a copyable template with a filled-in example for each section, taken from a CRM for a service company. Define permissions, business rules, accessibility and data integrity precisely. Leave interface choices that have several good answers for a working version.

What this document is for

Search for a software specification template and you mostly find a table of contents: empty headings with no hint of what goes under them. This one comes filled in, so you can copy the structure and see what a finished section looks like.

The specification is the document your team builds, tests and estimates from. It comes out of the discovery phase. If you run a tender, it becomes the attachment that lets every vendor price the same system. (Writing the tender itself is covered in our RFP guide.) This article covers the document itself.

Our running example is fictional: an air-conditioning service company with a 12-person call center, 2 dispatchers and 40 field technicians. Today everything runs on spreadsheets, phone calls and WhatsApp groups. The company wants a CRM that manages each service call from the first phone call to the invoice.

Use one test for every line you write. If a developer, a QA engineer and a product manager can each check it and agree on the result, it is a requirement. Otherwise it is a wish.

The template, section by section

1. Goal and success metrics

What to write: the business problem in two or three sentences, the goal, and two to four metrics with today's value, a target and a date. Metrics tell you whether the project worked. They also settle arguments about priorities.

Example: "Customers call the center to ask when the technician will arrive. Dispatchers schedule from a spreadsheet. Some repairs need a second visit because the technician arrived without the right part. Goal: manage every call in one place and let customers see the arrival time themselves."

MetricTodayTargetMeasured
Calls closed on the first visit68%80%6 months after launch
Time from new call to assigned technician4 hours on average1 hour3 months after launch
"When will you arrive?" calls to the centerAbout 300 a weekDown 50%3 months after launch

2. Users and roles

What to write: each type of user, how many there are, what they do in the system and on which device. These roles become the columns of the permissions matrix in section 6.

RoleHow manyWhat they doDevice
Call center agent12Open calls and book a time with the customerDesktop
Dispatcher2Assign technicians and manage the day's boardDesktop, large screen
Field technician40See today's visits, document work, close callsAndroid phone, sometimes with no signal
Service manager3Track exceptions, approve credits, read reportsDesktop
CustomerThousandsGets texts, tracks the visit, cancels if neededOwn phone, no login

3. Main flows

What to write: for each flow, who starts it, what triggers it, the steps, the end state, and what happens when something goes wrong. Most specs skip the exceptions, and that is where schedules slip.

Main flow: a service call, end to end

  1. A customer calls. The agent finds them by phone number or creates a new customer.
  2. The agent opens a call: fault type, unit, address and urgency.
  3. The system suggests time slots by area and availability. The agent books one with the customer.
  4. The customer gets a text with the booking and a tracking link.
  5. The dispatcher assigns a technician or approves the system's suggestion.
  6. The technician taps "On my way," and the customer gets an update with an estimated arrival time.
  7. The technician records the repair, parts and photos, gets the customer's signature and closes the call.
  8. The system issues an invoice and sends it to the customer.

Exceptions to cover: a part is missing (the call moves to "waiting for part" and a return visit is booked), the customer isn't home, the customer cancels, and a technician calls in sick at 7 a.m. with six visits booked.

4. Screens

What to write: each screen, who uses it, what it lets them do and on which platform. At this stage, describe what the screen must allow. Its design can wait.

ScreenUsersWhat they do therePlatform
Call queueAgent, dispatcherSearch, filter, open a callWeb
Customer cardAgent, service managerSee history, units and service contractWeb
Dispatch boardDispatcherAssign calls to technicians by area and timeWeb
My dayTechnicianToday's visits and navigation to each addressMobile
Close callTechnicianNotes, photos and signature, with or without signalMobile
Visit trackingCustomerStatus, arrival estimate, cancelMobile web, no login

5. Business rules

What to write: each rule as a condition and a result, with an ID and an example. The ID lets tickets and tests point to the rule. A rule that says "per company policy" leaves someone to guess.

IDRuleExample
BR-1A customer with an active service contract pays no visit fee. Parts are charged at the contract price listContract valid to Dec 31, visit on Dec 15: visit fee is 0
BR-2A repeat visit for the same fault within 30 days is free and is flagged as a "callback" in the quality reportUnit fixed June 1, fails again June 20: free visit
BR-3A call closes only with at least one photo and the customer's signature, or a recorded reason for missing themCustomer refuses to sign: technician picks a reason from a fixed list
BR-4A credit above $150 needs a service manager's approvalA $100 credit: the agent approves it alone
BR-5An urgent call (no cooling, with a baby, an elderly or a sick person at home) is scheduled the same day, even if the technician's day is fullA call logged at 10 a.m. gets a visit before the end of the day
Background

Have a spec that needs a second look?

We'll go through it with you: what's defined, what's missing, and what can wait for a working version.

6. Permissions matrix

What to write: actions against roles. Define each permission on the data itself. Hiding the Export button protects nothing if the API still returns the full customer list.

ActionAgentDispatcherTechnicianService managerCustomer
Open a callYesYesNoYesNo
View customer detailsYesYesOnly for today's visitsYesOwn details only
Change an assignmentNoYesNoYesNo
Close a callNoNoOwn calls onlyYesNo
Approve a credit above $150NoNoNoYesNo
Export the customer listNoNoNoYes, recorded in the audit logNo
Cancel a visitYesYesNoYesOwn visit, up to 3 hours before

7. Data and integrations

What to write: the main entities and their key fields, the source of truth for each piece of data, what may never be deleted, and what moves over from existing systems. For each integration: direction, what moves, when, and what happens when the other side is down.

Example: customer, address, unit, service contract, call, visit, part and technician. One data-integrity rule worth copying as is: a call is never deleted. It is canceled with a reason, and every status change is kept in its history with the user's name and the time.

SystemDirectionWhat movesWhenIf it's unavailable
AccountingOut of the CRMAn invoice for every closed callOn closeQueue, retry, alert the manager
SMS providerOut of the CRMBooking confirmation, "technician on the way"ImmediatelyRetry, then flag on the customer card
Phone systemInto the CRMCaller number, to open the customer cardEvery callAgent searches manually
Existing spreadsheetsOne-time importCustomers, units, contractsBefore launchError report, manual fixes before go-live

8. Non-functional requirements

Last checked: September 2026. This is general information, not legal advice.

What to write: numbers. "The system should be fast" can't be tested. "Customer search by phone returns a result within one second" can.

AreaRequirement in the example
PerformanceCustomer search by phone returns within 1 second with 60 concurrent users
Availability99.5% during business hours (7:00 to 22:00). The technician app keeps working offline and syncs when the signal returns
SecurityTwo-factor login for staff, encryption in transit and at rest, and an audit log of every view and export
PrivacyWhich personal data is stored and why, who can access it, and after how many years an inactive customer is deleted
AccessibilityThe customer tracking page meets IS 5568. Staff screens are built to the same level
Language and formatHebrew, right to left, Israeli phone numbers, dates as day.month.year

Privacy. A CRM holds a database of personal data. In Israel that brings it under the Privacy Protection Law and the Privacy Protection (Data Security) Regulations. Amendment 13 to the law took effect on August 14, 2025 and tightened enforcement. Your team can't guess which data you truly need or how long to keep it. Write it in the spec.

Accessibility. In Israel, IS 5568 is based on WCAG 2.0 at level AA, and the service accessibility regulations require it for websites that serve the public. In our example, the customer tracking page is such a service. Write down the level, the screens in scope, who tests and when, and who writes the accessibility statement. For products sold abroad, name the standard each market expects. Accessibility added just before launch means reopening screens that are already built.

9. Analytics

What to write: which events the system records, so you can measure the goals from section 1. A metric with no recorded event behind it is one you can't measure after launch.

EventFeeds the metric
Call opened, call assignedTime from new call to assignment
Call closed on first visit, return visit bookedFirst-visit resolution
Customer opened the tracking linkFewer "when will you arrive?" calls

10. Out of scope

What to write: what this version will leave out, stated plainly. This section prevents many arguments halfway through the project.

  • Full inventory management (in version 1 the technician only records which parts were used)
  • A customer app in the app stores
  • Card payments in the field
  • Fully automatic dispatch (the system suggests, the dispatcher decides)

11. Open questions

What to write: everything still undecided, who answers it and by when. A spec with zero open questions usually means someone made decisions quietly.

QuestionOwnerDueAffects
Do technicians use company phones or their own?Operations managerBefore development startsSecurity, device management
Does the accounting system have an API?CFOWeek 1Integration scope
How many years of history move over from the spreadsheets?Service managerWeek 2Migration scope
Do business customers need their own portal?CEOBefore version 2Version 2 scope

What to specify up front, and what to decide on a working version

With AI agents doing much of the implementation, you reach a version people can run much earlier, and interface changes cost little. We wrote about this in what "that's not what I asked for" really costs. For your spec, it means each line needs its own level of detail. Some things are binding, so define them precisely. Others are easier to judge on a real screen.

TopicDefine up front, explicitlyDecide on a working version
PermissionsWho sees and changes each piece of data, including through the APIHow the "no access" message looks
Business rulesEach rule with a condition, a result and a numeric exampleWhere and how the charge is explained to the customer
AccessibilityThe standard's level, the screens in scope, who testsWhich component to use, as long as every option is accessible
Data integrityWhat may never be deleted, what history is kept, the source of truthHow history is shown: a timeline or a table
IntegrationsWhat moves, when, and what happens on failureHow an agent sees that an invoice is still pending
FlowsSteps, statuses and exceptionsA side panel or a separate screen for call details
ScreensWhich screens exist and what information each one showsLayout, field order and button wording

The rule of thumb: anything that can hurt a user, money or data gets defined up front. Anything with several good answers gets tested on a working version.

Frequently asked questions

What is the difference between a software specification and a requirements document? A requirements document (PRD) mainly describes what the product must achieve and why. A specification adds what the team needs to build it: flows, screens, business rules, permissions, data and non-functional requirements. In small and mid-size projects they are usually one document, and this template covers both.

Who writes the software specification, the client or the development company? Usually both, together. You bring the business knowledge: the processes, the rules and the users. The development company brings the right questions, experience with exceptions and the technical requirements. At Globalbit this is part of our product strategy and design work.

How much does a software specification cost? Our discovery phase, which produces the specification, costs $5K to $15K depending on the size of the system. Our discovery phase guide covers what you get and when you can skip it.

Do you still need a specification when developing with AI agents? Yes, and it gets shorter and more focused. Define the binding parts explicitly: permissions, business rules, accessibility and data integrity. Test interface choices that have several good answers on a working version.

Is there a CRM specification example? The example in this article is one: a CRM for a service company with a call center, dispatchers and field technicians. If you are specifying a sales CRM, look at our Sales Copilot CRM first, then specify only what it leaves uncovered.

Want a second pair of eyes on your spec, or help writing it? Talk to us.

[ CONTACT US ]

Tell us what you’re building.

Trusted by 250+ organizations. We respond within one business day.

By submitting, you agree that we may contact you and use your details to measure and improve our advertising, per our privacy policy.

Discuss your Project →