Brief

With Genetic Direction, we had our first foray into DNA-driven precision medicine.

Genetic Direction is on a mission to help people understand their bodies better, and learn how their DNA profiles uniquely influence aging, the ability to lose weight and micronutrients absorption. The team at Genetic Direction develops programs that assist individuals in modifying their lifestyle based on their genetic predisposition, and add an important dimension to standard and personalized medical intervention.

The company was created in 2015 by veterans and thought leaders from the wellness and health management industries, with a mission to understand:

  • How specific genes process carbohydrates, fat, proteins and micronutrients
  • How specific genes determine the effectiveness of fitness activities

With the advent of genetic testing and advanced studies of the human genome, Genetic Direction tailors fitness and health management programs based on genetic predisposition. Their suite of programs cover a wide variety of lifestyle challenges, DNA-driven weight management, healthy aging, and comprehensive micronutrient predisposition analysis.

Users can order test kits from Genetic Direction online and share their samples through mail. The expert team at Genetic Direction carries out a detailed analysis of the user's sample and generates extensive and highly visual reports on the DNA genotype, risk profile, and a roadmap to better health. They also support users with instant access to resources like videos, articles, and recipes.

Genetic Direction approached us with a key challenge. They wanted to build a PDF engine that could automatically generate visually rich and data-driven reports from a user's DNA profile - for a simple and seamless document that could be shared with users.

Challenges

Genetic Direction faced an unprecedented rise in the customer base, which increased their cost per PDF generation to uneconomical levels - especially since this was a recurring cost. To add to this, their existing PDF solution wasn't optimal, very slow and unresponsive during heavy loads. All requests for changes in the PDF were slow and inefficient, which was a bottleneck for their agility.

We had to find a workaround for these key challenges.

Our Research

During our research, we understood that the genetic reports needed graphical and dynamic content, based on the user’s profile. It was also important that these PDFs were simple and accessible.

Before their engagement with our team at Tarka Labs, Genetic Direction outsourced PDF generation to an external technology partner. They were planning to build a PDF engine and host it themselves to save their recurring costs from generating PDFs, but the big catch here was that the solution was not readily available and that their templates were quite complex (40 - 50 pages) with lots of dynamic data.

We proposed to build a proof of concept to assess the feasibility of such an engine that would meet all their needs.

After 2 weeks of development (with 2 developers) and constant collaboration with the client on their requirements, we built a proof of concept engine that met all their possible needs for PDF generation.

  • Ability to select a different page for a section based on the user’s DNA profiling info
  • Ability to add sliders/indicators (graphic elements) to selected pages based on the users DNA profiling info (user traits)
  • Customized footer and headers (with page numbers)
  • Integrated pie charts/bar diagrams
  • Customizable and hidden/open sections based on the user’s gender

After validating our model for a standalone PDF engine, we proposed the estimated cost and duration to kick-start the project with 2 developers (one lead and one junior dev). Our team completed all the requirements in 5 weeks with 99% unit test coverage and visual function tests.

Here’s how we enabled automated testing of generated PDFs.

Solutions

The PDF engine was built to be highly customizable for all kinds of documentation, across users. It's controlled by a JSON file that defines all the sections in order, and determines the templates to be used in each section. All the template names are variable and are controlled by the user data, when the report is generated.

User data also determines the pages that go into each section, and this information is dynamically stitched using PDF generation. Some pages need graphics for greater clarity and readability, so based on the user data, the appropriate chart is picked and placed in predefined parts of the page.

Once the pages are stitched, the engine adds the page numbers in the footer and adds a customized header.

_tech
used

RUBY / RAILS / HEXAPDF / PRAWNPDF / IMAGEMAGICK