How a UK B Corp Scaled Enterprise Client Service on Top of Its Odoo
A growth-stage ITAD company running its operations on Odoo had no client-facing layer - every booking, status check, and compliance report went through an account manager. Systango built the self-service portal that removed the ceiling, without modifying the ERP underneath.
Outcome Snapshot
1
Self-service portal replacing manual account management
4
Scoped access roles governing enterprise permissions
2
Systems kept in real-time sync - portal and Odoo
3
Core client capabilities: booking, tracking, reporting
Client
A growth-stage UK B Corp managing secure collection, certified data erasure, refurbishment, and resale of IT assets for enterprise and public-sector clients. Certified to ISO 27001, 9001, 14001, 45001, and NIST 800-88. Publicly cited impact: 137,000+ devices repurposed, 156+ tonnes of e-waste prevented, 27,000+ lives enhanced. Technology partner to the Good Things Foundation, powering the UK National Device Bank. Enterprise clients depend on auditable proof of what happens to their assets - certified erasure reports, chain-of-custody documentation, and ESG impact data - as a core part of why they choose the service.
Challenge
- No client-facing front door: every booking, status check, and compliance report went through an account manager by email and phone.
- Enterprise structures went unmodelled: large clients with many sites and teams had no concept of scoped access - it was all-or-nothing, handled manually.
- Compliance evidence locked behind a manual request: producing certified erasure and ESG reports on demand didn't scale with the client base.
- An operational ceiling: client count was capped by headcount - and because device throughput drives mission impact, that ceiling was also a ceiling on purpose.
Objectives
- Build a secure, scalable B2B self-service portal on top of Odoo - without modifying the ERP itself
- Model real enterprise account structures: multiple sites, teams, and access levels
- Deliver real-time collection booking and status tracking synchronised with Odoo
- Give clients self-serve access to certified erasure reports, compliance documentation, and ESG impact data
- Keep the portal and Odoo fully synchronised in real time
What We Built
- A secure B2B customer portal: a React + TypeScript SPA built on top of Odoo, giving enterprise clients self-service access to their account for the first time.
- Bi-directional Odoo integration: companies, users, and locations synced from Odoo; collection creation and status updates pushed back in real time via Celery jobs and webhooks.
- Workspace and location model: real enterprise account structures - many sites, many teams, differing seniority - mapped onto scoped, administrable access control.
- Four-tier role-based access control: Superadmin, Manager, Operator, and Viewer - matched to each user's role, not Odoo's internal permissions model.
- Document and report centre: certified erasure reports and compliance documents uploaded by Reconome admins, surfacing directly to clients for on-demand download.
- Dashboard and ESG analytics: visual insight into CO₂ savings, recent pickups, and user activity for clients' own ESG reporting.
- Security by design: token-based auth, MFA, OAuth2, and Azure Key Vault - built in from day one.
Impact
Removed
the operational ceiling on client onboarding, no longer capped by headcount.
Enabled
clients to book, track, and access compliance reports without contacting an account manager.
Delivered
certified erasure and ESG reports to clients on demand, not on request.
Launched
Phase 1 live, with a follow-on data project already underway.
Build Facts
Focus
Client Self-Service
ERP Integration
Enterprise Access Control
Compliance & ESG Reporting
Platform & Services
React + TypeScript SPA
Python/Django/DRF
Microsoft Azure (UK South)
Odoo (via API)
Solution / System Architecture
Software Engineering (Full-Stack)
Cloud Engineering and Infrastructure
Third-Party API & Systems Integration
Industries
Circular Economy & Sustainability
Enterprise & SaaS Platforms
Let’s talk, no strings attached.