{"id":36507,"date":"2026-03-18T10:23:53","date_gmt":"2026-03-18T09:23:53","guid":{"rendered":"https:\/\/www.risc-software.at\/fachbeitraege\/analyze-contracts-using-ai\/"},"modified":"2026-08-26T10:32:27","modified_gmt":"2026-08-26T08:32:27","slug":"analyze-contracts-using-ai","status":"publish","type":"publication","link":"https:\/\/www.risc-software.at\/en\/technicalarticles\/analyze-contracts-using-ai\/","title":{"rendered":"Analyze contracts using AI"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">How LLMs are revolutionizing everyday B2B life  <\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Contract negotiations tie up a lot of time and resources in companies. Today, large language models analyze and compare contracts automatically and can be operated with currently available solutions on local infrastructure.   <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">by DI (FH) Stephan Leitner<\/h3>\n\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile is-image-fill-element\"><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\"><strong>Contents<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>From raw text to structured analysis: what happens before AI<\/li>\n\n\n\n<li>RAG instead of installments: The solution for long contracts<\/li>\n\n\n\n<li>  Embeddings: Precision in contract comparison<\/li>\n\n\n\n<li>Controlling hallucinations: Trust with limits<\/li>\n\n\n\n<li>On-premises instead of cloud: control over the infrastructure is crucial<\/li>\n\n\n\n<li>Integration into existing systems: The next step towards a company-wide solution<\/li>\n\n\n\n<li>Conclusion<\/li>\n\n\n\n<li>Author<\/li>\n\n\n\n<li>Contact us<\/li>\n<\/ul>\n<\/div><figure class=\"wp-block-media-text__media\"><img data-dominant-color=\"3f474b\" data-has-transparency=\"false\" decoding=\"async\" width=\"1024\" height=\"574\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2026\/03\/risc_software_close-up_of_hands_working_on_printed_contract_n_c3ed5818-dd32-45e5-a74a-7911f8a0e717_1-1024x574.webp\" alt=\"Contract comparison with AI\" class=\"wp-image-36482 size-full not-transparent\" style=\"--dominant-color: #3f474b; object-position:50% 50%\" srcset=\"https:\/\/www.risc-software.at\/app\/uploads\/2026\/03\/risc_software_close-up_of_hands_working_on_printed_contract_n_c3ed5818-dd32-45e5-a74a-7911f8a0e717_1-1024x574.webp 1024w, https:\/\/www.risc-software.at\/app\/uploads\/2026\/03\/risc_software_close-up_of_hands_working_on_printed_contract_n_c3ed5818-dd32-45e5-a74a-7911f8a0e717_1-300x168.webp 300w, https:\/\/www.risc-software.at\/app\/uploads\/2026\/03\/risc_software_close-up_of_hands_working_on_printed_contract_n_c3ed5818-dd32-45e5-a74a-7911f8a0e717_1-768x430.webp 768w, https:\/\/www.risc-software.at\/app\/uploads\/2026\/03\/risc_software_close-up_of_hands_working_on_printed_contract_n_c3ed5818-dd32-45e5-a74a-7911f8a0e717_1.webp 1456w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">A new 120-page framework agreement, a short review period, an overworked legal team. This scenario is omnipresent in the B2B sector. Large Language Models (LLMs) can fundamentally change this process, provided the technical implementation is right. Those who understand the technical fundamentals will make more informed decisions &#8211; when it comes to infrastructure, risk assessment and building a sustainable solution for contract analysis.     <\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\"><strong>From raw text to structured analysis: what happens before AI<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before an LLM can process a contract, it must be available in a suitable format. In practice, contracts are often only available as scanned PDFs or poorly structured Word documents. For an AI, scanned PDFs are just images without machine-readable text.    <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Optical Character Recognition (OCR) is used here, which recognizes characters in images and converts them into machine-readable text. Modern OCR solutions achieve high recognition rates, but errors can still occur with poor scan quality, handwritten annotations or complex tables.   <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pre-processing is therefore an often underestimated part of the system. This includes the correction of OCR errors, the recognition of document structure (sections, clauses, attachments), the processing of tables and images and the normalization of date formats or currency specifications.   <\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\"><strong>RAG instead of installments: The solution for long contracts<\/strong> <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A central technical limit of LLMs is the context window. This is the maximum amount of text that a model can process per request. Current models can handle significantly more than previous generations, but extensive contracts with annexes, service specifications and framework agreements quickly exceed this limit if you try to process everything in a single query.    <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The solution is called Retrieval Augmented Generation (RAG). The principle is elegant: the entire contract is stored in small sections (chunks) in a vector database. When<em>a user<\/em>asks a question, the system first searches for the relevant text passages and transfers them to the LLM with the question. The model then answers only on the basis of these passages, not from its general training knowledge.     <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This has two decisive advantages. Firstly, the approach scales: the document length no longer plays a role because only relevant sections are ever loaded. Secondly, the answer is comprehensible: Every statement in the LLM can be traced back directly to a specific passage in the original document.    <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In practice, many systems combine RAG with a hierarchical document structure: clauses are not only saved as continuous text, but are also provided with metadata &#8211; such as clause type, contracting party or validity date. This makes targeted queries such as &#8220;Show all clauses on the contract term from supplier contracts from 2023&#8221; possible in the first place.   <\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\"><strong>Embeddings: Precision in contract comparison<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One use case in which LLMs provide particularly efficient support is the comparison of contracts. Deviations from an internal standard can be identified, as can changes made to a contract by a contractual partner during negotiations.   <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A simple text search quickly reaches its limits here. It finds identical words, but no similarities in content. A clause that limits liability to &#8220;direct damages&#8221; and another that &#8220;excludes consequential damages&#8221; have the same meaning in terms of content, but look completely different in terms of text.    <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Embeddings solve this problem. Sections of text are converted into high-dimensional mathematical vectors. Similar content lies close together in the vector space, regardless of the exact wording. The system thus recognizes semantic similarities and specifically identifies divergent clauses.     <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-dominant-color=\"f5f4f5\" data-has-transparency=\"true\" style=\"--dominant-color: #f5f4f5;\" decoding=\"async\" width=\"1024\" height=\"933\" sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"https:\/\/www.risc-software.at\/app\/uploads\/2026\/03\/word-embedding-example-1024x933.webp\" alt=\"\" class=\"wp-image-36489 has-transparency\" srcset=\"https:\/\/www.risc-software.at\/app\/uploads\/2026\/03\/word-embedding-example-1024x933.webp 1024w, https:\/\/www.risc-software.at\/app\/uploads\/2026\/03\/word-embedding-example-300x273.webp 300w, https:\/\/www.risc-software.at\/app\/uploads\/2026\/03\/word-embedding-example-768x700.webp 768w, https:\/\/www.risc-software.at\/app\/uploads\/2026\/03\/word-embedding-example-1536x1400.webp 1536w, https:\/\/www.risc-software.at\/app\/uploads\/2026\/03\/word-embedding-example-2048x1866.webp 2048w\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Image source: <a href=\"https:\/\/www.scaler.com\/topics\/tensorflow\/tensorflow-word-embeddings\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.scaler.com\/topics\/tensorflow\/tensorflow-word-embeddings\/<\/a><\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\"><strong>Controlling hallucinations: Trust with limits<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hallucinations are a well-known problem with LLMs. The model produces statements that sound plausible but are factually incorrect. Such errors are particularly critical in the contractual context. An incorrectly summarized warranty clause or an overlooked exemption from liability can have considerable financial consequences.     <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Professional systems counter this risk with several measures. The most important is transparency: every statement made by the AI is backed up with the exact original passage from the RAG process from which it was derived. Users can click to jump to the source and check the statement manually.    <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Additional measures are also used. Prompt engineering explicitly instructs the model to only answer when it is certain, to provide sample answers and to openly admit when it does not know something. Fine-tuning refers to the further training of a pre-trained model on a specialized data set, such as specialist legal texts, sample contracts or annotated decisions, in order to improve the quality for the specific use case. Guardrails add an additional layer of security: a downstream agent checks the answers, automated tools recognize typical hallucination patterns, and fact checks ensure consistency with the source documents. Advanced systems also use multi-step reasoning, where the model proceeds step by step instead of directly generating an answer.      <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Despite all these measures, AI cannot replace legal expertise. It reduces manual effort and gives legal teams more time for the really important decisions.   <\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\"><strong>On-premises instead of cloud: control over the infrastructure is crucial<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Contracts contain sensitive business information &#8211; price conditions, delivery quantities, exclusive agreements. Transferring such documents to external cloud services means a loss of control over critical company data. For many companies, this is not an acceptable option.    <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Operating an LLM on your own resources (on-premises) solves this problem. The data does not leave the company network. There is no dependency on external services, no unclear contractual conditions for data transfer and no questions about the use of input data for model training.    <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The technical basis for this is provided by powerful open source models. Models such as Mistral, Qwen and Gemma can be operated entirely on your own resources. Suitable systems are now available from around EUR 5,000, although at this price range, runtime and throughput must be reduced for parallel use. Solutions that provide enough resources for most SME requirements are available from around EUR 50,000.     <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By integrating company-specific contract data, the quality of these models can be significantly improved and optimized for the specific use case. On-premises operation also enables full control over model versions; updates are only imported after internal review and approval.   <\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\"><strong>Integration into existing systems: The next step towards a company-wide solution<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The technical core function of an LLM, which reads, evaluates and compares contracts, can be provided and purchased as a stand-alone product. The next step is the structured roll-out of this contract LLM into the existing company infrastructure.   <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Many companies already use contract management systems. An AI solution that runs as an isolated solution alongside these systems creates media disruptions and is hardly used on a day-to-day basis. Seamless integration via standardized interfaces is therefore crucial. With on-premises operation, the company has complete control over this interface. Adaptations, extensions and security updates can be implemented without external coordination.      <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A well thought-out roles and rights concept is also essential. Not every <em> employee<\/em>should be able to view all contracts. The AI solution must respect existing access rights and be integrated into the company&#8217;s identity management &#8211; this is also easier and more secure to implement on-premises than in a shared cloud environment.    <\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\"><strong>Conclusion<\/strong> <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AI-supported contract analysis is now ready for production. LLMs, combined with RAG, domain-specific embedding models and controlled output, solve the key challenges: long documents, semantic comparison and traceability.   <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Those who opt for on-premises operation gain full control over models, data and infrastructure in addition to data protection. It also creates a basis that can be adapted to changing requirements without dependence on external providers. Companies that lay these foundations today create a scalable and sustainable solution that is tailored precisely to their own requirements.    <\/p>\n<\/div>\n<\/div>\n\n<div class=\"wp-block-group-container alignfull \">\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<h2 class=\"wp-block-heading has-text-align-left\">Contact Person<\/h2>\n\n\n<script>\n\/\/----------------------------------------------------------\n\/\/------ JAVASCRIPT HOOK FUNCTIONS FOR GRAVITY FORMS -------\n\/\/----------------------------------------------------------\n\nif ( ! gform ) {\n\tdocument.addEventListener( 'gform_main_scripts_loaded', function() { gform.scriptsLoaded = true; } );\n\tdocument.addEventListener( 'gform\/theme\/scripts_loaded', function() { gform.themeScriptsLoaded = true; } );\n\twindow.addEventListener( 'DOMContentLoaded', function() { gform.domLoaded = true; } );\n\n\tvar gform = {\n\t\tdomLoaded: false,\n\t\tscriptsLoaded: false,\n\t\tthemeScriptsLoaded: false,\n\t\tisFormEditor: () => typeof InitializeEditor === 'function',\n\n\t\t\/**\n\t\t * @deprecated 2.9 the use of initializeOnLoaded in the form editor context is deprecated.\n\t\t * @remove-in 4.0 this function will not check for gform.isFormEditor().\n\t\t *\/\n\t\tcallIfLoaded: function ( fn ) {\n\t\t\tif ( gform.domLoaded && gform.scriptsLoaded && ( gform.themeScriptsLoaded || gform.isFormEditor() ) ) {\n\t\t\t\tif ( gform.isFormEditor() ) {\n\t\t\t\t\tconsole.warn( 'The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1.' );\n\t\t\t\t}\n\t\t\t\tfn();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\n\t\t\/**\n\t\t * Call a function when all scripts are loaded\n\t\t *\n\t\t * @param function fn the callback function to call when all scripts are loaded\n\t\t *\n\t\t * @returns void\n\t\t *\/\n\t\tinitializeOnLoaded: function( fn ) {\n\t\t\tif ( ! gform.callIfLoaded( fn ) ) {\n\t\t\t\tdocument.addEventListener( 'gform_main_scripts_loaded', () => { gform.scriptsLoaded = true; gform.callIfLoaded( fn ); } );\n\t\t\t\tdocument.addEventListener( 'gform\/theme\/scripts_loaded', () => { gform.themeScriptsLoaded = true; gform.callIfLoaded( fn ); } );\n\t\t\t\twindow.addEventListener( 'DOMContentLoaded', () => { gform.domLoaded = true; gform.callIfLoaded( fn ); } );\n\t\t\t}\n\t\t},\n\n\t\thooks: { action: {}, filter: {} },\n\t\taddAction: function( action, callable, priority, tag ) {\n\t\t\tgform.addHook( 'action', action, callable, priority, tag );\n\t\t},\n\t\taddFilter: function( action, callable, priority, tag ) {\n\t\t\tgform.addHook( 'filter', action, callable, priority, tag );\n\t\t},\n\t\tdoAction: function( action ) {\n\t\t\tgform.doHook( 'action', action, arguments );\n\t\t},\n\t\tapplyFilters: function( action ) {\n\t\t\treturn gform.doHook( 'filter', action, arguments );\n\t\t},\n\t\tremoveAction: function( action, tag ) {\n\t\t\tgform.removeHook( 'action', action, tag );\n\t\t},\n\t\tremoveFilter: function( action, priority, tag ) {\n\t\t\tgform.removeHook( 'filter', action, priority, tag );\n\t\t},\n\t\taddHook: function( hookType, action, callable, priority, tag ) {\n\t\t\tif ( undefined == gform.hooks[hookType][action] ) {\n\t\t\t\tgform.hooks[hookType][action] = [];\n\t\t\t}\n\t\t\tvar hooks = gform.hooks[hookType][action];\n\t\t\tif ( undefined == tag ) {\n\t\t\t\ttag = action + '_' + hooks.length;\n\t\t\t}\n\t\t\tif( priority == undefined ){\n\t\t\t\tpriority = 10;\n\t\t\t}\n\n\t\t\tgform.hooks[hookType][action].push( { tag:tag, callable:callable, priority:priority } );\n\t\t},\n\t\tdoHook: function( hookType, action, args ) {\n\n\t\t\t\/\/ splice args from object into array and remove first index which is the hook name\n\t\t\targs = Array.prototype.slice.call(args, 1);\n\n\t\t\tif ( undefined != gform.hooks[hookType][action] ) {\n\t\t\t\tvar hooks = gform.hooks[hookType][action], hook;\n\t\t\t\t\/\/sort by priority\n\t\t\t\thooks.sort(function(a,b){return a[\"priority\"]-b[\"priority\"]});\n\n\t\t\t\thooks.forEach( function( hookItem ) {\n\t\t\t\t\thook = hookItem.callable;\n\n\t\t\t\t\tif(typeof hook != 'function')\n\t\t\t\t\t\thook = window[hook];\n\t\t\t\t\tif ( 'action' == hookType ) {\n\t\t\t\t\t\thook.apply(null, args);\n\t\t\t\t\t} else {\n\t\t\t\t\t\targs[0] = hook.apply(null, args);\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( 'filter'==hookType ) {\n\t\t\t\treturn args[0];\n\t\t\t}\n\t\t},\n\t\tremoveHook: function( hookType, action, priority, tag ) {\n\t\t\tif ( undefined != gform.hooks[hookType][action] ) {\n\t\t\t\tvar hooks = gform.hooks[hookType][action];\n\t\t\t\thooks = hooks.filter( function(hook, index, arr) {\n\t\t\t\t\tvar removeHook = (undefined==tag||tag==hook.tag) && (undefined==priority||priority==hook.priority);\n\t\t\t\t\treturn !removeHook;\n\t\t\t\t} );\n\t\t\t\tgform.hooks[hookType][action] = hooks;\n\t\t\t}\n\t\t}\n\t};\n}\n<\/script>\n\n                <div class='gf_browser_gecko gform_wrapper gform-theme gform-theme--foundation gform-theme--framework gform-theme--orbital' data-form-theme='orbital' data-form-index='0' id='gform_wrapper_3' ><style>#gform_wrapper_3[data-form-index=\"0\"].gform-theme{--gf-color-primary: #5181a9;--gf-color-primary-rgb: 81, 129, 169;--gf-color-primary-contrast: #ffffff;--gf-color-primary-contrast-rgb: 255, 255, 255;--gf-color-primary-darker: #1F4F77;--gf-color-primary-lighter: #83B3DB;--gf-color-secondary: #fff;--gf-color-secondary-rgb: 255, 255, 255;--gf-color-secondary-contrast: #112337;--gf-color-secondary-contrast-rgb: 17, 35, 55;--gf-color-secondary-darker: #F5F5F5;--gf-color-secondary-lighter: #FFFFFF;--gf-color-out-ctrl-light: rgba(17, 35, 55, 0.1);--gf-color-out-ctrl-light-rgb: 17, 35, 55;--gf-color-out-ctrl-light-darker: rgba(104, 110, 119, 0.35);--gf-color-out-ctrl-light-lighter: #F5F5F5;--gf-color-out-ctrl-dark: #585e6a;--gf-color-out-ctrl-dark-rgb: 88, 94, 106;--gf-color-out-ctrl-dark-darker: #112337;--gf-color-out-ctrl-dark-lighter: rgba(17, 35, 55, 0.65);--gf-color-in-ctrl: #fff;--gf-color-in-ctrl-rgb: 255, 255, 255;--gf-color-in-ctrl-contrast: #112337;--gf-color-in-ctrl-contrast-rgb: 17, 35, 55;--gf-color-in-ctrl-darker: #F5F5F5;--gf-color-in-ctrl-lighter: #FFFFFF;--gf-color-in-ctrl-primary: #5181a9;--gf-color-in-ctrl-primary-rgb: 81, 129, 169;--gf-color-in-ctrl-primary-contrast: #fff;--gf-color-in-ctrl-primary-contrast-rgb: 255, 255, 255;--gf-color-in-ctrl-primary-darker: #1F4F77;--gf-color-in-ctrl-primary-lighter: #83B3DB;--gf-color-in-ctrl-light: rgba(17, 35, 55, 0.1);--gf-color-in-ctrl-light-rgb: 17, 35, 55;--gf-color-in-ctrl-light-darker: rgba(104, 110, 119, 0.35);--gf-color-in-ctrl-light-lighter: #F5F5F5;--gf-color-in-ctrl-dark: #585e6a;--gf-color-in-ctrl-dark-rgb: 88, 94, 106;--gf-color-in-ctrl-dark-darker: #112337;--gf-color-in-ctrl-dark-lighter: rgba(17, 35, 55, 0.65);--gf-radius: 3px;--gf-font-size-secondary: 14px;--gf-font-size-tertiary: 13px;--gf-icon-ctrl-number: url(\"data:image\/svg+xml,%3Csvg width='8' height='14' viewBox='0 0 8 14' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4 0C4.26522 5.96046e-08 4.51957 0.105357 4.70711 0.292893L7.70711 3.29289C8.09763 3.68342 8.09763 4.31658 7.70711 4.70711C7.31658 5.09763 6.68342 5.09763 6.29289 4.70711L4 2.41421L1.70711 4.70711C1.31658 5.09763 0.683417 5.09763 0.292893 4.70711C-0.0976311 4.31658 -0.097631 3.68342 0.292893 3.29289L3.29289 0.292893C3.48043 0.105357 3.73478 0 4 0ZM0.292893 9.29289C0.683417 8.90237 1.31658 8.90237 1.70711 9.29289L4 11.5858L6.29289 9.29289C6.68342 8.90237 7.31658 8.90237 7.70711 9.29289C8.09763 9.68342 8.09763 10.3166 7.70711 10.7071L4.70711 13.7071C4.31658 14.0976 3.68342 14.0976 3.29289 13.7071L0.292893 10.7071C-0.0976311 10.3166 -0.0976311 9.68342 0.292893 9.29289Z' fill='rgba(17, 35, 55, 0.65)'\/%3E%3C\/svg%3E\");--gf-icon-ctrl-select: url(\"data:image\/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.292893 0.292893C0.683417 -0.097631 1.31658 -0.097631 1.70711 0.292893L5 3.58579L8.29289 0.292893C8.68342 -0.0976311 9.31658 -0.0976311 9.70711 0.292893C10.0976 0.683417 10.0976 1.31658 9.70711 1.70711L5.70711 5.70711C5.31658 6.09763 4.68342 6.09763 4.29289 5.70711L0.292893 1.70711C-0.0976311 1.31658 -0.0976311 0.683418 0.292893 0.292893Z' fill='rgba(17, 35, 55, 0.65)'\/%3E%3C\/svg%3E\");--gf-icon-ctrl-search: url(\"data:image\/svg+xml,%3Csvg width='640' height='640' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath d='M256 128c-70.692 0-128 57.308-128 128 0 70.691 57.308 128 128 128 70.691 0 128-57.309 128-128 0-70.692-57.309-128-128-128zM64 256c0-106.039 85.961-192 192-192s192 85.961 192 192c0 41.466-13.146 79.863-35.498 111.248l154.125 154.125c12.496 12.496 12.496 32.758 0 45.254s-32.758 12.496-45.254 0L367.248 412.502C335.862 434.854 297.467 448 256 448c-106.039 0-192-85.962-192-192z' fill='rgba(17, 35, 55, 0.65)'\/%3E%3C\/svg%3E\");--gf-label-space-y-secondary: var(--gf-label-space-y-md-secondary);--gf-ctrl-border-color: #686e77;--gf-ctrl-size: var(--gf-ctrl-size-md);--gf-ctrl-label-color-primary: #112337;--gf-ctrl-label-color-secondary: #112337;--gf-ctrl-choice-size: var(--gf-ctrl-choice-size-md);--gf-ctrl-checkbox-check-size: var(--gf-ctrl-checkbox-check-size-md);--gf-ctrl-radio-check-size: var(--gf-ctrl-radio-check-size-md);--gf-ctrl-btn-font-size: var(--gf-ctrl-btn-font-size-md);--gf-ctrl-btn-padding-x: var(--gf-ctrl-btn-padding-x-md);--gf-ctrl-btn-size: var(--gf-ctrl-btn-size-md);--gf-ctrl-btn-border-color-secondary: #686e77;--gf-ctrl-btn-bg-color-hover-tertiary: #EBEBEB;--gf-field-img-choice-size: var(--gf-field-img-choice-size-md);--gf-field-img-choice-card-space: var(--gf-field-img-choice-card-space-md);--gf-field-img-choice-check-ind-size: var(--gf-field-img-choice-check-ind-size-md);--gf-field-img-choice-check-ind-icon-size: var(--gf-field-img-choice-check-ind-icon-size-md);--gf-field-pg-steps-number-color: rgba(17, 35, 55, 0.8);}<\/style>\n                        <div class='gform_heading'>\n                            <p class='gform_description'><\/p>\n                        <\/div><form method='post' enctype='multipart\/form-data'  id='gform_3'  action='\/en\/wp-json\/wp\/v2\/publication\/36507' data-formid='3' novalidate>\n                        <div class='gform-body gform_body'><div id='gform_fields_3' class='gform_fields top_label form_sublabel_above description_below validation_below'><fieldset id=\"field_3_1\" class=\"gfield gfield--type-name gfield--input-type-name gfield_contains_required field_sublabel_hidden_label gfield--no-description field_description_above hidden_label field_validation_below gfield_visibility_visible\"  ><legend class='gfield_label gform-field-label gfield_label_before_complex' ><span class='gform-field-label__text'>Name<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/legend><div class='ginput_complex ginput_container ginput_container--name no_prefix no_first_name no_middle_name has_last_name no_suffix gf_name_has_1 ginput_container_name gform-grid-row' id='input_3_1'>\n                            \n                            \n                            \n                            <span id='input_3_1_6_container' class='name_last gform-grid-col gform-grid-col--size-auto' >\n                                                    <input type='text' name='input_1.6' id='input_3_1_6' value=''   aria-required='true'   placeholder='Name' autocomplete=\"family-name\" \/>\n                                                    <label for='input_3_1_6' class='gform-field-label gform-field-label--type-sub hidden_sub_label screen-reader-text'>Last<\/label>\n                                                <\/span>\n                            \n                        <\/div><\/fieldset><div id=\"field_3_13\" class=\"gfield gfield--type-text gfield--input-type-text gfield--width-half gfield_contains_required field_sublabel_above gfield--no-description field_description_above hidden_label field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_3_13'><span class='gform-field-label__text'>Company<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_text'><input name='input_13' id='input_3_13' type='text' value='' class='large'    placeholder='Company' aria-required=\"true\" aria-invalid=\"false\"   \/><\/div><\/div><div id=\"field_3_2\" class=\"gfield gfield--type-email gfield--input-type-email gfield--width-half gfield_contains_required field_sublabel_above gfield--no-description field_description_above hidden_label field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_3_2'><span class='gform-field-label__text'>Email address<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_email'>\n                            <input name='input_2' id='input_3_2' type='email' value='' class='large'   placeholder='Email Address' aria-required=\"true\" aria-invalid=\"false\"  \/>\n                        <\/div><\/div><div id=\"field_3_3\" class=\"gfield gfield--type-textarea gfield--input-type-textarea gfield_contains_required field_sublabel_above gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_3_3'><span class='gform-field-label__text'>Your message to us<\/span><span class=\"gfield_required\"><span class=\"gfield_required gfield_required_text\">(Required)<\/span><\/span><\/label><div class='ginput_container ginput_container_textarea'><textarea name='input_3' id='input_3_3' class='textarea medium'    placeholder='Your message to us' aria-required=\"true\" aria-invalid=\"false\"   rows='10' cols='50'><\/textarea><\/div><\/div><div id=\"field_3_14\" class=\"gfield gfield--type-hcaptcha gfield--input-type-hcaptcha gfield--width-full field_sublabel_above gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_3_14'><span class='gform-field-label__text'>hCaptcha<\/span><\/label>\t\t<input\n\t\t\t\ttype=\"hidden\"\n\t\t\t\tclass=\"hcaptcha-widget-id\"\n\t\t\t\tname=\"hcaptcha-widget-id\"\n\t\t\t\tvalue=\"eyJzb3VyY2UiOlsiZ3Jhdml0eWZvcm1zXC9ncmF2aXR5Zm9ybXMucGhwIl0sImZvcm1faWQiOjN9-672761a691d5b9e84bc162ef5b692e99\">\n\t\t\t\t<h-captcha\n\t\t\tclass=\"h-captcha\" id=\"input_3_14\" data-tabindex=\"0\"\n\t\t\tdata-sitekey=\"3a6a81c1-2b2e-4b2a-b1eb-d9446bc09afb\"\n\t\t\tdata-theme=\"light\"\n\t\t\tdata-size=\"normal\"\n\t\t\tdata-auto=\"false\"\n\t\t\tdata-ajax=\"false\"\n\t\t\tdata-force=\"false\">\n\t\t<\/h-captcha>\n\t\t<input type=\"hidden\" id=\"gravity_forms_nonce\" name=\"gravity_forms_nonce\" value=\"4a6154654e\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/publication\/36507\" \/><\/div><\/div><\/div>\n        <div class='gform-footer gform_footer top_label'> <button type='submit' id='gform_submit_button_3' class='gform_button button gform-button--width-full' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' >Submit<\/button> \n            <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_3' value='postback' \/>\n            <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_3' id='gform_theme_3' value='orbital' \/>\n            <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_3' id='gform_style_settings_3' value='{&quot;buttonPrimaryBackgroundColor&quot;:&quot;#5181a9&quot;,&quot;buttonPrimaryColor&quot;:&quot;#ffffff&quot;}' \/>\n            <input type='hidden' class='gform_hidden' name='is_submit_3' value='1' \/>\n            <input type='hidden' class='gform_hidden' name='gform_submit' value='3' \/>\n            \n            <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='EUR' value='O851ikhxWnd56u5TispN7DXEMwliuvXiTT4uW9Z6gpxyc1m0+Qo5PoAS90f3h92xm4UhpQHSJzJFN2JRE0BkgQPQfNVYX03GETgGyfNH1vPQgEM=' \/>\n            <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' \/>\n            <input type='hidden' class='gform_hidden' name='state_3' value='WyJ7XCJnZm9ybV9zdWJtaXNzaW9uX21ldGhvZFwiOltcImYyZWZiYjJiMjI3ODQyMDZlNDM2YjcwNzYzMzFlNTI1XCIsXCIxYThmZGM4MTc1OTQxZTRjY2UwNzY4N2IyMGI4MTM4MlwiXSxcImdmb3JtX3RoZW1lXCI6XCIyMDhlNmRmNGE5MTdiOWUwYTA1NWZkN2Y1MDljOTdjYVwiLFwiZ2Zvcm1fc3R5bGVfc2V0dGluZ3NcIjpcImVjYmE1NWE4ZDBjMGJjMDEzZGRjZDNlN2UyNTU0MmUzXCIsXCJmb3JtX2lkXCI6XCIyMWY3NWJmNTkyOWQzYmZjZjFlNjg3ZDJiOGRjZGRhN1wiLFwidXJsXCI6XCI0OGQ5MjM1NWM5ZDRlNWExZTUzYTI0YzgwYzg0MzAzYlwiLFwic3RhdGVfdGltZXN0YW1wXCI6XCI2NDcwNjE2NzI4Yzg4MTdjOWYyNzNkODQ2MTM2ZmUwOVwifSIsIjA4NGU2YWZlNDgwZTM4ZGRhYWFhMDRkZmU5NTI0MGQ3IiwxNzg4NTU1ODkyXQ==' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_3' id='gform_target_page_number_3' value='0' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_3' id='gform_source_page_number_3' value='1' \/>\n            <input type='hidden' name='gform_field_values' value='' \/>\n            \n        <\/div>\n                        <\/form>\n                        <\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<h2 class=\"wp-block-heading\">Author<\/h2>\n\n\n<div class=\"contact-person\">\n      <picture>\n      \n      \n      \n      \n      <img decoding=\"async\" data-aos=\"fade-zoom-in\"\n           data-aos-offset=\"0\" class=\"w-full\" width=\"212\" height=\"293\"\n           src=\"https:\/\/www.risc-software.at\/app\/uploads\/2023\/07\/sleitner1-Background-Removed.jpg\"\n           alt=\"\">\n    <\/picture>\n    <div class=\"acf-innerblocks-container\">\n\n<h5 class=\"wp-block-heading\">DI (FH) Stephan Leitner<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Head of Unit Domain-specific Applications<\/p>\n\n<\/div>  <\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Read more<\/h2>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div style=\"--wp--block-button--width: 100;\" class=\"wp-block-button is-style-fill has-custom-width wp-block-button__width wp-block-button__width-100\"><a class=\"wp-block-button__link has-medium-font-size has-custom-font-size wp-element-button\" href=\"https:\/\/www.risc-software.at\/en\/?page_id=35820\">KOALaw- Your intelligent contract analysis software for data-driven legal processes<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"posts-slider-block\" data-aos=\"fade-up\" data-aos-offset=\"0\" data-aos-anchor-placement=\"top-bottom\">\n        <section class=\"splide posts-slider\" aria-label=\"Gallery Slides\">\n            <div class=\"splide__arrows\">\n                <button class=\"splide__arrow splide__arrow--prev\">\n                    <span class=\"sr-only\">Previous<\/span>\n                    <img decoding=\"async\" loading=\"lazy\" width=\"25\" height=\"21\" src=\"https:\/\/www.risc-software.at\/app\/themes\/risc-theme-main\/public\/images\/icon-arrow.35d2ec.svg\"\n                         alt=\"Previous\">\n                <\/button>\n                <button class=\"splide__arrow splide__arrow--next\">\n                    <span class=\"sr-only\">Next<\/span>\n                    <img decoding=\"async\" loading=\"lazy\" width=\"25\" height=\"21\" src=\"https:\/\/www.risc-software.at\/app\/themes\/risc-theme-main\/public\/images\/icon-arrow.35d2ec.svg\"\n                         alt=\"Next\">\n                <\/button>\n            <\/div>\n            <div class=\"inner\">\n                <div class=\"splide__track\">\n                    <div class=\"splide__list\">\n\n                                                    <a href=\"https:\/\/www.risc-software.at\/en\/technicalarticles\/mcp-server-the-connecting-fabric-between-ai-data-and-tools\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                            <picture>\n                                            <img decoding=\"async\" width=\"373\" height=\"249\" src=\"https:\/\/www.risc-software.at\/app\/themes\/risc-theme-main\/public\/images\/blog-placeholder.svg\"\n                                                 alt=\"Placeholder Image\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>MCP server: The connecting fabric between AI, data and tools<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        Model Context Protocol MCP securely connects AI with files, APIs and systems &#8211; for automated, traceable workflows in industry and IT.\n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                                    <a href=\"https:\/\/www.risc-software.at\/en\/technicalarticles\/my-data-my-language-model\/\" class=\"splide__slide blog-post-teaser mb-1 lg:mb-3\">\n                                <div class=\"blog-image\">\n                                                                            <picture>\n                                            <img decoding=\"async\" width=\"373\" height=\"249\" src=\"https:\/\/www.risc-software.at\/app\/themes\/risc-theme-main\/public\/images\/blog-placeholder.svg\"\n                                                 alt=\"Placeholder Image\">\n                                        <\/picture>\n                                                                    <\/div>\n                                <div class=\"blog-content px-2 py-3 xl:px-4 xl:py-5\">\n                                    <h3>My data My language model<\/h3>\n                                    <div class=\"blog-post-excerpt mt-2\">\n                                        Workflows can be improved through the (partial) automation of tasks such as the creation of documents. Customer service can also be optimized through AI-supported personalization. The provision of data insights by AI systems also helps to optimize processes. Large language models (LLMs) such as ChatGPT offer a wide range of promising applications for this.     \n                                    <\/div>\n                                    <span class=\"inline-block mt-2 more\">mehr erfahren <span class=\"ml-1 icon-more\"><\/span><\/span>\n\n                                <\/div>\n                            <\/a>\n                                            <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n    <\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contract negotiations tie up a lot of time and resources in companies. Today, large language models analyze and compare contracts automatically and can be operated with currently available solutions on local infrastructure.   <\/p>\n","protected":false},"featured_media":38385,"template":"","publication-category":[],"class_list":["post-36507","publication","type-publication","status-publish","has-post-thumbnail","hentry"],"acf":[],"portrait_thumb_url":"https:\/\/www.risc-software.at\/app\/uploads\/2026\/03\/risc_software_close-up_of_hands_working_on_printed_contract_n_c3ed5818-dd32-45e5-a74a-7911f8a0e717_1-360x214.webp","_links":{"self":[{"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/publication\/36507","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/publication"}],"about":[{"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/types\/publication"}],"version-history":[{"count":5,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/publication\/36507\/revisions"}],"predecessor-version":[{"id":38399,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/publication\/36507\/revisions\/38399"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/media\/38385"}],"wp:attachment":[{"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/media?parent=36507"}],"wp:term":[{"taxonomy":"publication-category","embeddable":true,"href":"https:\/\/www.risc-software.at\/en\/wp-json\/wp\/v2\/publication-category?post=36507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}