Skip to content
Estimora

From an estimate to a finished project that still makes money

The whole path: how to build an accurate estimate, turn it into an offer, freeze it into a commitment, and watch it while the work runs.

01

Introduction

What is this tool?

Estimora turns a software estimate into a measurable financial commitment and then watches it while the work runs. Scope and effort are estimated in a structured workspace, the won version is frozen into a commitment carrying its own hours, rates, cost and margin, delivery hours arrive automatically from Jira or ClickUp, and the deviation is computed continuously.

Success is not a tidy report after the project closes. Success is catching an overrun while there is still time to act on it — and recording which action was taken.

The loop a project runs through

  • Estimate — scope, roles and hours in a versioned grid
  • Offer — a version becomes a client-ready document, with a timeline and a PDF
  • Freeze — the won version becomes the commitment: a copy of the numbers, not a reference to them
  • Connect — the scope goes into Jira or ClickUp, or is linked to work that already exists there
  • Measure — a nightly sync reads worklogs and attaches hours to plan items
  • Detect — two independent forecasts, four states of risk, a deviation trend
  • Decide — an annex, a scope cut, or deliberately absorbing the cost, all recorded

Who is it for?

  • Delivery leads who own whether a signed project still makes money
  • Project managers who plan and estimate new work
  • Sales teams who need an offer out quickly and confidently
  • Company leadership who need a margin that still holds six months after signing

What this tool deliberately does not do

  • No single health score — averaging eight signals produces a number nobody can challenge or act on
  • No invented certainty — insufficient data is a first-class answer, not an error
  • No editing history — a commitment is immutable; change happens through the next version
Every figure on screen names its source: which version of the commitment it is measured against, when that was frozen, and how complete the underlying data is.
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 to 130 hours. At $100/hour, that becomes $10,000 to $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, such as senior developer or 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

Risk thresholds

The thresholds say when a project stops being healthy. Set them once for the whole workspace under Settings → Risk thresholds; an individual project can carry its own if it works to different rules.

Time & materials — hours past the commitment

Measured as a percentage of the committed hours: the forecast lands this far past what was promised. 10% is at risk by default, 20% is high risk.

Fixed price — margin below the baseline

Measured in margin points. On fixed price the revenue does not move, so every extra hour comes straight out of the margin. 3 pp and 6 pp by default.

Data readiness

Below this threshold the forecast is still shown, but labelled as uncertain. 70% by default. Set per workspace only: a project does not get to lower the bar for believing its own numbers.

Re-arming an alert

An alert you acknowledged or dismissed stays quiet until the figure drifts this much further. 5 by default. Zero means: speak on any further drift.

An alert fires on a change of state, never on drift alone. The product cannot survive teaching its users to ignore it.
04

Creating an estimate

How to start

  • Go to Estimates and create a new one
  • Give it a title, for example Client X — mobile app redesign
  • Select a currency
  • The estimate starts in draft status

Fixed price or 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.

05

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. An empty field inherits from the module, which may itself inherit from organization defaults. An entered value overrides the module setting. Example: the organization default buffer is 15%. The module Dashboard has no buffer set, so it uses 15%. The task Complex chart widget has a buffer of 25%, so it uses 25%. The task Simple header has none, so it uses 15%.

Roles and hours

For each task, assign roles and enter hours:

  • Select a role, for example senior developer
  • Enter the estimated hours, for example 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.

06

Fixed price estimation

