Every agency has a Gantt chart that's a lie. Someone built it in week one, it looked beautiful in the kickoff deck, and by week five nobody has dragged a bar in eleven days. The project is now being run out of Slack threads and a PM's memory.
The hill charts vs Gantt charts debate isn't really about charts. It's about what you're trying to communicate. Gantt bars communicate when. Hill charts communicate how much we still don't know. For agency work — especially SEO, where half of any engagement is diagnosis — the second question is the one that kills projects.
What a hill chart actually is
Picture a smooth hill. Work climbs the left side, crests, and rolls down the right side.
- Uphill = figuring it out. You know the goal but not the shape of the solution. Unknowns outnumber knowns.
- The crest = you now know exactly what has to be done. No surprises expected.
- Downhill = execution. Remaining work is just hours, not questions.
Each scope of work is a dot. A PM moves the dot based on judgment, not a task count. The format came out of Basecamp's Shape Up process, which is why it shows up in conversations about Basecamp versus other agency tools more than anywhere else.
The magic is that a dot sitting in the same spot for three weeks is visible. On a Gantt chart, that same stalled work shows a bar that's 60% shaded and a due date that gets pushed by four days, twice, quietly.
Why Gantt charts break on agency work
1. Percentage complete is fiction in discovery-heavy work
A technical SEO audit marked "70% complete" tells you nothing. Did the consultant review 70% of the site, or did they find a JavaScript rendering issue in hour three that invalidates the crawl config and means the real work hasn't started? Both look like 70%.
Content work is worse. "Draft at 80%" usually means the writer wrote 1,600 of 2,000 words, which says nothing about whether the angle survives the client's subject-matter expert.
2. Dependencies are mostly invented
Gantt charts reward drawing arrows between tasks. In practice, most agency dependencies aren't task-to-task — they're waiting on a human. Waiting on staging access. Waiting on legal to approve three claims. Waiting on the client's dev team to schedule a sprint for your schema fixes.
A Gantt models those as a "blocked" bar and moves on. A hill chart keeps that scope parked uphill and screaming at you every Monday.
3. The maintenance cost is brutal
Run the numbers on your own team. A PM juggling six retainers who spends 25 minutes a week per account maintaining Gantt dependencies is burning 2.5 hours weekly — roughly 120 hours a year, or about $9,000 of loaded cost, on a chart most of the team ignores. Hill chart updates take 60 seconds per scope because you're expressing a judgment, not reconciling dates.
4. They imply a precision you haven't earned
This is the real damage. Show a client a bar that says "Content Cluster 2: Mar 4–Mar 18" and you've made a commitment based on a guess you made in January. Then you spend April managing the fallout. A lot of the patterns behind missed deadlines trace back to a chart that made estimates look like promises.
Where Gantt charts still win
Don't throw them out. Gantt charts are genuinely the best tool when three conditions hold:
- The sequence is externally fixed. A site migration where DNS cutover happens at 2am on a specific Saturday, with freeze windows either side. That's a real dependency chain with real dates.
- Multiple parties need to coordinate. Your agency, the client's dev shop, and a hosting vendor all need to see the same sequence.
- The deliverable is contractual. A fixed-fee engagement with phase-gated payments. The client is buying a schedule as much as an outcome.
Migrations, launches, rebrands, seasonal campaigns tied to a retail calendar — Gantt all day. Ongoing SEO retainers, CRO programs, content engines — hill charts.
Running hill charts on an SEO retainer: a worked example
Take a 40-hour/month retainer for a mid-market ecommerce client. Instead of 47 tasks on a timeline, you define five or six scopes — chunks of work with an outcome, not a checklist.
Month one, the board might look like this:
- Kill crawl waste on faceted nav — early uphill. We know the parameter explosion exists (Search Console shows 340k discovered-not-indexed URLs), but we haven't confirmed which facets drive revenue.
- Category page rewrite, 12 pages — just past the crest. Brief approved, keyword mapping locked, writer assigned. Remaining work is hours.
- Internal linking module — deep uphill. Depends on whether their Shopify theme allows dynamic blocks. Nobody has asked the dev team yet.
- Monthly reporting build — bottom of the downhill. Template done, data connected, running on autopilot.
Now look at what that communicates in one glance that a Gantt can't: two of four scopes are still unknowns, and one of them is blocked on a question we haven't asked. That's an action item for Monday, not a surprise in week six.
The stall rule
Set a policy: any dot that hasn't moved in two consecutive weekly updates triggers a conversation. Not a status update — a conversation about whether the scope is badly defined, under-resourced, or genuinely blocked on the client.
In our experience the answer is roughly: 40% of stalls are "the scope is too big and vague," 35% are "we're waiting on the client and haven't escalated," and 25% are "the assignee is buried on another account." All three are fixable in a 10-minute chat. None of them are visible on a Gantt until the deadline passes.
Update cadence
Weekly, written, async. Each scope owner moves their dot and writes one or two sentences on why it moved. That "why" is the entire value — it's the narrative the Gantt never captures. Teams already running an async operating model find this slots in with zero extra meetings; it often replaces a standup.
The hybrid that actually works in an agency
Here's the arrangement most agencies land on after a quarter of experimenting:
- Client-facing: a simple phase timeline — four to six phases with month-level granularity. Not a 60-row Gantt. Just "Audit → Fixes → Content → Scale."
- Internal weekly: hill charts for every active scope across every account. One screen, the PM's early warning system.
- Client-facing weekly: a short written update tied to scope outcomes, not task counts. "Faceted nav work is still in diagnosis — we need dev to confirm theme constraints by Thursday" beats "12 of 17 tasks complete."
The mistake is showing raw hill charts to most clients. Some love it; most read an uphill dot as "you haven't started." Translate it. Say "we're still scoping" or "this is in execution, no risks."
Tooling reality check
Very few tools ship native hill charts. Basecamp does. A handful of others have plugins. Everyone else is drawing a curve in FigJam or a slide and dragging circles — which honestly works fine, because the discipline matters more than the rendering.
What matters more is whether your system connects the visual to actual budget. A dot sitting uph

Nick Quirk

