Gutachten Generator

Published on: 2023-06-08

, by Daniel Markow

Update 2024-01-27: Re-deployed the app on Vercel since they support Python serverless functions now as well. You can check it out at Gutachten Generator

In many professions one needs to write evaluations (”Gutachten” in German). For example a professor judging academic work, a teacher reviewing her students work or an engineer assessing the stability of a bridge. All of these have in common that they almost always consist of similar text snippets that vary along grade dimensions. So you would have a certain text snippet evaluating giving the grade “good” for a certain aspect of the work for example in school or university.

This calls for an automated solution that allows you to click together your evaluations text snippets. Sure Word can do that but that quickly becomes chaotic if you need lots of text to describe your evaluation dimensions and if there are lots of different quality grades. Gutachten Generator attempts to solve this problem. You can review the frontend- and backend code on Github.

It utilises the awesome lexical framework open-sourced by Facebook a couple of years ago. It is a fully functional text editor for the web similar to Google Docs but highly customisable. It generates a data structure akin to the virtual DOM in React that tracks changes in your text and its formatting. Extensions of lexical are written as React components. Custom functionality like in my case appending text snippets to the document on click can be implemented in this way. It even allows for creating custom nodes to be inserted into its data structure.

With Gutachten Generator you can define rating dimensions for your evaluation, define grades of that dimension, map them to text snippets and then conveniently append them to the text in your editor. Further editing can be done and everything is synched to the backend.

Aside from lexical I used this project to learn other technologies new to me thus far:

Gutachten Generator is still work in progress. I am unsure of the card based text snippet UI and am still figuring out lexical features.