Academy

Master project estimation from zero to offer

Everything you need to know to create accurate cost estimates, manage risk, and generate professional offers for your clients.

01

Introduction

What Is This Tool?

Estimora is a project estimation platform designed for software houses, agencies, and IT services companies. It helps you build detailed, accurate cost estimates for software projects — and turn them into client-ready offers.

Who Is It For?

  • Project Managers who need to plan and price new projects
  • Sales teams who need to prepare offers quickly and confidently
  • Delivery Managers who want visibility into margins and profitability
  • Company leadership who need consistent, reliable pricing across the organization

What Problems Does It Solve?

  • Pricing projects accurately — build estimates from the ground up, by module, task, and role
  • Handling uncertainty — built-in buffers and ranges account for estimation uncertainty
  • Managing risk — risk buffers protect your margins on fixed-price work
  • Maintaining consistency — organization-wide defaults ensure every estimate starts from the same baseline
02

Organization Settings

Before creating your first estimate, set up your organization defaults. These settings act as the foundation for every estimate your team creates.

Default Pricing Mode

  • Time & Materials (T&M) — bill the client for actual hours worked
  • Fixed Price — commit to a fixed total price, regardless of actual hours

This default applies when creating new modules and tasks, but can be changed per estimate, per module, or per task.

Default Fixed Price Buffer (%)

Your risk buffer for Fixed Price work. It increases the price you charge the client by a percentage to cover unforeseen complexity, scope changes, or risks.

Example: 100 hours at $100/hour = $10,000 base. With a 20% buffer, the final price becomes $12,000. Your team still plans for 100 hours — the hours and internal cost do not change. The buffer affects only the price.

The buffer is internal — the client sees only the final price, not the buffer breakdown.

Default T&M Range Buffer (%)

Your uncertainty buffer for T&M work. It creates a range of hours (and prices) instead of a single number.

Example: 100 base hours with a 30% buffer creates a range of 100 – 130 hours. At $100/hour, that becomes $10,000 – $13,000.
Fixed Price BufferT&M Range Buffer
PurposeRisk protectionUncertainty communication
AffectsPrice onlyHours AND price (as a range)
Client seesOne final priceA range (base to max)
Internal costUnchangedIncreases with hours

Pricing Rules (Billing Rates)

For each role (e.g. Senior Developer, UX Designer), set:

  • Hourly Rate — what you charge the client per hour
  • Employee Cost Per Hour — what this role costs you internally

These two numbers enable automatic profit and margin calculations. Rates can be set in multiple currencies (USD, EUR, GBP, PLN).

03

Creating an Estimate

How to Start

  • Go to Estimates and create a new one
  • Give it a title (e.g. "Client X — Mobile App Redesign")
  • Select a currency
  • The estimate starts in Draft status

Fixed Price vs. Time & Materials

You do not need to choose one model for the entire estimate. Each module — even each task — can use a different pricing model.

  • Use Fixed Price when scope is well-defined, the client wants a guaranteed cost, and you have done similar work before
  • Use Time & Materials when scope is fluid, the client accepts hourly billing, or there is significant technical uncertainty

You can mix both in a single estimate.

04

Building an Estimate

An estimate is structured as Modules containing Tasks, with Roles and Hours assigned to each task.

Modules

Modules represent the major components or phases of the project, for example: User Authentication, Dashboard, Payment Integration, Admin Panel.

  • Each module can have its own pricing mode (Fixed Price or T&M)
  • Each module can have its own Fixed Price buffer
  • If not set, both inherit from organization defaults

Tasks

Tasks are individual work items within a module, for example: Login screen design, Registration flow, Password reset.

Buffer inheritance — the key rule:
Empty field = inherits from module (which may inherit from org defaults).
Entered value = overrides the module setting.

Example: Org default buffer is 15%. Module "Dashboard" has no buffer set, so it uses 15%. Task "Complex chart widget" has buffer set to 25%, so it uses 25%. Task "Simple header" has no buffer set, so it uses 15%.

Roles and Hours

For each task, assign roles and enter hours:

  • Select a role (e.g. "Senior Developer")
  • Enter the estimated hours (e.g. 16 hours)
  • Repeat for each role involved

Hours roll up automatically: task total, module total, estimate total. Each role can only appear once per task.

05

Fixed Price Estimation

How Price Is Calculated

  • Base price = sum of (hours x hourly rate) for all roles
  • Buffer applied = base price x (1 + buffer%)
  • Final price = the buffered amount

Example

RoleHoursRateBase Revenue
Senior Developer40 h$120/h$4,800
UX Designer16 h$100/h$1,600
QA Engineer8 h$80/h$640
Total64 h$7,040

