LLM.coPrivate, self-hosted LLM deployments
Legal AI infrastructure for firms
AI RFP discovery and response drafting
Automatic.coBusiness process automation
Secure AI virtual data rooms
What to Include in a Custom Software Development RFP
Most buyers think an RFP protects them from a bad vendor. In practice it protects the vendor as much as the buyer, because it is the one document both sides will point to when scope, price, or timeline slip. A weak RFP produces bids that cannot be compared, prices that hide risk, and contracts that cannot be enforced. A strong one does the opposite.
What follows is a section-by-section checklist written from the side that reads these documents for a living. Every heading below belongs in a serious custom software development RFP. Skip one and the bids you get back will drift apart in ways that are hard to unwind later. The evidence for why the discipline matters is unpleasant: a McKinsey and University of Oxford study of 5,400 large IT projects found the average one ran 45% over budget and delivered 56% less value than predicted, with 17% turning into "black swans" whose overruns threatened the company itself. Requirements clarity, not developer talent, is what usually decides which side of that line a project lands on.
Start With a Problem Statement, Not a Feature List
The first page of the RFP should describe the problem in the buyer's own words: who has the pain, how often, what the current workaround costs, what "solved" looks like a year from now. Skip the wishlist. If the RFP opens with "we need a React Native app with push notifications and Stripe," bidders will price that literal thing, whether or not it is the right build.
Name the users, the volumes, and the business metric that moves. "Field technicians close 40 work orders per shift; dispatchers reroute 15% of them mid-day; we want first-time-fix rate above 85%" is a brief a vendor can respond to. It also lets the vendor push back if the requested feature will not move the metric. That pushback is worth more than a polite bid. Poor requirements gathering is cited as the leading cause in 39.03% of software project failures, and it starts here.
Draw a Hard Line Around In-Scope and Out-of-Scope
The scope of work is where most disputes are born. It should list, in bullets, every deliverable the vendor is on the hook for, and then a matching list of things they are explicitly not. "Data migration from the legacy MySQL schema: in. Cleaning source data prior to migration: out." That second bullet is what stops a $40k line item from appearing in month three.
A useful test comes from federal procurement practice: hand the scope to someone uninvolved and ask what they would quote. If two competent vendors reading it would price roughly the same work, it is specific enough. If not, keep tightening. PMI research shows 52-55% of projects experience scope creep at an average cost impact of 27% above the original estimate, and projects without a formal change process are 35% more likely to blow past cost or deadline. The RFP is where that change process gets named.
List Every Integration by Name and Version
Integrations are the single biggest source of estimate variance. "Integrates with our CRM" can mean a nightly CSV export or a bidirectional real-time sync with custom conflict resolution. Those are not the same build. The RFP should list each external system by product, version, auth method, and the direction of data flow.
Include SSO (Okta, Azure AD, or in-house SAML), data warehouse targets (Snowflake, BigQuery, Redshift), payment rails, analytics, and anything the vendor will need a sandbox account for. Flag the ones the vendor will need buyer help to access. If the build depends on a partner API the buyer does not currently hold credentials for, say so. A serious bidder will price a discovery spike; a weak one will guess and pad. For an API-heavy build, this section deserves a paragraph per interface, not a bullet. Teams that specialize in API development and integration will read this section first and price the rest against it.
Non-Functional Requirements Deserve Their Own Section
Performance, availability, security, and compliance targets shape architecture more than features do. A build that must hit 99.95% uptime with sub-200ms P95 latency across three regions is a different animal from an internal tool that goes down on weekends. Both are legitimate; the RFP has to say which one.
Put numbers on each of the following:
- Concurrent users at peak, and expected growth over 24 months
- P50 and P95 latency for the two or three hottest transactions
- Uptime SLA and the disaster recovery RTO/RPO
- Data residency and any compliance regime that applies (SOC 2 Type II, HIPAA, PCI-DSS, GDPR)
- Accessibility target (WCAG 2.2 AA is the common floor)
- Browser and device support matrix
If the workload requires multi-region reads or writes, the architecture questions get harder fast, and the RFP should invite bidders to describe their approach rather than dictate it. Techniques like Postgres logical replication for multi-region systems or a multi-tenant data model on Postgres have real tradeoffs a vendor should explain in prose.