How price is calculated

  • Base price = sum of hours × hourly rate for all roles
  • Buffer applied = base price × (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 and does not see the breakdown between base and buffer.
07

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 × (1 + buffer%), rounded up

Example

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

  • Hours range: 64 to 84 h
  • Price range: $7,040 to $9,152
  • Cost range: $4,480 to $5,880, because employee cost goes up too
  • Profit range: $2,560 to $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 the additional cost risk stays with you.
09

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 it — they carry their own risk buffer inside the price.
10

Library

The library holds modules and tasks saved once and dropped into later estimates together with their hours per role. It is why the second estimate for a similar project does not start from a blank page.

How items get there

  • Save a module or a task from any estimate
  • Create a new module directly in Library and fill in the role hours
  • Insert a saved item into an estimate through the library import

Hours are a starting point, not a verdict

An item carries the hours it was saved with. Once inserted into an estimate you can change them — the library gives you a start, it does not dictate the result.

Archive

An archived item leaves the ordinary list and the import, but it is not gone. Somebody who governs the library sees an Archived view and can bring it back.

The library is shared across the organization. Changing an item does not rewrite estimates that already used it — they hold their own copies of the hours.
11

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 the 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.

12

Delivery Timeline

The Delivery Timeline is an optional offer section that gives your client a clear answer to "How long will this take?" — without turning the offer into a project plan.

Enabling the Timeline

In the offer workspace, use the "Include estimated delivery timeline" toggle. When enabled for the first time, a configuration modal opens where you set:

  • Project start date — when work begins (weekends auto-adjust to Monday)
  • Role availability — hours per day for each role that has effort in the offer (e.g. FE: 4h/day, BE: 6h/day)
  • Delivery buffer — optional padding of 0%, 10%, 15%, or 20% applied to the total timeline

How Duration Is Calculated

Modules are calculated sequentially — each module starts the day after the previous one ends. For each module:

  • Hours per role are divided by daily availability to get working days per role
  • The module duration equals the longest role (the bottleneck)
  • Only Monday–Friday count as working days, weekends are skipped automatically

Example Calculation

For a module with 3 roles:

RoleCalculation
FE (40h at 4h/day)10 days
BE (120h at 6h/day)20 days
QA (10h at 2h/day)5 days
Module duration20 days (driven by BE)

Good to Know

  • Toggling off preserves your configuration — toggling back on restores it instantly
  • Buffer extends only the total duration and end date, individual module bars stay unchanged
  • The timeline appears as the last section of the offer — both in preview and exported PDF
  • Modules with zero hours are automatically excluded from the timeline
The timeline is a sales-friendly estimate, not a binding project plan. A disclaimer is shown automatically below the chart.
13

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 — the offer has been sent to the client
  • Won — the client accepted the offer, a terminal status
  • Lost — the client rejected the offer
  • Expired — no client response, the 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 or expiredDraft, reactivated

Edit protection

When you edit an estimate that is no longer in draft, the system asks for confirmation and automatically regresses 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 reviewed again before it is sent.
14

Estimate analytics

Above the estimate list you get a high-level overview of your sales pipeline. Each metric card answers a specific business question about your sales process. The Projects tab shows something else — work already sold, measured against a frozen commitment.

Metric Cards

MetricWhat it showsHow it is calculated
Active EstimatesNumber of estimates still in progressCount of estimates NOT in Won, Lost, or Expired status
Win RatePercentage of closed deals you wonWon ÷ (Won + Lost + Expired) × 100%
Avg Sales CycleHow long deals take to close, in daysAverage number of days from creation to last update for Won and Lost estimates
Avg Estimate ValueTypical deal size across all estimatesAverage of grand total (revenue) across all estimates that have pricing configured
Total ValueCombined pipeline valueSum of grand total for all estimates, grouped by currency
Avg Margin (WON)Profitability of won dealsAverage of (Grand Total − Employee Cost) ÷ Grand Total × 100% for Won estimates only

Pipeline Funnel

The colored bar below the metric cards shows how your estimates are distributed across statuses. Each segment is proportional to the number of estimates in that status. Use it to spot bottlenecks — for example, many estimates stuck in In Review may indicate a slow approval process.

Tips for Accurate Metrics

Win Rate and Avg Margin only appear when you have estimates in terminal statuses (Won, Lost, or Expired). Avg Margin requires employee costs to be configured in Organization Settings — if any role is missing its employee cost, that estimate is excluded from the margin calculation. Keep your statuses up to date so the metrics reflect reality.

Margin is snapshotted when an estimate is marked as Won, so later changes to employee costs do not affect historical data. The snapshot uses employee cost per hour from Organization Settings at the time of the status change. Make sure employee costs are configured for all roles before marking estimates as Won to get accurate profitability data.
15

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 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 — the 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. It gives you a bird's-eye view of every ongoing discussion.

Comments are loaded on demand: the full message history is fetched only when you open a thread, which keeps the estimate sheet fast.
16

Notifications

Estimora speaks up about two things: when somebody wants something from you in the comments, and when a project has changed state. Two channels, two levels of urgency.

In the app — comment activity

  • Mention — somebody @-mentioned you in a comment
  • Reply — somebody replied in a thread you took part in
  • Resolution — a thread you opened has been resolved

All of it lives under the bell in the top bar: an unread count, and new and all tabs. Clicking through goes straight to the right cell and opens the thread in context.

By email — a project changing state

A risk email goes out only when a project changed state — from healthy to at risk, say. At most once per project per day, to whoever runs the project.

A growing overrun does not re-fire the same finding. Once acknowledged or dismissed, the alert stays quiet until the figure drifts past the workspace's re-arm threshold.

What you can turn off

Settings → Notifications switches individual email categories on and off for you. The setting is personal, not organizational.

The rule behind all of this: an alert fires on a change of state, never on drift. A tool that says the same thing every day teaches people to ignore it — and then it has stopped working entirely.
17

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 of an estimate and save
  • Fill in the tax ID (NIP), which is used for deduplication across estimates
  • Create a new estimate from the client detail page using + New estimate
You can also create a client manually from Clients > New client, but in most cases clients appear on their own as you work with estimates.

How clients are grouped (deduplication)

The system prevents duplicate client records using two rules:

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

Client detail page

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

  • Total revenue — the 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 against confirmed status

Filtering estimates by client

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

Creating estimates for a client

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

18

Freezing the commitment

A won estimate is not a project yet. Freezing is what turns it into a commitment — the baseline version delivery will be measured against.

A commitment is a copy, not a reference

At freeze time every figure is written into it: hours, revenue, cost and the rate card itself. Raising a role's rate in March therefore never moves the margin of a deal closed six months earlier.

The estimate's scope is flattened into baseline items — those, not the modules in the grid, are the unit of measurement.

Two ways into a commitment

  • From an estimate — the common one: take the won version and freeze it
  • From a spreadsheet — when the work is already sold and no estimate exists in the system; upload the scope from a file

When the project actually began

The start date decides which hours count as this project's at all. Set it to when the team really started, not to the day you pressed the button — otherwise you pull in somebody else's work or lose your own.

One estimate stands behind one commitment. An annex belongs to the project and is not an estimate — it is a short document to sign, which grows the commitment into the next baseline version once signed.
19

Connecting a delivery tool

A frozen plan measures nothing by itself. It has to know where that work lives: in Jira or in ClickUp.

Three ways to link

  • Export the plan — Estimora creates issues matching the plan items and links them straight away
  • Project source — point at a Jira project or a ClickUp list, and everything there feeds the measurement
  • Link by hand — tie a single plan item to an issue that already exists

How hours arrive

The nightly sync reads worklogs, resolves the author's role and the rate stored on the hour, then attaches the hours to plan items. An hour is worth the rate of whoever logged it.

Plan coverage

The Sync tab states plainly how many plan items are linked and how many are not. An item with no issue will never receive hours — and that is the most common reason a forecast looks better than the project is.

Exporting the plan works into Jira and ClickUp. In ClickUp the plan goes into the list the project claims as its source: modules become tasks and plan lines become subtasks, each with its estimate and frozen description. A project claiming two lists, or a single task rather than a list, is refused with its reason.
20

The two forecasts

This is the mechanism the whole of monitoring is built around. Instead of one number a project gets two independent answers to the same question — and whether they agree is a finding in itself.

Forecast A — what the team declares

Logged + remaining. It asks the team how much is left. It fails when remaining-time estimates go stale and nobody updates them.

Forecast B — what the finished work proves

Logged ÷ share of the plan closed. It asks nobody: it derives the total from how much of the plan is already done. It fails when too little is closed, or statuses are not mapped.

What agreement and divergence mean

  • They agree — the confidence is earned, not assumed
  • They diverge — the divergence is the finding: which forecast stands on thinner data, and what the gap is worth in money
Estimora deliberately refuses to blend them into one percentage. A weighted average would delete exactly the information you came here for.
21

Project state and data readiness

A project's state is one word, decided by the last pass and stored — never inferred from whether an alert happens to exist.

Four states

StateWhat it means
Healthyinside the commitment
At riskdrifting: worth a look, not yet worth an alarm
High riskpast the commitment far enough to act
Insufficient datawe do not know — and that is an answer, not an error

Data readiness

Readiness states how much of the comparison is real: how many plan items are linked, how many hours have a resolved role, how many statuses are mapped. Below the workspace threshold the forecast is still shown, with a caveat over it.

Deviation trend

The trend is drawn from successive nightly readings of the same plan. A single reading cannot show a direction — and the screen says so, rather than drawing a flat line.

Insufficient data is grey, never green. A project nothing is known about is not a healthy project.
22

Work outside the plan, and annexes

The tool also delivers issues the plan never contained. The Scope tab gathers them in one place and asks one question: is this ours, or the client's?

Three answers

  • New scope — work the client should pay for; it goes into an annex
  • Ours — fixes, warranty, debt; we absorb the cost
  • Not this project — the issue arrived from another stream and should not count here

The rules suggest an answer but never tick a box themselves. Until somebody settles it, an item waits — and reaches neither an annex nor a deliberately absorbed cost.

The annex

An annex carries tasks past their estimate and work outside the plan. Its hours are split by role according to who actually logged the time, at the project's rates. The result is a one-page PDF listing the tasks, the amount and a place for both sides to sign.

Signing

When the client signs, you mark the annex as signed. Its hours join the plan as the next baseline version, and from then on the project measures against the larger commitment. If the client declines, you cancel the annex and its tasks return to the decision queue.

Hours an annex already covers are not offered again — the next annex covers only what a task has grown by since. Naming something as ours when the client already has it on an annex is contradicted on screen.
23

Overrun decisions

Detecting an overrun is half the job. The other half is recording what was done about it — so that a quarter later it is clear who decided, and on what basis.

Three exits from an overrun

DecisionWhat it means
Annexthe client pays for the extra scope, measured from real worklogs
Cut scopework comes off so the project fits its commitment
Absorbwe accept the cost, and the margin that comes out of it

Acknowledge and dismiss

These are not decisions but alert states. Acknowledge says: seen, still on it — the overrun has not gone anywhere and the row keeps saying so. Dismiss quiets the alert until the figure drifts past the re-arm threshold.

Alert emails

Email goes out only on a change of state, at most once per project per day, to whoever runs the project. A growing overrun does not re-fire the same finding.

24

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 the simple modules, keep the complex ones flexible

Setting buffers

  • Start with sensible organization 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, for example 30–40%
  • Consider switching risky tasks to T&M so the 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 — it makes your offer uncompetitive
  • Do not set buffers to 0% to win a deal — it 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

While the work runs

  • Freeze as soon as the deal is won — every day without a commitment is hours with nothing to compare against
  • Set the real start date, not the day you pressed the button
  • Watch plan coverage — an item with no issue in the tool will never receive hours
  • Settle work outside the plan every week, while you still remember where it came from
  • Read both forecasts, not just the one that looks better — the divergence is information
25

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 the billing rate and the 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 override only 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 the way 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 the other way round, creates confusion. Match the mode to the conversation you have had with the client.

Freezing too late

A project that started a month before it was frozen has a month of hours with no plan to attach them to. Freeze on the day the deal is won, and set the start date to when work really began.

Trusting a forecast on low readiness

When data readiness is below the threshold, the forecast is labelled uncertain for a reason. Link the missing items and map the statuses first, then draw conclusions.

Acknowledging an alert instead of deciding

Acknowledging only says you have seen the problem. The overrun stays until you record what you are doing about it: an annex, a scope cut, or deliberately absorbing the cost.

Leaving work outside the plan unsettled

An unsettled item reaches neither an annex nor an absorbed cost. A quarter later nobody remembers whether the client asked for it — and the money quietly goes.

Ready to try it yourself?

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