Process · 9 min read
How to write a technical specification for development
How to structure a technical specification for a bot, website or app: goals, roles, user flows, integrations and non-functional requirements. A 9-section template, a website example and common mistakes.
Published: Updated: By the B2B-Lab team
A good technical specification saves money, not pages: it lets a contractor quote a price that won't drift a month later, and it lets you accept the work against clear criteria. A bad spec is either three lines of “we need a website like our competitors'” or 80 pages of requirements nobody read to the end.
Below is a practical guide to writing a technical specification for a bot, website, app or platform, even if you're not a technical person. We'll go through the structure, show an excerpt in the format of a real spec, list the mistakes that most often lead to rework, and explain how to get a preliminary estimate without lengthy back-and-forth.
Why you need a spec and how it differs from a brief
A brief answers “what's the business and what's the task”. A spec answers “what exactly should we end up with, and how will we know it's done”. A brief takes half an hour to fill in; a spec takes anywhere from a few days to a couple of weeks, depending on the size of the product.
A technical specification does three practical jobs:
- Estimation. Without a list of roles, user flows and integrations, any price is guesswork. When quotes for the same “website” vary 3–5x between contractors, it's usually because each one pictured a different website.
- Agreement. The spec fixes the scope of work. Anything not in it is a scope change to be discussed separately, not “well, that's obvious”.
- Acceptance. Every requirement must be testable: “the request form sends data to the CRM within 5 seconds” can be checked; “a user-friendly form” can't.
For small jobs, like a simple bot or a landing page, a short 2–4 page spec is enough. For a platform or a mobile app, the document grows to 15–40 pages and is usually refined together with the contractor at the prototype stage.
Development spec template: 9 essential sections
This development spec template works for any digital product: a Telegram bot, website, Mini App, mobile app or marketplace. Sections can be shortened but not dropped: an empty section is better than a forgotten one.
| Section | What goes in it | Example wording |
|---|---|---|
| 1. Goal and metrics | What business problem the product solves and how to measure success | Reduce operator workload: the bot resolves 60% of inquiries without a human |
| 2. Audience and roles | Who uses the product and what permissions each role has | Customer, manager, administrator; managers see only their own requests |
| 3. User flows | Step-by-step paths for key actions | Customer picks a service → a date → pays → gets a confirmation |
| 4. Features | List of features with priorities | Must: catalog, cart, payment. Could: promo codes |
| 5. Integrations | Which systems exchange data and in which direction | Orders go to 1C, statuses flow back to the customer account |
| 6. Platforms and design | Where the product runs, whether there's a brand book and mockups | Web + iOS + Android, brand identity exists, no mockups |
| 7. Data and security | Personal data, storage, access, hosting | Personal data under 152-FZ (Russia's personal data law), servers in Russia, 2FA login for staff |
| 8. Non-functional requirements | Load, speed, availability, browser support | Up to 500 concurrent users, pages load in under 2 s |
| 9. Constraints and acceptance | Budget, deadlines, milestones, sign-off criteria | MVP launch by December 1, acceptance against a user-flow checklist |
If the product is complex, add a glossary (what you mean by “order”, “deal”, “customer”) and appendices: sample documents, exports from your current systems, competitor screenshots marked “like” and “don't like”.
How to write a development spec: user flows, not a feature list
The main mistake is describing the product as a set of screens and buttons. What developers really need to understand is who does what, why, and in what order. So if you're figuring out how to write a development spec that everyone reads the same way, start with user flows.
The user story formula
Use a simple template: “As a [role], I want to [action] so that [outcome]”. For example: “As a manager, I want to get a Telegram notification about a new request so that I can contact the customer within 15 minutes”.
Acceptance criteria for every story
Add 2–5 testable conditions to each story. For the example above:
- the notification arrives no later than 10 seconds after the form is submitted;
- the notification includes the name, phone number, selected service and request source (UTM tag);
- the “Take it” button changes the request status and hides it from other managers;
- if the manager doesn't respond within 15 minutes, their team lead gets the notification.
This is how you write requirements that can be both estimated and accepted. It matters especially for bots and Mini Apps: their logic lives in the conversation, and without user flows the contractor has to fill in the gaps. Learn more about how we design state maps on our Telegram bot development page.
Priorities: MoSCoW
Tag every feature: Must (the product can't launch without it), Should (needed, but can wait a month), Could (nice to have), Won't (definitely not in this version). This tagging is the basis of the first product version; we covered how to choose features for launch in detail in our article on MVP development.
Non-functional requirements people forget
Features describe what the product does. Non-functional requirements describe how it does it. These are the ones that most often surface after launch, and they cost the most if they weren't agreed on in advance.
- Load: how many users you expect in the first month and in a year, and whether there are peaks (sales, mailings).
- Speed: target page load and bot response times; for websites, Core Web Vitals targets.
- Availability: acceptable downtime, and whether you need monitoring and on-call support.
- Security: what data is stored, who has access to it, whether two-factor authentication and an audit log are needed.
- Personal data: processing under 152-FZ, data localization in Russia, consents and a privacy policy.
- Hosting: your cloud, your own servers or an isolated network with no internet access.
- Support: browsers, iOS and Android versions, interface languages, accessibility for visually impaired users.
- Handover: documentation, credentials, a repository in your account, deployment instructions.
Example technical specification for a website
Below is a condensed example of a technical specification for a manufacturing company's website. It fits on two pages and is already enough to get an accurate estimate.
- Goal: generate equipment quote requests from B2B customers; target of 40 qualified requests per month 3 months after launch.
- Audience: engineers and procurement specialists at industrial companies, 70% visiting from desktop.
- Roles: visitor; content manager (edits the catalog and news); administrator (access, settings).
- Structure: home page, catalog of 6 categories and ~120 items, product page with a PDF spec sheet, case studies, about, contacts, blog.
- Key user flow: a visitor finds an item via the filter → opens the product page → clicks “Request a quote” → fills in a 4-field form → the request goes to Bitrix24 and to the sales team's Telegram.
- Integrations: Bitrix24 (lead creation), Yandex Metrica with goals, daily catalog export from 1C.
- Design: brand book exists; a UX prototype and mobile-responsive layout are needed.
- Non-functional requirements: page load under 2 seconds on 4G, technical SEO and structured data, hosting in Russia.
- Acceptance: all flows from item 5 pass on the staging environment, forms reach the CRM, Lighthouse Performance score of 90+.
Notice what's missing: the words “modern”, “user-friendly” and “high-converting”. Instead there are numbers, roles, a user flow and criteria. With a document like this, contractors quote comparable prices, and you compare proposals rather than fantasies. To see what websites and web apps we build and what the work involves, visit our website development section.
Common spec mistakes and how to avoid them
| Mistake | What it leads to | How to fix it |
|---|---|---|
| “Like Avito, only better” | Quotes from 1 million to 30 million ₽: everyone pictured something different | List 3–5 specific features of the reference product that you actually need |
| No roles or permissions | Access logic reworked after launch | A one-page “role × action” table |
| Integrations “we'll figure out as we go” | Deadlines slip by weeks if the system has no API | Check in advance whether there's an API and who will grant access |
| Everything is a Must | The first version's budget grows 2–3x | MoSCoW tagging and an honest cut for launch |
| No acceptance criteria | Disputes at handover, endless revisions | 2–5 testable conditions for each user flow |
| The spec is written by one person | Requirements from sales, support and accounting get missed | Interview every future user inside the company |
Another trap is trying to describe every last button before there's a prototype. Interface details are faster and cheaper to settle on a clickable prototype: you see the screens, click through, make changes. The spec sets the frame; the prototype fills it in.
Online questionnaire: a spec without a blank page
The hardest part is getting started. That's why our website has an online questionnaire for writing a spec: it turns the structure above into a sequence of questions with hints and answer options. You don't have to write from scratch; most items are selected with buttons. The questionnaire has 7 sections:
- About you: contacts, company, your role in the project.
- About the product: product type, goal, stage, current stack, references and links to documents.
- Users and roles: audience, roles, scale, geography, the user's problem.
- Functionality: features, the must-have minimum, payments, integrations.
- Platforms and design: where the product runs, design, branding, content.
- Data, AI and security: whether AI is needed, data migration, security and hosting requirements.
- Budget, timeline and process: budget, deadline and the reason for it, support, your involvement.
Right after submitting, you get a preliminary estimate. It's for reference: we give the exact cost after working through the spec together with you. Price benchmarks for all services are collected on our development pricing page.
Questions and answers
Who should write the technical specification: the client or the contractor?
The client defines goals, audience, user flows and constraints, because they know the business. The technical sections (architecture, integrations, non-functional requirements) are best refined together with the contractor during the discovery phase.
How many pages should a spec be?
For a bot or landing page, 2–4 pages is enough; for a website with a catalog and integrations, 5–10; for a platform or mobile app, 15–40. What matters is not length but that every requirement can be tested.
Can you start development without a spec?
Yes, if the work runs in short sprints with weekly demos and time-and-materials billing. But for a fixed price and deadline, you can't do without a spec: without one, the estimate remains guesswork.
What if requirements change during the project?
Record changes in writing: what's being added, what's being removed, and how it affects the timeline and budget. A good practice is a separate change log that both sides approve.
How is a spec different from a brief?
A brief describes the business and the task in general terms and is used for an initial estimate. A spec details roles, user flows, features, integrations and acceptance criteria, and becomes part of the contract.