Name the Constraints Honestly
Every project has fixed constraints the vendor cannot change: the incumbent auth provider, a board-mandated cloud, a compliance officer who has to sign off on data flows, a launch date tied to a trade show. Hiding those and hoping the vendor will discover them later is a way to overpay in change orders.
List them in a "Constraints and Assumptions" section. Include the tech stack the buyer is already committed to, the team members who will remain the product owners, the approval chain, and any calendar dates that cannot move. If AI is part of the build, name the model providers already approved by legal and the ones that are off the table, and reference the sort of safeguards spelled out in prompt injection defenses to require before signing an agentic AI SOW. Vendors doing serious AI development work will ask these questions anyway; answering them in the RFP saves a round of back-and-forth.
Publish the Evaluation Criteria and the Weights
The single fastest way to raise bid quality is to tell vendors how they will be scored. Publish the categories and the weight of each one. A common allocation for a custom software build is technical approach 30-40%, cost 20-30%, team experience 15-20%, delivery plan and timeline 10-15%, and post-launch support 5-10%, though the split should reflect what the project actually needs.
Pick a scoring scale and describe what each point means. A 5-point scale is used by 72% of Fortune 500 procurement departments, per Deloitte's 2025 CPO Survey, and the same source notes that the GAO sustained 23% of federal procurement protests in 2024 where evaluation criteria were not clearly defined. Private buyers do not face bid protests, but they face the same problem: without a rubric, the loudest voice in the room wins.
Address IP, Security, and Data Terms Up Front
Most buyers assume that paying for custom software means owning it. That is not automatic. Under U.S. Copyright Act rules, a work by an independent contractor qualifies as "work for hire" only if it falls into one of nine statutory categories and the parties have signed a written agreement designating it as such, and most software does not fit those categories. Without a proper assignment clause, a "work for hire" label is legally meaningless.
The RFP should state that the winning contract will include: full assignment of copyright in deliverables to the buyer, a license-back for any pre-existing vendor tooling, source code delivery at every sprint, and a definition of any open-source components the vendor plans to use, with their licenses. Ask bidders to flag any component under a copyleft license (GPL, AGPL) so surprises do not surface at audit. Add the security baseline: secrets handling, dependency scanning, SBOM delivery, and pen-test expectations before go-live.
Prescribe the Response Format So You Can Compare Bids
If every vendor writes their proposal in their own template, comparison is guesswork. Prescribe the sections, the order, and the length caps. A workable structure is: executive summary (1 page), understanding of the problem (2 pages), proposed architecture (3-5 pages), team bios with named roles (2 pages), delivery plan with milestones (2 pages), pricing broken out by phase, references from three comparable builds, and a signed acknowledgment of the buyer's terms.
Ask each bidder to answer the same short list of specific questions in the same order. Two useful ones: "describe a project where the original scope changed materially, and how you handled it," and "name the two riskiest assumptions in your bid and how you would validate them in the first two weeks." Answers to those two questions separate senior vendors from sales-led ones faster than any case study will.
Set a Realistic Timeline for the RFP Itself
Give vendors enough time to respond. Two to three weeks is the floor for anything above a trivial build; four is more honest for enterprise scope. Include a Q&A window where questions from any bidder, and the buyer's answers, are shared with all of them. That single practice eliminates the pattern where the incumbent gets private clarifications no one else sees.
Publish the decision timeline too: shortlist date, demo or interview week, reference-check window, award date, and target contract signing. Vendors staffing a bid pull senior engineers off billable work to write it, and a timeline that keeps slipping is a signal they will read correctly.
What a Good RFP Actually Buys You
The point of the document is not procurement theater. It is to force the buyer to think through the build before the first line of code, and to give the vendor enough to price honestly. KPMG's Global IT Project Management Survey found that 70% of IT projects fail to deliver within 10% of their original budget and only 35% deliver all originally-scoped functionality. The RFP is the first and cheapest place to move a project out of that majority.
Once the sections above are drafted, the intake is straightforward. Teams that want a second set of eyes on a draft, or a bid against a finished RFP, can send the package through the dev.co RFP intake and get a scoped response back. A good RFP is a tool, not a guarantee. It works when the buyer treats it as the beginning of the engineering conversation, not the end of the sales one.
