<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Oleksandr Tytarenko</title>
    <description>The latest articles on DEV Community by Oleksandr Tytarenko (@oleksandr_tytarenko).</description>
    <link>https://dev.to/oleksandr_tytarenko</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4172876%2F461afdfa-2d83-402c-9cee-628f14cad732.jpg</url>
      <title>DEV Community: Oleksandr Tytarenko</title>
      <link>https://dev.to/oleksandr_tytarenko</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/oleksandr_tytarenko"/>
    <language>en</language>
    <item>
      <title>How Long Does a Discovery Phase Take? Typical Timelines</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Mon, 02 Nov 2026 08:14:47 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/how-long-does-a-discovery-phase-take-typical-timelines-1g6m</link>
      <guid>https://dev.to/oleksandr_tytarenko/how-long-does-a-discovery-phase-take-typical-timelines-1g6m</guid>
      <description>&lt;p&gt;A software discovery phase usually takes 1-3 weeks for a small MVP, 3-6 weeks for a typical product with a few integrations, and 6 weeks or more for integration-heavy or regulated systems. The size of the product matters less than you might think. What usually decides the length is how quickly stakeholders are available, how much is unknown about the existing systems, and how many people have to agree. Here is how to read those ranges, what stretches them and a week-by-week plan for a four-week discovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Typical durations by project size
&lt;/h2&gt;

&lt;p&gt;Published guides agree on the broad shape, though each one defines discovery slightly differently. The UK government's service manual says there is no set length, but that &lt;a href="https://www.gov.uk/service-manual/agile-delivery/how-the-discovery-phase-works" rel="noopener noreferrer"&gt;around 4 to 8 weeks is typical&lt;/a&gt; for its public-service discoveries, which include a lot of user research. Agency guides for commercial software quote shorter ranges: one describes discovery as &lt;a href="https://anadea.info/guides/project-discovery-phase" rel="noopener noreferrer"&gt;typically three to six weeks&lt;/a&gt;, compressing to a couple of weeks for a simple product with a clear owner; another gives &lt;a href="https://scnsoft.com/software-development/about/how-we-work/discovery" rel="noopener noreferrer"&gt;about three weeks for small projects and up to two months or more for large ones&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Put together, a reasonable planning range looks like this. Treat it as a rule of thumb, not a quote:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Project type&lt;/th&gt;
&lt;th&gt;Typical duration&lt;/th&gt;
&lt;th&gt;Assumptions&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Small MVP, one user type, no or simple integrations&lt;/td&gt;
&lt;td&gt;1-3 weeks&lt;/td&gt;
&lt;td&gt;One decision maker, available weekly; existing material to start from&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical product: several user types, 2-4 integrations&lt;/td&gt;
&lt;td&gt;3-6 weeks&lt;/td&gt;
&lt;td&gt;A handful of stakeholders; integrations documented&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Complex or regulated: many integrations, legacy systems, compliance&lt;/td&gt;
&lt;td&gt;6-12 weeks&lt;/td&gt;
&lt;td&gt;Many stakeholders; systems need investigation; legal or security review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public service with heavy user research&lt;/td&gt;
&lt;td&gt;4-8 weeks or more&lt;/td&gt;
&lt;td&gt;Research with real users is the main work&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The ranges overlap because the deliverables differ. A discovery that produces requirements and a rough estimate is shorter than one that also produces wireframes, an architecture and a prototype. When you compare two offers, compare their lists of deliverables before you compare their week counts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What stretches a discovery
&lt;/h2&gt;

&lt;p&gt;The same product can take three weeks with one client and six with another. The usual reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stakeholder availability.&lt;/strong&gt; If the decision maker can meet once every two weeks, every decision takes two weeks. This is the most common reason a discovery runs long.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disagreement.&lt;/strong&gt; Two departments that want different things will not settle it in a workshop. Discovery brings the disagreement to the surface; settling it takes as long as the organisation needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unknown systems.&lt;/strong&gt; A legacy system with no documentation, an API nobody has tried, data whose quality nobody knows. Someone has to look, and access alone can take a week to arrange.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Approvals outside the team.&lt;/strong&gt; Security reviews, legal checks on data, procurement questions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Starting from nothing.&lt;/strong&gt; Teams that start with decks, notes, past research and call recordings move faster than teams that start from a one-line idea.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope that keeps growing.&lt;/strong&gt; If every workshop adds a new module, the discovery is turning into product design. Agree on the boundary in week one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of these are calendar problems, not effort problems. A discovery that needs 15 days of work can easily take six calendar weeks if the people needed are hard to reach.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can run in parallel
&lt;/h2&gt;

&lt;p&gt;You can shorten the calendar by not running everything in sequence:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Access requests and system investigation&lt;/strong&gt; can start on day one, before the workshops. Request repository, environment and API access in the kick-off email.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stakeholder interviews&lt;/strong&gt; can run alongside reading the existing material.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Architecture exploration&lt;/strong&gt; can start as soon as the main flows are known; it does not need final requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drafting the documents&lt;/strong&gt; can start in week one. Write the background and problem statement from what you already have, and correct them as you learn.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What cannot run in parallel: settling priorities before the requirements exist, and estimating before the architecture and main integrations are understood. Those two set the minimum length of any discovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  A week-by-week outline for a 4-week discovery
&lt;/h2&gt;

&lt;p&gt;This plan fits a typical product with a few integrations and a client who can meet twice a week. It follows the ten sections of the &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-template?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-phase-duration-article" rel="noopener noreferrer"&gt;discovery phase template&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fdiscovery-phase-duration%2Fdiscovery-template-sections.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fdiscovery-phase-duration%2Fdiscovery-template-sections.png" title="The ten sections of the discovery phase template" alt="The discovery phase template page with its contents list of ten sections, from Stakeholders to Roadmap, estimates and risks" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Week&lt;/th&gt;
&lt;th&gt;Focus&lt;/th&gt;
&lt;th&gt;Outputs by the end of the week&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Context and people&lt;/td&gt;
&lt;td&gt;Stakeholder list with who decides; background; first draft of the problem statement; access requested; open-questions log started&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Goals and users&lt;/td&gt;
&lt;td&gt;Goals with metrics; users, main journeys and key flows; first list of requirements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Requirements and architecture&lt;/td&gt;
&lt;td&gt;Requirements with priorities and acceptance criteria for the Musts; context diagram; integrations checked; key decisions recorded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Plan and sign-off&lt;/td&gt;
&lt;td&gt;Milestones with low-high estimates and assumptions; risks and open questions with owners; executive summary; review with the decision maker&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Keep a short review at the end of each week with the decision maker. It catches wrong turns early and stops week four from becoming a week of rewrites.&lt;/p&gt;

&lt;p&gt;To compress this to two weeks for a small MVP, merge weeks 1 and 2 and weeks 3 and 4, and drop anything the first release does not need. To stretch it for a complex system, the extra time usually goes into week 3: integrations, data and decisions.&lt;/p&gt;

&lt;p&gt;Tools can shorten the writing, though not the meetings. Discovery Phase AI drafts the background, problem statement, goals, users and requirements from the files you upload (decks, documents, call transcripts, images) and gives each stage an AI quality score with suggestions. That cuts the time spent turning notes into documents. It does not replace the conversations in which stakeholders agree.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signs you are done
&lt;/h2&gt;

&lt;p&gt;A discovery is done when its outputs can support a decision, not when the calendar runs out. The GOV.UK manual frames it the same way: you have finished when you can decide whether to move on, and &lt;a href="https://www.gov.uk/service-manual/agile-delivery/how-the-discovery-phase-works" rel="noopener noreferrer"&gt;stopping is not a failure&lt;/a&gt; if the research shows that is the right call.&lt;/p&gt;

&lt;p&gt;Practical signs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The decision maker has read the executive summary and agrees with it.&lt;/li&gt;
&lt;li&gt;The scope of the first release is agreed in writing, including what is out.&lt;/li&gt;
&lt;li&gt;Every Must requirement has acceptance criteria and traces to a goal.&lt;/li&gt;
&lt;li&gt;The estimate is a range with its assumptions written down.&lt;/li&gt;
&lt;li&gt;Open questions and risks each have an owner and a date.&lt;/li&gt;
&lt;li&gt;The next step is clear: build, run a smaller pilot, or stop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These match the sign-off section of the &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-checklist?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-phase-duration-article" rel="noopener noreferrer"&gt;discovery phase checklist&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fdiscovery-phase-duration%2Fchecklist-sign-off.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fdiscovery-phase-duration%2Fchecklist-sign-off.png" title="Sign-off questions from the discovery phase checklist" alt="The Sign-off section of the discovery phase checklist: executive summary read, first-release scope agreed in writing, next step clear, discovery in one shareable document" width="800" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If the calendar is up and these are not true, you have two honest options. Extend the discovery for a stated reason and a stated number of days, or close it with the gaps written down as open questions and risks that the first phase of the build will have to resolve. For the bigger picture of what discovery is for, see &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-in-software-development?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-phase-duration-article" rel="noopener noreferrer"&gt;the discovery phase in software development&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-phase-duration-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-phase-duration-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-duration" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>productmanagement</category>
      <category>startup</category>
      <category>planning</category>
    </item>
    <item>
      <title>Fixed Price vs Time and Materials for Software Projects</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Sun, 01 Nov 2026 08:08:34 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/fixed-price-vs-time-and-materials-for-software-projects-1lnc</link>
      <guid>https://dev.to/oleksandr_tytarenko/fixed-price-vs-time-and-materials-for-software-projects-1lnc</guid>
      <description>&lt;p&gt;Fixed price suits work whose scope is clear enough to write down and test: the vendor carries the risk of overrunning and charges for it. Time and materials (T&amp;amp;M) suits work whose scope will change as you learn: the client pays for the hours actually spent and keeps the right to steer. Since most software projects begin unclear and get clearer, a common approach is to fix the price of a discovery and a well-defined first phase, then move to T&amp;amp;M once the product is live and changing.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This article is practical guidance, not legal advice. Have a lawyer review any contract you sign.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The two models in one table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Fixed price&lt;/th&gt;
&lt;th&gt;Time and materials&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;What is agreed&lt;/td&gt;
&lt;td&gt;A scope, a price and usually a date&lt;/td&gt;
&lt;td&gt;Rates, a team and a way of working, often with a budget cap&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who carries the overrun risk&lt;/td&gt;
&lt;td&gt;Mainly the vendor, up to the agreed scope&lt;/td&gt;
&lt;td&gt;Mainly the client&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;How change is handled&lt;/td&gt;
&lt;td&gt;Change requests, each priced and approved&lt;/td&gt;
&lt;td&gt;Re-prioritise the backlog; the cost follows the hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What the client must provide&lt;/td&gt;
&lt;td&gt;A clear scope up front and quick sign-off&lt;/td&gt;
&lt;td&gt;Ongoing time from a product owner who makes decisions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Price includes&lt;/td&gt;
&lt;td&gt;The work plus a risk margin&lt;/td&gt;
&lt;td&gt;The work as it happens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Works best when&lt;/td&gt;
&lt;td&gt;Scope is defined and testable&lt;/td&gt;
&lt;td&gt;Scope is uncertain or expected to change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical failure&lt;/td&gt;
&lt;td&gt;Disputes over what was "in scope"&lt;/td&gt;
&lt;td&gt;Budget drift without visible progress&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The table hides one important point: a fixed price does not remove risk, it prices it. A vendor quoting a fixed price on a vague scope will either add a large margin or lose money and try to make it back through change requests. Both are worse for the client than an honest range.&lt;/p&gt;

&lt;h2&gt;
  
  
  When fixed price works
&lt;/h2&gt;

&lt;p&gt;Fixed price works when someone could hand the scope to a different team and get roughly the same thing built. In practice that means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Requirements are written and testable&lt;/strong&gt;, with acceptance criteria for every Must.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The integrations are known&lt;/strong&gt;: the APIs exist, are documented, and someone has checked them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The assumptions are listed&lt;/strong&gt;, so both sides know what the price relies on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The client can review and accept work quickly.&lt;/strong&gt; A fixed price with slow sign-off becomes a delay dispute instead of a scope dispute.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;US federal acquisition rules offer a useful reference point here, even outside government work. They steer firm-fixed-price contracts toward work that can be bought on "reasonably definite functional or detailed specifications", and they allow time-and-materials only when the extent or duration of the work cannot be estimated with reasonable confidence at the start (&lt;a href="https://www.acquisition.gov/far/part-16" rel="noopener noreferrer"&gt;FAR Part 16&lt;/a&gt;). Commercial software contracts are not bound by these rules. The logic still carries over: price firmly what you can specify, and pay for time where you cannot.&lt;/p&gt;

&lt;p&gt;Good fixed-price candidates: a discovery phase itself (time-boxed, with defined deliverables), a clickable prototype, a migration with a known source and target, or a first release whose scope came out of a proper discovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  When time and materials works
&lt;/h2&gt;

&lt;p&gt;T&amp;amp;M works when the job is to find the right product as much as to build it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The product is new, and user feedback will change the backlog.&lt;/li&gt;
&lt;li&gt;Integration or data quality is unknown until someone looks inside the systems.&lt;/li&gt;
&lt;li&gt;The work is ongoing: improvements, maintenance, a product team after launch.&lt;/li&gt;
&lt;li&gt;The client has a product owner who can prioritise every week.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The risk with T&amp;amp;M is not price. It is drift. Without a goal per sprint or milestone, a cap and visible output, hours pile up and nobody can say what they bought. Typical safeguards:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;A not-to-exceed budget&lt;/strong&gt; per phase or per month, with a warning at 75-80% of it.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Milestones with low-high estimates&lt;/strong&gt;, so the client can see whether spend matches progress.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Regular demos&lt;/strong&gt; of working software, not status reports.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;A right to stop&lt;/strong&gt; at the end of each phase, with the work done so far handed over.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The federal rules make the same point: T&amp;amp;M orders there need a ceiling price, and contracting officers are told to avoid protracted use of T&amp;amp;M once experience gives a basis for firmer pricing (&lt;a href="https://www.acquisition.gov/far/part-16" rel="noopener noreferrer"&gt;FAR Part 16&lt;/a&gt;). In other words, T&amp;amp;M is meant to be a phase, not a permanent state.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hybrid after a discovery phase
&lt;/h2&gt;

