The original description
« We are three consultants. We run engagements for clients: each engagement has a fee amount, milestones, and a status — proposal, in progress, waiting on client, done, invoiced. Everyone logs their time per engagement. I want each consultant's workload, the firm's work in progress, and the engagements ready to invoice. »
The plan validated before generation
The description first becomes a plan to review: five entities — Client, Engagement, Milestone, Time entry, Consultant — and their links: an engagement belongs to a client, milestones and time entries attach to an engagement, each time entry is logged by a consultant.
The pitch's five statuses (proposal, in progress, waiting on client, done, invoiced) are carried over as written and will drive the filters and badges. The three requested indicators — workload per consultant, work in progress, engagements to invoice — appear in the plan. You validate, adjust if needed, and generation builds exactly what was announced.
- Entities: Client, Engagement, Milestone, Time entry, Consultant
- Relations: engagement → client; milestone → engagement; time entry → engagement, consultant
- Statuses: proposal, in progress, waiting on client, done, invoiced
- Indicators: workload per consultant, work in progress, fees to invoice
Navigation: the engagement portfolio at the centre
The sidebar opens on: Dashboard, Engagements, Clients, Time entries, Consultants. The engagement list is the firm's portfolio: engagement name, client, fee amount right-aligned, lead consultant, status badge.
The status filter slices the portfolio the way you ask the questions: “proposal” for the pipeline, “waiting on client” for follow-ups, “done” for what should go to invoicing. Search by client, sort by amount or date — the firm's inventory fits on one screen.
The engagement record: milestones, time and fees together
The record for “Procurement Redesign — Vernet Group” gathers what used to live in three spreadsheets: the header details (clickable client, €24,000 in fees, “In progress” status), the milestone list with due dates, and the time-entry table — who worked, on which day, how many hours, on what.
The engagement's cumulative hours read directly on the record, computed from the entries. The question “where does Vernet stand, and how much time has it already cost us?” is settled without opening a single file.
Time entry: attached, not declarative
The “New time entry” form fits in four fields: the engagement (dropdown), the consultant, the pre-filled date, the duration in hours — plus a free note (“scoping workshop, prep for readout”). No weekly timesheet reconstructed from memory: you log as you go, thirty seconds on the way out of a meeting.
Each entry feeds the engagement record, the consultant's workload and the dashboard — one database, no carrying-over.
The dashboard: workload, in progress, invoicing
The dashboard carries the pitch's indicators: engagements in progress per consultant (the workload), the firm's work in progress — the sum of fees on active engagements —, fees ready to invoice (finished, not-yet-invoiced engagements) and total hours this month.
A portfolio breakdown by status completes the tiles: the firm's commercial health reads at a glance — many proposals and little active work, or the reverse. Everything is computed on the database: an engagement switched to “Done” instantly lands in the to-invoice counter.
Demo data: a credible portfolio
Cabinet Meridien arrives with several months of simulated activity: some fifteen plausibly titled engagements spread across the five statuses, returning clients, three consultants whose time entries run from February to June, milestones past and upcoming.
You evaluate the tool in real conditions: the “to invoice” filter returns actual rows, the workload per consultant shows realistic gaps. The demo data is cleared before real matters go in. The application lives at its dedicated URL — and, crucially for a firm, the complete source code exports (ZIP, GitHub) and can be hosted wherever you choose, including on your own infrastructure.