Sounds interesting - thanks for sharing.

However, could you elaborate with an Org example with dummy data?

I'm organizing lectures for students with Org. I do have them in my contact management (one heading per student). Those entries are auto-generated via a Python script.

First, I create a table such as the following and then I execute the babel block to generate the contact headings which I need to refile to the contact.org file:

```

+Name: 2021-students

| First | Last | Email | Name | Notes | |-----------+----------+------------------------+--------------------+-------| | Firstname | Lastname | First.Last@example.com | [[contact:FirstnameLastname][Firstname Lastname]] | |

+BEGIN_SRC python :var table=2021-students :results output raw

print('*** My lecture 2021') for student in table: first = student[0] last = student[1] email = student[2] print('**** ' + first + ' ' + last + ' ' * 40 + ':' + first + last + ':') print(':PROPERTIES:') print(':TYPE: person') print(':TITLE:') print(':EMAIL: ' + email) print(':URL:') print(':MOBILE: +43/') print(':HOMEPHONE:') print(':WORKPHONE:') print(':PHONE:') print(':COMPANY:') print(':STREET:') print(':POSTALCODE:') print(':CITY:') print(':COUNTRY: Österreich') print(':PHOTOGRAPH: [[file:~/people/all_photographs/' + first + last + '.jpg]]') print(':BORN:') print(':ITOLDTHEM_EMAIL: myofficeemail@example.com') print(':ITOLDTHEM_ADDRESS:') print(':ITOLDTHEM_PHONE:') print(':ADDRESS_CHANGE_METHOD:') print(':END:\n')

+END_SRC

```

Whenever there is some grading going on, I create lists for the class such as:

```

+Name: 2021-presentation-marks

| Name | Notes | Presentation | Percentage | Reason | |--------------------+-------+-------------------+------------+--------| | [[contact:FirstnameLastname][Firstname Lastname]] | | file:dir/file.pdf | | |

+TBLFM: $1='(identity remote(2021-students,@@#$4))::$2='(identity remote(2021-students,@@#$5))

```

Note that the first two columns are re-used from the general student table above. Therefore, I just have to add links to the files, their percentage grade and some optional reasons for not getting the best mark there is.

For the overall mark/grading, I do have one table that summarizes all other tables, calculating the overall percentage and the mark (1-5 here in Austria, 1 being best, 5 is failed).

Besides the very short but synchronized Notes column above, I write student-specific stuff to the contact information. Every name is a direct link to it.

So far, this works quite good.