&lt;p&gt;The discovery phase is what makes a fixed price possible. Before it, scope is a wish list. After it, you have requirements with priorities, an architecture, a roadmap with estimated milestones and a list of assumptions. That is enough to fix the price of a first phase, but rarely enough to fix everything.&lt;/p&gt;

&lt;p&gt;A common structure:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Discovery&lt;/td&gt;
&lt;td&gt;Fixed price, time-boxed&lt;/td&gt;
&lt;td&gt;Deliverables are known in advance; the client gets a plan whether or not they go ahead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phase 1 (first release)&lt;/td&gt;
&lt;td&gt;Fixed price, or T&amp;amp;M with a cap&lt;/td&gt;
&lt;td&gt;Scope comes straight from discovery; assumptions are written into the contract&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Later phases&lt;/td&gt;
&lt;td&gt;T&amp;amp;M with a monthly budget&lt;/td&gt;
&lt;td&gt;The product is live, feedback changes priorities, and fixing the scope would mean pricing guesses&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two details decide whether the hybrid holds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The assumptions travel into the contract.&lt;/strong&gt; If phase 1 is priced on "the client's API returns stock levels in real time", say so, and say what happens if it does not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The estimate is a range, and the fixed price sits inside it on purpose.&lt;/strong&gt; Discovery gives you a low-high range per milestone. Where the price sits in that range, and why, should be visible to both sides.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is what that input looks like in the Discovery Phase AI &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fixed-price-vs-time-and-materials-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt;, made for an invented project called Fieldwise: four milestones, each with a person-week range, a 16-22 person-week total, and the assumptions that range depends on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Ffixed-price-vs-time-and-materials%2Fexample-milestone-estimates.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Ffixed-price-vs-time-and-materials%2Fexample-milestone-estimates.png" title="Milestone ranges and assumptions from a discovery" alt="Roadmap section of the Fieldwise example report: four milestones with low-high estimates in person-weeks, a 16-22 person-week total, target dates, and four assumptions listed below" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Risks for each side
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Risk&lt;/th&gt;
&lt;th&gt;Fixed price&lt;/th&gt;
&lt;th&gt;Time and materials&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;For the client&lt;/td&gt;
&lt;td&gt;Paying a risk margin; arguing over what "in scope" meant; a vendor cutting corners to protect margin&lt;/td&gt;
&lt;td&gt;Open-ended cost; paying for the vendor's learning; slow progress if the product owner is unavailable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;For the vendor&lt;/td&gt;
&lt;td&gt;Absorbing overruns; scope creep through vague requirements; slow client sign-off eating into margin&lt;/td&gt;
&lt;td&gt;Being cut off at short notice; budget caps used as fixed prices in disguise; disputes over productivity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shared&lt;/td&gt;
&lt;td&gt;A bad scope document makes both models fail, just differently&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A cap on a T&amp;amp;M contract is often treated as a fixed price in all but name, while the vendor still carries no obligation to finish. Be clear which one you mean. A cap is a stop-and-review point, not a promise of delivery.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to choose
&lt;/h2&gt;

&lt;p&gt;Ask four questions, in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Could you write acceptance criteria for every Must today?&lt;/strong&gt; If not, the scope is not ready for a fixed price. Run or finish a discovery first.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Are the integrations and data known?&lt;/strong&gt; If a key system has not been looked at, either fix the price of everything except that part or treat it as T&amp;amp;M until it is understood.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Who will make decisions every week?&lt;/strong&gt; T&amp;amp;M without an available product owner is the most expensive option on this list.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Is the product expected to change after launch?&lt;/strong&gt; If yes, plan for T&amp;amp;M after the first release whatever you choose for it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As a rule of thumb, not a formula: if you answered "yes, yes, someone named, no" you can fix the price. Two or more "no" or "not sure" answers point to T&amp;amp;M with a cap, or to a fixed-price discovery that turns those answers into "yes".&lt;/p&gt;

&lt;p&gt;A discovery that produces requirements with acceptance criteria, an estimated roadmap and a written list of assumptions is what makes either model safe. The &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-checklist?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fixed-price-vs-time-and-materials-article" rel="noopener noreferrer"&gt;discovery phase checklist&lt;/a&gt; lists what to have before you sign, and &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-in-software-development?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fixed-price-vs-time-and-materials-article" rel="noopener noreferrer"&gt;the discovery phase in software development&lt;/a&gt; explains what that phase produces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fixed-price-vs-time-and-materials-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=fixed-price-vs-time-and-materials-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/fixed-price-vs-time-and-materials" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>softwareengineering</category>
      <category>projectmanagement</category>
      <category>startup</category>
    </item>
    <item>
      <title>Non-Functional Requirements Examples for Software Projects</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Sat, 31 Oct 2026 08:08:34 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/non-functional-requirements-examples-for-software-projects-j6i</link>
      <guid>https://dev.to/oleksandr_tytarenko/non-functional-requirements-examples-for-software-projects-j6i</guid>
      <description>&lt;p&gt;A non-functional requirement (NFR) says how well a system must do its job: how fast, how available, how secure, how accessible, how long it keeps data. A good one has a number and a way to test it, such as "search results appear within 1 second for 95% of requests". Below are measurable examples by category, the question that gets each one out of a client, and how NFRs change the estimate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why NFRs get missed
&lt;/h2&gt;

&lt;p&gt;Functional requirements are easy to collect because people describe what they do: "I need to approve an invoice." Nobody walks into a workshop and says "I need the approval page to respond within 800 milliseconds at the 95th percentile." Quality expectations stay unspoken until they are broken.&lt;/p&gt;

&lt;p&gt;Three patterns cause most of the misses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;They are assumed.&lt;/strong&gt; The client thinks "obviously it is secure and always up". The team thinks "normal hosting, normal security". Both are right in their own heads and wrong about each other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;They are vague.&lt;/strong&gt; "Fast", "scalable" and "user-friendly" are written down, but nobody can test them, so they do not shape the design or the price.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nobody owns them.&lt;/strong&gt; A feature has a user who asks for it. Availability or data retention belongs to operations, legal or IT, who are often not in the discovery sessions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The ISO/IEC 25010 quality model (2023 edition) splits product quality into nine characteristics, including performance efficiency, compatibility, reliability and security. You do not need the full model, but it is a useful list to check against so that a whole category is not skipped.&lt;/p&gt;

&lt;h2&gt;
  
  
  Categories and measurable examples
&lt;/h2&gt;

&lt;p&gt;Each example below has a number, a condition and something a tester can measure. Treat the figures as illustrations; the right values come from the client's needs and budget.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Measurable example&lt;/th&gt;
&lt;th&gt;How it is tested&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Performance (response time)&lt;/td&gt;
&lt;td&gt;The order search returns results within 1 s for 95% of requests, with 200 users active at once&lt;/td&gt;
&lt;td&gt;Load test at the stated concurrency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Performance (web pages)&lt;/td&gt;
&lt;td&gt;Public pages reach a Largest Contentful Paint of 2.5 s or less for 75% of visits&lt;/td&gt;
&lt;td&gt;Field data from real users&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Capacity&lt;/td&gt;
&lt;td&gt;The system handles 50,000 orders a month and 3 years of history without the search target above being missed&lt;/td&gt;
&lt;td&gt;Load test on a seeded database&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Availability&lt;/td&gt;
&lt;td&gt;The customer portal is available 99.9% of each calendar month, excluding announced maintenance&lt;/td&gt;
&lt;td&gt;Uptime monitoring&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recovery&lt;/td&gt;
&lt;td&gt;After an outage, service is restored within 4 hours (RTO) with no more than 15 minutes of data lost (RPO)&lt;/td&gt;
&lt;td&gt;Restore drill from backups&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security (access)&lt;/td&gt;
&lt;td&gt;Every page except sign-in requires an authenticated session; staff accounts use multi-factor sign-in&lt;/td&gt;
&lt;td&gt;Access test per role&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security (verification)&lt;/td&gt;
&lt;td&gt;The application meets the OWASP ASVS Level 2 requirements before go-live&lt;/td&gt;
&lt;td&gt;Security review against the checklist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accessibility&lt;/td&gt;
&lt;td&gt;Public and customer pages meet WCAG 2.2 Level AA&lt;/td&gt;
&lt;td&gt;Audit with assistive technology&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data retention&lt;/td&gt;
&lt;td&gt;Support messages are deleted 24 months after the last reply; audit logs are kept 7 years&lt;/td&gt;
&lt;td&gt;Scheduled job and a test record&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Privacy (location)&lt;/td&gt;
&lt;td&gt;Personal data is stored and processed only in the EU&lt;/td&gt;
&lt;td&gt;Hosting and vendor review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Compatibility&lt;/td&gt;
&lt;td&gt;The staff app works on the latest two versions of the main desktop browsers&lt;/td&gt;
&lt;td&gt;Browser test matrix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintainability&lt;/td&gt;
&lt;td&gt;A new team member can run the system locally from the written setup guide in under one day&lt;/td&gt;
&lt;td&gt;Onboarding trial&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A few sources for the numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The 2.5-second LCP figure is Google's "good" threshold for &lt;a href="https://web.dev/articles/defining-core-web-vitals-thresholds" rel="noopener noreferrer"&gt;Core Web Vitals&lt;/a&gt;, measured at the 75th percentile of page loads.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://owasp.org/www-project-application-security-verification-standard/" rel="noopener noreferrer"&gt;OWASP ASVS&lt;/a&gt; is a free, public checklist of security requirements in three levels; naming a level turns "secure" into something testable.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.w3.org/TR/WCAG22/" rel="noopener noreferrer"&gt;WCAG 2.2&lt;/a&gt; is the W3C accessibility standard; Level AA is the level most commonly asked for.&lt;/li&gt;
&lt;li&gt;Availability percentages translate into allowed downtime. Over a 30-day month, 99.9% allows about 43 minutes of downtime, 99.95% about 22 minutes and 99.99% about 4 minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Retention periods are the client's decision, often driven by law or a contract. Under the GDPR, personal data should be kept no longer than necessary (&lt;a href="https://gdpr-info.eu/art-5-gdpr/" rel="noopener noreferrer"&gt;Article 5(1)(e)&lt;/a&gt;), so a retention NFR usually needs a specific period per type of data, not "forever".&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions to ask the client
&lt;/h2&gt;

&lt;p&gt;Clients rarely answer "what is your availability target?" with a number. Ask about consequences instead, and turn the answer into a figure yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt;: "Which screen do people use most, and what happens if it takes five seconds?" "How many people use it at the busiest hour of the busiest day?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Availability&lt;/strong&gt;: "If the system were down for an hour on a Tuesday morning, what would it cost you? And at 2 a.m. on a Sunday?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recovery&lt;/strong&gt;: "If we lost the last hour of data, could you re-enter it? The last day?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt;: "Who must never see this data? Has anyone asked you for a security questionnaire or penetration test?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility&lt;/strong&gt;: "Is this used by the public or by employees? Are you bound by an accessibility law or a buyer's policy?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data retention&lt;/strong&gt;: "How long do you have to keep records, and is there anything you must delete after a while?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location and vendors&lt;/strong&gt;: "Do your contracts or regulators say where data may be stored?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Growth&lt;/strong&gt;: "How many users or records do you expect in a year? In three?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the answer is "I don't know", write the NFR with a proposed value and mark it for confirmation. A proposed number that someone corrects is far more useful than a blank.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where NFRs go in the document
&lt;/h2&gt;

