Inspiration
Millions of people have spit into a tube for a service like 23andMe or AncestryDNA, gotten back their family tree, and then are met with a bunch of random facts that seem cool but don't dive deep enough. Buried inside is a raw text file with hundreds of thousands of lines like rs53576 3 8762685 GG , which contains tons of additional information that isn't readily accessible to the average person.
We decided to create an app that parses the raw file and analyzes it deeper: "What does my DNA actually say about my health, and what does that actually mean for me? " We then give an easily understandable insight into disease predisposition, traits, and what that means for you.
What it does
Our app takes the raw DNA data (rsIDs) exported from consumer genetics kits and turns it into clear to read insight.
- Upload and parse — you drop in the raw
.txtgenome file. We parse every rsID, genotype, and chromosome position. - Variant lookup — each relevant rsID is matched against known genetic allele variants, so the rsID becomes "this variant is linked to a higher chance of lactose intolerance / type 2 diabetes risk / caffeine metabolism / etc."
- Plain-language explanations — instead of a table full of the allele frequencies, you get an easy to read summary of what each finding suggests and what that means.
How we built it
We split the project into a data/analysis backend and an interactive frontend.
- Backend (Python): takes in the file and parses the raw genome format, separates the rsID/genotype pairs, and then maps each variant to its known associations.
- Frontend (JavaScript): an interface where users upload their files directly. We include disease breakdowns, trait cards, and expandable explanations for the variants
- The pipeline raw file → parsed variants → matched associations → risk interpretation → readable output. A single clean flow starting with the uploaded file.
Challenges we ran into
- Messy, inconsistent input. Different providers (23andMe, Ancestry, etc.) export slightly different file formats — different headers, column orders, and even different rsIDs for the same location.
- Correct allele interpretation Different companies display the DNA differently. We had to make sure when we used the positive (+) strand and when we were interpreting off the negative (-) strand. Getting it wrong means our entire analysis gets messed up.
- Not overstating the science. This is not a diagnosis. We had to make sure to show that this is not a replacement for a doctor's diagnosis, and it only helps give insight into what genetic predispositions you have. Many other environmental factors build upon genetic factors when deciding whether someone actually gets a disease or condition.
What we learned
- How the raw consumer genome files are structured, and how much valuable data sits unused inside them.
- Building upon our knowledge about SNPs, genotypes, and how genetic and environmental factors play a role in a disease/condition progression.
- Moving data efficiently from the Python backend (with the analysis) to the Javascript frontend
What's next
-More providers and file formats out of the box. -More conditions and traits that many companies miss out in.
- Polygenic risk scoring to utilize the evidence more efficiently and give a better analysis
- Privacy features.
Disclaimer: This project is for educational purposes. Please do not use it as a substitute for a medical diagnosis by a doctor.
Log in or sign up for Devpost to join the conversation.