DEV Community

Cover image for Turning CSV Files Into Queryable Data With Triple Gyrus Core
Triple Gyrus Core
Triple Gyrus Core

Posted on

Turning CSV Files Into Queryable Data With Triple Gyrus Core

The Problem With Simple Data

Simple formats like CSV are small and useful to write in the moment, but they're not always as easy to analyze as you might expect. In Python, for example, you need to read an entire file into a dataframe, manipulate columns, spend time making sure your program works. We're used to that. But, Triple Gyrus Core can make your analysis workflow simpler even with formats like CSV.

Let's say you have a CSV file of customer data. It's a pretty standard scenario for a lot of us: 10 rows, 10 customers with IDs, information, and statuses.

customer_id,first_name,last_name,email,phone,city,state,zip_code,signup_date,total_purchases,lifetime_value,status
CUST0001,Christopher,Harris,christopher.harris38@email.com,620-260-1810,Phoenix,AZ,37974,9/18/2024,39,774.23,Active
CUST0002,Robert,Hernandez,robert.hernandez60@email.com,791-204-2535,Austin,TX,62012,6/25/2024,32,3261,Active
CUST0003,Linda,Ramirez,linda.ramirez32@email.com,272-785-5860,San Jose,CA,99615,9/25/2024,21,4474.83,Active
CUST0004,Patricia,Jackson,patricia.jackson98@email.com,717-655-7031,Charlotte,NC,83429,1/24/2025,24,3904.34,Inactive
CUST0005,Richard,Harris,richard.harris71@email.com,532-426-7413,Houston,TX,44001,3/17/2024,17,3405.2,Active
CUST0006,Christopher,Williams,christopher.williams92@email.com,348-848-3768,Fort Worth,TX,40502,1/8/2024,37,2092.87,Active
CUST0007,Michael,Johnson,michael.johnson53@email.com,781-919-6949,Philadelphia,PA,36561,1/17/2024,44,4786.74,Active
CUST0008,Elizabeth,Martinez,elizabeth.martinez11@email.com,732-377-1291,Charlotte,NC,44410,2/21/2024,42,3954.51,Active
CUST0009,Christopher,Jones,christopher.jones27@email.com,857-341-9173,Denver,CO,94083,1/10/2025,5,4695.04,Inctive
CUST0010,Charles,Taylor,charles.taylor43@email.com,784-955-8711,San Diego,CA,19332,9/8/2025,30,4760.35,Active

But, looking at this block of text, how well can you read and analyze it without programming help, really? How would something like a screen reader handle it? The answer to both of those questions is "not very well."

Triple Gyrus Core As Analysis Prep

That's where Triple Gyrus Core comes in. You can easily open your CSV in the spreadsheet program of your choice and add in Triple Gyrus Core markup:

Triple Gyrus Core Markup in Excel

And now your data is ready for analysis, no program maintenance or library dependence needed.