&lt;p&gt;Put NFRs in the same requirements list as functional ones, not in an appendix at the back. Give each one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An ID and a short title, like any other requirement&lt;/li&gt;
&lt;li&gt;The type &lt;strong&gt;non-functional&lt;/strong&gt;, so it can be filtered&lt;/li&gt;
&lt;li&gt;A priority (Must, Should, Could, Won't)&lt;/li&gt;
&lt;li&gt;One or more acceptance criteria with the number and the test&lt;/li&gt;
&lt;li&gt;The goal or constraint it serves, where there is one&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=non-functional-requirements-examples-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt; for Fieldwise, an invented field-service project, "Work without coverage" is a non-functional Must sitting in the same list as the functional requirements, and "Data stays in the EU" is a constraint:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fnon-functional-requirements-examples%2Fexample-report-requirements.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fnon-functional-requirements-examples%2Fexample-report-requirements.png" title="Fieldwise example report: requirements by type" alt="Requirements table from the Fieldwise example report: REQ-003 Work without coverage is typed non-functional and REQ-005 Data stays in the EU is typed constraint, next to functional requirements" width="799" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Keep &lt;strong&gt;constraints&lt;/strong&gt; separate from NFRs. A constraint is a limit the team cannot change: a mandated cloud provider, a regulation, a fixed budget or deadline. An NFR is a quality target the team designs for. Mixing the two hides which items are negotiable.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-template?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=non-functional-requirements-examples-article" rel="noopener noreferrer"&gt;discovery phase template&lt;/a&gt; uses exactly this split (functional, non-functional, constraint), and the &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-checklist?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=non-functional-requirements-examples-article" rel="noopener noreferrer"&gt;discovery phase checklist&lt;/a&gt; asks whether performance, security, availability, accessibility and compliance needs are named:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fnon-functional-requirements-examples%2Fchecklist-requirements.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fnon-functional-requirements-examples%2Fchecklist-requirements.png" title="Discovery phase checklist: requirements" alt="The Requirements section of the discovery phase checklist, including the question whether non-functional needs such as performance, security, availability, accessibility and compliance are named" width="800" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Discovery Phase AI, a requirement carries one of these three types, and its AI score rates whether it is clear and testable, which tends to flag an NFR that has no number.&lt;/p&gt;

&lt;h2&gt;
  
  
  How NFRs change the estimate
&lt;/h2&gt;

&lt;p&gt;NFRs often move the estimate more than an extra feature does, because they apply to everything. Rules of thumb, not measured figures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Each extra "nine" of availability costs more than the last.&lt;/strong&gt; Going from 99.9% to 99.99% usually means redundant infrastructure across zones, automated failover and someone on call, which changes both build and running costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tight recovery targets need tested backups and drills&lt;/strong&gt;, not just a backup setting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A named security level adds work everywhere&lt;/strong&gt;: input validation, logging, session handling, reviews. Asking for ASVS Level 2 late in a project means rework.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accessibility is cheap when designed in and expensive when retrofitted.&lt;/strong&gt; Agree the level before screens are designed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data volume and retention shape the database design&lt;/strong&gt;, archiving and search. Three years of history is a different system from three months.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location rules limit vendor choice&lt;/strong&gt;, which can rule out a service the estimate assumed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why NFRs belong in discovery and not in the first sprint. List them with numbers, mark the ones still to confirm, and state in the estimate which NFR values it assumes. If a client later raises a target, the change and its cost are then visible instead of being an argument.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=non-functional-requirements-examples-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=non-functional-requirements-examples-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/non-functional-requirements-examples" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>requirements</category>
      <category>softwareengineering</category>
      <category>architecture</category>
      <category>testing</category>
    </item>
    <item>
      <title>How to Define MVP Scope: Cut Down to What You Can Prove</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Fri, 30 Oct 2026 08:08:48 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/how-to-define-mvp-scope-cut-down-to-what-you-can-prove-3n2a</link>
      <guid>https://dev.to/oleksandr_tytarenko/how-to-define-mvp-scope-cut-down-to-what-you-can-prove-3n2a</guid>
      <description>&lt;p&gt;To define MVP scope, start from the one business question the first release must answer, then keep only the features without which you cannot answer it. Everything else goes on an "out" or "later" list, written down and agreed. The result is a short set of requirements you can estimate and build in weeks, not a smaller copy of the full product.&lt;/p&gt;

&lt;h2&gt;
  
  
  What an MVP is for
&lt;/h2&gt;

&lt;p&gt;Eric Ries, who made the term popular, defined the minimum viable product as the version of a new product that lets a team collect &lt;a href="https://www.startuplessonslearned.com/2009/08/minimum-viable-product-guide.html" rel="noopener noreferrer"&gt;the maximum amount of validated learning about customers with the least effort&lt;/a&gt;. The key word is learning. An MVP is an experiment with a product attached.&lt;/p&gt;

&lt;p&gt;That changes how you scope it. A feature belongs in the MVP if the experiment fails without it. A feature that would make the product nicer, more complete or easier to sell belongs later, however good the idea is.&lt;/p&gt;

&lt;p&gt;Two common misreadings to avoid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"Minimum" does not mean low quality.&lt;/strong&gt; The parts you build should work properly. Users who hit bugs teach you about the bugs, not about the product.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Viable" does not mean complete.&lt;/strong&gt; It means a real user can get real value from it, in a narrow case, without your team stepping in.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Start from the question, not the feature list
&lt;/h2&gt;

&lt;p&gt;Most MVP scoping goes wrong because it starts with the full feature list and tries to shrink it. Start instead with one sentence:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We believe [user] will [do something] because [reason]. We will know we are right when [measurable signal] within [time].&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"We believe field technicians will close visits on a phone instead of paper, because it saves them the evening paperwork. We will know when 70% of visits in the pilot regions are closed in the app within six weeks."&lt;/li&gt;
&lt;li&gt;"We believe small clinics will book a paid onboarding call after a free trial, because setup is the main hurdle. We will know when 1 in 10 trial sign-ups books one within a month."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The numbers in these examples are illustrations. Pick your own threshold before launch, so the result cannot be argued afterwards.&lt;/p&gt;

&lt;p&gt;This sentence comes straight out of discovery: the problem statement says who is affected and why, and the goals give you the metric. If you cannot write it, the MVP is not ready to scope. You still need the discovery work, which &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-in-software-development?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mvp-scope-definition-article" rel="noopener noreferrer"&gt;the discovery phase in software development&lt;/a&gt; covers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cut-down questions for every feature
&lt;/h2&gt;

&lt;p&gt;Take each candidate feature and ask these questions in order. Stop at the first one that removes it from the MVP.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Does the business question fail without it?&lt;/strong&gt; If the experiment still works, it is not MVP scope.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Can a person do it by hand for now?&lt;/strong&gt; Manual onboarding, a spreadsheet report, an admin who approves accounts by email. If a human can cover it for the first hundred users, do not build it yet.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Can an existing tool do it?&lt;/strong&gt; Payments, email, sign-in and analytics rarely need to be built for an MVP.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Can it be narrower?&lt;/strong&gt; One user type instead of three, one region, one language, one payment method, one platform.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Is it a constraint you cannot negotiate?&lt;/strong&gt; Legal, security and data-location requirements stay in, however small the MVP. "Data stays in the EU" is not optional just because it is a first release.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;What does it cost compared with what it teaches?&lt;/strong&gt; A feature that takes a third of the budget and tests a side question should wait.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Question 5 is the one most often skipped. A non-functional requirement such as working offline, or a constraint such as where data is stored, can be the most expensive line in the MVP and still be required.&lt;/p&gt;

&lt;h2&gt;
  
  
  In, out and later
&lt;/h2&gt;

&lt;p&gt;Write the result as three lists and get them agreed. The "out" and "later" lists matter as much as the "in" list, because they are what stop scope from creeping back.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;List&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Example (field-service app)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;In&lt;/td&gt;
&lt;td&gt;Needed to answer the business question&lt;/td&gt;
&lt;td&gt;Day list of visits; close a visit with notes and photos; works without coverage; data stored in the EU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Later&lt;/td&gt;
&lt;td&gt;Valuable, planned after the MVP result&lt;/td&gt;
&lt;td&gt;Decline a visit with a reason; dispatcher alerts; third region&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Out&lt;/td&gt;
&lt;td&gt;Not planned, with the reason&lt;/td&gt;
&lt;td&gt;Customer-facing app (no evidence customers want it); built-in invoicing (the existing system does it)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you use MoSCoW priorities, "in" is roughly your Musts, "later" your Shoulds and Coulds, and "out" your Won'ts for this release. DSDM guidance, where MoSCoW comes from, is often summarised as keeping Musts to &lt;a href="https://digitalcommunications.wp.st-andrews.ac.uk/2016/08/05/moscow-prioritisation-is-on-effort/" rel="noopener noreferrer"&gt;no more than about 60% of the effort&lt;/a&gt;, so there is room to drop Shoulds and Coulds if the schedule slips. In an MVP the Musts are usually closer to the whole release, which is exactly why the list has to be short.&lt;/p&gt;

&lt;p&gt;This is what that looks like in the requirements of the Discovery Phase AI &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mvp-scope-definition-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt;, made for an invented field-service project called Fieldwise. Most rows are Musts, one is a Should, and the EU data rule appears as a Constraint rather than a feature:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fmvp-scope-definition%2Fexample-requirements-priorities.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fmvp-scope-definition%2Fexample-requirements-priorities.png" title="MVP requirements with type and priority" alt="Requirements table from the Fieldwise example report: five requirements with type (functional, non-functional, constraint), MoSCoW priority and approval status" width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Turning the MVP into requirements and an estimate
&lt;/h2&gt;

&lt;p&gt;The three lists are a decision. To build from them, turn each "in" item into a requirement a developer can test:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A short title and one sentence&lt;/strong&gt;: "A technician records work done, parts used, photos and a customer confirmation, then closes the visit."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: functional, non-functional or constraint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Priority&lt;/strong&gt;: Must for everything on the "in" list. If something on it feels like a Should, it probably belongs on "later".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Acceptance criteria&lt;/strong&gt;: how you will know it works. "A visit closed offline appears on the dispatcher's board within one minute of coverage returning."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The goal it serves&lt;/strong&gt;: every requirement should trace to the business question. One that does not is a sign that scope crept back in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then estimate in ranges, not single numbers, with the assumptions written next to them: team size, which integrations exist, what you are handling manually. If the range is larger than the budget, go back to the cut-down questions, not to the estimate. Squeezing the estimate is the slow way to cut scope; cutting a feature is the fast one.&lt;/p&gt;

&lt;p&gt;Finally, write the date or signal at which the MVP will be judged and what happens next for each outcome: build the "later" list, change direction, or stop. That decision is what the MVP is for.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-template?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mvp-scope-definition-article" rel="noopener noreferrer"&gt;discovery phase template&lt;/a&gt; has the requirements and roadmap sections in a form you can copy. The &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-checklist?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mvp-scope-definition-article" rel="noopener noreferrer"&gt;discovery phase checklist&lt;/a&gt; has the questions to check them against before the build starts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mvp-scope-definition-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=mvp-scope-definition-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/mvp-scope-definition" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>productmanagement</category>
      <category>softwareengineering</category>
      <category>mvp</category>
    </item>
    <item>
      <title>MoSCoW Prioritization: A Practical Guide With Examples</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Thu, 29 Oct 2026 08:14:13 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/moscow-prioritization-a-practical-guide-with-examples-5a63</link>
      <guid>https://dev.to/oleksandr_tytarenko/moscow-prioritization-a-practical-guide-with-examples-5a63</guid>
      <description>&lt;p&gt;MoSCoW sorts every requirement into one of four buckets: &lt;strong&gt;Must have&lt;/strong&gt;, &lt;strong&gt;Should have&lt;/strong&gt;, &lt;strong&gt;Could have&lt;/strong&gt; and &lt;strong&gt;Won't have (this time)&lt;/strong&gt;. It works when the buckets mean something: Musts are few enough to deliver with confidence, each Must has a test, and the Won't list is written down. This guide covers the definitions, two rules that keep the method honest, a worked example and the usual mistakes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four buckets
&lt;/h2&gt;

&lt;p&gt;MoSCoW comes from DSDM, an agile delivery framework now maintained by the Agile Business Consortium. The lower-case o's are only there to make the word pronounceable. The &lt;a href="https://www.agilebusiness.org/dsdm-project-framework/moscow-prioritisation.html" rel="noopener noreferrer"&gt;consortium's guidance&lt;/a&gt; defines the buckets roughly like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Bucket&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;The test&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Must have&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Without it the release fails: unsafe, illegal, unusable or pointless&lt;/td&gt;
&lt;td&gt;"If this is missing, do we cancel the launch?" If yes, it is a Must&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Should have&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Important, but there is a workaround, even a painful one&lt;/td&gt;
&lt;td&gt;"Can we go live with a manual fix or a delay?"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Could have&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Valuable, nice to have, first to drop when time runs short&lt;/td&gt;
&lt;td&gt;"Would anyone notice at launch if it were missing?"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Won't have (this time)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agreed to be out of this release or timeframe&lt;/td&gt;
&lt;td&gt;"Have we said out loud that we are not doing this now?"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two details matter more than they look:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The buckets apply to a timeframe&lt;/strong&gt;, usually a release or an MVP. A Won't today can be a Must in the next release.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Should is not "Must, but softer".&lt;/strong&gt; A Should has a workaround the business can live with for a while. If nobody can name the workaround, it is a Must.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Rules that keep Must have defensible
&lt;/h2&gt;

&lt;p&gt;Left alone, almost everything drifts into Must. Two rules stop that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 1: cap the Musts
&lt;/h3&gt;

&lt;p&gt;The Agile Business Consortium recommends that Must haves take no more than about &lt;strong&gt;60% of the total effort&lt;/strong&gt;, with Could haves around &lt;strong&gt;20%&lt;/strong&gt; as contingency. The cap is on effort, not on the number of items: ten small Musts can cost less than one large Should.&lt;/p&gt;

&lt;p&gt;The reason is arithmetic. Estimates are wrong in both directions, and if 90% of the planned work is Must, there is nothing to drop when something takes longer. With 60% Must and 20% Could, the team can lose all the Coulds and still ship every Must on time.&lt;/p&gt;

&lt;p&gt;If the Musts add up to more than the cap, you have three honest options: move some to Should, cut the scope of a Must (a simpler first version), or extend the timeframe. Pretending the cap does not apply is not one of them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rule 2: every Must has acceptance criteria
&lt;/h3&gt;

&lt;p&gt;A Must without acceptance criteria cannot be finished, because nobody can say when it is done. Write one or more checks a tester can pass or fail:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weak: "Users can book appointments."&lt;/li&gt;
&lt;li&gt;Strong: "A patient can book a free slot for a chosen therapist in at most three steps; the slot disappears for other patients within 5 seconds; the patient receives a confirmation email."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the room cannot agree on criteria for a Must, it is not understood well enough to be a Must yet. Record it as an open question with an owner.&lt;/p&gt;

&lt;h2&gt;
  
  
  A worked example
&lt;/h2&gt;

&lt;p&gt;An invented project: a small physiotherapy clinic wants an online booking MVP within three months. Phone calls take up the receptionist's mornings, and missed appointments cost revenue. The table shows how the requirements might be sorted.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Bucket&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;th&gt;Rough effort (person-days)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Patient books a free slot with a chosen therapist&lt;/td&gt;
&lt;td&gt;Must&lt;/td&gt;
&lt;td&gt;The whole point of the MVP&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clinic staff block and unblock time in the calendar&lt;/td&gt;
&lt;td&gt;Must&lt;/td&gt;
&lt;td&gt;Without it, slots are wrong from day one&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Confirmation email after booking&lt;/td&gt;
&lt;td&gt;Must&lt;/td&gt;
&lt;td&gt;Patients need proof; the clinic needs fewer calls&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Patient data stored in line with health-data rules&lt;/td&gt;
&lt;td&gt;Must&lt;/td&gt;
&lt;td&gt;Legal requirement, not a choice&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reminder email 24 hours before&lt;/td&gt;
&lt;td&gt;Should&lt;/td&gt;
&lt;td&gt;Cuts no-shows; the receptionist can call for now&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Patient cancels or moves a booking online&lt;/td&gt;
&lt;td&gt;Should&lt;/td&gt;
&lt;td&gt;Workaround: phone the clinic&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Waiting list for fully booked days&lt;/td&gt;
&lt;td&gt;Could&lt;/td&gt;
&lt;td&gt;Useful, but rare at current volume&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Patient uploads a referral letter&lt;/td&gt;
&lt;td&gt;Could&lt;/td&gt;
&lt;td&gt;Can be brought in on paper&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Online payment at booking&lt;/td&gt;
&lt;td&gt;Won't (this time)&lt;/td&gt;
&lt;td&gt;Needs a payment provider decision first&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mobile app&lt;/td&gt;
&lt;td&gt;Won't (this time)&lt;/td&gt;
&lt;td&gt;A responsive website covers the need&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Total planned effort is 32 person-days, of which the Musts are 19, about 59%. The Coulds are 7, about 22%. That fits the guideline. If the referral upload turned out to be legally required, it would move up to Must, and something else would have to move down or the deadline would move.&lt;/p&gt;

&lt;p&gt;The same structure works in a real discovery document. The &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=moscow-prioritization-guide-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt;, built for an invented field-service project called Fieldwise, shows each requirement with its type, MoSCoW priority and review status:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fmoscow-prioritization-guide%2Fexample-report-requirements.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fmoscow-prioritization-guide%2Fexample-report-requirements.png" title="Fieldwise example report: requirements, page 1" alt="Requirements table from the Fieldwise example report: REQ-001 to REQ-005 with type, priority (Must or Should) and status" width="799" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The second page holds the Should and Could items, such as equipment history and photo attachments:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fmoscow-prioritization-guide%2Fexample-report-requirements-page-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fmoscow-prioritization-guide%2Fexample-report-requirements-page-2.png" title="Fieldwise example report: requirements, page 2" alt="Second page of the Fieldwise requirements table with Should, Must and Could priorities for REQ-006 to REQ-010" width="799" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How Won't have prevents scope creep
&lt;/h2&gt;

&lt;p&gt;Most scope creep is not a new idea. It is an old idea nobody formally ruled out, coming back as "I thought that was included". A written Won't list closes that door:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It records a decision, not an omission.&lt;/strong&gt; "Online payment: Won't (this time), pending a payment provider decision" shows the topic was discussed and parked.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It gives a polite answer.&lt;/strong&gt; When a stakeholder asks for it mid-build, the reply is "It is on the agreed Won't list for this release; shall we raise a change request?", not a debate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It feeds the next release.&lt;/strong&gt; The Won't list is the first draft of the next backlog.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It protects the estimate.&lt;/strong&gt; An estimate is only valid for a scope. Listing what is out shows exactly what the number does not cover.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Put the Won't items in the same list as everything else, with the same IDs, rather than in a separate document. In the Fieldwise example above, routing suggestions are marked Could with the note "deferred to a later release after the pilot". Marking it Won't would say the same thing more clearly, which is a typical small fix a review catches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common mistakes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Everything is a Must.&lt;/strong&gt; If more than about 60% of the effort is Must, the bucket has stopped meaning anything. Apply the cancel-the-launch test to each one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prioritising without estimates.&lt;/strong&gt; The cap is about effort. Sorting before you have even a rough size per item means the 60% check cannot be done.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Won't list.&lt;/strong&gt; An empty Won't bucket usually means the conversation about what is out has not happened.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Should used as a parking lot.&lt;/strong&gt; Items nobody wants to argue about pile up in Should. Each Should needs a named workaround.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One person sorts alone.&lt;/strong&gt; MoSCoW is a negotiation between the people who pay, use and build. Sort with the decision maker in the room.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Buckets set once and never revisited.&lt;/strong&gt; Re-sort at each release, and whenever a Must turns out larger than estimated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Constraints treated as priorities.&lt;/strong&gt; A regulation or a mandated platform is not a choice the team can trade off. List it as a constraint (it is effectively always in scope) and spend the MoSCoW discussion on what can actually move.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A final check before sign-off: the &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-checklist?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=moscow-prioritization-guide-article" rel="noopener noreferrer"&gt;discovery phase checklist&lt;/a&gt; asks whether every Must has acceptance criteria, whether each requirement links to a goal, and whether priorities stay under about 60% Musts. If you can answer yes to all three, your MoSCoW list is ready to estimate against.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=moscow-prioritization-guide-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=moscow-prioritization-guide-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/moscow-prioritization-guide" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>productmanagement</category>
      <category>agile</category>
      <category>softwareengineering</category>
      <category>planning</category>
    </item>
    <item>
      <title>PRD vs BRD vs SRS: Which Requirements Document Do You Need?</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Wed, 28 Oct 2026 08:09:53 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/prd-vs-brd-vs-srs-which-requirements-document-do-you-need-4opm</link>
      <guid>https://dev.to/oleksandr_tytarenko/prd-vs-brd-vs-srs-which-requirements-document-do-you-need-4opm</guid>
      <description>&lt;p&gt;A BRD (business requirements document) explains why a project exists and what the business needs from it. A PRD (product requirements document) describes what the product does for its users. An SRS (software requirements specification) states, precisely enough to build and test against, how the system must behave. Most small projects need the content of all three but not three separate files.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three documents in one table
&lt;/h2&gt;

&lt;p&gt;The names are used loosely, and two companies can mean slightly different things by "PRD". The table shows the most common reading of each.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;BRD&lt;/th&gt;
&lt;th&gt;PRD&lt;/th&gt;
&lt;th&gt;SRS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Question it answers&lt;/td&gt;
&lt;td&gt;Why are we doing this, and what must the business get?&lt;/td&gt;
&lt;td&gt;What will the product do, for whom?&lt;/td&gt;
&lt;td&gt;Exactly how must the system behave?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main readers&lt;/td&gt;
&lt;td&gt;Sponsor, budget holder, steering group&lt;/td&gt;
&lt;td&gt;Product, design, engineering leads&lt;/td&gt;
&lt;td&gt;Developers, testers, integrators, sometimes auditors&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Usually written by&lt;/td&gt;
&lt;td&gt;Business analyst or sponsor&lt;/td&gt;
&lt;td&gt;Product manager&lt;/td&gt;
&lt;td&gt;Business or systems analyst, tech lead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical content&lt;/td&gt;
&lt;td&gt;Problem, goals, success metrics, scope, constraints, stakeholders&lt;/td&gt;
&lt;td&gt;Users, journeys, features, priorities, release scope&lt;/td&gt;
&lt;td&gt;Functional and non-functional requirements, interfaces, data, acceptance criteria&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typical length (rule of thumb)&lt;/td&gt;
&lt;td&gt;3-10 pages&lt;/td&gt;
&lt;td&gt;5-20 pages&lt;/td&gt;
&lt;td&gt;15-60+ pages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Changes how often&lt;/td&gt;
&lt;td&gt;Rarely, once approved&lt;/td&gt;
&lt;td&gt;Every release or so&lt;/td&gt;
&lt;td&gt;With every change request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;When a small team can skip it&lt;/td&gt;
&lt;td&gt;When the sponsor and the product owner are the same person&lt;/td&gt;
&lt;td&gt;When the SRS is short and user-centred&lt;/td&gt;
&lt;td&gt;When the PRD already has testable requirements&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The lengths are a rule of thumb from typical projects, not a standard. A regulated system can need a far longer SRS; a two-month internal tool might fit all three into twelve pages.&lt;/p&gt;

&lt;p&gt;Of the three, only the SRS has a formal standard behind it. &lt;a href="https://en.wikipedia.org/wiki/Software_requirements_specification" rel="noopener noreferrer"&gt;ISO/IEC/IEEE 29148&lt;/a&gt; (current edition 2018, which replaced IEEE 830) describes the content of a software requirements specification, and also of a business requirements specification (BRS) and a stakeholder requirements specification. The PRD comes from product-management practice and has no single agreed format.&lt;/p&gt;

&lt;h2&gt;
  
  
  BRD: why the project exists
&lt;/h2&gt;

&lt;p&gt;The BRD is the document a budget holder reads before saying yes. It should be readable by someone who will never open the code, and it should hold up if the project is challenged six months later.&lt;/p&gt;

&lt;p&gt;What goes in it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The problem&lt;/strong&gt;, in business terms: who is affected, what goes wrong, what it costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goals with numbers&lt;/strong&gt;: a metric, today's value, a target and a date. "Cut manual order entry from 6 hours to 1 hour a day by Q3" works; "improve efficiency" does not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope&lt;/strong&gt;: what is in, and just as important, what is out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stakeholders&lt;/strong&gt;: who approves, who is consulted, who can block.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Constraints&lt;/strong&gt;: budget, deadline, regulation, systems that must stay.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What stays out: screens, feature lists and technology choices. If the BRD names a database, it has drifted into the SRS.&lt;/p&gt;

&lt;p&gt;Here is what the goals part can look like in practice, taken from the &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=prd-vs-brd-vs-srs-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt; for Fieldwise, an invented field-service project: each goal has its success metrics and a target date, and the KPIs show today's value, the trend and the target.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fprd-vs-brd-vs-srs%2Fexample-report-goals.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fprd-vs-brd-vs-srs%2Fexample-report-goals.png" title="Fieldwise example report: goals and KPIs" alt="Goals and success metrics from the Fieldwise example report: three goals with metric counts and target dates, and three KPIs with current value, trend, target and owner" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PRD: what the product does
&lt;/h2&gt;

&lt;p&gt;The PRD turns the business case into a product. Its reader is the team that will design and plan the build, so it is organised around users rather than around the business.&lt;/p&gt;

&lt;p&gt;A useful PRD covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;users and actors&lt;/strong&gt;, with what each is trying to achieve.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;journeys&lt;/strong&gt; they take and where they get stuck today.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;features&lt;/strong&gt; or user stories, each with a priority (MoSCoW is common: Must, Should, Could, Won't).&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;release scope&lt;/strong&gt;: what ships first and what waits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open questions&lt;/strong&gt; and the person who answers each.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A PRD is a living document. It is fine for it to change between releases, as long as the change is visible and the BRD's goals still hold.&lt;/p&gt;

&lt;h2&gt;
  
  
  SRS: how the system must behave
&lt;/h2&gt;

&lt;p&gt;The SRS is the contract between "what we want" and "what we test". Each line in it should be something a tester can pass or fail. The &lt;a href="https://en.wikipedia.org/wiki/Software_requirements_specification" rel="noopener noreferrer"&gt;29148 standard&lt;/a&gt; lists quality criteria for a requirement such as being necessary, unambiguous, feasible and verifiable.&lt;/p&gt;

&lt;p&gt;A typical SRS holds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Functional requirements&lt;/strong&gt;: what the system does in response to input ("When an order total is over the customer's credit limit, the system blocks submission and shows the limit").&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Non-functional requirements&lt;/strong&gt;: performance, security, availability, accessibility, data retention, each with a number.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Constraints&lt;/strong&gt;: limits the team cannot change, such as a mandated platform, a regulation or a hosting region.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interfaces and data&lt;/strong&gt;: integrations, formats, who owns which data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Acceptance criteria&lt;/strong&gt; for each requirement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The SRS gets long because precision is wordy. That is acceptable; vagueness is not.&lt;/p&gt;

&lt;p&gt;In the same Fieldwise example, the requirements list keeps the three types side by side, each with an ID, a priority and a review status (the acceptance criteria open under each row):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fprd-vs-brd-vs-srs%2Fexample-report-requirements.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fprd-vs-brd-vs-srs%2Fexample-report-requirements.png" title="Fieldwise example report: requirements" alt="Requirements table from the Fieldwise example report: functional, non-functional and constraint requirements REQ-001 to REQ-005 with priority and status" width="799" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Which one to write first
&lt;/h2&gt;

&lt;p&gt;Write them in the order the decisions are made: business case, then product, then system.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;BRD first.&lt;/strong&gt; Without agreed goals and scope, every later argument about a feature has no referee.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;PRD second.&lt;/strong&gt; Once the goals are fixed, decide who the product serves and what it must let them do.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;SRS last&lt;/strong&gt;, and often in slices: detail the requirements for the first release, and leave later ones at PRD level until they are next.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In practice the three overlap. Interviews for the BRD surface features; writing acceptance criteria reveals a missing goal. Expect to go back and edit, but keep the direction: an SRS line that serves no goal in the BRD is either missing a goal or should not be there.&lt;/p&gt;

&lt;p&gt;In a client project, all three usually come out of the &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-in-software-development?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=prd-vs-brd-vs-srs-article" rel="noopener noreferrer"&gt;discovery phase&lt;/a&gt;, the paid stretch before the build where the team settles what to build and what it will take.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a small team can merge
&lt;/h2&gt;

&lt;p&gt;For a team of two to ten people, three separate documents with three owners is usually overhead. A single requirements document with clearly marked parts carries the same information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Part 1, business&lt;/strong&gt; (the BRD content): problem, goals with metrics, scope in and out, stakeholders, constraints. Two or three pages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Part 2, users and scope&lt;/strong&gt; (the PRD content): users, journeys, prioritised features, first release.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Part 3, requirements&lt;/strong&gt; (the SRS content): numbered requirements, each with a type (functional, non-functional, constraint), a priority, acceptance criteria and the goal it serves.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-template?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=prd-vs-brd-vs-srs-article" rel="noopener noreferrer"&gt;discovery phase template&lt;/a&gt; follows roughly this shape, from stakeholders and problem statement through requirements and roadmap. Discovery Phase AI keeps the same structure as separate project stages: each requirement carries a type, a MoSCoW priority, acceptance criteria and an optional link to a goal, and the whole set exports as one report (you can see one for an invented project on the &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=prd-vs-brd-vs-srs-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;What you should not merge away:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The "why" section.&lt;/strong&gt; Teams that skip the BRD content end up debating features with nothing to judge them against.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Acceptance criteria.&lt;/strong&gt; Without them the requirements part is a wish list, and the estimate built on it is a guess.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The out-of-scope list.&lt;/strong&gt; It costs a paragraph and prevents weeks of argument later.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keep separate documents when the audiences really are separate: an outside sponsor who must approve the business case, a regulator who will audit the SRS, or a vendor contract that refers to a specification by name. Otherwise, one well-structured document read by everyone beats three documents that half the team never opens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=prd-vs-brd-vs-srs-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=prd-vs-brd-vs-srs-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/prd-vs-brd-vs-srs" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>requirements</category>
      <category>productmanagement</category>
      <category>softwareengineering</category>
      <category>documentation</category>
    </item>
    <item>
      <title>Open Questions and Assumptions Log: Keep Unknowns Visible</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Tue, 27 Oct 2026 08:06:34 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/open-questions-and-assumptions-log-keep-unknowns-visible-2005</link>
      <guid>https://dev.to/oleksandr_tytarenko/open-questions-and-assumptions-log-keep-unknowns-visible-2005</guid>
      <description>&lt;p&gt;An open-questions log lists what you do not know yet, with a named owner and a due date for each item. An assumptions list records what the plan treats as true without proof, and which part of the estimate depends on it. Keep both from the first discovery call, review them every week, and close or carry forward every item before sign-off. Most scope arguments later in a project start with an unknown that nobody wrote down.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why unknowns cause disputes
&lt;/h2&gt;

&lt;p&gt;During discovery everyone hears the same unknowns: "We think the legacy system has an export." "Legal still has to confirm whether we can store this data." "Marketing may want a second language." People say these things on calls, everyone nods, and the conversation moves on.&lt;/p&gt;

&lt;p&gt;Three months later the build team finds the legacy system has no export. The client remembers the plan as covering the integration. The vendor remembers it as resting on an assumption. Neither can show a written record, so the gap turns into a debate about the contract rather than a planned change.&lt;/p&gt;

&lt;p&gt;Writing unknowns down does not make them go away. It changes who is surprised. A logged assumption that turns out false is a known risk with an agreed next step. An unlogged one is a dispute.&lt;/p&gt;

&lt;p&gt;Project management practice treats this as a standard document: an assumptions log started at project initiation, with each entry's date, impact and owner, kept up to date as the project runs (&lt;a href="https://www.projectmanager.com/blog/project-assumptions" rel="noopener noreferrer"&gt;a short guide to project assumptions&lt;/a&gt;). You do not need a heavy process for it. You need a list that people actually read.&lt;/p&gt;

&lt;h2&gt;
  
  
  The open-questions log
&lt;/h2&gt;

&lt;p&gt;Keep it to three required columns, plus a few optional ones:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Owner&lt;/th&gt;
&lt;th&gt;Due&lt;/th&gt;
&lt;th&gt;Blocks&lt;/th&gt;
&lt;th&gt;Answer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Does the payment provider support partial refunds?&lt;/td&gt;
&lt;td&gt;Client finance lead&lt;/td&gt;
&lt;td&gt;14 Nov&lt;/td&gt;
&lt;td&gt;Refund flow (REQ-12)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who approves copy changes on the checkout page?&lt;/td&gt;
&lt;td&gt;Client marketing&lt;/td&gt;
&lt;td&gt;7 Nov&lt;/td&gt;
&lt;td&gt;Nothing yet&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can we use the existing customer database for log-in?&lt;/td&gt;
&lt;td&gt;Client IT&lt;/td&gt;
&lt;td&gt;10 Nov&lt;/td&gt;
&lt;td&gt;Architecture decision on sign-in&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Rules that keep it useful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One question per row&lt;/strong&gt;, phrased so it can be answered with a fact or a decision. "What about payments?" is not a question; "Which payment provider do we integrate with?" is.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The owner is a person, not a team.&lt;/strong&gt; "Client IT" is fine as a label as long as one person there has agreed to answer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A due date, even a rough one.&lt;/strong&gt; A question with no date stays open forever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Blocks" says what waits for the answer.&lt;/strong&gt; This is what lets you rank the list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The answer is written into the row.&lt;/strong&gt; Then the row is closed. Do not delete it, because the record of what was decided and when is the point.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Review the log at the end of every discovery workshop and in a short weekly check. New questions come up all the time; what matters is that they land in the log the same day.&lt;/p&gt;

&lt;h2&gt;
  
  
  The assumptions list and how it ties to the estimate
&lt;/h2&gt;

&lt;p&gt;An assumption is different from a question. A question is something you will get an answer to. An assumption is something you decide to treat as true so the plan can go on, usually because checking it would take longer than discovery has.&lt;/p&gt;

&lt;p&gt;Each assumption should say three things: what you assume, what in the plan depends on it, and what changes if it is wrong.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; "The client's product API returns stock levels in real time. Depends: milestone M2 (catalogue). If wrong: add a nightly sync job, roughly 3-5 person-weeks."&lt;/li&gt;
&lt;li&gt; "Two backend and one frontend developer from week 1. Depends: every milestone date. If wrong: dates move proportionally."&lt;/li&gt;
&lt;li&gt; "No content migration from the old site. Depends: M4 (launch). If wrong: migration becomes its own milestone, to be estimated."&lt;/li&gt;
&lt;li&gt; "No holiday freeze in December. Depends: the release date."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The "if wrong" part is what makes an estimate honest. A range of 30-40 person-weeks is only a range under those assumptions. When an estimate goes to a client or into a contract, the assumptions list should go with it. If you price the work as fixed, the assumptions mark where the price stops.&lt;/p&gt;

&lt;p&gt;Some assumptions are really constraints: limits the team cannot change, such as a regulation, a fixed platform or a budget cap. Keep them in the same list but label them, because a constraint is not something you test. It is something you design around.&lt;/p&gt;

&lt;p&gt;In Discovery Phase AI, the roadmap stage keeps assumptions as one-line entries beside the milestones and their low-high person-week estimates, so they appear in the same place as the numbers they qualify. A spreadsheet tab beside the estimate does the same job if you keep it current.&lt;/p&gt;

&lt;h2&gt;
  
  
  Blockers: the unknowns that stop work
&lt;/h2&gt;

&lt;p&gt;Some open questions are urgent. They stop a milestone or a decision from going ahead. Track them as a separate type so they cannot hide in a long list:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;How fast it needs attention&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Open question&lt;/td&gt;
&lt;td&gt;Something not yet known&lt;/td&gt;
&lt;td&gt;Who approves checkout copy?&lt;/td&gt;
&lt;td&gt;By its due date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Risk&lt;/td&gt;
&lt;td&gt;Something that may go wrong&lt;/td&gt;
&lt;td&gt;The vendor's API may be rate-limited&lt;/td&gt;
&lt;td&gt;Watch, plan a response&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blocker&lt;/td&gt;
&lt;td&gt;Something that stops work now&lt;/td&gt;
&lt;td&gt;No test account for the payment provider&lt;/td&gt;
&lt;td&gt;Escalate this week&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A blocker needs an owner with the power to remove it, which is often someone more senior than the person who raised it. If a blocker sits for more than a week, the delivery plan is already wrong, and the people who own the plan should hear it from you first.&lt;/p&gt;

&lt;p&gt;Discovery Phase AI keeps blockers, risks and open questions as one typed list per project. Each item is either Active or Resolved and can point at the stage it came from. You can also create an item by selecting a sentence in a stage, such as a requirement that depends on an unconfirmed fact. Here is that list in the &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-questions-and-assumptions-log-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt;, made for an invented project called Fieldwise:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fopen-questions-and-assumptions-log%2Fexample-risks-blockers-questions.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fopen-questions-and-assumptions-log%2Fexample-risks-blockers-questions.png" title="One typed list for blockers, risks and questions" alt="Risks, blockers and open questions table from the Fieldwise example report: one blocker, two risks and two questions, each with the stage it is linked to, its state and the date raised" width="800" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing items before sign-off
&lt;/h2&gt;

&lt;p&gt;Before the client signs off on discovery, go through both lists item by item. Every entry ends in one of three states:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Answered or confirmed.&lt;/strong&gt; The answer is written in, and anything it changed (a requirement, an estimate, a decision) has been updated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accepted as a known unknown.&lt;/strong&gt; The client and the team agree it stays open into the build. It needs an owner, a date and a note in the scope or estimate saying what happens if the answer goes the wrong way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dropped.&lt;/strong&gt; It no longer matters because scope changed. Say so in the row.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing stays open just because nobody looked at it. Discovery Phase AI enforces this at the project level: a project cannot be marked done while any blocker, risk or open question is still active. Even without a tool, a simple rule works: sign-off happens only when every row has a state.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-checklist?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-questions-and-assumptions-log-article" rel="noopener noreferrer"&gt;discovery phase checklist&lt;/a&gt; asks about both lists in its estimates section:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fopen-questions-and-assumptions-log%2Fchecklist-estimates-and-risks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fopen-questions-and-assumptions-log%2Fchecklist-estimates-and-risks.png" title="From the discovery phase checklist" alt="The Estimates, roadmap and risks section of the discovery phase checklist, including the questions about assumptions behind estimates and who answers open questions by when" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For where these lists fit among the other discovery outputs, see &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-in-software-development?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-questions-and-assumptions-log-article" rel="noopener noreferrer"&gt;the discovery phase in software development&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hand both lists to the build team with the rest of the discovery document. To them, the open items are the most useful part: they show where the plan is still soft.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-questions-and-assumptions-log-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=open-questions-and-assumptions-log-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/open-questions-and-assumptions-log" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>projectmanagement</category>
      <category>productmanagement</category>
      <category>planning</category>
    </item>
    <item>
      <title>Discovery Handoff: What the Build Team Needs on Day One</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Mon, 26 Oct 2026 08:01:12 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/discovery-handoff-what-the-build-team-needs-on-day-one-4gl1</link>
      <guid>https://dev.to/oleksandr_tytarenko/discovery-handoff-what-the-build-team-needs-on-day-one-4gl1</guid>
      <description>&lt;p&gt;A good discovery handoff gives the build team five things: the agreed scope and priorities, the decisions with the reasons behind them, the open questions and assumptions, the access they need, and one named person who owns changes. Put it all in one document and walk through it in a single meeting. Do not count on the team piecing it together from slides, call recordings and chat threads. Below is the checklist, a 60-minute meeting plan and the rules for what happens after.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why handoffs lose information
&lt;/h2&gt;

&lt;p&gt;The people who ran the discovery know far more than they wrote down. They remember why a feature was cut, which stakeholder pushed back, and which number in the estimate was a guess. The build team gets the document, not the memory. Information usually goes missing in four places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The reasons.&lt;/strong&gt; A requirement or architecture choice arrives without the reason for it, so the team either follows it blindly or quietly changes it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The unknowns.&lt;/strong&gt; Open questions were discussed on calls but never logged, so nobody knows they are still open.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The estimate.&lt;/strong&gt; The number travels and its assumptions do not. A range of 30-40 person-weeks that assumed an existing API turns into a promise once that API proves not to exist.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The people.&lt;/strong&gt; The developers do not know who on the client side can answer a question, or who has the final say.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Often the same company runs discovery and delivery, just with different people. The handoff problem is the same, because the people who carry the context are not the ones who build.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the build team must receive
&lt;/h2&gt;

&lt;p&gt;Use this as the checklist for the handoff package. If an item is missing, write down that it is missing. Do not let it look complete.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;What "done" looks like&lt;/th&gt;
&lt;th&gt;Usual owner&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Scope and priorities&lt;/td&gt;
&lt;td&gt;Every requirement has a priority (for example Must, Should, Could, Won't) and the first release is agreed in writing&lt;/td&gt;
&lt;td&gt;Product owner or PM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Requirements&lt;/td&gt;
&lt;td&gt;Each Must is testable and has acceptance criteria&lt;/td&gt;
&lt;td&gt;Business analyst&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Users and flows&lt;/td&gt;
&lt;td&gt;Main journeys and key processes drawn and reviewed&lt;/td&gt;
&lt;td&gt;Designer or analyst&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Architecture&lt;/td&gt;
&lt;td&gt;A context diagram, the integrations, and decision records&lt;/td&gt;
&lt;td&gt;Solution architect&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Estimate and roadmap&lt;/td&gt;
&lt;td&gt;Milestones with low-high ranges and the assumptions behind them&lt;/td&gt;
&lt;td&gt;Delivery lead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open questions and risks&lt;/td&gt;
&lt;td&gt;Each with an owner and a due date&lt;/td&gt;
&lt;td&gt;PM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Access&lt;/td&gt;
&lt;td&gt;Repositories, environments, test accounts, API keys requested through the proper channel, design files&lt;/td&gt;
&lt;td&gt;Client IT and PM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;People&lt;/td&gt;
&lt;td&gt;Who answers which kind of question, who approves changes, how fast&lt;/td&gt;
&lt;td&gt;PM&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-checklist?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-handoff-to-development-team-article" rel="noopener noreferrer"&gt;discovery phase checklist&lt;/a&gt; has the questions to ask before you call each of these finished. If you need a refresher on what discovery is meant to produce, see &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-in-software-development?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-handoff-to-development-team-article" rel="noopener noreferrer"&gt;the discovery phase in software development&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Two of these items deserve their own section, because they are the ones most often missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Decisions and the reasons behind them
&lt;/h2&gt;

&lt;p&gt;Every significant choice made during discovery should arrive as a short record: the question, the options considered, what was chosen, and what that choice means for the work. This is the architecture decision record (ADR) format Michael Nygard described in 2011. His argument still holds: someone who joins later and does not know why a decision was made can only &lt;a href="https://www.cognitect.com/blog/2011/11/15/documenting-architecture-decisions" rel="noopener noreferrer"&gt;accept it blindly or reverse it blindly&lt;/a&gt;, and both are expensive.&lt;/p&gt;

&lt;p&gt;For a handoff, a decision record needs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Title and number&lt;/strong&gt;, so it can be cited ("ADR-4: Use the client's existing identity provider").&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Context&lt;/strong&gt;: the constraint or pressure behind the choice (a contract, a deadline, a team skill, a cost).&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Options compared&lt;/strong&gt;, including the ones rejected and why.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Decision&lt;/strong&gt; in one or two sentences.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Consequences&lt;/strong&gt;: what it makes easier, what it makes harder, what it rules out.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Status&lt;/strong&gt;: proposed or accepted. A decision still at "proposed" is really an open question and belongs on the next list too.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here is how that looks in the Discovery Phase AI example report, built for an invented field-service project called Fieldwise. Each decision has a number, a status and the number of options compared, and links to the requirements it covers. ADR-003 is still proposed, so it goes to the build team as an open item.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fdiscovery-handoff-to-development-team%2Fexample-decision-records.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fdiscovery-handoff-to-development-team%2Fexample-decision-records.png" title="Decision records in the example report" alt="Architecture section of the Fieldwise example report: three diagrams and three decision records, ADR-001 and ADR-002 accepted, ADR-003 proposed" width="799" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Do not limit this to technical decisions. Scope decisions matter just as much: "Offline mode is out of release one because the client's field staff always have coverage" will save an argument three months later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open questions and assumptions
&lt;/h2&gt;

&lt;p&gt;No discovery closes every question. What matters is that the open ones are visible, owned and dated. Give the build team two lists:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open questions&lt;/strong&gt;: what is not known yet, who will answer, by when, and what work is blocked until then. "Does the payment provider support partial refunds? Owner: client finance lead. Due: sprint 2. Blocks: refund flow."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assumptions&lt;/strong&gt;: what the plan treats as true without proof. Tie each one to the estimate or milestone it affects. "The client's product API returns stock levels in real time. If not, add 3-5 person-weeks for a sync job."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mark the blockers separately: questions that stop a milestone from starting. The team should see them on the first day, not on the day the blocked work begins.&lt;/p&gt;

&lt;p&gt;In the Fieldwise example, the assumptions sit right under the milestones and their person-week ranges. The first one, that IT will expose two missing API endpoints, is exactly the kind of assumption a build team needs to check in week one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fdiscovery-handoff-to-development-team%2Fexample-roadmap-assumptions.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fdiscovery-handoff-to-development-team%2Fexample-roadmap-assumptions.png" title="Milestones and the assumptions behind them" alt="Roadmap section of the Fieldwise example report: four milestones with low-high estimates totalling 16-22 person-weeks, and four assumptions listed below them" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Discovery Phase AI keeps risks, blockers and open questions as one list on each project, and the project cannot be marked done while any of them is still active. That is one way to make sure nothing is closed quietly. Whatever tool you use, the rule is the same: an unknown that is not written down will be treated as a known.&lt;/p&gt;

&lt;h2&gt;
  
  
  The handover meeting
&lt;/h2&gt;

&lt;p&gt;One meeting, 60 minutes, with the people who ran discovery, the build team leads and the client's product owner. Send the package two days before and ask everyone to read it. Use the meeting for questions, not for reading slides aloud.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Minutes&lt;/th&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;th&gt;Who leads&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0-5&lt;/td&gt;
&lt;td&gt;The goal of the project and the business question release one must answer&lt;/td&gt;
&lt;td&gt;Product owner&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5-15&lt;/td&gt;
&lt;td&gt;Scope: what is in release one, what is out, what is later&lt;/td&gt;
&lt;td&gt;PM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15-30&lt;/td&gt;
&lt;td&gt;Architecture and key decisions, including the rejected options&lt;/td&gt;
&lt;td&gt;Architect&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30-40&lt;/td&gt;
&lt;td&gt;Estimate, milestones and the assumptions they depend on&lt;/td&gt;
&lt;td&gt;Delivery lead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40-50&lt;/td&gt;
&lt;td&gt;Open questions, blockers and risks: confirm each owner and date&lt;/td&gt;
&lt;td&gt;PM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;50-55&lt;/td&gt;
&lt;td&gt;Access and environments: what is ready, what is still requested&lt;/td&gt;
&lt;td&gt;PM and client IT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;55-60&lt;/td&gt;
&lt;td&gt;How changes will be raised and approved from now on&lt;/td&gt;
&lt;td&gt;Product owner&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Record two outputs. The first is a list of new questions the build team raised, added to the open-questions log with owners. The second is a short note confirming that the build team accepts the package as the starting point, or naming what it does not accept yet. That note is the real end of discovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  After the handoff: who owns changes
&lt;/h2&gt;

&lt;p&gt;The discovery document becomes the baseline. From then on it should change only on purpose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One owner&lt;/strong&gt; for scope and priorities, usually the client's product owner. The build team can propose changes; that owner approves them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Changes are recorded, not overwritten.&lt;/strong&gt; When a decision is reversed, add a new decision record that supersedes the old one. When an assumption proves false, update the estimate it was tied to and say so.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open questions close with an answer&lt;/strong&gt;, written into the item itself, not into a chat thread.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The discovery team stays reachable&lt;/strong&gt; for a set period (the first two or three sprints is common practice) to answer "why" questions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you produce the discovery in Discovery Phase AI, the report exports as PDF, Word, PowerPoint or Markdown (Markdown only on the Free plan), so the build team can take the baseline into their own tools. The whole Fieldwise report is in the &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-handoff-to-development-team-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A handoff is finished when the build team can start without calling the discovery team on the first day. They will still call later, and those calls should be about details, not about what was decided.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-handoff-to-development-team-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=discovery-handoff-to-development-team-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/discovery-handoff-to-development-team" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>projectmanagement</category>
      <category>productmanagement</category>
      <category>documentation</category>
    </item>
    <item>
      <title>How to Estimate a Software Project: Give a Range</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Sun, 25 Oct 2026 08:01:02 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/how-to-estimate-a-software-project-give-a-range-4n8e</link>
      <guid>https://dev.to/oleksandr_tytarenko/how-to-estimate-a-software-project-give-a-range-4n8e</guid>
      <description>&lt;p&gt;To estimate a software project, split the work into milestones, give each one a low, a likely and a high figure in person-weeks, write down the assumptions those figures rest on, and add a contingency with a stated rule for using it. The client gets a range they can budget against and a list of what would move it. This article walks through each step with an example table you can copy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why one number misleads
&lt;/h2&gt;

&lt;p&gt;A single figure such as "26 weeks" sounds precise, but it hides how much is still unknown. Two people can agree on it while one hears "at most" and the other hears "about". When the project lands at 31 weeks, the conversation is about broken promises rather than about which assumption changed.&lt;/p&gt;

&lt;p&gt;Estimation research explains why a range is more honest. Steve McConnell's "cone of uncertainty", based on Barry Boehm's work, describes estimates made at the initial-concept stage as being off by up to 4x in either direction, narrowing as requirements, design and decisions are settled (&lt;a href="https://www.construx.com/blog/the-cone-of-uncertainty/" rel="noopener noreferrer"&gt;Construx&lt;/a&gt;). McConnell presents those bounds as close to the best case a skilled estimator can reach at each point, not the worst. A finished discovery phase puts you further along the cone than a first sales call, but not at the end of it.&lt;/p&gt;

&lt;p&gt;So the job is not to make the uncertainty disappear. It is to show it, explain where it comes from, and say how it will shrink.&lt;/p&gt;

&lt;h2&gt;
  
  
  Break the work into milestones
&lt;/h2&gt;

&lt;p&gt;Estimate milestones, not the project as a whole. A milestone is a result someone can see ("Technicians can complete a visit offline"), linked to the requirements it delivers. Splitting the work this way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Exposes the hard parts.&lt;/strong&gt; An integration estimated on its own gets a wide range; buried in a project total, it disappears.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lets ranges differ.&lt;/strong&gt; The first milestone, which the team understands best, can have a tight range while later ones stay wider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Makes trade-offs concrete.&lt;/strong&gt; If the client wants a lower total, they can see which milestone or requirement to cut.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A rule of thumb: milestones of two to six weeks of effort are easy to estimate and to track. One milestone holding half the project is a sign it needs splitting. Every Must-have requirement should be linked to some milestone; anything unlinked is either out of scope or missing from the estimate.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fhow-to-estimate-a-software-project%2Fexample-report-milestone-estimates.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fhow-to-estimate-a-software-project%2Fexample-report-milestone-estimates.png" title="Milestones with ranges and assumptions in the example report" alt="Example discovery report roadmap for the invented Fieldwise project: four milestones with low to high person-week estimates, a 16-22 person-week total and a list of assumptions" width="799" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The screenshot above is from our &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-to-estimate-a-software-project-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt;, built for an invented project called Fieldwise: each milestone carries a low–high estimate, the total is shown as a range, and the assumptions sit right below the table.&lt;/p&gt;

&lt;h2&gt;
  
  
  Low, likely and high per milestone
&lt;/h2&gt;

&lt;p&gt;For each milestone, ask the people who will do the work for three figures in person-weeks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Low:&lt;/strong&gt; if the assumptions hold and nothing surprising turns up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Likely:&lt;/strong&gt; what they would bet on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High:&lt;/strong&gt; if the known risks happen, but not a catastrophe.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want one planning figure per milestone, the PERT formula weights the likely case: (low + 4 × likely + high) / 6 (&lt;a href="https://en.wikipedia.org/wiki/Three-point_estimation" rel="noopener noreferrer"&gt;three-point estimation&lt;/a&gt;). Use it for planning, but show the client the range.&lt;/p&gt;

&lt;p&gt;An example for an invented field-service app, three developers and a designer:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Milestone&lt;/th&gt;
&lt;th&gt;Low (pw)&lt;/th&gt;
&lt;th&gt;Likely (pw)&lt;/th&gt;
&lt;th&gt;High (pw)&lt;/th&gt;
&lt;th&gt;PERT (pw)&lt;/th&gt;
&lt;th&gt;Main uncertainty&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;M1 Foundation and sign-in&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;5.0&lt;/td&gt;
&lt;td&gt;Low: well-known work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M2 Offline technician app&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;8.3&lt;/td&gt;
&lt;td&gt;Sync conflicts on poor connections&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M3 Dispatch system integration&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;6.3&lt;/td&gt;
&lt;td&gt;Partner API not yet documented&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M4 Supervisor dashboard&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;3.5&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;3.7&lt;/td&gt;
&lt;td&gt;Report formats not agreed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M5 Pilot and fixes&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;3.2&lt;/td&gt;
&lt;td&gt;Number of pilot defects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;25.5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;37&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;26.5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Report the total as "20 to 37 person-weeks, most likely around 26". Sum the lows and the highs separately; do not average the range away. Note that the whole project is unlikely to hit every high at once, so the true spread is somewhat narrower than the simple sum; for a client-facing estimate the simple sum is easier to explain and errs on the safe side.&lt;/p&gt;

&lt;p&gt;Person-weeks are effort, not calendar time. Turning them into dates needs the team size, how much of their time is on this project, holidays, and how much of the work can run in parallel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write the assumptions and exclusions
&lt;/h2&gt;

&lt;p&gt;The range is only as good as the list of things it assumes. Write them as short, checkable sentences next to the estimate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Team:&lt;/strong&gt; "Three developers and one designer, full time from 3 November."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Third parties:&lt;/strong&gt; "The dispatch API exposes the two missing endpoints by the end of month one."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client input:&lt;/strong&gt; "Feedback on each milestone demo within three working days."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope limits:&lt;/strong&gt; "Two regions in the first release; the third later."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical:&lt;/strong&gt; "Photos up to 5 MB, at most six per visit."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then list the exclusions: things a reader might expect but that are not in the figures, such as data migration from the old system, translations, app store submission, or ongoing hosting. An exclusion written down is a scope decision; one left unsaid is a future dispute.&lt;/p&gt;

&lt;p&gt;Each assumption is also a trigger. If it turns out false, the estimate is reopened, and both sides already agreed that it would be.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fhow-to-estimate-a-software-project%2Fchecklist-estimates-section.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fhow-to-estimate-a-software-project%2Fchecklist-estimates-section.png" title="The estimates section of the discovery phase checklist" alt="Discovery phase checklist section on estimates, roadmap and risks: ranges with assumptions, milestones, dependencies, risks with owners and open questions" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-checklist?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-to-estimate-a-software-project-article" rel="noopener noreferrer"&gt;discovery phase checklist&lt;/a&gt; uses the same test for this part of discovery: estimates as ranges, with the assumptions behind them, and each risk with an owner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Add a contingency and say how it is used
&lt;/h2&gt;

&lt;p&gt;Even a good range does not cover everything. A contingency is a separate, named amount for the unknowns nobody listed. Three things make it work:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Keep it separate.&lt;/strong&gt; Do not hide it inside the milestone figures, or nobody can tell estimate from buffer.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Size it to the risk.&lt;/strong&gt; There is no universal percentage. A common rule of thumb is to size it from the risk list: the wider the ranges on the riskiest milestones and the more external dependencies, the larger the reserve. Say what you based it on.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Agree the rule for spending it.&lt;/strong&gt; For example: the delivery lead may draw on it for work inside the agreed scope, reports each use at the next review, and any new feature is a change request, not contingency.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A contingency the client can see and track builds trust. One they discover later looks like padding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Revisit the estimate at set points
&lt;/h2&gt;

&lt;p&gt;An estimate made once and defended forever stops being true. Agree in advance when it will be revised:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;After the first milestone.&lt;/strong&gt; The team's real pace is now known. Compare actual effort with the estimate and adjust the later ranges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When an assumption breaks.&lt;/strong&gt; The partner API is late, the team changes, the scope grows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;At each change request.&lt;/strong&gt; Every addition gets its own low–high figure before it is accepted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At each revision, the ranges for the remaining milestones should narrow. If they widen, that is information too: something important was unknown and is now visible.&lt;/p&gt;

&lt;p&gt;For the wider picture of how estimates fit into discovery outputs, the overview of the &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-in-software-development?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-to-estimate-a-software-project-article" rel="noopener noreferrer"&gt;discovery phase in software development&lt;/a&gt; lists the other deliverables. In Discovery Phase AI, the roadmap stage stores each milestone's estimate as a low and a high number of person-weeks, adds them up into a total range, and keeps the assumptions in a list next to the milestones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-to-estimate-a-software-project-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=how-to-estimate-a-software-project-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/how-to-estimate-a-software-project" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>projectmanagement</category>
      <category>productmanagement</category>
      <category>planning</category>
    </item>
    <item>
      <title>Software Project Roadmap Template: Milestones and Estimates</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Sat, 24 Oct 2026 08:01:01 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/software-project-roadmap-template-milestones-and-estimates-51mj</link>
      <guid>https://dev.to/oleksandr_tytarenko/software-project-roadmap-template-milestones-and-estimates-51mj</guid>
      <description>&lt;p&gt;A software project roadmap at the end of discovery is a table of milestones, each with a start date, a target date, an effort range, the milestone it depends on and the requirements it delivers, plus a short list of the assumptions behind it. It answers "what gets built in what order, and roughly how long will it take". Below is the table to copy, how to find the critical path, and a filled-in example with a month-scale timeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Discovery roadmap vs product roadmap
&lt;/h2&gt;

&lt;p&gt;The word "roadmap" covers two different documents, and mixing them up causes trouble.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Discovery (delivery) roadmap&lt;/th&gt;
&lt;th&gt;Product roadmap&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Question it answers&lt;/td&gt;
&lt;td&gt;How and when do we build this agreed scope?&lt;/td&gt;
&lt;td&gt;Where is the product heading over the next year or more?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unit&lt;/td&gt;
&lt;td&gt;Milestones with dates and effort&lt;/td&gt;
&lt;td&gt;Themes, outcomes, bets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time horizon&lt;/td&gt;
&lt;td&gt;Weeks to a few months&lt;/td&gt;
&lt;td&gt;Quarters to years&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tied to&lt;/td&gt;
&lt;td&gt;Specific requirements&lt;/td&gt;
&lt;td&gt;Goals and strategy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audience&lt;/td&gt;
&lt;td&gt;Sponsor, delivery team, budget holder&lt;/td&gt;
&lt;td&gt;Leadership, customers, the wider company&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Changes when&lt;/td&gt;
&lt;td&gt;Scope, team or a dependency changes&lt;/td&gt;
&lt;td&gt;Strategy or the market changes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A discovery roadmap is concrete on purpose. Each milestone should be traceable to requirements, so that when someone asks "why is this taking ten weeks?" the answer is a list of things, not a feeling. It is closer to a delivery plan than to a vision deck. If the project later becomes a long-lived product, a product roadmap can sit above it; the discovery roadmap covers the first release or two.&lt;/p&gt;

&lt;h2&gt;
  
  
  The milestone table
&lt;/h2&gt;

&lt;p&gt;Use one row per milestone. Seven columns are enough:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Column&lt;/th&gt;
&lt;th&gt;What goes in it&lt;/th&gt;
&lt;th&gt;Rule of thumb&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ID&lt;/td&gt;
&lt;td&gt;M1, M2, M3…&lt;/td&gt;
&lt;td&gt;Never reuse an ID, even if a milestone is removed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Name&lt;/td&gt;
&lt;td&gt;What exists when it is done ("Offline inspection forms")&lt;/td&gt;
&lt;td&gt;A result, not an activity ("Development")&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Start&lt;/td&gt;
&lt;td&gt;Calendar date&lt;/td&gt;
&lt;td&gt;Real dates, not "week 3", so holidays show up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Target&lt;/td&gt;
&lt;td&gt;Calendar date&lt;/td&gt;
&lt;td&gt;Not before the start&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Estimate&lt;/td&gt;
&lt;td&gt;Low–high in person-weeks&lt;/td&gt;
&lt;td&gt;A range; see below&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Depends on&lt;/td&gt;
&lt;td&gt;The milestone that must finish first&lt;/td&gt;
&lt;td&gt;One is usually enough; more means the split is wrong&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Requirements&lt;/td&gt;
&lt;td&gt;IDs of the requirements it delivers&lt;/td&gt;
&lt;td&gt;Every Must requirement appears somewhere&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Add a status column (Not started, On track, At risk, Done) once the build starts, and keep a separate list of assumptions next to the table: team size, the date a vendor delivers an API key, a holiday freeze, who tests. Assumptions are what the dates rest on, so they belong on the same page.&lt;/p&gt;

&lt;p&gt;Two checks catch most gaps in a draft:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Coverage.&lt;/strong&gt; Count the requirements linked to at least one milestone against all requirements. Anything unlinked is either out of scope (say so) or missing from the plan.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Size.&lt;/strong&gt; If one milestone holds most of the effort, split it. Milestones in the range of two to six weeks are easier to track than one of five months; that is a rule of thumb, not a standard.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The roadmap section of our &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-template?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=software-project-roadmap-template-article" rel="noopener noreferrer"&gt;discovery phase template&lt;/a&gt; sums up the same contents in four lines:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fsoftware-project-roadmap-template%2Ftemplate-roadmap-section.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fsoftware-project-roadmap-template%2Ftemplate-roadmap-section.png" title="The roadmap section of the discovery phase template" alt="Roadmap, estimates and risks section of the discovery phase template: milestones with dates and a low to high person-week estimate, dependencies, assumptions, and risks with an owner" width="799" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Dependencies and the critical path
&lt;/h2&gt;

&lt;p&gt;A dependency says one milestone cannot start until another is done. The chain of dependent milestones with the longest total duration is the critical path: any delay on it delays the release, while a delay elsewhere may not. The idea comes from the &lt;a href="https://en.wikipedia.org/wiki/Critical_path_method" rel="noopener noreferrer"&gt;critical path method&lt;/a&gt;, used in project scheduling since the 1950s.&lt;/p&gt;

&lt;p&gt;To find it on a small roadmap:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Write each milestone's dependency.&lt;/li&gt;
&lt;li&gt; Follow each chain from the first milestone to the release.&lt;/li&gt;
&lt;li&gt; Add up the durations along each chain. The longest is the critical path.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Watch for two warning signs. A milestone that starts before the one it depends on ends is either a mistake or a sign the dependency is partial and should be split. A cycle (M3 depends on M4, which depends on M3) means the work is not really sequenced at all. In software projects, the critical path very often runs through integrations and data migration, because they depend on people outside the team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Estimates as ranges
&lt;/h2&gt;

&lt;p&gt;Put a low and a high figure on every milestone, in person-weeks, and add them up for the total. A single number at this stage hides how much is still unknown. Steve McConnell's "cone of uncertainty" describes estimate error that narrows as a project's decisions get made (&lt;a href="https://www.construx.com/blog/the-cone-of-uncertainty/" rel="noopener noreferrer"&gt;Construx&lt;/a&gt;); at the end of discovery the range is narrower than at the first conversation, but it is still a range.&lt;/p&gt;

&lt;p&gt;Practical habits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tighter near, looser far.&lt;/strong&gt; The first milestone, which the team understands best, can have a narrow range; later ones wider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Effort is not duration.&lt;/strong&gt; Six person-weeks with three people may be two calendar weeks, or four if they are also on other work. Dates come from effort plus staffing plus the assumptions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sum the lows and the highs separately.&lt;/strong&gt; Report the total as "34–46 person-weeks", not as the midpoint.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A filled-in example (invented)
&lt;/h2&gt;

&lt;p&gt;An invented project: a mobile inspection app for a utilities company, with requirements numbered REQ-1 to REQ-24. Team assumption: three developers and one designer, with a two-week holiday freeze in late December.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ID&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;th&gt;Start&lt;/th&gt;
&lt;th&gt;Target&lt;/th&gt;
&lt;th&gt;Estimate (person-weeks)&lt;/th&gt;
&lt;th&gt;Depends on&lt;/th&gt;
&lt;th&gt;Requirements&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;M1&lt;/td&gt;
&lt;td&gt;Sign-in, roles and device setup&lt;/td&gt;
&lt;td&gt;Nov 3&lt;/td&gt;
&lt;td&gt;Nov 28&lt;/td&gt;
&lt;td&gt;6–8&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;REQ-1, REQ-2, REQ-3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M2&lt;/td&gt;
&lt;td&gt;Offline inspection forms&lt;/td&gt;
&lt;td&gt;Dec 1&lt;/td&gt;
&lt;td&gt;Jan 30&lt;/td&gt;
&lt;td&gt;14–20&lt;/td&gt;
&lt;td&gt;M1&lt;/td&gt;
&lt;td&gt;REQ-4 to REQ-12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M3&lt;/td&gt;
&lt;td&gt;Billing system integration&lt;/td&gt;
&lt;td&gt;Jan 5&lt;/td&gt;
&lt;td&gt;Feb 27&lt;/td&gt;
&lt;td&gt;8–12&lt;/td&gt;
&lt;td&gt;M1&lt;/td&gt;
&lt;td&gt;REQ-13 to REQ-17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M4&lt;/td&gt;
&lt;td&gt;Reports and supervisor dashboard&lt;/td&gt;
&lt;td&gt;Feb 2&lt;/td&gt;
&lt;td&gt;Mar 13&lt;/td&gt;
&lt;td&gt;6–9&lt;/td&gt;
&lt;td&gt;M2&lt;/td&gt;
&lt;td&gt;REQ-18 to REQ-22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;M5&lt;/td&gt;
&lt;td&gt;Pilot and hardening&lt;/td&gt;
&lt;td&gt;Mar 16&lt;/td&gt;
&lt;td&gt;Apr 10&lt;/td&gt;
&lt;td&gt;4–6&lt;/td&gt;
&lt;td&gt;M3, M4&lt;/td&gt;
&lt;td&gt;REQ-23, REQ-24&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Total: 38–55 person-weeks, target release April 10. M5 waits for two milestones here, which breaks the "one dependency" rule of thumb on purpose: the pilot needs both the integration and the reports. On a real plan you might split M5 so each part has a single predecessor.&lt;/p&gt;

&lt;p&gt;The same plan on a month scale (each column is half a month):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;            Nov     Dec     Jan     Feb     Mar     Apr
M1          ##
M2              ####    ##
M3                      ####
M4                          ##  ##
M5                                  ##  ##
                                            ^ release Apr 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The critical path is M1, M2, M4, M5: the forms are the longest chain, and the holiday freeze sits inside M2. The billing integration (M3) has some slack, unless the billing system owner is slow to provide test access, which goes on the assumptions list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keeping the roadmap honest
&lt;/h2&gt;

&lt;p&gt;A roadmap stays useful only if it is updated when the facts change:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Change a status by hand when the team knows,&lt;/strong&gt; not when a date passes. "At risk" two weeks before a target is information; "late" afterwards is history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-check the dependencies when scope changes.&lt;/strong&gt; A new requirement linked to M2 moves everything on the critical path.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review the assumptions at each milestone.&lt;/strong&gt; If the team is two developers, not three, the dates move, and that is a decision to make openly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep the link to requirements.&lt;/strong&gt; When a requirement is dropped, remove it from its milestone and reduce the estimate, so the plan shrinks with the scope.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is how a finished roadmap reads in our &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=software-project-roadmap-template-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt;, made for an invented project called Fieldwise: the total estimate as a range, the release date, a month-scale timeline, the milestone table with status and linked requirement counts, and the assumptions underneath.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fsoftware-project-roadmap-template%2Fexample-report-roadmap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fsoftware-project-roadmap-template%2Fexample-report-roadmap.png" title="Roadmap, milestones and estimates in the example report (invented project)" alt="Roadmap section of the example discovery report for the invented Fieldwise project: four milestones, a 16-22 person-week estimate, a release date, a month-scale timeline, statuses and assumptions" width="799" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In Discovery Phase AI, the roadmap stage holds the same fields: milestones with an ID, dates, a low–high person-week estimate, status, one dependency and linked requirements, a month-scale timeline, and a list of assumptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=software-project-roadmap-template-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=software-project-roadmap-template-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/software-project-roadmap-template" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>productmanagement</category>
      <category>projectmanagement</category>
      <category>planning</category>
    </item>
    <item>
      <title>Client Documents in AI Tools: A Checklist for Agencies</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Fri, 23 Oct 2026 08:01:01 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/client-documents-in-ai-tools-a-checklist-for-agencies-18ba</link>
      <guid>https://dev.to/oleksandr_tytarenko/client-documents-in-ai-tools-a-checklist-for-agencies-18ba</guid>
      <description>&lt;p&gt;You can put client documents into an AI tool, but only after you know where the text goes, how long it is kept, whether it trains a model, who else processes it, and what your contract with the client allows. Those five answers differ a lot between a personal chat account and a business product built on a commercial API. The checklist below works for any vendor, and the last section shows how Discovery Phase AI answers it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This is a practical checklist, not legal advice. Your client contract and your own counsel decide what is allowed.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually leaves your machine
&lt;/h2&gt;

&lt;p&gt;Before comparing vendors, picture the path a document takes when you upload it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Your browser sends the file&lt;/strong&gt; to the tool's servers.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The tool may store it&lt;/strong&gt;: the original file, extracted text, or only what it generates from it.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The tool sends text to a model provider&lt;/strong&gt;, which is often a different company from the one whose app you use.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The model provider may keep inputs and outputs&lt;/strong&gt; for a period, for abuse monitoring or debugging.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The result comes back&lt;/strong&gt; and is saved in the tool, in your project, or nowhere.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each hop is a place where a copy can live and a party that can read it. A good vendor can tell you, for every hop, whether a copy exists, for how long, and in which country. If the answer is "we are not sure", that is your answer.&lt;/p&gt;

&lt;p&gt;It also matters what the documents hold. Discovery material is often more sensitive than it looks: names and contact details of client staff, unreleased plans, pricing, security details of existing systems. Some of that is personal data under laws such as the GDPR, which brings its own rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions to ask any AI vendor
&lt;/h2&gt;

&lt;p&gt;Use this as a checklist. A vendor should answer each in writing, ideally on a public page.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;A good answer sounds like&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;Are uploaded files stored? Where and for how long?&lt;/td&gt;
&lt;td&gt;"Not stored", or a stated period and region&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Training&lt;/td&gt;
&lt;td&gt;Is my content used to train models, theirs or the provider's?&lt;/td&gt;
&lt;td&gt;"No, by default", with the source for the provider's terms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model provider&lt;/td&gt;
&lt;td&gt;Which model provider processes the text?&lt;/td&gt;
&lt;td&gt;A named company, not "trusted partners"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provider retention&lt;/td&gt;
&lt;td&gt;How long does the provider keep inputs and outputs?&lt;/td&gt;
&lt;td&gt;A number of days, with exceptions listed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sub-processors&lt;/td&gt;
&lt;td&gt;Who else handles data (hosting, email, payments)?&lt;/td&gt;
&lt;td&gt;A named list with what each receives&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Location&lt;/td&gt;
&lt;td&gt;Where are servers and the database?&lt;/td&gt;
&lt;td&gt;A country or region&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Access&lt;/td&gt;
&lt;td&gt;Who inside the vendor can see my content?&lt;/td&gt;
&lt;td&gt;A short, specific answer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Isolation&lt;/td&gt;
&lt;td&gt;How is one customer's data kept from another's?&lt;/td&gt;
&lt;td&gt;Server-side checks, not just the interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deletion&lt;/td&gt;
&lt;td&gt;Can I delete projects and my account, and what happens to the data?&lt;/td&gt;
&lt;td&gt;A self-service path with clear effects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Export&lt;/td&gt;
&lt;td&gt;Can I get my content out in a usable format?&lt;/td&gt;
&lt;td&gt;Named formats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Contracts&lt;/td&gt;
&lt;td&gt;Can I sign a data processing agreement?&lt;/td&gt;
&lt;td&gt;Yes, with how to request it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Assurance&lt;/td&gt;
&lt;td&gt;What independent audits or certifications exist?&lt;/td&gt;
&lt;td&gt;A specific report, or an honest "none yet"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The last row deserves honesty both ways. An audit report tells you a third party checked controls; a vendor without one is not automatically unsafe, but you should weigh their written answers more carefully and expect them to be specific.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retention and training use
&lt;/h2&gt;

&lt;p&gt;These are the two questions clients ask most, and they are often confused.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Training use&lt;/strong&gt; means your text becomes material that improves a model, which other customers then use. For confidential work you want a clear "no" by default. Policies differ by product tier at the same provider. For example, OpenAI's help centre says it does not train on inputs or outputs from its business products and API by default, while personal ChatGPT accounts have an "Improve the model for everyone" setting that is on unless the user turns it off (&lt;a href="https://help.openai.com/en/articles/7730893-data-controls-faq" rel="noopener noreferrer"&gt;OpenAI data controls FAQ&lt;/a&gt;). Pasting a client deck into a personal chat account is therefore a different decision from using a business product.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Retention&lt;/strong&gt; means how long a copy exists, even if it never trains anything. A provider may keep API inputs and outputs for a short period. Anthropic, for instance, states that it deletes API inputs and outputs on its backend within 30 days by default, with exceptions such as a different agreement, enforcing its usage policy, or legal requirements (&lt;a href="https://privacy.claude.com/en/articles/7996866-how-long-do-you-store-my-organization-s-data" rel="noopener noreferrer"&gt;Anthropic privacy centre&lt;/a&gt;). Check the current page on the day you decide; these terms change.&lt;/p&gt;

&lt;p&gt;Then ask the same questions of the app on top: does it keep the original files, and does it log the text of your prompts?&lt;/p&gt;

&lt;h2&gt;
  
  
  Contracts: DPA and sub-processors
&lt;/h2&gt;

&lt;p&gt;If the documents include personal data and you or your client are subject to the GDPR, the AI vendor usually acts as a processor for that data, and &lt;a href="https://gdpr-info.eu/art-28-gdpr/" rel="noopener noreferrer"&gt;Article 28 of the GDPR&lt;/a&gt; requires a written contract with it, commonly called a data processing agreement (DPA). It also requires the processor to get your authorisation before using sub-processors and to pass the same obligations down to them.&lt;/p&gt;

&lt;p&gt;In practice, check three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Your client contract.&lt;/strong&gt; Many service agreements restrict which third parties may see client material, or require notice before you use a new one. An AI tool and its model provider both count.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The vendor's DPA.&lt;/strong&gt; It should name the sub-processors, the data location, and how international transfers are covered (for example Standard Contractual Clauses).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The sub-processor list.&lt;/strong&gt; Hosting, model provider, email and payments are typical. Each should be named, with what it receives.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Controls inside your own team
&lt;/h2&gt;

&lt;p&gt;Most leaks are not caused by a vendor. Set a few rules for your own people:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use business accounts, not personal ones,&lt;/strong&gt; for any client work, so the terms above actually apply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give access by project, not by company.&lt;/strong&gt; A contractor on one client should not see another client's files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upload only what the task needs.&lt;/strong&gt; A redacted transcript is often enough; strip bank details and passwords from anything you upload.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep a record of who changed what,&lt;/strong&gt; so an AI-generated edit can be traced and reversed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tell the client.&lt;/strong&gt; A line in the proposal saying which AI tools you use, and on what terms, prevents an awkward conversation later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan the end.&lt;/strong&gt; Know how you will export the deliverables and delete the workspace when the engagement ends.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How Discovery Phase AI answers these
&lt;/h2&gt;

&lt;p&gt;These answers are taken from our &lt;a href="https://discoveryphaseai.com/security?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=ai-and-confidential-client-documents-article" rel="noopener noreferrer"&gt;security page&lt;/a&gt; and Privacy Policy, which describe what the product does today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Files:&lt;/strong&gt; uploaded decks, documents, transcripts and images are read in memory to draft the project and are not stored. Only the draft you review and save stays, as project content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model provider and training:&lt;/strong&gt; AI requests go to Anthropic. We do not use your content to train models, and under Anthropic's commercial API terms it does not train on inputs and outputs by default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI behaviour:&lt;/strong&gt; the model has no tools, cannot browse or change your project, and every suggestion is a proposal you apply or discard. Text from files is marked as untrusted, so instructions hidden in a document are not followed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sub-processors and location:&lt;/strong&gt; Fly.io hosts the app and database in the United States (Virginia), Anthropic processes AI requests, Resend sends email and Paddle handles payments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Isolation and access:&lt;/strong&gt; each company is its own workspace, scoped on the server. Company Admins see every project; Company Members see only projects they are added to, with write or read access. On the Agency plan each client company stays separate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;History:&lt;/strong&gt; every change to a stage is recorded with who made it and whether it came from a person, the AI chat or an update from files, and earlier versions can be restored.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Retention, export and deletion:&lt;/strong&gt; AI usage records keep the feature, model and token counts, never the text, for 13 months. Project content exports as PDF, Word, PowerPoint or Markdown, and you can delete your account yourself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contracts:&lt;/strong&gt; the Privacy Policy says that for project content we act as your processor, and that an organisation that needs a data processing agreement can request one by email.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assurance:&lt;/strong&gt; we do not claim a security certification or an independent audit. The route-by-route review described on the security page was our own.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plan details, including which features each plan has, are on the &lt;a href="https://discoveryphaseai.com/pricing?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=ai-and-confidential-client-documents-article" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=ai-and-confidential-client-documents-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=ai-and-confidential-client-documents-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/ai-and-confidential-client-documents" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>privacy</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Do You Need a Discovery Phase? When to Skip It</title>
      <dc:creator>Oleksandr Tytarenko</dc:creator>
      <pubDate>Thu, 22 Oct 2026 08:01:23 +0000</pubDate>
      <link>https://dev.to/oleksandr_tytarenko/do-you-need-a-discovery-phase-when-to-skip-it-44dm</link>
      <guid>https://dev.to/oleksandr_tytarenko/do-you-need-a-discovery-phase-when-to-skip-it-44dm</guid>
      <description>&lt;p&gt;You need a discovery phase when the scope, the users or the technical risks are unclear enough that a fixed estimate would be a guess. You can skip it, or shrink it to a few days, when the problem is familiar, one person decides, and the work looks like something the team has built before. Five questions below sort most projects into one of those two groups.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short answer
&lt;/h2&gt;

&lt;p&gt;Discovery buys certainty before you spend the build budget. It is worth paying for when the cost of being wrong is larger than the cost of finding out. That is true more often than buyers expect, and less often than some sellers claim.&lt;/p&gt;

&lt;p&gt;Estimation research gives a sense of the stakes. Steve McConnell's "cone of uncertainty", built on Barry Boehm's earlier work, puts the error of an estimate made at the initial-concept stage at roughly 0.25x to 4x of the real figure, and describes that as close to the best case, not the worst (&lt;a href="https://www.construx.com/blog/the-cone-of-uncertainty/" rel="noopener noreferrer"&gt;Construx&lt;/a&gt;). The range narrows only as decisions get made and written down. Discovery is the deliberate, paid version of that narrowing.&lt;/p&gt;

&lt;p&gt;The UK government's service manual, which treats discovery as a standard first step for public services, puts a typical discovery at 4 to 8 weeks and notes that a team that already knows the problem well may need less (&lt;a href="https://www.gov.uk/service-manual/agile-delivery/how-the-discovery-phase-works" rel="noopener noreferrer"&gt;GOV.UK service manual&lt;/a&gt;). Private software projects often run shorter. For a fuller picture of what the phase produces, see &lt;a href="https://discoveryphaseai.com/blog/discovery-phase-in-software-development?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=do-you-need-a-discovery-phase-article" rel="noopener noreferrer"&gt;discovery phase in software development&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five questions that decide it
&lt;/h2&gt;

&lt;p&gt;Answer each one honestly. Every "yes" is a reason to run discovery; three or more usually mean a full one.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;A "yes" looks like&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1. Is the scope unclear?&lt;/td&gt;
&lt;td&gt;The brief is a paragraph, a deck or a list of features without priorities&lt;/td&gt;
&lt;td&gt;Without an agreed scope, any estimate is a price for a guess&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2. Is the domain new to the team?&lt;/td&gt;
&lt;td&gt;Regulated industry, unfamiliar workflows, jargon you had to look up&lt;/td&gt;
&lt;td&gt;Hidden rules surface late and expensively&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3. Are there many stakeholders?&lt;/td&gt;
&lt;td&gt;Several departments, a sponsor who is not the day-to-day owner, outside partners&lt;/td&gt;
&lt;td&gt;Conflicting needs have to be settled before building, not during&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4. Is the budget or date fixed?&lt;/td&gt;
&lt;td&gt;A grant, a board-approved figure, a launch tied to an event&lt;/td&gt;
&lt;td&gt;A fixed envelope needs a scope that provably fits inside it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5. Are there integrations or data migrations?&lt;/td&gt;
&lt;td&gt;An existing CRM, ERP, payment provider, legacy database&lt;/td&gt;
&lt;td&gt;Integrations hide most of the technical risk&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A few notes on reading the answers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Question 4 cuts both ways.&lt;/strong&gt; A fixed budget is a reason to run discovery, not to skip it to save money. The point is to find out what fits inside the number.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Question 5 is the one most often underrated.&lt;/strong&gt; "We just need to connect to their system" can mean an afternoon or a quarter, depending on whether the other system has a usable interface and an owner who answers emails.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The answers come from evidence, not optimism.&lt;/strong&gt; If you are not sure whether the scope is clear, ask two stakeholders to describe the first release separately and compare.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When to skip or shrink the discovery
&lt;/h2&gt;

&lt;p&gt;There are honest cases where a full discovery is overhead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A known pattern.&lt;/strong&gt; A marketing site, a content update, a feature similar to three the team shipped last year on the same codebase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One decision maker and a written spec.&lt;/strong&gt; Someone who can answer questions within a day, plus requirements that already exist and are current.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A throwaway prototype.&lt;/strong&gt; If the goal is to learn by building something small and discarding it, the prototype is the discovery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A small, time-boxed budget.&lt;/strong&gt; When the whole build is a few weeks of work, a multi-week discovery is out of proportion; a short brief and a working first slice teach more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuing work.&lt;/strong&gt; The next phase of a product the same team built, with the same people deciding.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In each case the risk does not vanish; it is just small enough to absorb in the build. Write down the assumptions anyway, so that when one turns out wrong it is a recorded change, not an argument.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a 'light' discovery looks like
&lt;/h2&gt;

&lt;p&gt;When the answer is "some discovery, not much", compress it to a few days instead of weeks. A light version that still holds up:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Read what exists first.&lt;/strong&gt; Collect the brief, decks, emails and any old specs, and summarize them in a page.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Run two to four interviews.&lt;/strong&gt; The decision maker, one or two users, and whoever owns the riskiest integration.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Write the one-page brief.&lt;/strong&gt; Problem, goals with a measure each, users, and what is out of scope.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;List the requirements with priorities.&lt;/strong&gt; Must, Should, Could, Won't is enough at this size.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Name the risks and open questions.&lt;/strong&gt; Each with an owner and a date to close it.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Give a range, not a number.&lt;/strong&gt; Low and high effort for the first release, with the assumptions behind it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;a href="https://discoveryphaseai.com/resources/discovery-phase-checklist?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=do-you-need-a-discovery-phase-article" rel="noopener noreferrer"&gt;discovery phase checklist&lt;/a&gt; works as the quality bar for a light discovery: if a section of it does not apply, say so in one line rather than leaving it blank. Its first section is a quick test of whether you have talked to the right people:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fdo-you-need-a-discovery-phase%2Fchecklist-people-and-context.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fdo-you-need-a-discovery-phase%2Fchecklist-people-and-context.png" title="People and context, from the discovery phase checklist" alt="First section of the discovery phase checklist, people and context: who approves scope and budget, whether users were interviewed, who can say no, the current process, earlier attempts and fixed constraints" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tools can shorten step 1; Discovery Phase AI, for example, drafts the background, stakeholders, goals and requirements from the files you upload, which you then review and correct in the interviews.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs to skip it (the failure patterns)
&lt;/h2&gt;

&lt;p&gt;Skipping discovery rarely fails loudly at the start. It fails in recognisable ways later:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The estimate was a price for a different project.&lt;/strong&gt; The team quoted what they imagined; the client meant something larger. The gap turns into change requests and strained trust.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The late stakeholder.&lt;/strong&gt; Security, legal or a department nobody interviewed sees the product near launch and blocks it until changes are made.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The integration surprise.&lt;/strong&gt; The other system has no usable interface, rate limits, or data in a shape nobody expected, and the work grows after the price is agreed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Building the wrong first release.&lt;/strong&gt; Without agreed goals, the team builds the features that were easiest to describe, not the ones that matter most.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No shared definition of done.&lt;/strong&gt; Without acceptance criteria, "finished" becomes a negotiation at the end.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A discovery turns most of these into written items before the build starts. In our &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=do-you-need-a-discovery-phase-article" rel="noopener noreferrer"&gt;example report&lt;/a&gt;, made for an invented project called Fieldwise, a missing partner API appears as a blocker and the technicians' distrust of the sync as a risk, each linked to the stage it affects:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fdo-you-need-a-discovery-phase%2Fexample-report-risks.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdiscoveryphaseai.com%2Fblog-images%2Fdo-you-need-a-discovery-phase%2Fexample-report-risks.png" title="Risks, blockers and open questions in the example report (invented project)" alt="Risks, blockers and open questions table from the example discovery report for the invented Fieldwise project, with type, description, linked stage, state and date raised" width="800" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;None of these is guaranteed, and a short brief prevents some of them. The question is not whether discovery is good in general, but whether this project's unknowns are expensive enough to pay to remove them first. If you answered "yes" to three of the five questions above, they probably are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure and a sample
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://discoveryphaseai.com/?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=do-you-need-a-discovery-phase-article" rel="noopener noreferrer"&gt;Discovery Phase AI&lt;/a&gt;, a tool aimed at the writing-and-assembling side of discovery: it drafts the early stages from the decks, documents and call transcripts you already have, and exports one report. Your team still runs the interviews, reviews every draft and makes the decisions.&lt;/p&gt;

&lt;p&gt;If you just want to see what a finished discovery looks like, &lt;a href="https://discoveryphaseai.com/example-report?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=do-you-need-a-discovery-phase-article" rel="noopener noreferrer"&gt;here is a complete sample report&lt;/a&gt; for an invented field-service app. No signup needed.&lt;/p&gt;

&lt;p&gt;The original of this post is on &lt;a href="https://discoveryphaseai.com/blog/do-you-need-a-discovery-phase" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;. Questions or corrections are welcome in the comments.&lt;/p&gt;

&lt;p&gt;This post was drafted with AI assistance and edited by a human before publishing.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>productmanagement</category>
      <category>startup</category>
      <category>planning</category>
    </item>
  </channel>
</rss>
