← Back to Work
7UNIT / CASE STUDY 003
EdTech · Italy · 2024

Holistic growth centre portal withOdoo-connected operations.

THE PROBLEM

Bloom, a holistic growth and learning centre in Italy, was running their learner-facing operations through Odoo — a powerful back-office tool that was never designed as a learner portal. Educators were publishing content in Odoo and manually pushing updates to learners. Certificate generation required manual intervention. Mobile experience was poor. 1,200 learners were using a system built for accountants.

WHAT WE BUILT

A learner-facing React portal connected to Odoo as the operations back-office. Content sync pipeline running on Odoo publish events. Progress tracking, completion certificates, and mobile-responsive delivery. The portal looks and feels like a modern learning platform — Odoo runs invisibly behind it.

ARCHITECTURE DECISIONS

Event-driven sync over scheduled batch

The first design had a scheduled batch sync — every 15 minutes, pull content from Odoo. Rejected. A teacher who publishes content should see it live immediately. We rebuilt the sync as event-driven: Odoo webhook triggers portal update.

Rationale: 15-minute lag between a teacher publishing and learners seeing the update is not acceptable in a live learning context. Event-driven sync eliminates this lag. Sync time went from up to 15 minutes to under 90 seconds.

Trade-off accepted: More complex webhook handling and error retry logic in exchange for near-real-time content delivery.

Completion-triggered certificate generation

Manual certificate generation was a support ticket trigger — learners completing a module and not receiving a certificate immediately would contact support. We built completion-triggered certificate generation. On module completion, certificate generates and delivers automatically. Zero manual steps.

Rationale: Every manual step in a completion workflow is a potential failure point. Automating certificate generation eliminates the most common support ticket category after launch.

Trade-off accepted: More complex completion state machine in exchange for zero support tickets for certificate delivery.

Odoo as source of truth

We made a deliberate architecture decision: Odoo owns the content data. The portal is read-only against Odoo. This means the educator's workflow does not change — they still work in Odoo — but the learner experience is built on top of it.

Rationale: Asking educators to learn a new content management tool would have created adoption resistance. Keeping Odoo as the editorial interface preserved their existing workflow while delivering a modern learner experience.

Trade-off accepted: Portal flexibility is constrained by Odoo's data model — accepted in exchange for zero workflow change for educators.

OUTCOMES
  • Active learners: 1,200
  • Curriculum update live after Odoo publish: 90 seconds
  • Certificate generation: fully automated on completion
  • Support tickets for certificate delivery: zero after launch
STACK
ReactNext.jsFastAPIOdooPostgreSQLDocker
CONTINUE EXPLORING

Related case studies

AI Systems · Global · 2025

LLM-powered assistants built for

How we build LLM-powered assistant systems designed around real production constraints — session memory, human handoff, cost attribution, and tenant isolation.

Read case study →
SMB Sales · UAE · 2025

WhatsApp-native sales CRM for

How we built a complete CRM that operates inside WhatsApp — pipeline tracking, AI follow-up, and lead qualification for UAE sales teams.

Read case study →