A custom student management and revenue intelligence system for a coding school. Built so the books could finally tell her what the bank balance was hiding.
Code Ninjas Richmond Hill teaches kids to code through a belt progression. Contracts are collected up front. On the books, day one of every contract puts cash into the asset column and an equal amount into a liability called deferred revenue. Recognized revenue stays at zero until sessions are delivered.
Close contracts faster than you deliver and the deferred revenue liability builds faster than recognized revenue. The bank balance flatters. The income statement, properly drawn, says something different.
We were brought in to track lessons. We surfaced a balance sheet exposure the owner didn't know was there.
A typical 6-month contract is $899 paid up front, in exchange for 30 hours of teaching. On day one, the school records cash on the asset side and an equal liability: deferred revenue. Recognized revenue is zero. Each session delivered transfers roughly $30 from the liability to the income statement.
Across hundreds of active contracts at different points of delivery, the aggregate deferred revenue is the school's real obligation. Standard SaaS books the cash receipt and stops there. The owner is paying interest on a number she can't see.
Eleven kids, six instructors, mostly running one or two students each. Labor cost per delivered hour was running double what it needed to be. Once the system could see every kid's current belt in real time, the consolidation became obvious.
The owner didn't ask for this. The data was already there: the system knew every kid's current belt in real time, and the grouping move followed directly. SMEs don't need software that stores their data. They need software that understands their business well enough to surface the move they hadn't considered.
Each contract creates an obligation: 30 hours of teaching owed. The hours bank tracks the obligation as it draws down, session by session. Revenue is recognized only as hours are delivered. The deferred revenue liability shrinks at the same time and by the same amount.
A standard student management tool gives you a session log and a payment record. Useful. It doesn't answer the question that matters: how much revenue has the business actually earned this month?
That question lives at the intersection of software and accounting. We work there.
| Generic SaaS (Jackrabbit, iClassPro, etc.) | moofa custom build | |
|---|---|---|
| Session logging | Standard attendance | Lesson-level with belt logic |
| Revenue model | Cash booked, no recognition | Deferred revenue drawn down per session, real time |
| Grouping logic | None | Automatic, belt-based |
| Insight | What happened | What it means |
| You own | A subscription | The system, the data, the logic |
A generic platform would have fit 80% of this operation. The 20% it didn't fit was the realized revenue model, the belt-based grouping, and the multi-account reconciliation. That 20% revealed a balance sheet exposure and unlocked a strategy the owner hadn't considered.
That 20% is where the business lives.
If you're closing packages, taking deposits, or running subscriptions and you're not sure how much revenue you've actually earned, that's the conversation we have well.