Launching Junomedical.com within Six Weeks

Benjamin Bolland
Project A Insights
Published in
5 min readFeb 9, 2017

Junomedical was Project A’s first investment in the Digital Health sector, which has since developed into one of our new investment themes in recent times after spending quite a while observing the market. The development of Junomedical’s medical travel platform in Python was another first for us and a further reason to look forward to this project.

Python to Join Them All

As a consequence of our operational involvement within the scope of our investments, Project A has always had two separate IT teams, each oriented towards different areas and focused on different programming languages. While our PHP team often supports portfolio companies in the e-commerce and marketplace world, our Java team tends to tackle more data-heavy projects such as AdTech and SaaS products. Due to this historically rooted division and the corresponding differences in the tech stacks of the two teams, they rarely worked together on the same projects.

For Junomedical, however, we decided to introduce Python as a new programming language in order to offer an additional tech stack and bridge our dev team silos. Previously, we had only used Python within our business intelligence team to build data warehouses (DWHs) for our portfolio companies. Already having in-house expertise in Python helped a lot in getting the project going. Especially in the beginning, we had a lot of mob programming sessions where experienced Python developers showed approaches and solutions to rookies. For this project, I ended up with an amazing team, which, in addition to myself as a product manager, was comprised of a Java CTO, two AngularJS frontend engineers, five backend engineers from our Java, PHP and BI teams, one DevOps specialist, two QA analysts and one UX designer. As a development framework, we decided to use Flask.

Modular and Structured vs. Quick and Dirty

Atomic design by Brad Frost (@brad_frost)

The tight deadline of six weeks from kickoff to launch might have justified a quick and dirty solution, which would have been improved iteratively. Nevertheless, we decided to invest slightly more time in the beginning to enable our frontend team to create a NodeJS-based style guide in accordance with Brad Frost’s concept of atomic design using Pattern Lab with jinja2 templates. Creating a sound style guide of course takes some time, but it allows for a modular and very fast assembly of pages later on. In addition, it ensures durability and consistency throughout your product at scale as changes on the granular level will automatically be incorporated across the whole website and not only on one specific page.

Internationalization

Only infrequently do we launch products that go live for an international audience from the very first day. For a lot of startups and their corresponding business models, it makes sense to initially only tackle one specific country in order to test and further develop the product before introducing it to other markets as well. But since Junomedical’s business model relies strongly on ever-increasing globalization in terms of travel and accessibility, their platform required us to prepare to accommodate an international customer base from day one. The company offers a plethora of medical treatments in different countries while their customers are based in countries other than their destination country. Besides the need to adapt the platform for different languages in general, the customization of the website’s content also had to account for different locales. For instance, an English-speaking customer in the US might have different needs and want to see different offers than an English-speaking customer in the UK, Australia, or even in a non-English speaking country. Due to these requirements and after a couple of fruitful discussions within our product team, we decided to establish different language-specific versions, which could be overwritten by more specific language-locale versions.

Example

The global default for English-speaking customers is “en”. The locale for English-speaking customers in the UK is “en-gb”, while for an English-speaking American it would be “en-us”. Following this scheme, the global language specification (in this case “en”) always defines the “fallback content”, while the more specific locale can inherit and/or overwrite this content as needed. Usually, most of the content will be inherited from the default content specified by the language. The more tailored locale, however, allows one to customize the website on a page/entity level to promote certain offers or adapt the content in accordance with regional peculiarities. By checking different customer information such as geo IP and browser language, we make sure that customers always see the most relevant content specified by language and geography.

MVP vs. Scalability

Due to the requirements mentioned above, it was challenging to prioritize features and to focus on the development of a minimum viable product (MVP) that could be shipped within six weeks and which would generate a real added value for Junomedical’s customer base. Despite the short timeframe, we were able to build a powerful and secure IT infrastructure which ensures fast development processes and continuous integration by providing several test machines, an automated testing and deployment process as well as staging and production environments. As a medical travel provider, Junomedical is reliant on high security standards. We secured the system against cyber attacks, implemented load balancing, proper logging and monitoring and ensured secure database migrations. The setup offers a sound foundation for internationalization and global, language and geo-specific SEO. Through technologies like ElasticSearch and postgreSQL in conjunction with load balancing, the system performs splendidly.

For me personally, these six weeks were probably the tensest but at the same time most amazing ones in 2016. The launch of Junomedical is a prime example of what Project A can contribute as an operational VC and what a well-functioning team can achieve with intrinsic motivation and teamwork.

Parts of Junomedical’s amazing team

In the end, we managed to go live right on schedule on March 15th 2016 with a basic yet highly scalable and customizable platform. Since the Project A Dev team and I handed over the reigns last summer, Junomedical has managed to recruit a kick-ass team that is constantly improving the product and releasing cool features multiple times every week.

If you find our way of working interesting and want to be part of an amazing, agile and cross-functional team, check out our open positions at https://www.project-a.com/en/career/jobs or contact me directly for more information.

--

--

Benjamin Bolland
Project A Insights

Passionate about good Products, Tech, Entrepreneurship, Mountaineering, Bikes and Woodworking. Product Coach based in Berlin