The point of ForgeHub is that the client takes part. You approve designs, sign off
testing, raise change requests — and that participation earns a real discount on
the final invoice. Not a loyalty badge. Money off.
We built all of it. Then we measured what a client could actually earn, and the
answer was 5%.
## Three numbers
The discount runs on a thirteen-tier ladder, 0 to 12,000 points, paying 0% up to
25%. Measured three ways:
| | Points | Discount |
|---|---|---|
| What the schedule claimed | 4,995 | 13% |
| What was reachable | 875 | **5%** |
| What it pays now | 3,245 | 13% |
The middle number was the shipped reality. Two separate causes, and the second was
worse than the first.
(The first two rows are measured against the old ladder, the third against the
retuned one described below. The 4,995 above is the *claimed* schedule under the
old ladder, where 5,000 points was the next threshold up — it is not the 4,975
ceiling the retuned economy actually has.)
## Half the pipeline had no way in
A project moves through eight stages: discovery, planning, design, content,
development, testing, deployment, post-launch. Pages existed for all of them. The
UAT sign-off page — where a client formally accepts the work, the single most
valuable thing they can do — was over 300 lines of working interface.
Nothing linked to it. The project tab bar offered seven tabs and none of them was a
stage. Of eight stages a client could navigate to exactly one.
Underneath that sat something we found only because we went looking. Each stage has
a flag controlling whether the client may act on it. It defaults to `false`, and
**nothing in the codebase ever set it to `true`** — not the application, not the
seed data, not a migration. It existed solely to return "403 Forbidden".
Meanwhile the workflow template that defines a project already carried the answer:
seven of eight stages marked client-visible, with development deliberately hidden
because the client follows that through chat. The intent was written down and
correct. Project creation simply never copied it across.
So adding navigation alone would have walked clients to pages that refused them.
## Six rewards nobody could ever earn
Sixteen actions were configured to award points. Nine never fired. The obvious fix
was to wire up all nine — and it was wrong.
We checked each against who its route actually permits, and six could only ever be
performed by our own staff:
- **Advancing a stage** — a client gets 403; only staff can.
- **Completing a task** — developers complete tasks.
- **Approving a change request** — managers approve; the client *raises* them.
- **Winning a boss challenge** — a developer-side feature.
- **Completing discovery** — staff fill that in.
- **Code review** — no such feature exists.
The awarding function credits only the project's own client, deliberately, so those
six would either never fire or pay the client for our work. We removed them rather
than wire them, and replaced *stage advanced* with **stage approved** — the
client's own act at the same moment.
Eleven actions remain. Every one is something a client can genuinely do, and every
one now has code behind it.
## The ladder was calibrated against fiction
With a real economy measured, the tier thresholds were plainly wrong. They had been
set against that ~5,000-point schedule, about half of it phantom — and since points
are per-project, the whole 12,000-point ladder had to fit inside one project. It
never could. **The top five tiers were unreachable by construction.**
Worse, five actions had no per-project cap, so a forty-screen project earned 2,000
points from screens alone. Identical engagement paid different discounts purely on
project size, and a small project could not exceed Silver however completely the
client took part.
Every action is now capped. Total participation is a determinate 4,975 points, and
the thirteen tiers sit at fractions of it — 2%, 6%, 11%, 18%, 27%, 38%, 50%, 62%,
72%, 81%, 90%, 97%. Two anchors hold the curve: a client who genuinely takes part
lands on 13%, which is what the design always claimed; and 25% needs 97% of every
cap, so it is hard-won rather than impossible.
On a €20,000 project, that engaged client pays €17,400.
## What we are not doing
We are not raising point values to make a tier look generous. The original numbers
were an estimate nobody ever observed, and inventing figures to hit a target is how
this went wrong the first time. The three remaining estimates — how many design
screens, content pieces and test cycles a large project holds — get validated
against a real finished project, and then the ladder moves if it needs to.
That validation run is what the beta date now depends on.
Enjoyed this article?
Subscribe for more insights on DevOps, security, and developer tools. No spam, unsubscribe anytime.