And here's where the magic happens -- Triple Gyrus Core's syntax is so regular and predictable that AI not only understands it perfectly but can use your marked up data as a springboard. Pop this marked up data into your favorite AI (you might need to give it the Triple Gyrus Core spec on Zenodo too if the AI hasn't slurped it up yet) with this prompt:

Please identify the Triple Gyrus Core markup in this document and generate markup for every cell.

And AI will give you this:

`^+1+1^ customers example ^+1+1^ ^+1+2^ 42 ^+1+2^ ^+1+3^ ^^1^^ ^+1+3^

^+1+5^ customer_id ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ header customer_id ^+1+6^
^+1+5^ first_name ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ header first_name ^+1+6^
^+1+5^ last_name ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ header last_name ^+1+6^
^+1+5^ email ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ header email ^+1+6^
^+1+5^ phone ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ header phone ^+1+6^
^+1+5^ city ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ header city ^+1+6^
^+1+5^ state ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ header state ^+1+6^
^+1+5^ zip_code ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ header zip_code ^+1+6^
^+1+5^ signup_date ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ header signup_date ^+1+6^
^+1+5^ total_purchases ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ header total_purchases ^+1+6^
^+1+5^ lifetime_value ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ header lifetime_value ^+1+6^
^+1+5^ status ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ header status ^+1+6^

^+1+5^ CUST0001 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 1 customer_id ^+1+6^
^+1+5^ Christopher ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 1 first_name ^+1+6^
^+1+5^ Harris ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 1 last_name ^+1+6^
^+1+5^ christopher.harris38@email.com ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 1 email ^+1+6^
^+1+5^ 620-260-1810 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 1 phone ^+1+6^
^+1+5^ Phoenix ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 1 city ^+1+6^
^+1+5^ AZ ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 1 state ^+1+6^
^+1+4^ 37974 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 1 zip_code ^+1+6^
^+1+5^ 9/18/2024 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 1 signup_date ^+1+6^
^+1+4^ 39 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 1 total_purchases ^+1+6^
^+1+4^ 774.23 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 1 lifetime_value ^+1+6^
^+1+5^ Active ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 1 status ^+1+6^

^+1+5^ CUST0002 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 2 customer_id ^+1+6^
^+1+5^ Robert ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 2 first_name ^+1+6^
^+1+5^ Hernandez ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 2 last_name ^+1+6^
^+1+5^ robert.hernandez60@email.com ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 2 email ^+1+6^
^+1+5^ 791-204-2535 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 2 phone ^+1+6^
^+1+5^ Austin ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 2 city ^+1+6^
^+1+5^ TX ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 2 state ^+1+6^
^+1+4^ 62012 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 2 zip_code ^+1+6^
^+1+5^ 6/25/2024 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 2 signup_date ^+1+6^
^+1+4^ 32 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 2 total_purchases ^+1+6^
^+1+4^ 3261 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 2 lifetime_value ^+1+6^
^+1+5^ Active ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 2 status ^+1+6^

^+1+5^ CUST0003 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 3 customer_id ^+1+6^
^+1+5^ Linda ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 3 first_name ^+1+6^
^+1+5^ Ramirez ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 3 last_name ^+1+6^
^+1+5^ linda.ramirez32@email.com ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 3 email ^+1+6^
^+1+5^ 272-785-5860 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 3 phone ^+1+6^
^+1+5^ San Jose ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 3 city ^+1+6^
^+1+5^ CA ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 3 state ^+1+6^
^+1+4^ 99615 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 3 zip_code ^+1+6^
^+1+5^ 9/25/2024 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 3 signup_date ^+1+6^
^+1+4^ 21 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 3 total_purchases ^+1+6^
^+1+4^ 4474.83 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 3 lifetime_value ^+1+6^
^+1+5^ Active ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 3 status ^+1+6^

^+1+5^ CUST0004 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 4 customer_id ^+1+6^
^+1+5^ Patricia ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 4 first_name ^+1+6^
^+1+5^ Jackson ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 4 last_name ^+1+6^
^+1+5^ patricia.jackson98@email.com ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 4 email ^+1+6^
^+1+5^ 717-655-7031 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 4 phone ^+1+6^
^+1+5^ Charlotte ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 4 city ^+1+6^
^+1+5^ NC ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 4 state ^+1+6^
^+1+4^ 83429 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 4 zip_code ^+1+6^
^+1+5^ 1/24/2025 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 4 signup_date ^+1+6^
^+1+4^ 24 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 4 total_purchases ^+1+6^
^+1+4^ 3904.34 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 4 lifetime_value ^+1+6^
^+1+5^ Active ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 4 status ^+1+6^

^+1+5^ CUST0005 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 5 customer_id ^+1+6^
^+1+5^ Richard ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 5 first_name ^+1+6^
^+1+5^ Harris ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 5 last_name ^+1+6^
^+1+5^ richard.harris71@email.com ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 5 email ^+1+6^
^+1+5^ 532-426-7413 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 5 phone ^+1+6^
^+1+5^ Houston ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 5 city ^+1+6^
^+1+5^ TX ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 5 state ^+1+6^
^+1+4^ 44001 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 5 zip_code ^+1+6^
^+1+5^ 3/17/2024 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 5 signup_date ^+1+6^
^+1+4^ 17 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 5 total_purchases ^+1+6^
^+1+4^ 3405.2 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 5 lifetime_value ^+1+6^
^+1+5^ Active ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 5 status ^+1+6^

^+1+5^ CUST0006 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 6 customer_id ^+1+6^
^+1+5^ Christopher ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 6 first_name ^+1+6^
^+1+5^ Williams ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 6 last_name ^+1+6^
^+1+5^ christopher.williams92@email.com ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 6 email ^+1+6^
^+1+5^ 348-848-3768 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 6 phone ^+1+6^
^+1+5^ Fort Worth ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 6 city ^+1+6^
^+1+5^ TX ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 6 state ^+1+6^
^+1+4^ 40502 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 6 zip_code ^+1+6^
^+1+5^ 1/8/2024 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 6 signup_date ^+1+6^
^+1+4^ 37 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 6 total_purchases ^+1+6^
^+1+4^ 2092.87 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 6 lifetime_value ^+1+6^
^+1+5^ Active ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 6 status ^+1+6^

^+1+5^ CUST0007 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 7 customer_id ^+1+6^
^+1+5^ Michael ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 7 first_name ^+1+6^
^+1+5^ Johnson ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 7 last_name ^+1+6^
^+1+5^ michael.johnson53@email.com ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 7 email ^+1+6^
^+1+5^ 781-919-6949 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 7 phone ^+1+6^
^+1+5^ Philadelphia ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 7 city ^+1+6^
^+1+5^ PA ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 7 state ^+1+6^
^+1+4^ 36561 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 7 zip_code ^+1+6^
^+1+5^ 1/17/2024 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 7 signup_date ^+1+6^
^+1+4^ 44 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 7 total_purchases ^+1+6^
^+1+4^ 4786.74 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 7 lifetime_value ^+1+6^
^+1+5^ Active ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 7 status ^+1+6^

^+1+5^ CUST0008 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 8 customer_id ^+1+6^
^+1+5^ Elizabeth ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 8 first_name ^+1+6^
^+1+5^ Martinez ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 8 last_name ^+1+6^
^+1+5^ elizabeth.martinez11@email.com ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 8 email ^+1+6^
^+1+5^ 732-377-1291 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 8 phone ^+1+6^
^+1+5^ Charlotte ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 8 city ^+1+6^
^+1+5^ NC ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 8 state ^+1+6^
^+1+4^ 44410 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 8 zip_code ^+1+6^
^+1+5^ 2/21/2024 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 8 signup_date ^+1+6^
^+1+4^ 42 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 8 total_purchases ^+1+6^
^+1+4^ 3954.51 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 8 lifetime_value ^+1+6^
^+1+5^ Active ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 8 status ^+1+6^

^+1+5^ CUST0009 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 9 customer_id ^+1+6^
^+1+5^ Christopher ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 9 first_name ^+1+6^
^+1+5^ Jones ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 9 last_name ^+1+6^
^+1+5^ christopher.jones27@email.com ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 9 email ^+1+6^
^+1+5^ 857-341-9173 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 9 phone ^+1+6^
^+1+5^ Denver ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 9 city ^+1+6^
^+1+5^ CO ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 9 state ^+1+6^
^+1+4^ 94083 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 9 zip_code ^+1+6^
^+1+5^ 1/10/2025 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 9 signup_date ^+1+6^
^+1+4^ 5 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 9 total_purchases ^+1+6^
^+1+4^ 4695.04 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 9 lifetime_value ^+1+6^
^+1+5^ Active ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 9 status ^+1+6^

^+1+5^ CUST0010 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 10 customer_id ^+1+6^
^+1+5^ Charles ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 10 first_name ^+1+6^
^+1+5^ Taylor ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 10 last_name ^+1+6^
^+1+5^ charles.taylor43@email.com ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 10 email ^+1+6^
^+1+5^ 784-955-8711 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 10 phone ^+1+6^
^+1+5^ San Diego ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 10 city ^+1+6^
^+1+5^ CA ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 10 state ^+1+6^
^+1+4^ 19332 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 10 zip_code ^+1+6^
^+1+5^ 9/8/2025 ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 10 signup_date ^+1+6^
^+1+4^ 30 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 10 total_purchases ^+1+6^
^+1+4^ 4760.35 ^+1+4^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 10 lifetime_value ^+1+6^
^+1+5^ Active ^+1+5^ ^+1+2^ 42 ^+1+2^ ^+1+6^ customer 10 status ^+1+6^

^+1+1^ customers example ^+1+1^ ^+1+2^ 42 ^+1+2^ ^+1+3^ ^^2^^ ^+1+3^`

Using Triple Gyrus Core With Data

Now at first I'm sure you're thinking, wait a minute, all we did was turn this from one text format into another more verbose one. And at first glance, yes, that's what we did. But this verbosity unlocks a simpler and faster way to analyze data.

Let's say you want to find every person who has a first name starting with M. No need to use SQL -- just use a quick find in your text editor for "M.*?last_name".

How about something more complicated, like all people with a last name starting with J and a home state of Colorado? Just tweak the regex to "J(?!.J).?last_name.?CO.?state". Much shorter than SELECT last_name, state FROM customers WHERE last_name = "M*" AND state = CO.

Also, you can identify the type of data you're working with, even if you didn't explicitly mark it up that way, because AI is smart enough to do it for you with the prompt you gave it. If you need to find numeric data, simply look for the ^+1+4^ markers.

Once you have your triples, depending on your text editor and your workflow, you can copy the data out of your text editor, move it forward in a pipeline for processing, whatever next step you need.

Effectively, you can use Triple Gyrus Core to turn a CSV file into a pseudo-database without worrying about a database engine, and all you need to do is know how to use a text editor -- no programming or DB knowledge required.

And, as always, Triple Gyrus Core markup is accessible -- people using assistive technologies can read it easily and international teams can use it in their languages, which makes communicating about your data easy.

Learning More

If Triple Gyrus Core sounds like something that could help you out with data tasks like this, please feel free to check out the project website or LinkedIn page, and email if you have feedback or are interested in collaborating.

https://triplegyruscore.github.io/
https://www.linkedin.com/in/jsrc-expert/

Top comments (0)