Project management in a web agency
A web project rarely breaks in the middle. It breaks at the brief, where nobody wrote down what is out of scope, and at sign-off, when the client asks for “just this one thing” for the third time. Below is what project management looks like in a web agency that can actually see its margin: a brief with acceptance criteria, sprints, explicit sign-off, and a table showing exactly where the hours went.
The flow, in short
- Write the brief with what is in scope and what is explicitly out of it, plus the acceptance criteria.
- Split the project into sprints or stages, each with deliverables, an owner and a delivery date.
- Estimate in hours per role, not in days — the invoice is built from hours, not from days.
- Send every deliverable for explicit sign-off, recorded with a date and a name.
- Compare logged hours against estimates every week; a gap above 15% is a decision to make, not a statistic to file.
Briefs and deliverables you can actually sign off
The most expensive ambiguity in an agency is “I thought I signed off on something else”. Two lines in the brief and one dated sign-off remove it.
- The deliverables list, with the delivery format: 5 responsive pages and 3 templates, not “the website”.
- What is out of scope, written down: migrating legacy content, copywriting, translations, photography.
- The number of revision rounds included — two is the market standard, the third one gets quoted.
- Measurable acceptance criteria: LCP under 2.5 s, CLS under 0.1, contrast to WCAG 2.2 level AA.
- Sign-off per deliverable, with a date and a name, attached to the exact version it refers to.
Table: where the hours went on a 30,000 lei project
A project quoted at 30,000 lei, 150 hours estimated, list rate 200 lei an hour. Here is what actually got logged.
192 hours for 30,000 lei means a real rate of 156 lei an hour, not 200 — the effective hourly rate drops by 22%. Almost half the overrun piled up in revisions: 44 hours instead of 25, so 19 unbilled hours out of the 42 extra (45%), 3,800 lei at list rate. The rest split between design (+12 hours), development (+8) and the brief (+3).
Quoted hours vs. logged hours, a 30,000 lei project
| Stage | Hours quoted | Hours logged |
|---|---|---|
| Brief and architecture | 15 | 18 |
| UI design | 40 | 52 |
| Development | 70 | 78 |
| Revisions and launch | 25 | 44 |
| Total | 150 | 192 |
Acceptance criteria: Core Web Vitals and WCAG 2.2 AA
A web deliverable without acceptance criteria gets approved on taste, and taste changes by the third revision. Numbers don't.
Put the Core Web Vitals thresholds and WCAG 2.2 AA into the brief. They become delivery conditions, not post-delivery negotiations.
- LCP under 2.5 seconds on mobile, measured on the home page and on one inner page.
- CLS under 0.1 and INP under 200 ms, on the same set of pages.
- Contrast, keyboard navigation and alt text to WCAG 2.2 level AA.
- Data collected through the forms you ship, handled under GDPR (EU Regulation 2016/679): legal basis, notice and a retention period.
Common mistakes
- Estimating in days while invoicing in hours — the agency pays the difference.
- Not capping revision rounds, so out-of-scope work becomes free by habit.
- Putting a senior on a task quoted at a junior rate: you lose 110 lei for every hour worked.
- Sign-offs live in email, so nobody can show what was approved, or when.
- Looking at margin after delivery, when the only option left is to absorb the difference.