Rebuilding an EdTech MVP into a production AI training platform
A technical audit of an inherited codebase, a rebuild that kept the database, and speech analysis shipped to production.
Industry
EdTech
Location
Germany
Client since
2021
Status
Delivered
5 months
Audit to production
8
People on the pod
2
Languages shipped
3
AI vendors evaluated
What HeyPractice does
HeyPractice was a sales training platform used by German companies to teach their staff how to pitch. An employee worked through the theory, then recorded a pitch on video or audio, and the platform scored it and returned feedback without a coach having to watch the recording first. Customers bought a workspace, built their own courses inside it, and assigned them to teams. The platform ran in German and English, either on its own or inside a customer's existing learning management system. It is the kind of product we build as part of our EdTech development services.
The HeyPractice rebuild at a glance
Client
HeyPractice, formerly Peter Pitch. Dortmund, Germany
Product
AI-based sales training platform, sold to enterprises
Starting point
A working product with enterprise customers, on a codebase that couldn't carry the next version
What we did
Technical audit, application rebuild, AI integration
Architecture
Node.js API, React frontend, containers on AWS ECS
Engagement
Senior engineering pod, eight people, October 2021 to 2023
Where HeyPractice came from
David Neuendorf founded the company in July 2020 as Peter Pitch. The product was interactive sales training for teams in a room together, and it won enterprise customers early.
Then the market for training people in a room disappeared. The company had already built voice analysis on Google Speech-to-Text and removed it, because recording several people in one room produced audio the model could not read. The product that worked in a training room did not work anywhere else.
The answer was to rebuild the same training method for people working remotely, one person and one camera at a time. That became HeyPractice. The rename happened during our build, in January 2022.
By October 2021 the company had raised a round, had enterprise customers to keep, and had a demo deadline in February. It also had a codebase that had grown past what it was designed for, and no CTO.
What the audit checked, and what we recommended
Before quoting, we audited the repository and the running staging environment. Seven things we look at on an inherited codebase, and what we told him about each one.
Test coverage
Enterprise customers were already using the product, and the backend had no automated tests. We recommended covering the business logic first, starting with scoring and access.
Setup documentation
The repository had no readme or setup notes. We recommended documenting the setup so new engineers could run the project straight away, since the team was about to grow from two engineers to six.
Frontend and backend
Both ran as one application. We recommended separating the API so frontend and backend engineers could work in parallel, and so the same API could later serve a mobile app.
Application logic
The logic sat in controllers, where it couldn't be tested or reused. We recommended moving it into separate layers.
API design
The API didn't follow REST principles. We recommended rebuilding it to REST before starting the new frontend.
Load behaviour
Load had never been tested. We recommended stress testing before the next release, because enterprise customers onboard whole departments at once.
Hosting and video storage
We recommended moving to AWS with a CI/CD pipeline, and storing and processing recordings with AWS services, because the AI feedback runs on those recordings.
Rebuilding or repairing the HeyPractice codebase
He asked us to relaunch and improve the software in four to five months. He was evaluating four or five agencies at the same time. Before quoting, we audited the repository and the running staging environment, and compared two options: repairing the existing application layer, or replacing it and keeping the database.
Repair
Rebuild
Time before feature work starts
None
Several weeks
The 4- to 5-month plan
Holds at the start
Slips at the start
Every feature after that
More expensive, each one
Priced normally
What we would have been quoting against
The MVP as it was built
The product he described
We recommended replacing the application layer and keeping the database. He accepted the recommendation, and the engagement was contracted as a rebuild.
Alongside it we proposed reducing the scope to protect the deadline, deferring teams, community and statistics to a later phase. He kept all three in scope:
“There is no real MVP-approach anymore. We need most of the features because they hardly depend on each other. The core of the product will be pitches/courses/teams. Then dashboard etc can follow.”
The scope was unchanged. The team grew instead, from two engineers in October 2021 to six by January 2022. The ramp is set out in the timeline block below.
What we kept, and what we replaced
This block exists to answer the objection the previous one raises. A prospect who hears “we recommended rebuilding” hears “throw away what you paid for”, and the honest answer is that we recommended replacing about half of it.
Carried over
The database structure, with the models and the migrations carried straight into the new application.
The data model, the part of the original build that held up. Keeping it is why a rebuild fitted a four to five month plan at all.
The product logic the business had already proven, pitches, courses and the scoring criteria, carried across as behaviour rather than rewritten from a brief.
Rebuilt
The API, rebuilt to REST and divided so it could serve a mobile client later.
The application layer, with the logic moved out of the controllers.
The frontend, rewritten in React, which is the piece he had already asked for.
The hosting and deployment, moved onto AWS with a CI/CD pipeline.
The HeyPractice platform architecture on AWS
Application
Node.js served the API. React ran the frontend. The two were built as separate applications, so frontend and backend engineers worked in parallel.
Infrastructure
Everything ran on AWS. Containers were stored in ECR and run on ECS. Video and audio recordings went to S3. RDS held the database. SQS provided the message queue. CloudFormation and CDK defined the infrastructure as code. Route 53 handled routing, CloudWatch monitoring, and Secrets Manager credentials. A CI/CD pipeline was set up as part of the engagement.
Scoring a HeyPractice pitch automatically, in German
HeyPractice sells on one promise: a trainee records a pitch and gets scored feedback straight away, without a coach watching the recording first. Delivering that meant scoring speech rather than text, in German, for German enterprises. The client had already tried it once and removed it, because the earlier product recorded several people in one room and the audio was unreadable.
The challenge
How we solved it
Speech to text in German. Most vendors we priced didn’t support it, and English-only scoring is unsellable to a German enterprise buyer.
IBM Watson Speech to Text, chosen with the client’s CTO on value for money. German and English both shipped.
A vendor roadmap promise. We chose AssemblyAI first on price. It did not support German. Their support told us German support was coming, so we built the integration on that basis.
The release date arrived and the German model did not. We wrote that work off and rebuilt on IBM Watson. We now check language coverage before price.
No JavaScript documentation. IBM Watson had none at the time.
Our engineers worked the integration out from the API surface. It took longer than the endpoint list suggested.
No standard for what “good” sounds like. Nobody publishes what counts as too long a pause in a sales pitch.
Thresholds for pause length, volume and words per minute were tuned on real recordings by our developers. Each customer sets its own lists of words to use and words to avoid.
Emotion recognition from the video.
We implemented integration with the model of emotion recognition.
Three vendors evaluated, two shipped, and one integration written off. That is what it costs to put automated scoring into a learning product, and it is the part of AI-based learning platform development that no estimate predicts.
SCORM: running HeyPractice courses inside a customer's LMS
Large companies already run a learning management system, Moodle or similar, and they will not send staff to a second portal to take one course. Enterprise buyers treat this as a condition of the sale.
SCORM is a set of technical standards for e-learning products. It governs how content is packaged and described, how it is launched, how it exchanges data with the host LMS, and how a learner moves between parts of a course. Compliance is what makes content compatible with a customer's LMS.
We integrated Rustici Software to convert course content to SCORM. Employees stay inside their own LMS and sign in with their own credentials, and no user data passes to the training platform.
How HeyPractice protected training recordings
HeyPractice stored employees' pitch recordings. This is how the platform handled that data.
Hosting
The platform ran on AWS, with recordings in Amazon S3 and the database in Amazon RDS.
Credentials
Credentials were held in AWS Secrets Manager.
Inside a customer's LMS
Through SCORM, employees signed in with their own LMS credentials and no user data passed to the training platform.
The delivered HeyPractice platform
Company portal
Dashboard. Activity across teams and individual members, plus materials, feedback, polls and new recordings.
Courses. Teams and individual participants, coaches’ pitches, and course scheduling.
Teams. Create and edit teams, add members, track progress and session time, view the leaderboard and criteria overview, and open any member’s recordings and results.
Content. Folders, files and lists holding course materials, videos and presentations.
Workspace. User data, roles and invoices. Payment is handled offline by design, so the product has no payment module.
Employee portal
Profile. Photo, notification settings and personal details.
Dashboard. Personal progress and updates across subscribed courses.
Courses. Course list, progress, available pitches, the pitch leaderboard and task scores, with coach feedback, comments and AI feedback shown together.
Community. A space for team updates and coach materials. Added after the first release.
Course authoring
Upload materials and documents, and add video, text, images or audio to a task.
Set a timer and choose the response type: recorded video, recorded audio, short written answer, or a quiz.
Set evaluation criteria such as problem solving, leadership, body language, teamwork and communication.
Set hidden pitch objectives and a playbook of objections a trainee may meet, such as no budget, no time, or a competitor already in place.
Configure AI feedback: words per minute, volume and clarity, and counts of the words to use and words to avoid.
Admin and back office
Client pages and the admin panel share one frontend codebase, split into two folders instead of two separate applications.
Access differentiated by role rather than by a separate application.
A superadmin back office carrying workspace, user and role management across every customer on the platform.
A customer can buy HeyPractice's own courses or build its own on the platform, which is a recurring requirement in custom SaaS development.
HeyPractice delivery timeline, October 2021 to August 2022
Early October 2021
1
Free technical audit of the repository and staging environment, returned before a quote.
21 October 2021
2
Agreement signed. One frontend and one backend engineer start. Two more frontend engineers join within the week.
December 2021
3
A QA engineer joins.
January 2022
4
Another frontend engineer joins. The client hires a CTO, who takes over technical decisions from that point and works alongside our team on both frontend and backend.
March 2022
5
Released into production.
August 2022
6
Build finalised. Development continued into 2023.
How the HeyPractice engagement ran
Project
manager
Frontend
engineers
Backend
engineers
Fullstack
engineer
QA
engineer
A senior engineering pod, which is a dedicated team of named engineers proposed with CVs before the contract. People joined as the work required them. Frontend and backend engineers worked directly with each other and picked up each other's tasks where that was faster. Slack, Jira and email for communication and tracking.
For the first three months the client had no CTO, so technical decisions were made with a commercial founder. That shapes how a pod has to work: recommendations arrive with a recommended answer and the reasoning behind it.
Results of the HeyPractice rebuild
100%
ROI in four months, reported by HeyPractice
+25%
Employee satisfaction, reported by HeyPractice
50%
Less onboarding time, reported by HeyPractice
The rebuilt platform went into production in March 2022, five months after the audit, and the build was finalised that August. At that point HeyPractice reported a 100% return on investment within four months, a 25% rise in employee satisfaction and onboarding time cut in half. The platform shipped in German and English, and enterprise customers including My Second Ear, Lensingmedia and Ergo ran their sales training on it. Development continued into 2023.
What HeyPractice's founder said about working with Brocoders
5.0
"With Brocoders, we were able to set up a highly skilled IT team in the shortest amount of time. For finding a team with similar skills we would have needed 4-6 months instead of the instant start."
Node.js, React and AWS: ECS, ECR, S3, RDS, SQS, Route 53, CloudWatch, Secrets Manager, CloudFormation and CDK. IBM Watson Speech to Text, PRECIRE and Rustici Software are third-party services we integrated.
Rebuilding an inherited EdTech codebase: common questions
Should I rebuild my MVP or repair it?
It depends what an audit finds, and the answer is often mixed. On HeyPractice we recommended rebuilding the application layer and keeping the database, because the schema was sound and redesigning it under a deadline would have cost more than it saved.
What does a technical audit of an inherited codebase produce?
A recommendation with the reasoning behind it. On HeyPractice the audit covered the repository and the running staging environment, and it named what to replace and what to keep.
Can you keep our existing database when rebuilding the application?
Often, yes. On HeyPractice the models and migrations carried over into the new application, which kept existing customer data in place and made the rebuild possible inside the timeline.
How long does a rebuild like this take?
HeyPractice went from audit to production in five months with a team of eight, including AI integration and SCORM compliance. Timelines depend on how much of the existing system survives the audit.
Can you add speech-to-text feedback to a learning product?
Yes. On HeyPractice we evaluated three speech and analysis vendors and shipped on IBM Watson Speech to Text, with PRECIRE for text analysis. Language coverage decides most of these choices: a vendor that does not support your customers’ language is out regardless of price.
What does it take for our courses to run inside a customer’s LMS?
SCORM compliance. Courses have to be packaged, launched and tracked according to the standard for a compliant LMS to load them. We integrated Rustici Software to handle the conversion, so employees stay in their own LMS.
Do you work with a product that already has paying customers in it?
Yes. HeyPractice had enterprise customers using the platform throughout the rebuild, which is why test coverage on business logic went in from the start.
Inherited a codebase and don't know whether to keep it?
A technical audit answers that before anyone quotes a build. We look at the repository and the running environment and come back with a recommendation, including what we would keep.