Proposals

Comparing offers written in different shapes

Free analysisNo commitment2 min

What is actually going on

You cannot compare totals, because the totals describe different scopes. The only reliable method is to extract a common assumption list, re-price every proposal against it, and compare what is left.

How the work runs

Step 01

Extract every assumption from every proposal

Write them into one combined list. Most of the price difference will already be visible at this point.

Step 02

Send the combined list back to all suppliers

Ask each to confirm or re-price against the same set. This is the step that makes the numbers mean the same thing.

Step 03

Compare what remains

After normalisation the differences left are genuine: seniority, method, testing depth, and how much support is included.

Build one combined assumption list

Read all the proposals with a blank page beside you. Every time one of them states or implies something about your situation, write it down. You will end up with fifteen or twenty items covering integrations, data, design, testing, hosting, and who provides content.

This list is the actual comparison tool. Send it to every supplier and ask each to say yes, no, or 'that changes the price by roughly this much' against each item. What comes back is comparable in a way the original proposals were not.

Where the difference usually hides

In practice a threefold spread between quotes decomposes into a small number of recurring items.

  • Testing: from the developer clicking through it once, to automated tests that run on every change.
  • Data migration: whether the old data comes across, and who cleans it.
  • Design: whether it is included, or whether you are expected to supply it.
  • Integrations: how many, and whether anyone has checked they are possible.
  • Support: what happens in the first three months after launch.
  • Seniority: whether the person named is the person writing the code.

Do not average the numbers

The instinct to pick the middle proposal is understandable and usually wrong. The middle number is an artefact of three different scopes, not a consensus about your project.

Once normalised, choose on the criteria you published: fit with your constraints, credibility of the plan, and who does the work. Price should be one input among several and rarely the deciding one at this size of project.

The conversation worth having with each supplier

Ask every candidate the same question: what is most likely to go wrong on this project, and what would you do about it. The answers separate people sharply.

A supplier who names a specific risk in your particular situation has thought about your project. One who answers with generic risk management language has thought about winning it.

Common questions

Is it rude to send suppliers a list of their competitors' assumptions?

No, and good suppliers welcome it. It is anonymised scope clarification, and it saves them from being undercut by someone who quoted a smaller project.

What if a supplier refuses to re-price?

That is useful information at no cost. Refusal to state assumptions is itself an answer about how change requests will go later.

Related

Specialists for this

IP

Khmelnytskyi, Ukraine

$15–$20/ hour

Full-Stack Developer — Websites, Apps, Servers, Databases, AI, SEO & QA

Full-stack developer working across the entire stack — websites, apps, servers, databases, AI integrations, SEO, and QA. Languages & Core: writes code in JavaScript, TypeScript, Python, PHP, Go, and Rust. Architects scalable systems for large-scale projects. Frontend & Interfaces: builds websites and web applications with React and Next.js. Crafts responsive interfaces with Tailwind CSS, Radix UI and Shadcn, adds smooth animations with Framer Motion, and interactive charts with Recharts. SEO Audit & On-Page Optimization: semantic keyword research, resolving technical indexing issues, and optimizing page load speeds. Structures page architecture, meta tags, and multi-language support (i18n). Copywriting & Content Strategy: writes technical articles, drafts precise content briefs for writers, and develops content plans. QA & Testing: full-cycle testing for websites, web services, and Android apps — manual QA for UI/UX and business logic, plus automated testing with Jest, Vitest, Playwright and E2E. Backend, Cloud & Databases: complex API integrations of any scale. Builds servers with Node.js (Express, Fastify). Works with PostgreSQL, MySQL and MongoDB, ORMs (Prisma, Drizzle), and cloud infrastructure (Supabase, Firebase, Cloudflare). Browser Extensions & Automation: develops Manifest V3 browser extensions for Chrome, Edge, Firefox and other browsers. Builds web scrapers for complex data extraction using Puppeteer and Playwright. AI & Intelligent Agents: builds custom AI agents and integrates LLMs from OpenAI, Google Gemini, and Anthropic Claude via API, including Claude Code setups. Servers & DevOps: Linux (Ubuntu) and VPS administration — setup, updates, real-time monitoring, secure process isolation, Nginx, PM2, and CI/CD deployment via GitHub Actions. Telegram Bots: develops advanced Telegram bots (Telegraf, Grammy) integrated with AI, payment gateways, Google Sheets, and crypto exchanges. Desktop Applications: builds cross-platform software for Windows and macOS using Electron and Rust. Additional expertise: site development and customization with WordPress and Astro.

Experience: 16 yearsAvailable Now
JavaScript
TypeScript
Python
React
Next.js
+32
JK

Tallinn, Estonia

$60–$90/ hour

Founder / Senior software developer

Founder and senior software developer building SaaS products end-to-end, from architecture and backend APIs to the shipped frontend. Focused on lean, maintainable systems for early-stage products.

Experience: 10 yearsAvailable Now
Software Architecture
Node.js
React
PostgreSQL