Short answer
RaftLabs built EMS Connect, an iPad platform for Eris Lifesciences, a pharmaceutical company with 5,000+ employees in India. Reps get training via Learning Store, pre-visit tests, a Wall of Fame, offline access. Managers track completion, scores, and engagement centrally. It reached 3,500+ users and reduced training time by 25% (founder-reported). Built in 18 weeks using Next.js, Node.js, and PostgreSQL.
The situation
Eris Lifesciences has more than 5,000 frontline employees spread across India. Most of them are in the field, visiting doctors to promote medicines and clinical products. A rep who cannot answer a doctor's question about the product they are promoting loses that visit. Getting consistent training to that workforce using classroom sessions and printed materials was expensive, hard to schedule, and easy to skip.
The company needed a training platform that field employees would actually open. Not because they had to. Because it was worth their time.
We built EMS Connect in 18 weeks: an iPad app for employees and a web admin portal for managers. It delivers a Learning Store for medicine and brand content, tests and assessments to confirm readiness, personalized learning paths, gamified activities, and offline access for teams working in low-connectivity areas. The client reported that within the platform's active use period, 3,500+ employees were logging in daily and averaging 30 minutes per session, in a workforce where getting anyone to engage voluntarily with training is considered a win.
'Time for compliance training' is office code for clicking Next for 45 minutes while checking your phone. Completion rate is the dominant currency of corporate training, and it says almost nothing about whether learning actually happened. A certificate is evidence of attendance, not knowledge.

Engagement
The Eris Lifesciences engagement
- Client
- Eris Lifesciences, 5,000+ frontline employees across India, mostly field reps visiting doctors
- What we built
- EMS Connect: an iPad training app with a Learning Store for medicine and brand content, tests and assessments, personalized learning paths, gamified activities, offline access, plus a web admin portal for managers
- Delivery
- 18 weeks
- Stack
- iPad app, web admin portal, offline-first caching layer
- Status
- Live. The client reported 3,500+ daily active employees during the active use period
Before and after
What changed
- Classroom-based training disrupted field schedules and could not reach a dispersed workforce consistently
- Training materials were static and delivered unevenly across different regions and teams
- No structured place for reps to study medicine and brand content before visiting doctors
- No test-based validation that employees understood the material, not just opened it
- No way for managers to see which employees had completed which training or where skill gaps existed
- Field teams working in low-connectivity areas could not access digital training materials during their working day
- No engagement data to tell training managers whether the content was actually being used
- Reps study medicine and brand content in the Learning Store between field visits, before they meet doctors
- Tests and assessments after each module confirm knowledge, not just completion
- Employees access bite-sized modules, personalized learning paths, and gamified activities from their iPads during field time
- Training content is consistent across every region: one update in the admin panel reaches all 5,000+ employees immediately
- Managers track completion rates, test scores, and engagement data from a central web admin portal without chasing individual teams
- Offline access with content caching lets field teams download materials before entering low-connectivity areas
- 3,500+ employees active daily, averaging 30 minutes per session, an engagement level that traditional training methods never produced
What we had to solve
Building one place for medicine and brand content that reps could trust before a doctor visit
Pharmaceutical reps prepare for doctor visits by product and territory. A platform that shows every rep every piece of content creates noise instead of preparation. The Learning Store was built to surface role-relevant content organized by medicine, brand, and learning path. Reps access what they need before a visit, not a library of everything. When a training manager publishes or updates content centrally, it reaches all 5,000+ employees immediately. The content stays consistent across India without a manager sending the same update to multiple regional teams.
Proving that field reps understood medicine content, not just completed the module
Watching a video and finishing a module are not the same thing. A pharmaceutical rep who cannot answer a doctor's clinical question about a product has not been trained, regardless of whether they opened the module. The platform needed a testing layer so the company could confirm knowledge, not just track completions. Tests and assessments run after each module. Managers see scores from the admin portal and can identify which reps understood the material and which need further preparation before their next field visit.
Getting field employees to open the app voluntarily, not because they had to
A training app that employees open once and abandon is worse than no app: it proves the approach does not work. The platform had to make the learning experience worth returning to. That meant gamification that created actual competition, bite-sized modules that respected a field employee's limited free time between client visits, and personalized paths that made employees feel the content was relevant to their specific role. A Wall of Fame surfaced top performers across the team, giving managers a recognition tool that manual follow-up across 5,000+ people could never replace. Getting the UX right for a non-technical audience who would judge the platform in its first 30 seconds was as important as any technical decision we made.
Keeping content synced across 5,000+ devices with inconsistent connectivity
Pharmaceutical field teams spend their working day in areas where mobile coverage is unreliable. A training platform that freezes or fails to load content mid-module teaches employees one thing: do not bother. We built an offline-first caching layer so employees could download their assigned modules when on Wi-Fi and access them throughout the day without a live connection. When they reconnected, progress synced automatically. The challenge was making that sync reliable enough that managers saw accurate completion data without employees having to think about when or whether their progress had been recorded.
Proof
What the client reported, and what this page can't claim
Engagement figures reported by the client during the platform's active use period. These are operator reports, not independently audited measurements.
| Result | What changed | Period or context | Evidence and limitation |
|---|---|---|---|
| Daily engagement | 3,500+ employees logging in daily, averaging 30 minutes per session | A field workforce of 5,000+ spread across India, in a setting where voluntary training engagement is considered a win | Client-reported |
| Training time | 25% reduction | Personalized learning paths instead of every employee sitting through the same material regardless of role or existing knowledge | Client-reported |
| Time to launch | 18 weeks to an iPad app plus web admin portal | Learning Store, tests and assessments, gamified activities, offline-first caching for low-connectivity areas | Project-recorded |
the build
What we built
EMS Connect has two sides: an iPad app for field employees and a web admin portal for training managers. Both had to work for non-technical users from day one.
Medicine and brand content field reps access before they visit doctors
The Learning Store holds product training, brand positioning, and clinical content organized by role and learning path. Reps access what they need to prepare for a specific visit, not an unfiltered content library. When a training manager updates or publishes content, it reaches all 5,000+ employees immediately. Reps study in short sessions between field visits, on the same device they carry every day.

