The CyWrite system comprises four major components: (1) automated writing evaluation (AWE); (2) a web-based text editor; (3) a data management system; and (4) application programming interfaces (APIs) for integration and extensibility.

The AWE component of CyWrite relies on a hybrid (statistical and rule-based) natural language processing (NLP) framework (CyWrite::Analyzer) for the detection of various word-, sentence-, paragraph-, and text-level features, for example, spelling and grammatical errors, stylistic issues, and certain discourse patterns. Formative feedback is generated based on the detected features and delivered either concurrently with the composition process (for example, in the form of a “red squiggly line” for spelling errors, or “comments on the margin” for poor stylistic choices), or episodically, that is, after the learner completes a writing session and submits his or her draft for automated evaluation. We call these two modes of delivering feedback real-time and episodic, respectively.

The web-based text editor of CyWrite (CyWrite::Editor) supports all basic functions found in conventional word processors, such as formatting, clipboard operations, and revision tracking. The usual approach to building rich text editing experiences for the web is based on the HTML5 feature known as “content editable”. In contrast, the CyWrite editor adopts a more complex and powerful approach, similar to that in Google Docs: a custom rendering engine written entirely in JavaScript. At the cost of software development complexity, this approach provides unmatched levels of flexibility and control over user experiences, and allows for capturing all revisions character-by-character and all interactions between the user and the system.

CyWrite’s data management system provides for a way to store all drafts of texts composed in the editor, along with any interaction logs that may be recorded during the editing sessions. Data is stored in a scalable document-oriented database, MongoDB, with application-level permission management to ensure safety and security of the data.

Finally, open real-time APIs in CyWrite allow for extending the functionality of CyWrite via third-party extension modules (or plug-ins), and also for incorporating the core CyWrite technology into other applications. For example, at Iowa State University, a writing support environment based on the CyWrite technology is implemented in academic writing classes for non-native speakers of English, with custom curriculum-specific workflow modules being integrated with the core of CyWrite via the APIs. Additional functionality, such as integration of teacher-provided and peer feedback with the formative feedback automatically generated, is continually being developed and tried out in instructional settings.