With a 20% Fixed Price buffer:

  • Base price: $7,040
  • Buffer (20%): +$1,408
  • Final price: $8,448

What Stays the Same

  • Hours do not change — your team still plans for 64 hours
  • Internal cost does not change — the buffer adds directly to profit
The buffer is entirely internal. The client sees "$8,448" as the project price — they do not see the breakdown between base and buffer.
06

Time & Materials Estimation

How Ranges Are Created

  • You enter base hours per role
  • The system applies the T&M range buffer to create a maximum
  • Maximum hours = base hours x (1 + buffer%), rounded up

Example

With 64 base hours and a 30% T&M range buffer:

  • Hours range: 64 – 84 h
  • Price range: $7,040 – $9,152
  • Cost range: $4,480 – $5,880 (employee cost goes up too)
  • Profit range: $2,560 – $3,272
Important: The range reflects time uncertainty, not markup. You are saying: "We think it will take 64 hours, but it could take up to 84." If the project takes 84 hours, the client pays for 84 — but your costs also go up. This is fundamentally different from a Fixed Price buffer, where additional cost risk stays with you.
08

Mixed Estimates

A single estimate can contain both Fixed Price and T&M modules. This is common in real projects.

Example

ModulePricing ModePrice
AuthenticationFixed Price (15% buffer)$11,500
DashboardT&M (30% range buffer)$18,000 – $23,400
Admin PanelFixed Price (20% buffer)$9,600
  • Fixed Price total: $11,500 + $9,600 = $21,100
  • T&M total: $18,000 – $23,400
  • Estimate total: $39,100 – $44,500
Key rule: The T&M range buffer applies only to T&M items. Fixed Price items are never affected by the T&M range buffer — they have their own risk buffer built into the price.
09

Generating an Offer

Once your estimate is complete, generate a professional offer to send to the client.

Offer Details

Fill in client-facing information: company name, contact details, offer title, payment terms, validity date, and notes.

Offer Variants

Create multiple offer variants from a single estimate. Each variant can include a different selection of modules:

  • Variant A: "Full Scope" — all modules
  • Variant B: "MVP" — only core modules
  • Variant C: "Phase 1" — selected modules for first delivery

Display Modes for T&M

ModeHoursPriceWhen to Use
BASE_ONLY64 h$7,040Clean, simple number. Buffer is zero.
RANGE64 – 84 h$7,040 – $9,152Transparent about uncertainty. Most common.
MAX_ONLYup to 84 hup to $9,152Set a ceiling without revealing the base.

If your estimate has a T&M range buffer greater than zero, the system defaults to RANGE mode. Fixed Price modules always appear as a single price regardless of display mode.

10

Estimate Statuses

Every estimate follows a lifecycle from creation to final outcome. Statuses help your team track where each estimate stands in the review and delivery process.

Available Statuses

  • Draft — work in progress, the default status for new estimates
  • In Review — sent for internal review by your team
  • Approved — internally approved and ready to send to the client
  • Sent — offer has been sent to the client
  • Won — client accepted the offer (terminal status)
  • Lost — client rejected the offer
  • Expired — no client response, offer expired

Status Transitions

Not every status change is allowed. The system enforces valid transitions:

FromCan move to
DraftIn Review
In ReviewApproved, Draft
ApprovedSent, Draft
SentWon, Lost, Expired
Lost / ExpiredDraft (reactivate)

Edit Protection

When you edit an estimate that is no longer in Draft, the system will ask for confirmation and automatically regress the status. Editing an In Review estimate moves it back to Draft. Editing an Approved or later estimate moves it back to In Review.

This protects your workflow — if content changes after approval, the estimate needs to be re-reviewed before being sent again.
11

Comments & Collaboration

Comments let your team discuss specific parts of an estimate without leaving the app. You can add comments directly on cells in the estimate sheet.

Where You Can Comment

  • Module names — discuss the scope or naming of a module
  • Task names — raise questions about specific tasks
  • Role hours — discuss the hour estimate for a specific role on a task

How to Add a Comment

Right-click on any commentable cell to open the context menu:

  • Select Add comment to start a new thread
  • Type your message and submit — you can @mention team members to notify them
  • A blue dot appears on cells that have open comment threads

Thread Lifecycle

  • Open — active discussion, visible to all team members
  • Resolved — thread is closed. Replying to a resolved thread reopens it automatically

Comment Sidebar

Open the comment sidebar to see all threads across the entire estimate, grouped by module and task. This gives you a bird's-eye view of all ongoing discussions.

Comments are loaded on-demand — the full message history is fetched only when you open a thread, keeping the estimate sheet fast.
12

Notifications

