ML engineers send a quote or proposal before any significant work starts, usually after a scoping call and a look at the client's data. Clients compare price, timeline, how much risk you take on, and whether you can deploy the model rather than just train it.
When to use estimates: Use estimates to provide project quotes and get client approval before starting work. Once approved, convert your estimate to an invoice with one click to collect payment.
Create an invoice for payment collection
Upload logo
PDF will be generated with filename:
Invoice_1001_Client_2026-10-14.pdf
Writing down what the model should predict and how it will be measured prevents arguments later about whether it worked.
State the volume, format, labeling quality, and access you expect. If the data is worse than described, the estimate should be allowed to change.
List what is handed over: notebooks, training code, model weights, an API, documentation, a dashboard. Unlisted items become scope creep.
Specify where the model runs (client cloud, your account, on-device) and what serving setup is included.
Say who pays for GPUs, API usage, labeling, and licensed data, and give an expected range if you will front them.
Model work is experimental. State how many training rounds or review cycles are included before extra time is billed.
Delays in data access are common. List what you need from the client and how long bug fixes or monitoring are covered after launch.
| Service | Priced | Typical range |
|---|---|---|
| General ML engineering (model development, training pipelines) | per hour | $100-200 |
| Senior or specialized work (LLM fine-tuning, RAG systems, computer vision) | per hour | $150-275 |
| Consulting or architecture review | per day | $1,200-2,400 |
| Feasibility study or data audit | flat fee | $2,500-10,000 |
| Prototype or proof of concept | flat fee | $8,000-30,000 |
| MLOps setup (CI/CD, model registry, monitoring) | flat fee | $5,000-20,000 |
| Monitoring, retraining, and support retainer | per month | $2,000-8,000 |
Typical US ranges. Rates vary by region, experience, and job size.
Split the proposal into discovery, prototype, and production. The client can approve one phase at a time, and you can reprice later phases once the data is understood.
Cleaning and labeling take longer than expected on most projects. Build 20 to 30 percent contingency into the data phase, or write it as a separate hourly line.
When uncertainty is high, give a low and high figure and name what moves the price, such as dataset size or number of model iterations.
GPU prices, your availability, and the client's data change over time. A 14 to 30 day expiry on the quote protects you from stale pricing.
It is risky. Offer a paid discovery phase or an hourly estimate first, then a fixed quote for the build once you have reviewed the data and tried a baseline.
List them separately, either as an estimated range billed at cost or as costs the client pays directly. Folding them into your rate hides a variable expense that can swing widely.
Explain that results depend on data and cannot be promised in advance. Offer a baseline and an evaluation process, and agree on what happens if the target is not met, such as extra phases at an agreed rate.
Yes, for most projects. A deposit of 25 to 50 percent is common, and it signals commitment and covers early data and setup work.
Use the ML Engineer invoice template to bill the client, or convert this estimate once it's approved.
ML Engineer invoice template