Inside our process.
No spin. No hidden hours.
A transparent look at how your Open edX Academy is built — what a “small” change actually costs, where Phase 1 hours went, and the concrete shape of Phase 2 we’re proposing to make it calmer, faster, and predictable.
From reactive iteration
to proactive partnership.
Discovery phase upfront
A structured UX walkthrough before any code is written. Catches ~70% of change requests before they become engineering work.
Fixed-price blocks
T&M for maintenance and reactive work. Fixed price for any defined feature with clear acceptance criteria. You know the cost before we start.
Weekly demo cadence
Bi-weekly sprint demos show working features. You see progress in real time, not in invoice form three weeks later.
Transparent CR log
Every hour is traceable to a decision. Hours-by-feature, open change requests, releases — all in a read-only client view.
15–20% iteration buffer
Built into every estimate. Honest about reality, not hopeful. No more silent absorption when scope evolves.
Response-time SLA
We respond within agreed windows. You respond on blockers within 48 hours. Protects both teams from idle, billable cycles.
When you say “just make the font bigger,”
here’s what actually happens.
“Fix Notifications link in Account Settings”
From your side: a broken link, should take an hour.
Estimated 10h. Actual 20.75h. Why? The upstream bug ran deeper than the surface symptom — it touched account settings, MFE config, and theme rendering at once.
We maintain forks of edx-platform, tutor-contrib-rg-conf, tutor-contrib-rg-theme, frontend-component-header, frontend-component-footer, frontend-build, frontend-app-account, platform-extensions, brand-openedx, and your dedicated programs-catalog service. A “small” UI change often spans three or four of these.
Every theme change is double work by definition.
- —Course content
- —Studio admin
- —Some checkout flows
- —Legacy survey blocks
- —Learner dashboard
- —Profile · Account
- —Learning experience
- —Discussions · Communications
A change to the dark theme toggle, the header avatar, or a typography token must be applied twice — once in Legacy templates, once in React MFEs. It’s why we invested in tutor-contrib-rg-theme early: it now shares Paragon design tokens between both, and the same investment will keep paying down in Phase 2.
Three things worth naming
honestly.
Polish-on-the-fly change requests
11 tracked CRs. Real UX issues. Discovered during testing — expensive in delivery.
Communication intensity
Estimated 92h. Actual 198h. We underestimated. We’ve corrected this in Maintenance — and here’s the structured cadence we propose.
Anything beyond — ad-hoc, billed transparently. We default to writing over calling: 80% of questions resolve async without a meeting.
In the dashboard you’ll see communication hours vs delivery hours. If it creeps up, we both notice early.
Hidden scope evolution
Dark theme — initially scoped at 6h as standard theming, became a 200h custom feature. We absorbed the difference. That was the right call to maintain trust — but you never saw the true cost.
Going forward, we’ll surface scope evolution explicitly — even when we plan to absorb part of it. You should have full visibility into what’s “in the box” vs what’s a customization. No surprises in either direction.
Six friction points.
Six concrete fixes.
A concrete shape.
Five months, three tracks.
What changes vs Phase 1
Within 2 weeks of Phase 2 kickoff.
- Publish the box-solution checklist
- Stand up the live client dashboard
- Schedule the structured weekly / bi-weekly cadence
- Deliver the discovery phase plan with clear deliverables
- Send the first monthly burn report
- Active participation in the 2–3 week discovery phase
- Response within 48 hours on blocker-level decisions
- Designated point person for design decisions
- Honest feedback when the cadence isn't working — we'll adjust
- Trust in the change request process — even small UI tweaks need it
Years, not phases.
We’re proposing this partnership because we want to build the n8n Academy with you over the long run — not just deliver another phase. Let’s talk about what makes sense for you.