Executive summary
A US-based IT services company sold support and development capacity by the hour — and burned real hours every month calculating, allocating, and invoicing those hours by hand. I designed a subscription platform on Odoo where customers buy monthly hour packages that allocate themselves to projects, renew automatically on payment, and are fully visible in a self-service portal. Manual billing effort went to zero; client “how many hours do we have left?” queries dropped 45%.
The problem
- Hour packages were tracked in spreadsheets; month-end billing was a manual reconciliation exercise prone to disputes.
- Customers had no visibility into consumed hours or task progress — every question became a support email.
- Buying more hours meant a human-generated quote, slowing down exactly the moment a customer wanted to spend money.
- Onboarding and access security didn’t meet the standard the company sold to its own clients.
Solution architecture
Key custom work
- Self-allocating hour packages — purchased hours flow to projects automatically as timesheets land; packages renew on successful payment with no human touch.
- Customer portal — clients track consumed hours and task progress in real time and buy additional hours directly from their sale orders, with instant project allocation.
- Security hardening — multi-step onboarding verification with automatic fraud detection, enforced strong password policy, and mandatory two-factor authentication for all users.
- Backblaze storage layer — all documents, attachments, and automated database backups moved to Backblaze B2, replacing the default Odoo.sh filestore for cost and control.
- Purchase governance — multi-level approval workflow for internal procurement.
Challenges & decisions
Billing logic had to be dispute-proof. When money maps to hours, every edge case (partial hours, package boundaries, mid-month top-ups) becomes an argument waiting to happen. The allocation engine was designed so every consumed hour is traceable to a timesheet line, a project, and a package — turning billing conversations from negotiations into lookups.
Self-service without support risk. Letting customers buy and allocate hours themselves required the fraud-detection and verification layer up front. Security wasn’t a compliance checkbox; it was the enabler of the self-service business model.
Business impact
| Area | Before | After | Change |
|---|---|---|---|
| Monthly billing effort | Manual reconciliation | Fully automated | −100% |
| Client status queries | Constant email traffic | Self-service portal | −45% |
| Hour top-up sales cycle | Quote → email → wait | In-portal, instant | Friction removed |
| Data protection | Default filestore | Backblaze + automated backups | Hardened |
Lessons learned
- Automation earns trust through traceability, not magic. Clients accepted automated billing because every number could be drilled to its source.
- The portal is a sales channel, not a cost center. Making top-ups self-service turned support friction into revenue.
Client identity withheld under NDA. Reference available privately on request.