Assessments after each module to confirm reps were ready before field visits
After completing a module, reps take a test. Managers see scores from the admin portal, not just completion status. Reps who need further preparation get identified before their next doctor visit. The test layer moved EMS Connect from a content library to a readiness tool. Top scorers are recognized on the Wall of Fame, combining knowledge validation with public recognition across the team.

Role-relevant training with visible competition: employees come back daily
Employees access bite-sized training modules matched to their specific role and the skills their manager has flagged as priorities. Points, badges, and leaderboards run alongside the content, creating visible competition within teams. The combination of relevance and competition drove the daily return rate that passive video libraries never achieved.

Managers see which employees need follow-up without running a manual report
Training managers create and assign learning paths, track completion rates and test scores across teams, manage content, and review engagement data from one web portal. A dashboard shows which modules are performing and which employees need follow-up, without requiring the manager to run a manual report.

The lesson
Training people open voluntarily is a product problem, not a compliance problem
Mandatory training gets completed. It does not get learned. The majority of corporate e-learning is designed to check a box: a wall of text, a stock photo, a Next button, repeated for 60 slides. The people who finish are the ones who figured out they can click through without reading. The dashboard says 94% completed. Learned is a different question.
EMS Connect worked because it was built as something worth opening: role-relevant content, bite-sized modules that fit between field visits, a Wall of Fame that made performance visible, and tests that confirmed knowledge instead of attendance. A training app that employees open once and abandon is worse than no app. It proves the approach does not work. The first 30 seconds decide everything.
How it runs
- Next.js
- The web admin portal needed server-rendered pages for fast load times and a clean architecture for the training content management tools that managers use daily without technical support.
- Node.js
- The backend handles concurrent activity from 5,000+ employees syncing progress, downloading modules, and submitting test results simultaneously. Node's event-driven model handles that concurrent I/O without the complexity of a thread-based approach.
- PostgreSQL
- Training completion records, employee progress, test scores, gamification data, and content assignments all needed reliable structured storage with fast query performance to support the real-time admin dashboard.
- Ant Design
- The admin portal's core users are training managers, not developers. Ant Design's production-ready components for data tables, forms, and status indicators reduced build time on the management interface so more effort went into the employee-facing features.
Common questions
After each learning module, reps take an assessment. Managers see scores from the admin portal, not just whether someone opened the module. Reps who score below threshold get flagged for additional preparation before their next field visit. This testing layer was built specifically for pharmaceutical companies because passive content consumption is not enough. A rep who cannot answer a clinical question in front of a doctor has not been trained, regardless of whether they completed the module on paper.
The Learning Store is the content hub where reps access medicine-specific training, brand positioning material, and product knowledge organized by their role and assigned learning path. Reps do not see all content, only what is relevant to their product focus and territory. When a training manager publishes or updates content centrally, it reaches all employees immediately. Reps access the Learning Store in short sessions between client visits, including offline when connectivity is poor.
The design has to respect how field employees actually work: in short bursts between client visits, often without a desk, and with no patience for content that is not relevant to their role. EMS Connect addressed this with bite-sized modules under ten minutes, personalized paths so employees only see content relevant to their work, gamification that created visible team competition, and a Wall of Fame that recognized top performers publicly. Getting the first-open experience right (fast load, immediately useful content, something worth coming back for) drove the 3,500+ daily active users within the active period.
Yes. Employees download assigned modules when they have Wi-Fi, then access them throughout the day without a live connection. Progress and completions sync automatically when connectivity returns. The offline-first architecture was a core requirement, not an afterthought. Pharmaceutical field teams work in areas with unreliable mobile coverage and needed a platform that did not treat connectivity as a given.
The web admin portal is designed for training managers, not developers. Managers create and assign learning paths using a structured content editor, track team completion rates and test scores on a real-time dashboard, and adjust training priorities without raising a ticket or asking for developer support. Every function the manager needs for their daily work is accessible from one screen.
Yes. If a company already has an LMS, the platform can be built to synchronize completion data and test scores with it so training records stay in one place. Our team has built integrations with major LMS platforms. The specific approach depends on which system you use and what data needs to flow between them. Contact us to confirm compatibility before you start.
The field force training problem Eris Lifesciences faced in India is not unique to India. Pharmaceutical companies in the US, UK, Australia, and across Europe run the same structure: large dispersed sales teams visiting doctors to promote medicines, training that cannot keep pace with product cycles, and no reliable way to confirm reps are ready before they enter a client meeting. The core requirements are the same: offline access for field teams, role-based learning paths by product and territory, test-based knowledge validation, and manager visibility without manual reporting. EMS Connect's architecture was built for those constraints. The same platform design applies to any pharmaceutical or life sciences company running a field force above a few hundred people.
We delivered EMS Connect (iPad app, web admin portal, Learning Store, personalized learning paths, tests and assessments, gamification, Wall of Fame, and offline caching) in 18 weeks for a workforce of 5,000+. Timeline depends on the number of content types, third-party integrations, and how complex the role-based personalization needs to be. Platforms with LMS integration, multiple content formats, or advanced analytics typically run 20 to 24 weeks. Contact us to scope based on your workforce size and feature requirements.
Related work
More work like this

Elearning app development case study: a creator-led music learning platform built on Flutter, Hasura, AWS, and RevenueCat over two years
A creator-led music learning platform for Irish traditional music, built over two years across four releases. 48,100 tracked practice minutes, 100+ learners, and a subscription model built on RevenueCat rather than raw store APIs.

ULT Movies reaches 4,000 remote theaters with custom OTT app
Leading Indian movie distributor, ULT Movies, solved the challenge of delivering new releases to remote theatres with an Android app for STBs. Now, the distributor delivers smooth movie access even in areas with limited internet connectivity.

PSi: anonymous real-time voice discussions for 300+ simultaneous participants
PSi replaced slow, expensive in-person deliberation sessions with anonymous real-time voice discussion. 300+ users in simultaneous audio. Delivered in 14 weeks.