The notification system keeps you informed about comment activity across all your estimates. You will never miss a mention or an important reply.

Notification Types

  • Mention — someone @mentioned you in a comment
  • Reply — someone replied in a thread you participated in
  • Resolved — a thread you created was resolved by another team member

How Notifications Work

Notifications appear in the bell icon in the top navigation bar:

  • The badge count shows how many unread notifications you have
  • Click the bell to see two tabs: New (unread) and All (recent history)

Navigating from Notifications

Click any notification to jump directly to the relevant estimate and cell. The comment thread opens automatically so you can read and reply in context.

Notifications are checked automatically every 30 seconds. You can also mark all as read or dismiss individual notifications.
13

Clients

The Clients tab gives you an overview of all client organizations you work with. It is not a CRM — it groups your estimates by client and shows revenue insights derived from your estimate data.

How Clients Are Created Automatically

You do not need to create clients manually. A client record is created automatically when you:

  • Fill in the company name in the offer details section of an estimate and save
  • Fill in the NIP (tax ID) — this is used for deduplication across estimates
  • Create a new estimate from the client detail page using the + New estimate button
You can also create a client manually from the Clients > New Client page, but in most cases clients will appear automatically as you work with estimates.

How Clients Are Grouped (Deduplication)

The system prevents duplicate client records using two rules:

  • By NIP — if two estimates share the same NIP (tax ID), they are linked to the same client
  • By company name — if no NIP is available, the system normalizes the company name (lowercase, trimmed, collapsed spaces) and matches by that

Client Detail Page

Click on any client in the list to see their detail page. It shows:

  • Total revenue — sum of all estimate prices (using the same calculation as the estimate sidebar)
  • Estimate count — how many estimates are linked to this client
  • Average deal size — total revenue divided by estimate count
  • Status breakdown — how many estimates are in Draft vs. Confirmed status

Filtering Estimates by Client

  • Go to the Estimates list to see a client filter dropdown
  • Filter by a specific client to see only their estimates
  • Use No client filter to find estimates that are not yet linked to any client

Creating Estimates for a Client

From the client detail page, click + New estimate. The new estimate will be automatically linked to that client. You can also link an existing estimate by filling in the company name or NIP in the offer details — the link updates automatically whenever you change it.

14

Best Practices

Choosing Between Fixed Price and T&M

  • Fixed Price for well-understood work: standard CRUD, simple integrations, templated pages
  • T&M for exploratory or complex work: new technology, complex business logic, unknown third-party APIs
  • Mix both when it makes sense — lock in simple modules, keep complex ones flexible

Setting Buffers

  • Start with sensible org defaults: 15–20% for Fixed Price, 20–30% for T&M
  • Override only when needed — for items significantly more or less risky than average
  • Higher buffer for: new technology, unclear requirements, external dependencies
  • Lower buffer for: repeat work, well-documented APIs, stable scope

Handling Risky Tasks

  • Set a higher Fixed Price buffer on risky tasks (e.g. 30–40%)
  • Consider switching risky tasks to T&M so risk is shared with the client
  • Break large, risky tasks into smaller ones — smaller pieces are easier to estimate

Avoiding Over- and Underestimation

  • Do not buffer every task at 40% "just in case" — this makes your offer uncompetitive
  • Do not set buffers to 0% to win a deal — this exposes you to losses
  • Use the profitability sidebar to check margin health before sending the offer
  • Use price simulation to understand the impact of discounts
15

Common Mistakes

Confusing Buffer with Margin

The buffer is not your profit margin. The buffer protects against estimation error. Your margin comes from the difference between billing rate and employee cost. A 20% buffer does not mean 20% profit.

Overriding Everything

If you set a custom buffer on every single task, you defeat the purpose of the cascading system. Set a good module-level default and only override the exceptions.

Misunderstanding T&M Ranges

The range is not "base price plus markup." It is "base hours plus uncertainty." If your project takes the maximum hours, your costs go up too. The range sets realistic expectations — it does not protect your margin like a Fixed Price buffer does.

Forgetting to Set Employee Costs

Without employee cost data, the system cannot calculate profit or margin. Always configure employee costs in Organization Settings before relying on profitability data.

Ignoring the Margin Indicator

If the sidebar shows a red (low) margin, do not ignore it. Either increase your rates, reduce scope, or add buffer. Sending an offer with low margins puts your project at financial risk from the start.

Sending the Wrong Offer Mode

Before sending an offer, check the display mode. Sending a RANGE offer when the client expects a fixed number (or vice versa) creates confusion. Match the mode to the conversation you have had with the client.

Ready to try it yourself?

Create your first estimate in minutes. The full Academy is also available inside the app with interactive examples.