Built on Y Build Go from prompt to a deployed app on your own domain — no server. Start free
BuildShipCompareThe LabAbout Start building →
ybuild / Scenarios

Project Tracker for Agencies

An agency's margin rarely dies in one big loss; it bleeds out one unbilled favor at a time. A designer spends an extra afternoon on 'just one more round,' the account manager says yes to a small extra ask, and by the time anyone opens the project the fixed-fee budget is spent and the work still is not done. Industry data puts scope creep on more than half of all projects, yet most agencies admit they rarely charge for it, so the tracker that actually protects an agency is not another task board. It is one that watches logged hours against the quoted scope of every deliverable and turns extra work into a change order before the margin is gone.

The problem

What you’d build

Project board with live budget burn

A board of every client engagement with your real stages, New, Active, Client Review, On Hold, Delivered, Closed. Each project carries a quoted budget in hours and fee, split across deliverables, and a burn bar that fills as time is logged and turns red as it approaches the estimate. You see a phase going over before it does, not at month-end reconciliation.

Time logging tagged to deliverables and scope

The team logs hours in a few taps against a specific project and deliverable, each entry flagged billable or non-billable and in-scope or out-of-scope. The burn updates immediately, so people see the budget they are spending, and every hour of extra work is captured with the scope flag that decides whether it becomes a change order.

Change orders and a profitability view

When out-of-scope hours appear, a change order captures the added hours and fee and moves through draft, sent, and client-approved, so extra work is billed instead of absorbed. A dashboard rolls it all up: projects over budget, retainers near their monthly cap, per-person billable utilization, and fee-versus-cost margin per project.

The data model

clients
id, name, engagement_type (project/retainer), primary_contact, billing_email, default_rate_card, status, created_at
projects
id, client_id, name, billing_type (fixed_fee/time_materials/retainer), quoted_hours, quoted_fee, retainer_hours_per_month, rollover_rule (rollover/use_or_lose/cap), stage, start_date, due_date, created_at
deliverables
id, project_id, name, estimated_hours, in_scope, status (todo/in_progress/client_review/approved/delivered), due_date, created_at
time_entries
id, user_id, project_id, deliverable_id, work_date, hours, billable, in_scope, bill_rate, cost_rate, notes, approved, created_at
change_orders
id, project_id, description, added_hours, added_fee, status (draft/sent/approved/rejected), requested_by, client_approved_at, created_at

A day in the system

  1. 8:45am: the dashboard opens on what is at risk, projects past 80 percent budget burn, retainers with fewer than five hours left this month, and deliverables due this week. You triage from the numbers, not from whoever emails loudest.
  2. A designer logs three hours to a project against the 'Homepage design' deliverable and marks it billable and in-scope. The project's burn bar ticks up in real time and the deliverable now shows 95 percent of its estimated hours used.
  3. The client emails asking for 'just one more homepage variation.' The account manager opens the project, sees the design deliverable is already at 95 percent, and instead of quietly absorbing it drafts a change order for the extra hours and fee.
  4. The change order is sent to the client and sits as pending. The project can no longer silently go over, because the added work is attached to a change order that either gets approved and billed or gets declined and stopped.
  5. A retainer client check: this month's 20-hour retainer has four hours left. The system flagged it, so you decide per the contract's rollover rule, stop work, roll the overage into next month, or propose an add-on, rather than discovering the overage after the fact.
  6. Midday: a PM drags the 'Homepage design' deliverable from In Progress to Client Review, and the client approval date is captured so the timeline reflects reality.
  7. A time entry lands tagged out-of-scope on a fixed-fee project. It surfaces on the 'unbilled out-of-scope' list, prompting a change order so that hour becomes revenue instead of lost margin.
  8. End of day: the profitability view shows each active project's fee against the cost of the hours burned, plus billable utilization per person, so you leave knowing which projects are bleeding and which people are underused instead of guessing at month-end.

Where AI trips up

✓ Build first
  • A project board where each project has a quoted budget in hours and fee, split across deliverables, with a live burn bar per deliverable that turns red as logged hours approach the estimate.
  • Fast time logging tagged to a project and deliverable, with required billable and in-scope flags, feeding the burn in real time.
  • A change-order flow so out-of-scope hours surface and become a tracked, client-approvable add-on instead of absorbed margin, plus a simple dashboard of projects over budget and retainers near their cap.
— Skip for now
  • Full invoicing, payments, and accounting sync: hand billable totals and approved change orders to your existing invoicing tool for v1 rather than half-building an accounts-receivable system.
  • Payroll, PTO, and HR-grade timesheets: track project time against scope, not attendance, leave balances, and overtime rules.
  • Forward capacity planning and resource-forecasting gantts: get burn, scope, and retainer tracking right first, then add who-is-staffed-on-what scheduling once the core is proven.

FAQ

How is this different from a Kanban tool like Trello or Asana?

Those track tasks; this tracks hours against a quoted budget per deliverable. A generic board tells you a card is 'in progress' but not that the design phase has already burned 120 percent of the hours it was sold for. This tracker watches the money side of every deliverable, so you see a project going over margin before it does, not after the invoice.

Can it handle both fixed-fee projects and monthly retainers?

Yes. Each project has a billing type, fixed-fee, time-and-materials, or retainer, and retainers get a monthly hour allotment plus your rollover rule, so the bucket resets and carries over correctly every month. A retainer near its cap gets flagged before you over-service the client for free.

Does it actually stop scope creep?

It cannot say no to a client for you, but it makes out-of-scope work impossible to miss. Every hour is tagged in-scope or out-of-scope, and out-of-scope hours surface on an unbilled list that prompts a change order. That turns the extra afternoon into a decision, bill it or decline it, instead of a silent hit to the fixed fee.

Will the team actually log time in it?

That is the design constraint. Logging is a few taps against a project and deliverable with billable and in-scope tags, and the burn bar updates the moment they save, so people see the budget they are spending. Time tracking that shows the person nothing gets skipped; time tracking that shows a live burn gets used.

Is our client, rate, and margin data kept private?

Your tracker runs hosted on ybuild and served on your own domain, backed by a managed database and gated behind managed auth with per-user access. Rate cards, project margins, and client details stay inside one controlled system instead of a shared spreadsheet everyone can open.

Sources

Build this for your business

Describe it, go live on your own domain in one pass — hosted, full-stack, no server. Free to start.

Start building free →
Related on ybuild
agencies & freelancersSMB back-office Managed DatabaseManaged AuthCustom Domain Hosting Database SchemaCRUD AppFull-Stack App
Related scenarios
Build an Appointment App for Your SpaBuild a Booking App for a Dental ClinicBuild a Booking App for Your SalonBooking App for Tutors: Recurring Lessons, Prepaid Hours & No-Show ControlBookkeeping App for Small BusinessCRM for Law Firms
Build your own app
Free · no card
Start free →