AI tools have moved from experimentation to actual design production. Teams are no longer asking whether AI works. They are now focused on how to use it well, where it adds value, and how to maintain design quality as speed increases. Design timelines aren’t what they used to be. The long arc from low-fidelity wireframes to final handoff now happens in days. In some cases, even hours. Iteration cycles are tighter. Stakeholder reviews are compressed. Designers are expected to move fast, personalise at scale, and stay consistent across every screen and breakpoint.
To keep up, teams have turned to AI systems that turn prompts into layouts, apply tokens, and reduce repetitive work, promising faster output without losing intent, and structure without giving up control. As these systems take on more of the workflow, the question is no longer whether they work. It’s whether the speed they bring aligns with the quality that design teams are still accountable for.
AI adoption in design is growing quickly. Reports from industry leaders like McKinsey show that a meaningful part of design work can now be automated, especially in interface production and research analysis. Teams have started moving from trying AI tools for fun to using them inside real workflows.
The hype phase is ending. The usefulness phase has begun.

AI is now part of the entire design workflow. It supports research synthesis, generates interface variants, audits components, flags accessibility issues, and helps summarise user behaviour.
According to McKinsey, generative AI could automate up to 30% of design-related tasks, especially in interface production, QA, and qualitative analysis.
Galileo AI converts short prompts into responsive layouts using structured component logic. Uizard transforms wireframes or screenshots into interactive screens.
Adobe Firefly automates asset creation for branded content and variant testing. Figma connects design directly to engineering through Dev Mode and AI-driven plugins.
The shift is not just in tooling. It changes how teams operate. Execution has accelerated. The constraint now is decision-making. Designers spend less time drawing and more time reviewing, refining, and aligning outputs with system logic and business context.
AI is also reshaping how designers work day to day. It accelerates ideation, supports rapid prototyping, automates repetitive tasks, and enables hyper-personalised variations based on user behaviour. These changes are creating a new level of speed and precision across the entire design cycle.
The benefits are visible, but the risks are often underestimated.
When Figma introduced its Make Designs feature, the goal was to generate screen layouts from simple prompts. The feature was pulled soon after launch when users noticed outputs that closely resembled Apple’s weather app.
The problem was not with the underlying model. It came from the examples fed into the system. New components and example screens had been added to Figma’s internal design library without full review. The AI recombined those elements and surfaced patterns that matched real-world interfaces too closely.
This highlighted a core limitation. AI mirrors what it is given. Inputs shape outputs. Without structure and content governance, results tend to drift toward mimicry or become generic.
OpenAI’s documentation and Figma’s blog post both reinforce this idea. Generative systems are responsive, not discerning. When constraints are loose, the volume of output increases, but the quality and originality often suffer.
Using AI without clear design boundaries may produce faster results, but not necessarily better ones.

The strength of AI is most visible when aligned with structured frameworks like design thinking.
During the empathise phase, AI tools can process interview transcripts, extract sentiment, and highlight user pain points. Teams working with large datasets or multilingual feedback benefit from the speed and structure this brings. Learn more about how empathy works in design thinking.
In the define stage, clustering tools help turn fragmented feedback into usable problem statements. This accelerates alignment before ideation begins.
When teams ideate, AI tools offer early design directions from prompts. These aren't meant to be final; they give teams multiple starting points to build from. Here’s how workshops support this phase.
During prototyping, systems like Figma and Uizard generate layout branches that can be reviewed, tested, and shipped without switching platforms. Explore how prototyping fits into structured design.
In the test phase, AI identifies usability issues across sessions, flags inconsistencies, and provides comparative insights from recorded data. These findings inform sharper design adjustments. More on testing in design thinking.
AI doesn’t replace this process. It gives teams more ways to move through it with clarity and speed.
Several tools now serve real production needs, not just experimentation.
Figma combines prompt-based generation with Dev Mode for engineering-ready handoff.

Adobe Firefly focuses on fast brand asset generation.

Galileo AI interprets plain text to generate UIs that align to layout rules.

Uizard converts rough sketches into structured interfaces.

These platforms are already being used to generate compliant microsites across regions, synthesise multilingual research, and adapt interfaces based on device, task, or urgency.
Use cases go beyond drafts; they support publishing, accessibility, and performance.
For teams designing regulated platforms or content systems, see how structured product design is applied in practice.
1. AI supports different parts of the design ecosystem.
2. In UX and UI design, it speeds up wireframes, flows, and layout testing.
3. In graphic and visual design, it helps generate assets and maintain brand consistency.
4. In product design, it supports strategic decisions, feature validation, and early modelling.
When used at the right stage, AI improves interface production without breaking structure. Layout variants can be generated early, aligned to grid rules, and evaluated before final polish. Instead of redrawing every screen, designers use token-based prompts to test spacing, hierarchy, and responsive behaviour.
Accessibility checks surface during layout. Contrast issues, missing labels, and keyboard traps are flagged inline. This reduces rework and gives design and compliance leads room to course-correct before QA.
System rules stay intact. Deviations from component logic, inconsistent spacing, or broken token references are flagged before handoff. Engineers work from a consistent structure, not static mockups.
In multilingual flows or high-variant screens, AI generates layout alternatives that maintain hierarchy and adapt to content shifts. Design time shifts from repetition to refinement. Outputs scale. Design intent holds.
AI is shifting designers from heavy execution to thoughtful direction. Instead of spending most of their time drawing screens, designers now spend more time reviewing, refining, and guiding AI-generated options. The role is evolving from maker to curator, where strategy, clarity, and decision-making matter even more.

AI works best when integrated into a structured system. With defined components, layout rules, and consistent token use, outputs stay aligned with design intent. Without that structure, results begin to drift. Hierarchy breaks, patterns become inconsistent, and visual quality declines.
While AI can generate layouts quickly, it does not understand brand, context, or tone. It responds to inputs but does not make decisions. That judgment remains with the design team.
When prompts are unclear or token libraries are incomplete, the output becomes unreliable. This creates avoidable rework, slows production, and erodes confidence in the process. The value of AI is in reducing repetitive effort, not replacing direction. It is a system accelerant, not a substitute for design leadership.
AI helps teams meet accessibility standards faster. It can generate alt text, simplify content for cognitive accessibility, simulate colour-blind views, and identify contrast or structural issues early in the process. For teams working with large platforms or multisite systems, this reduces rework and improves consistency.
In healthcare, AI-assisted microsite generation has been used to create layouts with shared structural logic and localised content variations. Base templates were produced quickly, while manual effort focused on regulatory alignment and user-specific prioritisation.
In the public sector, multilingual feedback summarisation allowed design teams to extract insights from interviews without reading each transcript. The consolidated findings helped inform layout decisions, navigation structure, and accessibility considerations.
Legal platforms like Aeldris have introduced adaptive interface systems that adjust layout logic based on user input, task urgency, or content type. These systems apply structured variation at scale without rebuilding layouts from scratch.
In each case, AI was used as a system layer to extend structure and reduce manual overhead. It supported production without replacing design logic or judgment.
The pressure to move faster will not ease. AI helps meet that demand, but only when systems are in place to guide it.
Used casually, it produces noise. Used precisely, it removes overhead and gives teams space to focus on better decisions.
Execution becomes faster. Quality stays under human control.
Design doesn’t need replacements. It needs better support systems. AI, when integrated with structure and purpose, is that support.
the As AI continues to mature, design teams that learn how to guide it, critique it, and use it with intention will stay ahead.
What are some of the best AI design tools and services?
Figma, Adobe Firefly, Uizard, and Galileo AI are actively used across design teams. Each supports specific stages of the process, from layout generation to QA and handoff.
Will AI tools replace designers?
No. AI systems generate options. Designers define direction. Strategic decisions, brand tone, and ethical framing still require human judgment.
What are the pros and cons of AI in design?
Benefits include faster layout variation, better audit consistency, and scalable testing. Challenges include generic output, dependence on structured inputs, and lack of context sensitivity.
Integrating Large Language Models (LLMs) like OpenAI’s ChatGPT, Google Gemini, and Anthropic Claude into web applications has unlocked a new class of user experiences, ranging from chatbots that feel like friends. AI writing tools that help you think. Tools that summarise, translate, or generate things in seconds.
But as exciting as it sounds, here’s the thing no one tells you…
Getting an AI model into your app is not that easy.
LLM integration is complex, provider-specific, and fraught with edge cases.
Whether you're using OpenAI, Google Gemini, Anthropic Claude, or Hugging Face, you often end up writing different boilerplate code, tweaking payloads, handling custom error structures, and managing streaming behaviours. That’s a lot of repetitive, non-creative work for developers.
Let’s say you want to build a chatbot or AI assistant into your site. Sounds simple, right?
Well… not quite.
You’ll quickly run into problems like:
And if you ever want to switch from one model to another, you will probably need to rewrite half your app and make your codebase harder to maintain.
The AI SDK solves these headaches by offering a standard interface for working with AI models. It acts as a middleware layer that abstracts away provider-specific quirks and lets you focus on building features.
It does all the hard stuff behind the scenes so you can focus on the fun part: building cool AI features.
Without the SDK:
// You call the raw API
const res = await fetch('https://api.openai.com/v1/chat/completions', {
method: 'POST',
headers: {
Authorisation: 'Bearer your-api-key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'gpt-4',
messages: [{ role: 'user', content: 'Tell me a joke' }],
}),
});
const data = await res.json();
With AI SDK (React):
const { messages, input, handleInputChange, handleSubmit } = useChat();
const { messages, input, handleInputChange, handleSubmit } = useChat();
That’s it! No boilerplate, no streaming management, no token juggling.
Instead of writing separate logic for OpenAI, Gemini, or Claude, the SDK provides unified hooks like:
const { messages, input, handleInputChange, handleSubmit } = useChat();
const { completion, input, handleInputChange, handleSubmit } = useCompletion();
People love it when AI responds live, like ChatGPT does. The SDK handles this for you. You don’t have to know what SSE (Server-Sent Events) are — it just streams the answer in real time, automatically:
return new StreamingTextResponse(OpenAIStream(response));
The Vercel AI SDK's function tool calls allow you to define and register arbitrary "tools" (user-defined async functions with parameter schemas) that the LLM can call during chat or text generation. This enables models not only to generate text but also to trigger executable functions and react to their outputs, supporting advanced workflows like agents, chatbots with plugins, and more.
Just define them like this:
import { generateText, tool } from 'ai'; // ai = Vercel AI SDK
import { z } from 'zod';
const getWeather = tool({
description: 'Get the weather in a location',
parameters: z.object({
location: z.string().describe('City name'),
}),
// This function is called when the model wants to use the tool:
execute: async ({ location }) => {
// You could call a real weather API here
return { location, temperature: 25 };
},
});
const result = await generateText({
model: openai('gpt-4-turbo'),
prompt: 'What is the weather in Berlin?',
tools: { getWeather }, // tools made available to the assistant
// Optional: enable multi-step tool reasoning
maxSteps: 3,
});
Imagine you upload a PDF, and the AI can answer questions about it.
You can do that too:
const { handleUpload } = useChat({
onUpload: async (files) => {
await uploadToVectorDB(files); // Or your own file system
},
});
<input type="file" multiple onChange={(e) => handleUpload(e.target.files)} />
This is how apps like ChatPDF and AI Notebooks work.
The SDK supports Server-Sent Events (SSE) out of the box, so you get real-time token-by-token updates for a snappy user experience, without having to handle the stream manually.
The hooks are designed for React, Next.js, SvelteKit, and even Nuxt, which means you can bind AI behaviour directly to your frontend components.
The AI SDK promotes using API routes or server functions to call the model, ensuring your API keys and prompt logic are not exposed to the client.
Here’s where the AI SDK shines:
In a multilingual digital world, keeping your website content translated, consistent, and fresh can be a challenge.
That’s where Drupal’s AI-powered translation modules come in.
With the rise of Large Language Models (LLMs), Drupal developers now have access to powerful tools that make content translation faster and easier.
Two key modules that streamline AI-based translation in Drupal are:
Let’s explore both:
The AI Translate module is part of the AI module suite and integrates directly with Drupal’s content translation system, which allows content editors to generate translations for nodes using AI providers (like OpenAI or others) with a single click.
Key features:
Prerequisites:
Enable modules:
Steps:




The AI TMGMT (Translation Management) module serves as an AI-based translator plugin for the Translation Management Tool (TMGMT) project. It leverages the AI module to support a wide range of providers, including OpenAI, Ollama, and other paid or free/local options. This ensures you can always access the latest, most cost-effective models for accurate and automated content translation.
Key Features:
Enable Modules:
Steps:
Once enabled, the module provides the Translation menu item in the navigation.



Now you are allowed to select multiple items from the list to translate together. You can see the title, columns for each language. Against each content, there are symbols under each language. The home symbol indicates original translation, the cross symbol represents no translation available for that language, and the green check implies there is translation available for that particular language.




You can view the translation status of each content in the job items page and the status of each group of translation in the jobs page.


From here, you can manage or review the translations and complete them as appropriate.
If you want to avoid the process of review of translations, you can enable the Auto accept finished translations field in admin/tmgmt/translators/manage/ai?destination=/admin/tmgmt/translators
Drupal’s AI-powered translation modules, AI Translate and AI TMGMT, bring speed, flexibility, and scalability to multilingual content workflows. Whether you’re translating a single node on the fly or managing complex, large-scale translation jobs, these tools empower site editors and administrators to harness the capabilities of modern AI models like OpenAI, Ollama, and more.
By integrating AI seamlessly into Drupal’s translation ecosystem, these modules help reduce manual effort, improve consistency, and deliver translated content faster without sacrificing editorial control.
As LLMs evolve, these tools will continue to grow, offering even more efficient and intelligent ways to manage multilingual experiences in Drupal.
https://www.drupal.org/project/ai_tmgmt
https://www.drupal.org/project/ai
https://project.pages.drupalcode.org/ai/1.1.x/modules/ai_translate/
In 2023, the U.S. the Department of Veterans Affairs used AI to process healthcare claims faster, reducing the time from 14 days to under 3 by automating triage and prioritization and thisshift translated into faster reimbursements, better patient service, and significant operational savings.
Businesses across industries are investing in AI to solve real problems, like streamlining operations, reducing overhead, improving customer experience, speeding up the internal decision-making, enhancing compliance workflows, and reducing risk.
From logistics companies optimising delivery routes to banks using AI for fraud detection, the applications are increasingly core to how businesses operate.
But here’s the catch: while the hype around AI is loud, clear conversations about its return on investment (ROI) are rare.
That’s why this blog exists: you’ll discover how to calculate the ROI of AI services, which metrics matter, what costs are often missed, and how to turn smart planning into real business outcomes.
If you're contemplating AI but unsure what it means for your bottom line, you're in the right place. When AI services are pitched, discussions often focus on capabilities. But when it comes to investing, the key question is simple: how much does it return?
.avif)
To calculate, the standard formula for return on investment is: ROI = (Net Benefits - Costs) / Costs.
But making this formula useful means being precise about what goes into each side of the equation.
On the benefit side, you account for time savings, accuracy gains, speed of operations, and downstream revenue. These benefits typically come from reducing manual workloads, improving forecasting and personalisation, and speeding up responses.
When it comes to the costs, it's not just about subscription or license fees. You should also factor in the cost of customising models, integrating them into your existing systems, preparing your data, and training your teams. Ongoing costs also matter, such as system maintenance, periodic retraining, and scaling infrastructure.
According to a 2023 McKinsey study, 44% of companies implementing AI underestimated the costs associated with data infrastructure and training. These overlooked costs can often significantly affect the difference between projected ROI and actual performance.

This is often the easiest and simplest metric to measure. When AI takes over tasks like document classification, ticket triage, or invoice handling, each transaction takes less time.
For instance, if your finance team processes 10,000 invoices a month and automation saves 10 minutes per invoice, you save 100,000 minutes, about 1,667 hours. At an average cost of $30/hour, that equals roughly $50,000 per month.
AI can reduce delays, improve routing, and eliminate bottlenecks.
Uber Freight has leveraged AI-powered optimisation to cut down empty miles and improve truck utilisation across its network. By analysing traffic, weather, and load data in real time, the company significantly cut route inefficiencies, boosting delivery reliability and reducing operating costs.
Efficiency metrics often show up in throughput: the number of support tickets resolved, orders processed, or inquiries answered within a given time. Measuring before and after deployment helps isolate the value.
AI reduces human error in repetitive or decision-heavy tasks. Whether it’s data entry, demand forecasting, or product categorisation, accuracy gains can prevent costly mistakes.
A B2B SaaS company deploying an AI triage system for customer tickets saw a 22% drop in SLA violations, reducing the number of escalations and saving team bandwidth, according to this case study summary.
AI doesn’t just cut costs, it can also drive top-line growth. Personalised product recommendations, churn prediction models, and dynamic pricing engines can all increase revenue.
Revenue ROI often shows up in increased customer lifetime value, improved conversion rates, or higher average order values. These require controlled testing to isolate results.
You should also track precision, recall, and latency. These technical indicators affect how reliably a system operates and how users respond to it. Low precision leads to irrelevant results, while long latency can frustrate users.
High-performing systems contribute to adoption and usage. For guidance on evaluation, see our AI testing guide.
Some AI systems deliver immediate benefits; others require a learning period. Consider how long it takes to get a model trained, deployed, and effective. The same goes for how long it takes your team to learn and adopt it.
Tracking ramp-up time is key to understanding when returns start and how long the payback period might be.

Start with a problem that affects the bottom line. AI should not be used for experimentation alone. Instead, it should improve processes that matter: reducing cost, increasing revenue, or improving speed.
If your support volume is rising and your ticket backlog is increasing, that’s a clear cost centre. A properly tuned AI assistant might bring measurable improvement here within one quarter.
Many AI projects don’t work because of poor input data. Unstructured, inconsistent, or incomplete data limits what AI can do.
Conducting a data readiness audit early can prevent delays and budget overruns later. This includes checking data volume, structure, labelling, and relevance to the task.
Your current tech stack plays a major role. Some AI tools offer plug-and-play connectors; others require API customisation or infrastructure changes.
For organisations running on platforms like Drupal, see how we've approached AI in Drupal implementations.
Even after launch, AI systems require monitoring and maintenance. Over time, models may drift, and new edge cases may emerge. Retraining, compliance updates, and UI/UX changes must be factored into total cost of ownership.
After an AI system is launched, it still needs to be monitored and maintained. Over time, models can change, and new edge cases may emerge. When figuring out the total cost of ownership, consider retraining, compliance updates, and UI/UX updates.
Determine whether your internal team can handle the system maintenance or whether vendor support is required. Long-term success is rooted in shared ownership. Our approach to AI services supports capability-building alongside deployment.

AI is proving to be a game-changer in B2B, especially in areas that require frequent decision-making. In sales, for example, AI can help prioritise leads, suggest follow-ups, and customise email outreach.
HubSpot has found that teams leveraging AI can cut their sales cycles by as much as 12%.
In the realm of customer support, AI tools for ticket triage and classification can significantly speed up response times and decrease the number of tickets agents need to manage. One global SaaS company reported a 15% reduction in support staff needs thanks to AI, saving them $1.3 million each year.
When it comes to procurement, AI assists with inventory planning and forecasting suppliers. Gartner estimates that AI can help reduce inventory costs by up to 10% while still maintaining high service levels.
For more information, explore our AI workflow assistant solutions.

AI brings real advantages, but some tradeoffs are involved.
AI systems improve throughput, reduce delays, and surface insights. They operate 24/7 and can be scaled without scaling costs. Personalisation features improve experience and retention.
Successful AI adoption requires structured data, systems integration, and training. Predictive systems typically take longer to show ROI than automation systems. Ongoing oversight is also necessary.
Well-scoped implementations help reduce effort. Read our blog on how AIaaS has changed.

Many companies proceed carefully, often based on past experience or internal constraints.
Some have tried AI projects that overpromised and underdelivered. Others encounter gaps in their data after implementation begins. Internal teams may worry about automation changing workflows or roles.
Compliance requirements can also shape the scope. Finance and healthcare teams need transparent systems that meet audit and reporting standards.
These factors don’t prevent AI projects. They shape planning. Teams that invest time in audits, change management, and compliance reviews tend to execute more successfully.
There are indirect benefits to AI that are just as real, even if they’re harder to model.
Faster decision-making has compounding value. When you reduce time-to-insight from days to minutes, business leaders can respond more quickly to shifts in the market.
AI also improves morale by taking repetitive work off people’s plates. Employees prefer working on tasks that use judgment, not repetition. This reduces turnover and speeds up onboarding.
Organisations that invest in AI also test and learn faster. They can try more campaigns, pricing experiments, or support approaches in less time.
AI-powered fraud and risk detection systems identify issues earlier. And perceived innovation helps with brand equity. Companies that show AI capability attract more talent, partners, and attention.

Not all returns show up on a balance sheet. AI frees teams from repetitive work, improves morale, and reduces churn. That’s time and energy reallocated to strategic, creative, or client-facing work.
At QED42, we’ve seen this through AI workflow assistants that cut ticket backlogs, and in platforms like the UNICEF Learning Cabinet, where faster access to insights helps teams focus on outcomes that matter.
With Aeldris, we’re helping legal aid staff spend less time triaging cases and more time with the clients who need them. That shift in attention has operational and emotional payoff.
Soft ROI improves how teams collaborate, how quickly they ramp up, and how well they serve users. It’s a long-term return worth tracking.

To build an accurate ROI model:
AI ROI is being benchmarked, audited, and tied directly to operations. According to PwC, AI could contribute up to $15.7 trillion to the global economy by 2030, with $6.6 trillion coming from increased productivity. The leading adopters are countries like the United States, China, the United Kingdom, and Germany, where AI is already integrated into sectors such as healthcare, banking, logistics, and public infrastructure.
In the Middle East, governments are investing billions in national AI strategies, including Saudi Arabia’s $40 billion AI investment plan. In India, AI spending across industries such as pharma, finance, and government grew by more than 30 per cent in 2023, according to IDC.
Across industries, AI is embedded in high-impact use cases. Mastercard uses AI to detect fraud in real time. Pfizer accelerates drug discovery with AI. Walmart uses it to forecast demand and optimise inventory. Salesforce has embedded AI into its core CRM to reduce support costs and improve customer experience.
What’s changing is how ROI is tracked. Companies are moving past vanity metrics like total queries or automation rates. They are reporting on time saved per task, reduction in SLA violations, increases in accuracy, operational savings, and revenue impact. In 2024, McKinsey found that leading companies are 3.5 times more likely to measure AI performance using business KPIs, not just technical ones.
The future of AI ROI will be clearer and more connected to real business results. Some Fortune 500 companies are already including AI performance in shareholder updates and quarterly reports. AI is becoming a core part of operations, monitored regularly and expected to deliver consistent outcomes.
No hype, just performance. For practical implementation, see how QED42 approaches AI services.
Why is ROI measurement important?
It removes guesswork and enables confident decisions. Without tracking ROI, it’s difficult to justify continued investment or recognise what works.
What metrics are most useful?Prioritise metrics linked to business outcomes: hours saved, errors reduced, response time improvements, and revenue lift. Precision and accuracy matter, but only in service of those goals.
What challenges affect ROI?The most common ones are weak data pipelines, unclear objectives, and overlooked support costs. Building in early evaluation steps helps reduce risk and clarify expected returns.
We always wanted machines that could think. What we got instead were machines that listen. Not perfectly, not like us, but close enough to change everything.
The strange part is how quickly it stopped feeling strange. One year you're typing into a search bar, trying to guess the right keywords. Next, you're in a live conversation with something that doesn’t sleep, doesn’t blink, and doesn’t forget. And it's not just ChatGPT or Claude or Gemini. It's your documents, your calendar, your inbox, your codebase, your CRM. The conversation is happening across all of it. Quiet, constant, and invisible.
People call it agentic AI. It sounds like branding. What it really means is that the machine doesn’t wait for instructions. It takes a prompt and moves. Refund the item. Notify the customer. Update the CRM. Adjust the inventory. Schedule the follow-up. No buttons. No workflow triggers. Just finished tasks, one after another, like falling dominoes. And when something breaks, the AI adjusts. Not always perfectly, but often enough to feel real.
This isn't automation. It's delegation. That’s the shift. And once you see it, it’s hard to unsee.
This is the new AIaaS. Less about models and more about momentum. Built not just to reply, but to carry work from start to finish. Let's read more about it.
AIaaS lets organisations use artificial intelligence without building everything from the ground up. Instead of training custom models or managing infrastructure, teams can access ready-made tools from platforms like AWS, Google Cloud, Azure, and IBM Watson. These tools offer machine learning, language processing, document analysis, and fraud detection through APIs or simple interfaces.
This approach is already changing how different sectors work. A finance team can flag suspicious transactions using a pre-trained model. Legal departments can sort documents by case type automatically. Healthcare providers can manage appointments using a conversational assistant. These services fit into existing systems without requiring major development or investment.
The real benefit is simplicity. There’s no need to set up infrastructure, wait through long implementation cycles, or build in-house AI expertise. AIaaS is designed to get results quickly, letting teams focus on outcomes instead of the technology behind them.
AI is moving from simple automation; the companies making real progress are investing in solutions that match how they already work.
Retrieval-Augmented Generation (RAG) is one of the most used approaches. It helps AI deliver accurate responses by extracting data from trusted sources.
Agentic architecture allows different AI agents to plan, act, and verify results in sequence. These modular setups are ideal for workflows that require reasoning, validation, or escalation. Aeldris is an example of a platform that supports this kind of structure.
Multi-Channel Processors (MCPs) let systems receive input through voice, chat, or forms. They support flexibility in how users interact with AI, especially in customer-facing or multilingual environments.
Agent-to-Agent (A2A) communication allows agents to pass tasks to each other. This keeps workflows going without resets, especially in long or multi-step processes.
Voice and text assistants are the layer most users see. These assistants do more than chat; they book appointments, file requests, summarise documents, and complete domain-specific tasks using the logic and data behind the scenes.
Model training and fine-tuning come into play when prebuilt models do not meet the mark. Customising models like LLaMA AGASensures they align with business data, languages, or workflows.
Business consulting for AI integration helps organisations choose the right use cases, map AI to real decision points, and measure impact across speed, accuracy, or cost.
They are working systems already in use, already solving real business problems. The shift is underway. And this is what it looks like.
Most current AI services are reactive. They classify, complete, and summarise while working well for static, one-shot tasks.
But what about:
In these scenarios, prediction, only systems break down. They lack memory, can’t adapt, and don’t understand what the task is.
To solve this, AIaaS is evolving into agentic infrastructure: systems that plan, use tools, track progress, and adjust when the unexpected happens.

Reasoning agents are designed to complete tasks with structure, logic, and memory. Instead of giving a one-time answer, they move through a process step by step, using context and available tools.
Agents keep track of what’s done and what comes next. This structured reasoning uses internal memory or "scratchpads," like in GPT-4o on ChatGPT and Claude, allowing them to handle complex, multi-turn tasks more reliably.
Evaluating how well RAG systems perform is becoming critical; frameworks like Ragas help measure contextual accuracy, relevance, and completeness.
They don’t rely only on what they’ve seen. Through APIs, databases, and live search, agents can act while working. ChatGPT’s function calling and Perplexity’s web access are strong examples of this in action.
Reasoning agents don’t rush to an answer. They pause, check, and respond based on what’s already known. This is key in areas like onboarding, finance approvals, and legal reviews, where each step depends on the last.
If something shifts mid-process, agents can adjust. Platforms like Gemini and Claude support longer interactions that allow reasoning across changing inputs.
Reasoning agents work through tasks, with memory, tools, and logic. In AIaaS, this is not a bonus feature. It’s what makes systems reliable, usable, and ready for real business impact.
In 2024, a Capgemini survey of 12,000 consumers found that 58% use GenAI tools like ChatGPT, Gemini, and Perplexity for product and service recommendations, up from just 25% the year before.
During the same year’s holiday season, Adobe Analytics reported a 1,300% increase in AI-powered search referrals to U.S. retail sites.
These users are leading indicators of where digital behaviour is heading. They tend to be younger, higher-income, and more engaged, and their journeys now often begin inside a conversation with an LLM:
“What’s the best coffee machine under $200?”
“Plan a weekend trip that’s quiet and close to nature.”
These agents aren’t just model endpoints. They’re becoming decision-making interfaces, and that means your AIaaS strategy now shapes both how internal systems operate and how customers interact with your brand from the very first question.
To track this new dynamic, marketers and researchers have coined a new metric: Share of Model (SOM).
SOM measures how often and how favourably LLMs recommend your brand, based on real user prompts.
Unlike traditional metrics like Share of Voice (SOV) or Share of Search (SOS), SOM is a model-facing. It reflects what LLMs reason through when they try to solve a user's task.

Jellyfish’s Share of Model (SOM) platform tested prompts across ChatGPT, Gemini, Perplexity, and others, revealing striking differences in how LLMs surface brands.
These differences highlight a key shift: LLMs don’t simply index popularity; they select what helps resolve a prompt. That means brands must think beyond attention and start optimising for AI reasoning paths.
LLMs don’t index. They decide. And if your brand doesn't help them resolve a task, you won't be recommended.
Here’s the connection: the LLMs behind ChatGPT, Gemini, and Perplexity are fully realised AIaaS platforms.
They work through a few key parts:
These systems are built to reason across context, trigger external actions, and respond to evolving intent. They function as thinking agents, capable of handling multi-step workflows and decision paths.
This highlights what AIaaS now supports: not just predictions, but agents that complete real tasks. Whether they’re guiding a customer to a product or powering internal operations, these agents now sit at the centre of how businesses interact, respond, and deliver outcomes.
Instead of building everything from scratch, companies access powerful models and agents through cloud platforms. They connect via APIs, pay as they go, and get instant access to the latest improvements without managing the infrastructure.
The benefits are clear:
But AIaaS also comes with real challenges:
AIaaS has opened the door for faster, smarter development. But scaling it responsibly means going beyond easy wins.
A lot of the focus in AI used to be on speed. How fast a model could respond, how cheap it was to run, and how well it could be tuned to answer a question. And sure, that still matters. But what matters more now is what AI actually does. Not just replying, but doing. Slowly, we’re moving toward systems that take initiative.
These agents remember what happened earlier. They plan the next steps. They connect to APIs, trigger CRM workflows, and adapt when something changes. And this isn’t theory anymore. It’s already showing up in production. Platforms like Aeldris are helping companies bring agents into finance approvals, legal work, and internal operations.
Governments in Singapore and the UAE are building agent-driven systems for healthcare and public services. South Korea is putting national investment behind reasoning-based AI programs. Amazon and Shopify are using agents to run support, logistics, and storefronts. Stripe uses agents to power customer service. IKEA is using them behind the scenes to make operations smoother.

A year ago, AIaaS was about responding faster and cutting costs. Now it is about giving systems memory, reasoning, feedback, and the ability to actually carry things out.
The global shift toward cloud and AIaaS increased fast after 2020, as covered in QED42’s piece on post-COVID cloud adoption. That shift laid the groundwork for everything we're seeing now.
In my view, this is one of the most important changes in how we interact with technology. We are not just building smarter tools. We are starting to build systems that work alongside us. That raises new questions about trust and accountability. But it also opens up real opportunities to rethink how work gets done and who does it.
We’re seeing agents that specialise in legal, finance, and business tasks. Agents that work together, passing tasks between them. Agents that reflect a brand’s voice and decision-making style. And a new kind of digital presence, where being inside the model could matter as much as ranking in Google search.
The big question isn’t just what the model can say.
It’s what the agent can figure out and actually do.
And that, to me, is where things start to get interesting
What is AI as a Service (AIaaS)?
AIaaS is a way for businesses to use advanced AI tools without building everything themselves. It offers features like chatbots, language understanding, and image analysis through cloud platforms. You can access these tools through APIs and start using them quickly.
How is AI as a Service (AIaaS) different from SaaS?
SaaS gives you complete software, like email or project management tools. AIaaS gives you specific AI abilities that you can add to your systems. It focuses on things like understanding text, making predictions, or automating tasks.
What are some of the best AI as a Service (AIaaS) platforms?
The most popular platforms in 2025 are OpenAI, Google Cloud Vertex AI, Microsoft Azure AI, AWS Bedrock, and Anthropic. They offer powerful models, easy-to-use tools, and the flexibility to build smart features into your existing workflows.
AI in Drupal has come a long way in a short time. With version 1.1 of the AI Agents module, it's now much simpler to create your AI agents right from the admin interface. No coding is needed, and setup is quick.
These agents can do more than just chat. They can help users find content, assist with form submissions, or support your editorial team with routine tasks.
For example, you could build an agent that guides visitors through your blog, finds related articles, and summarises content so readers get the main points faster.
In this blog, we’ll walk through how to create your own AI agents in Drupal and show what they can do to make your site more helpful and efficient.
First, you'll need to install and enable the required modules, which are
Next, you'll need to set up the AI Provider OpenAI module. The best place to find the latest instructions for this is on the module's project page.
Finally, navigate to Configuration -> AI -> AI Default Settings. Here, you need to select a model for the ‘Chat with Tools/Function Calling’ operation.


We'll begin with a simple agent designed to suggest five taxonomy terms for any given topic. To set this up, you just need to add the following details:
Now for the most important part: the instructions. Under the Usage details section, paste the following prompt into the Agent instructions field.
“You are a smart AI assistant integrated with a Drupal website. Suggest 5 taxonomy terms that are specific instances or subtypes of the given topic. Prioritise concrete examples commonly used for categorisation, not abstract concepts or related fields. Return ONLY comma-separated terms (no explanations, numbering, or extra text).”
Once you're done, click Save.
To see our new agent in action, go back to the agent settings page (config/ai/agents) and click the Explore link next to your "Taxonomy term generator" agent. (Note: this link will only be visible if you have the AI Agents Explorer module installed).

In the explorer interface, type any topic into the prompt field and click Run agent. You'll see the output appear in the Progress section.

Congratulations! You've just built your first AI Agent!
Tools are what give agents their real power. They are specific functions that help an agent perform actions beyond just generating text. A tool can be:
Let's see how an AI agent can use tools. The AI Agents module provides a built-in tool named Modify taxonomy term, which can be used to create or edit taxonomy terms. We're going to update our "Taxonomy term generator" agent to use this tool, automatically saving the suggested terms into our "Tags" vocabulary.
But first, let's test the tool on its own. Edit the "Taxonomy term generator" agent you just created, find the "Modify Vocabulary" tool in the list and click the Test this tool option. You'll need to have the AI API Explorer module enabled to see this option.


The tool requires several arguments, like vid, tid, and name. Let's give it a try:
You should see a message like, "The term Earth was successfully created/edited," and you'll find the new term in your "Tags" vocabulary.
If you were to look at the source code for this tool, you'd see it's just a standard function for creating a taxonomy term. There's no "AI" inside the tool itself. The magic is that our agent can figure out how to call this tool with the correct arguments. The tool does the work and returns a success or error message back to the agent. That, in a nutshell, is how tool calling works
Replace the prompt of the ‘Taxonomy term generator’ agent with the following
“You are a smart AI assistant integrated with a Drupal Website. Your task is to suggest 5 taxonomy terms that are specific instances or subtypes of the given topic. Prioritise concrete examples commonly used for categorisation, rather than abstract concepts or related domains. Once the terms are identified, use the modify_taxonomy_term tool to save them.”
Next, scroll down to the Tools section and select the Modify taxonomy terms tool. Once you select it, a new Detailed tool usage section will appear on the form. Expand the Property restrictions element to see the options.

This is where we can control the arguments passed to the tool. For example, our agent should add the taxonomy terms only to the ‘tags’ vocabulary. One way to enforce this is to add something like the following to the agent instructions.
"When using the modify_taxonomy_term tool, always use 'tags' as the value for the 'vid' parameter."
While this would probably work, a better and more reliable method is to enforce the value using the ‘Restrictions for property vid’ field. The default value for this section is ‘Allow all’. Change that to ‘Force value’ and enter ‘tags’ in the ‘values’ field.
If you select ‘Force value’, an additional checkbox, ‘Hide property’, will become available. This feature prevents the property from being sent to the LLM altogether, which is ideal for fields that store sensitive information like API keys.

Now, save the agent and click the Explore button again to test our changes.

You'll probably see something interesting. The agent tries to call the tool, but the final response says ‘Not solvable’. And if you check your "Tags" vocabulary, you'll see the new terms haven't been created.
So what's going on? This happens because of the Max loops setting. Remember how we set it to 1 earlier? With a max loop of 1, the agent can only communicate with the LLM once. In that single step, the LLM decides which tool to use and what arguments to pass. But agent doesn't have a chance to actually run the tool and confirm the result. For that, it needs a second loop.
Go back and edit the agent, change Max loops to 2, save it, and try again. This time, it should work perfectly! The agent will use the tool, and the new terms will appear in your vocabulary.

Let's try to improve the functionality of our taxonomy generator agent. Instead of adding all the terms to the "Tags" vocabulary, our agent should be able to create vocabularies that don't exist yet (like "Planets" or "Fruits") and then add terms to them. To do this, we'll need to give it a few more tools:
Update the prompt of our agent as follows
You are a taxonomy manager agent integrated into a Drupal 11 website. You help to provide information about existing vocabularies and terms, as well as adding new terms and vocabularies. You are a looping agent, meaning you can run multiple times till the task is completed.
You have the following tools available
1. list_bundles: Provides the information about currently existing vocabularies.
2. modify_vocabulary: Can be used to create new vocabularies.
3. list_taxonomy_term: Can give the existing terms present in a vocabulary
4. manage_taxonomy_term: Can be used to add new terms to a vocabulary/modify existing terms.
Before adding terms, make sure that the vocabulary exists. Also, make sure you do not add any existing terms to any vocabulary, unless explicitly requested by the user
Next, you'll need to configure the agent to use these new tools.
Once you've saved the agent, test it again with a prompt like: Create a fruits vocabulary and add 4 terms.’

Our agent is now smart enough to use its full suite of tools to handle the entire request.
In our previous example, you might have noticed that our agent ran multiple times, perhaps 4 loops, just to create the "Fruits" vocabulary and add the terms. Each loop increases both the response time and token usage. One of the key tools our agent had to use was list_bundles, simply to get a list of existing vocabularies.
What if we could give the agent this information upfront, as part of its initial instructions? This is exactly what the Default Information Tools section is for. It lets you pre-load information for the agent, making it more efficient.
Let's try it out:
vocabularies:
label: Vocabularies
description: 'The existing Vocabularies on the system'
tool: 'ai_agent:list_bundles'
parameters:
entity_type: taxonomy_term
Now, save the agent and test it again with the prompt: Create a fruits vocabulary and add 4 fruits.

If you run this after the vocabulary has already been created, you'll see a much faster response. The agent will likely tell you that the "Fruits" vocabulary already exists without ever explicitly calling the list_bundles tool.
This happens because the tool was invoked automatically in the background, and its output (the list of vocabularies) was sent to the LLM as part of the agent's initial context. The agent had the information it needed from the very beginning.
Now let's build a chatbot that allows users to interact with our new taxonomy agent. The first thing you'll need to do is enable the AI Chatbot module.
To use a chatbot, first, an AI Assistant has to be created.
Always delegate the task to the 'Taxonomy term generator' agent. Whatever response the agent provides, return it to the user. You are just a router — you do not perform any actions.
With our assistant ready, the final step is to place the chatbot block on the site.


And there you have it! In just a few steps, we went from a simple idea to a fully functional AI agent that can understand a request, use multiple tools to interact with our site, and even power a user-facing chatbot. If you've followed along, you've already mastered the core concepts. I encourage you to dive in and start experimenting. Don't be afraid to try different prompts, combine new tools, and see what you can create. You might be surprised at how easy it is to build an AI assistant that makes your Drupal site smarter and your workflow easier.
By now, you've seen how powerful and flexible AI Agents in Drupal can be. Starting with a simple term suggestion agent, we gradually added more functionality, allowing it to create vocabularies, avoid duplicates, and even respond through a chatbot.
What's exciting about this setup is how easy it is to extend. If you want to automate more content tasks, just add another agent. If you need smarter results, tweak the prompts. You are not locked into one use case, and you don’t need deep AI or coding knowledge to start seeing real results.
Everything you need is already in place. The interface is ready, the features are powerful, and the possibilities are wide open. So go ahead, explore and experiment. You might be surprised by how quickly you can build something truly useful.
If you get stuck or want to learn more, the Drupal community is always there to help.
This post is part of our AI CKEditor Integration series. If you haven’t read the previous blog on setting up the AI CKEditor module, we suggest starting there to understand the basics.
The built-in features like translation, tone adjustment, and text completion offer a strong starting point. But the real strength of the module comes from creating custom plugins that match your specific content workflows.
In this blog, we’ll walk through how to build those plugins. You’ll learn how to define custom behaviour, connect it with the editor interface, and shape AI assistance around your editorial needs.
While the AI CKEditor module ships with a variety of powerful tools such as translation, tone change, and summarisation, there are many scenarios where teams need functionality tailored to their content workflows. This is where custom plugins shine.
Here are a few reasons you might want to build a custom plugin:
Custom AI CKEditor plugins work by:
Create a custom module or use an existing one. Your plugin file should be placed in:
src/Plugin/AiCKEditor/{YourPluginName}.php/custom_module/
├── custom_module.info.yml
└── src/
└── Plugin/
└── AiCKEditor/
└── ImproveClarity.php
Every custom AI CKEditor plugin should extend the AiCKEditorPluginBase class. To make your plugin discoverable by Drupal, decorate the class with the #[AiCKEditor(...)] attribute, which provides metadata such as id, label, and description. This is essential for your plugin to appear in the AI Tools list within CKEditor.:
<?php
namespace Drupal\my_custom_module\Plugin\AICKEditor;
use Drupal\ai_ckeditor\AiCKEditorPluginBase;
use Drupal\ai_ckeditor\Attribute\AiCKEditor;
/**
* Plugin to do something custom.
*/
#[AiCKEditor(
id: 'custom_feature',
label: new TranslatableMarkup('My Custom Feature'),
description: new TranslatableMarkup('This is my custom feature for AI CKEditor.'),
)]
final class MyCustomFeatureCKEditor extends AiCKEditorPluginBase {
}
/**
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state): array {
$options = $this->aiProviderManager->getSimpleProviderModelOptions('chat');
array_shift($options);
array_splice($options, 0, 1);
$form['provider'] = [
'#type' => 'select',
'#title' => $this->t('AI provider'),
'#options' => $options,
"#empty_option" => $this->t('-- Default from AI module (chat) --'),
'#default_value' => $this->configuration['provider'] ?? $this->aiProviderManager->getSimpleDefaultProviderOptions('chat'),
'#description' => $this->t('Select the AI provider to use.'),
];
return $form;
}
public function buildCkEditorModalForm(array $form, FormStateInterface $form_state, array $settings = []) {
$storage = $form_state->getStorage();
$selected_text = $storage['selected_text'] ?? '';
$editor_id = $this->requestStack->getParentRequest()->get('editor_id');
$form = parent::buildCkEditorModalForm($form, $form_state);
// Your form elements here
$form['response_text'] = [
'#type' => 'text_format',
'#title' => $this->t('AI Response'),
'#prefix' => '<div id="ai-ckeditor-response">',
'#suffix' => '</div>',
'#allowed_formats' => [$editor_id],
'#format' => $editor_id,
];
return $form;
}
ajaxGenerate(): Handles the AI processing when users click "Generate".
public function ajaxGenerate(array &$form, FormStateInterface $form_state) {
$values = $form_state->getValues();
try {
$prompt = $this->buildPrompt($values);
$response = new AjaxResponse();
$response->addCommand(new AiRequestCommand(
$prompt,
$values["editor_id"],
$this->pluginDefinition['id'],
'ai-ckeditor-response'
));
return $response;
}
catch (\Exception $e) {
// Handle errors appropriately
$this->logger->error("Error in custom AI plugin: " . $e->getMessage());
return $form['plugin_config']['response_text']['#value'] = "An error occurred.";
}
}
Here is a plugin to improve the clarity of the selected text:
<?php
namespace Drupal\custom_module\Plugin\AICKEditor;
use Drupal\Core\Ajax\AjaxResponse;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\ai_ckeditor\AiCKEditorPluginBase;
use Drupal\ai_ckeditor\Attribute\AiCKEditor;
use Drupal\ai_ckeditor\Command\AiRequestCommand;
/**
* Plugin to improve the clarity of selected text.
*/
#[AiCKEditor(
id: 'improve_clarity',
label: new TranslatableMarkup('Improve Clarity'),
description: new TranslatableMarkup('Rewrite selected text to improve readability and clarity.'),
)]
final class ImproveClarity extends AiCKEditorPluginBase {
/**
* {@inheritdoc}
*/
public function defaultConfiguration(): array {
return [
'provider' => 'NULL',
];
}
/**
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state): array {
$options = $this->aiProviderManager->getSimpleProviderModelOptions('chat');
array_shift($options);
array_splice($options, 0, 1);
$form['provider'] = [
'#type' => 'select',
'#title' => $this->t('AI provider'),
'#options' => $options,
"#empty_option" => $this->t('-- Default from AI module (chat) --'),
'#default_value' => $this->configuration['provider'] ?? $this->aiProviderManager->getSimpleDefaultProviderOptions('chat'),
'#description' => $this->t('Select the AI provider to use.'),
];
return $form;
}
/**
* {@inheritdoc}
*/
public function submitConfigurationForm(array &$form, FormStateInterface $form_state): void {
$this->configuration['provider'] = $form_state->getValue('provider');
}
/**
* {@inheritdoc}
*/
public function buildCkEditorModalForm(array $form, FormStateInterface $form_state, array $settings = []): array {
$storage = $form_state->getStorage();
$editor_id = $this->requestStack->getParentRequest()->get('editor_id');
if (empty($storage['selected_text'])) {
return ['#markup' => '<p>' . $this->t('Please select some text before improving clarity.') . '</p>'];
}
$form = parent::buildCkEditorModalForm($form, $form_state);
$form['selected_text'] = [
'#type' => 'textarea',
'#title' => $this->t('Selected text'),
'#default_value' => $storage['selected_text'],
'#disabled' => TRUE,
];
$form['actions']['generate']['#value'] = $this->t('Improve Clarity');
return $form;
}
/**
* {@inheritdoc}
*/
public function ajaxGenerate(array &$form, FormStateInterface $form_state) {
$values = $form_state->getValues();
try {
$prompt = 'Rewrite the following text to improve clarity and make it easier to understand without changing the meaning:' . PHP_EOL . '"' . $values["plugin_config"]["selected_text"] . '"';
$response = new AjaxResponse();
$response->addCommand(new AiRequestCommand($prompt, $values["editor_id"], $this->pluginDefinition['id'], 'ai-ckeditor-response'));
return $response;
}
catch (\Exception $e) {
$this->logger->error("There was an error in the Improve Clarity plugin: @message", ['@message' => $e->getMessage()]);
return $form['plugin_config']['response_text']['#value'] = "An error occurred during AI processing.";
}
}
}
Once you've created your custom AI CKEditor plugin, enabling it follows the same process as the built-in plugins:




Creating custom AI CKEditor plugins gives you the flexibility to shape content workflows around real editorial needs.
Whether it’s refining tone, automating structure, or guiding writers with contextual prompts, each plugin can bring meaningful improvements to the way content is created and managed.
Start with a clear use case, build in small steps, and adjust based on real feedback.
Drupal’s plugin architecture, combined with the AI CKEditor module, provides a strong foundation for developing tools that feel native to your workflow and make everyday writing faster, more focused, and more consistent.
Artificial intelligence is changing how content gets created, reviewed, and published, and Drupal is keeping up.
The AI CKEditor Integration module brings the capabilities of large language models (LLMs) directly into the content editing experience. Instead of jumping between external tools or copying drafts back and forth, editors can now work smarter within the CKEditor interface itself.
From translating content to checking spelling and grammar, adjusting tone, and completing sentences, the module makes everyday tasks faster and more consistent. It supports editors in maintaining quality, staying on message, and saving time, right where content is written.
By embedding AI features directly into CKEditor, this integration simplifies content workflows and gives teams the kind of intelligent assistance that keeps pace with modern publishing demands.
The AI CKEditor Integration module is a powerful extension that seamlessly integrates AI capabilities into Drupal's CKEditor 5.
AI CKEditor Integration is a submodule available in AI Core module that provides plugins that integrate with CKEditor 5. Rather than switching between different tools or applications, content creators can access AI-powered features directly within their text editor, streamlining the content creation process.
Before diving into the setup, ensure you have the following modules installed and configured:
First, enable the AI CKEditor Integration module through Drupal's admin interface or using Drush:
drush en ai_ckeditor



The Tone plugin requires a custom taxonomy to define available tones:

Similar to the Tone of Voice plugin, the Translation feature requires a taxonomy:

Once configured, using AI tools is straightforward:





The AI CKEditor Integration module marks a meaningful upgrade in how content is created and edited in Drupal. By embedding AI features directly into the CKEditor interface, it removes the need for context switching and makes capabilities like tone adjustment, grammar correction, translation, and text completion accessible to everyone: from site editors to content strategists.
This module works within Drupal’s existing editorial workflow, so teams don’t need to learn new tools or disrupt their publishing process. With a simple setup and thoughtful defaults, you can start improving content quality immediately.
Looking ahead, the potential for deeper AI integration is just beginning. From content summarization and image generation to accessibility checks and editorial analytics, future enhancements could transform CKEditor into a true intelligent assistant for web publishing.
As the Drupal ecosystem continues to adopt AI-powered modules, this integration sets the foundation for a smarter, more efficient content creation experience, built right into your CMS.
In today's digital landscape, Search Engine Optimisation (SEO) plays a vital role in ensuring online visibility. Whether you're a small business or a large enterprise, SEO directly influences how easily users can find your content. With AI (Artificial Intelligence) transforming industries, automating SEO processes in platforms like Drupal can significantly improve efficiency and results.
Drupal, a powerful content management system (CMS), offers flexibility and scalability for building websites. When paired with AI tools, Drupal can streamline and automate many aspects of SEO, making it easier for website owners and administrators to optimise their sites without requiring extensive manual intervention.
In this blog, we will explore how AI can be utilised to automate SEO in Drupal, as well as the tools and techniques that can help you achieve better search rankings.
Before diving into the specifics of AI, it's important to understand why automating SEO is essential. SEO is a multifaceted and time-consuming process that requires constant attention. From keyword research to content optimisation, backlink management, and technical SEO, there’s a lot to manage. Here’s why automation is crucial:
The AI SEO module is a contributed Drupal module that leverages AI services (e.g., OpenAI) to automate and assist with SEO tasks. It’s part of the broader AI Core ecosystem and integrates with your content types to generate:
Whether you're publishing articles, landing pages, or product descriptions, this module can help ensure that your content meets SEO best practices without extra manual effort.
When you edit content, AI SEO analyzes your text and suggests improvements like better keyword use, clearer headlines, or restructuring paragraphs for SEO effectiveness.
The module generates contextually relevant:
This helps editors focus on writing content while AI handles the technical SEO layers.
AI reads your images (file names and optionally visual description via prompts) and generates meaningful alt text, which improves accessibility and helps search engines index image content.
Using Natural Language Processing (NLP), AI SEO identifies important keywords from the content and recommends additional terms that could boost search relevance.
AI SEO provides a Drush command for optimizing multiple nodes at once, making it perfect for retrofitting existing content.
You'll need:



When editing a content node, the module provides an "Analyse SEO" tab on the sidebar or as a local task tab. This tab allows users to analyse the node’s current content, including title, summary, and body fields, and generate a comprehensive SEO report.
Step 1: Create or Edit a Node
Navigate to Content > Add Article or edit an existing one.
Step 2: Click on the "Analyse SEO" Tab
You will see a tab titled "Analyse SEO" while editing the content. Click it to start the process.
Step 3: SEO Report Generation
Once clicked, the module:
This report includes:

The AI SEO module for Drupal brings AI intelligence directly into the CMS, allowing editors to create search-optimized content without needing to switch between tools. Using this module, teams can generate meta descriptions, titles, alt text, and concise summaries directly in the edit screen, then refine them with real-time keyword and structure suggestions that follow the guidance in Google’s SEO Starter Guide.
Drupal’s modular architecture lets publishers scale content creation while keeping precision and consistency intact, which is crucial for large, content-heavy sites. The result is faster publishing, fewer manual errors, and stronger search performance.
Looking ahead, AI in Drupal SEO will open fresh possibilities. Expect automatic detection of content decay, AI-suggested rewrites for underperforming pages, topic prioritisation based on live search trends, and smarter internal linking and semantic clustering that adapt to competitor moves and user signals. For content-rich websites aiming to grow organic visibility, AI-driven SEO has shifted from nice-to-have to strategic imperative, and Drupal is positioned to lead this evolution.
Large Language Models (LLMs) like GPT-4, Claude, and BERT have transformed natural language processing applications, enabling sophisticated text generation, summarisation, and analysis capabilities. However, with this power comes significant responsibility, particularly regarding data privacy and security.
LLM masking refers to the process of identifying and hiding sensitive information like phone numbers, email addresses, credit card numbers, and personal names before sending text to Large Language Models. This ensures privacy, security, and compliance with data protection laws like GDPR, HIPAA, and CCPA.
LLM masking is a technique that identifies and replaces sensitive information with placeholder tokens before processing text with Large Language Models, and then reintroduces the original data afterwards if needed.
This blog offers a comprehensive guide to understanding and implementing LLM Masking techniques in your AI applications, featuring code examples, diagrams, and best practices to help you protect sensitive information while harnessing the power of LLMs.
LLM masking is not just a technical nicety- it's often a legal and ethical requirement. Here's why it matters:
LLMs can memorise parts of their training data and potentially reveal sensitive information in responses. Additionally, most major LLM providers retain user prompts, which could expose sensitive data if not properly masked before submission.
LLM masking follows a three-step process:

This process ensures that sensitive information never leaves your system while still allowing the LLM to process the non-sensitive parts of the text effectively.

LLM Masking Architecture

Several approaches can be used to implement LLM masking, each with its own strengths and weaknesses.
Regular expressions (regex) provide a straightforward method for identifying structured data patterns like email addresses, phone numbers, and credit card numbers.
Pros: Fast, lightweight, easy to implement, no external dependencies
Cons: May miss complex patterns or context-dependent PII, can produce false positives
Here are some common regex patterns used for identifying PII:
# Email addresses
email_pattern = r’[a-zA-Z0–9._%+-]+@[a-zA-Z0–9.-]+\.[a-zA-Z]{2,}’
# US phone numbers
phone_pattern = r’\b(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}\b’
# Credit card numbers
cc_pattern = r’\b(?:\d{4}[-\s]?){3}\d{4}\b’
# Social Security Numbers (US)
ssn_pattern = r’\b\d{3}[-\s]?\d{2}[-\s]?\d{4}\b’
Named Entity Recognition uses machine learning models to identify entities like names, organisations, locations, and other context-dependent information that might be difficult to capture with regex alone.
Pros: Better at identifying context-dependent PII, can recognise names and entities not follow specific patterns
Cons: Computationally more expensive, requires ML models, may still miss some PII types
Popular NER libraries and models include:

Most effective LLM Masking implementations use a combination of regex and NER techniques to maximise coverage and accuracy.
Best Practice: Use regex for well-structured PII (email addresses, phone numbers) and NER for context-dependent PII (names, locations, organisations).
Some systems also employ additional techniques:

Let's explore practical implementations of LLM masking using different approaches.
Here's a simple implementation of regex-based PII detection and masking in Python:
import re
def mask_pii(text):
# Define regex patterns for different types of PII
patterns = {
"EMAIL": r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}',
"PHONE": r'\b(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}\b',
"SSN": r'\b\d{3}[-\s]?\d{2}[-\s]?\d{4}\b',
"CREDIT_CARD": r'\b(?:\d{4}[-\s]?){3}\d{4}\b',
"IP_ADDRESS": r'\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b'
}
# Create a dictionary to store masked values for restoration
masked_values = {}
masked_text = text
# Apply masking for each pattern
for pii_type, pattern in patterns.items():
matches = re.finditer(pattern, masked_text)
# Process matches in reverse to avoid offset issues when replacing
matches = list(matches)
for i, match in enumerate(reversed(matches)):
original_value = match.group(0)
mask_token = f"[{pii_type}_{i+1}]"
# Store the original value for restoration
masked_values[mask_token] = original_value
# Replace the value in the text
start, end = match.span()
masked_text = masked_text[:start] + mask_token + masked_text[end:]
return masked_text, masked_values
def unmask_pii(masked_text, masked_values):
"""Restore the original values from masked text"""
restored_text = masked_text
for mask_token, original_value in masked_values.items():
restored_text = restored_text.replace(mask_token, original_value)
return restored_text
# Example usage
text = """Hello, my name is John Smith. You can reach me at john.smith@example.com
or call me at (123) 456-7890. My credit card number is 4111-1111-1111-1111 and
my social security number is 123-45-6789."""
masked_text, masked_values = mask_pii(text)
print("Original text:")
print(text)
print("\nMasked text:")
print(masked_text)
# Assuming this is the response from an LLM
llm_response = f"I've noted your contact info: {masked_values.get('[EMAIL_1]', '[EMAIL_1]')} and {masked_values.get('[PHONE_1]', '[PHONE_1]')}"
# Unmask the response
unmasked_response = unmask_pii(llm_response, masked_values)
print("\nLLM response (unmasked):")
print(unmasked_response)
This example demonstrates a simple approach to masking and unmasking PII in text using regex patterns.
Privacy threat model architecture

Several specialised libraries make LLM Masking more robust and easier to implement. One such library is Masked-AI.
import os
import openai
from masked_ai import Masker
# Load your API key from an environment variable
openai.api_key = os.getenv("OPENAI_API_KEY")
# Text containing sensitive information
data = "My name is Adam and my IP address is 8.8.8.8. Now, write a one line poem:"
# Create a masker instance
masker = Masker(data)
print('Masked: ', masker.masked_data)
# Send the masked data to the LLM
response = openai.Completion.create(
model="text-davinci-003",
prompt=masker.masked_data,
temperature=0,
max_tokens=1000,
)
# Get the generated text
generated_text = response.choices[0].text
print('Raw response: ', response)
# Unmask the response
unmasked = masker.unmask_data(generated_text)
print('Result:', unmasked)
Other useful libraries for PII detection and masking include:
Here's an example using PiiRegex:
from piiregex import PiiRegex
def mask_with_piiregex(text):
# Initialize the PiiRegex parser
parser = PiiRegex()
# Create a dictionary to store originals
masked_values = {}
masked_text = text
# Find and mask emails
emails = parser.emails(text)
for i, email in enumerate(emails):
mask_token = f"[EMAIL_{i+1}]"
masked_values[mask_token] = email
masked_text = masked_text.replace(email, mask_token)
# Find and mask phone numbers
phones = parser.phones(text)
for i, phone in enumerate(phones):
mask_token = f"[PHONE_{i+1}]"
masked_values[mask_token] = phone
masked_text = masked_text.replace(phone, mask_token)
# Find and mask credit cards
credit_cards = parser.credit_cards(text)
for i, cc in enumerate(credit_cards):
mask_token = f"[CREDIT_CARD_{i+1}]"
masked_values[mask_token] = cc
masked_text = masked_text.replace(cc, mask_token)
return masked_text, masked_values
# Example usage
text = "Contact me at john.doe@example.com or 555-123-4567. My card: 4111-1111-1111-1111"
masked_text, masked_values = mask_with_piiregex(text)
print("Original:", text)
print("Masked:", masked_text)When integrating LLM masking with LLM APIs, it's important to have a robust pipeline that handles the masking and unmasking process efficiently. Here's an example of how to integrate with OpenAI's API:
import re
import os
import json
import requests
from typing import Dict, List, Tuple
class LLMMaskingPipeline:
def __init__(self):
self.api_key = os.getenv("OPENAI_API_KEY")
self.api_url = "https://api.openai.com/v1/chat/completions"
# Define regex patterns for PII detection
self.patterns = {
"EMAIL": r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}',
"PHONE": r'\b(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}\b',
"SSN": r'\b\d{3}[-\s]?\d{2}[-\s]?\d{4}\b',
"CREDIT_CARD": r'\b(?:\d{4}[-\s]?){3}\d{4}\b',
"IP_ADDRESS": r'\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b'
}
def detect_and_mask(self, text: str) -> Tuple[str, Dict[str, str]]:
"""Detect and mask PII in text"""
masked_values = {}
masked_text = text
for pii_type, pattern in self.patterns.items():
matches = list(re.finditer(pattern, masked_text))
# Process matches in reverse to avoid offset issues
for i, match in enumerate(reversed(matches)):
original = match.group(0)
mask_token = f"[{pii_type}_{i+1}]"
# Store for restoration
masked_values[mask_token] = original
# Replace in text
start, end = match.span()
masked_text = masked_text[:start] + mask_token + masked_text[end:]
return masked_text, masked_values
def unmask(self, text: str, masked_values: Dict[str, str]) -> str:
"""Restore masked values in text"""
for token, original in masked_values.items():
text = text.replace(token, original)
return text
def query_llm(self, prompt: str) -> str:
"""Send a prompt to OpenAI and get response"""
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {self.api_key}"
}
data = {
"model": "gpt-3.5-turbo",
"messages": [
{"role": "user", "content": prompt}
],
"temperature": 0.7
}
response = requests.post(self.api_url, headers=headers, json=data)
response_json = response.json()
if "choices" in response_json and len(response_json["choices"]) > 0:
return response_json["choices"][0]["message"]["content"]
return "Error: Failed to get a valid response from the LLM."
def process_with_masking(self, text: str) -> str:
"""Process text with PII masking"""
# Step 1: Mask PII
masked_text, masked_values = self.detect_and_mask(text)
print(f"Masked Text: {masked_text}")
# Step 2: Send to LLM
llm_response = self.query_llm(masked_text)
print(f"Raw LLM Response: {llm_response}")
# Step 3: Unmask response
unmasked_response = self.unmask(llm_response, masked_values)
return unmasked_response
# Example usage
if __name__ == "__main__":
pipeline = LLMMaskingPipeline()
user_text = """Hi, my name is Sarah Johnson. My email is sarah.j@example.com
and my phone number is (555) 123-4567. Can you help me write a short
poem about privacy?"""
response = pipeline.process_with_masking(user_text)
print("\nFinal Response (with PII restored if necessary):")
print(response)
This example demonstrates a complete pipeline for masking sensitive information before sending text to an LLM and then restoring it in the response if needed.
AI Agents MCP Architecture

When implementing LLM masking in your applications, consider these best practices:
Common pitfalls to avoid:

import torch
from opacus import PrivacyEngine
def train_with_differential_privacy(model, dataloader, privacy_budget=1.0):
privacy_engine = PrivacyEngine()
model, optimizer, dataloader = privacy_engine.make_private_with_epsilon(
module=model,
optimizer=optimizer,
data_loader=dataloader,
epochs=epochs,
target_epsilon=privacy_budget,
target_delta=1e-5,
max_grad_norm=1.0,
)
return model
Differential privacy adds calibrated noise to training data or model outputs to provide mathematical guarantees about privacy protection. This technique is particularly useful when training LLMs on sensitive datasets. Google Research
LLM masking is a critical technique for protecting sensitive information when using Large Language Models.
By identifying and replacing PII with placeholder tokens before sending text to LLMs, you can maintain privacy and security while still leveraging the power of these AI systems.
In this guide, we've covered:
As AI systems become more integrated into critical applications, protecting sensitive information will only grow in importance. By implementing robust LLM Masking, you can ensure that your applications provide powerful AI capabilities without compromising user privacy or violating regulatory requirements.
No masking system is perfect. Always design your systems with defence in depth and implement additional safeguards beyond masking alone. Regularly test and update your masking implementation to ensure it remains effective against evolving PII patterns and formats.
Mainstream chatbots like ChatGPT and Grok are built for conversation, not casework. They often hallucinate sources, invent citations, and avoid saying “I don’t know.” That’s not just unhelpful in legal aid. It’s harmful.
This blog breaks down why legal work needs a different kind of AI. One that cites real data, respects nuance, and knows its limits.
When internal prompts from xAI’s Grok leaked in May 2025, one line stood out: the chatbot was trained to “always be the user’s best friend.” That may sound harmless in casual use, but in legal work, where clarity, neutrality, and evidence matter, it becomes a fundamental flaw.
LLMs like Grok and ChatGPT are optimised for user satisfaction, not factual accuracy. They are built to keep the conversation going, even when they don’t know the answer. That makes them unreliable where the cost of being wrong is too high.
In 2023, two attorneys in New York submitted a legal brief generated by ChatGPT. The AI included citations that looked real. Every single one was fake. Entire cases, names, docket numbers, and quotes were fabricated. The lawyers were sanctioned. The incident became a global warning sign.
It wasn’t a one-off. A Stanford study found ChatGPT-4 hallucinated citations in around 19 per cent of legal queries. Another University of Minnesota study showed it failed basic legal analysis in bar-style exams. Confidence is not a substitute for credibility.
General-purpose chatbots are built on massive public datasets, including forums, blogs, news, and Wikipedia. That gives them fluency, not legal understanding. They don’t distinguish between enforceable laws and public opinion. They apply U.S. examples to non-U.S. contexts. They misrepresent statutes and confuse jurisdiction.
Legal accuracy requires a structured approach, logical reasoning, and verifiable sources. LLMs are rewarded for sounding plausible. That’s why they can summarise a legal concept convincingly and still get it wrong.
For legal aid organisations, the stakes are clear. Staff are overwhelmed. Clients need quick, reliable answers. It’s tempting to plug in a chatbot to fill the gap.
However, if the advice is incorrect - if it leads a tenant to miss a court date or a survivor to file the wrong form- the harm is real. And the responsibility falls on the organisation.
Courts have started responding. The U.S. Court of Federal Claims and the 5th Circuit both require disclosures for AI-generated content. More jurisdictions are likely to follow.
If a chatbot says Tokyo is the capital of Australia, you’ll catch the error. But when it invents a legal case - like “Smith v. Department of Housing, 2003” - it looks just real enough to pass.
Legal hallucinations mimic structure. They use real-sounding names, court formats, and reasoning. That makes them more dangerous than typical AI errors in other sectors, especially when the reader is a time-strapped staffer or a vulnerable client.

Legal aid work involves more than delivering answers. It involves listening, pausing, and knowing when to remain silent. A client hesitates to describe their situation. A survivor unsure of the right words. These moments matter.
Chatbots are trained to fill every gap. They respond instantly. They assume more words are better. But that instinct can flatten complex human moments into rushed replies or oversimplified prompts. Silence is not a system error. It is part of the truth.
Chatbots don’t know the difference between a food delivery complaint and a housing rights emergency. They don’t grasp trauma, urgency, or consequence.
They treat every input as text to complete. Not as a human asking for help. In legal aid, that misalignment isn’t just a flaw. It makes the system unusable.
LLMs reflect the data they are trained on. That often means privileging dominant voices. Legal systems already carry historical bias. AI models trained on unfiltered internet data replicate those blind spots.
This shows up in small but damaging ways. Misrepresenting tenant protections. Undervaluing migrant rights. Misgendering users. Reframing legal questions through a narrow cultural lens. Not because the system is malicious. But because it was never taught to see what it misses.
Legal teams don’t need a chatbot trained to talk. They need an assistant trained to serve. That means:
This is not about rejecting AI. It is about using the right kind. Legal-first. Source-aware. Built for clarity, not charisma.
Conversation is easy. Accountability is rare. Chatbots may feel responsive, but they are not built for legal rigour. Legal work deserves more than a general-purpose model trained to improvise.
What matters most is not how fast the AI responds. It is whether you can trust what it says.

The future of legal AI rests on systems that are grounded in fact, aware of context, and quiet when needed.
Not every question needs an answer. Some need a pause, a citation, or a careful redirection. What matters is not how quickly AI can complete a sentence but how well it supports real decisions, for real people, in real legal environments.
AI built with this understanding is already in the field. Projects like ILAO is showing what it means to design for clarity, consistency, and care.
Platforms like Aeldris turn that intent into action, offering precise answers instead of search results, safe and contextual chat interactions, and document-level insights that reduce review time and surface what matters. All from one console, built to orchestrate every AI experience in one place.
In this time where AI is constantly at our beck and call, we don’t often realise the dangers it might be posing in our lives. As AI increasingly becomes a part of our daily lives, it's our duty to regulate the extent of its autonomy and ensure compliance.
Hence, choosing the right platform for the right cause becomes our first and foremost duty.
The Drupal community is finding new momentum with AI as a practical extension of what Drupal does best: structured content, flexible architecture, and community-driven innovation.
In this blog, we focus on one of the most promising developments: AI-powered search.
Search has always been central to user experience. But traditional keyword matching falls short when users ask nuanced questions or use everyday language.
AI Search changes that by combining vector-based retrieval with large language models. It brings context, intent, and semantic understanding into the equation - helping users find what they mean, not just what they type.
We’ll cover how to integrate this capability into a Drupal site step by step. This includes setting up a vector database for storing semantic embeddings, connecting it with your Drupal content, and building a conversational assistant that can guide users through your site. We’ll also explore how prompt engineering allows you to shape the tone, accuracy, and depth of responses, giving you more control over how AI interacts with your content.
Whether you're running a public knowledge base, an internal documentation hub, or a highly structured content repository, this blog is meant to help you bring meaningful AI experiences into Drupal- thoughtfully and practically.
AI Search is a submodule of the AI module that extends the functionality of the contributed Search API AI module, offering seamless integration with Drupal’s Search API. It utilises vector databases and large language models (LLMs) to enable intelligent, semantic search capabilities.
By building on the popular Search API module, AI Search allows you to create and manage vector databases, enabling highly relevant and accurate retrieval of content based on terms, phrases, or even entire content pieces.
It uses Retrieval-Augmented Generation (RAG), where information is first looked up, usually from a vector database, and then sent to a large language model (LLM) along with a user's question or request. This helps the model provide much more accurate answers, especially about specific topics or content it may not already know or was not trained on.
The system works by breaking large pieces of content into smaller chunks and saving them in a vector database. Each chunk is also saved with extra metadata (such as title or other settings) to preserve its original meaning and context.
These chunks are converted into vectors — complex numerical representations of the content’s meaning. You can think of these numbers like advanced tags, each with varying strengths. For example, one number might indicate a slight relationship to transportation, while another might strongly relate to education.
When someone submits a query, the question is also converted into a vector. The system compares it to stored vectors to find the most relevant matches. This method is significantly more accurate than traditional keyword-based systems like regular databases or the SOLR Search API.
Install the following modules:
When choosing a vector database:





Use the Recipes content type (For this blog, we are using the Recipes content type for search as an example)

Click Save to finalize the index.

Index options explained
Go to the Views tab:
After indexing, view the data in Milvus or Zilliz Cloud to find your content being indexed.
Milvus Cloud:

In Zillis Cloud:


If results appear with similarity scores, the index is working correctly.
AI Agents and AI Assistants make AI Search more powerful and user-friendly. The AI Agent handles behind-the-scenes tasks like querying the vector database, filtering results, and managing tools like Retrieval-Augmented Generation(RAG). The AI Assistant acts as the front-end guide—chatting with users, interpreting their questions, and passing them to the agent. Together, they create a seamless, conversational search experience that understands user intent and delivers smarter, more relevant results. Hence we need to create and configure AI agent and AI assistant for AI search to work in AI chatbot.





The chatbot will now appear on the homepage and support AI-powered searches.

Drupal’s AI Search brings meaning to the center of search. It uses vector-based retrieval and large language models to understand intent, context, and relationships between words , not just match keywords.
This makes discovery smoother and more relevant. From recipe suggestions that adjust to user preferences, to module searches that surface the most useful tools, AI Search helps your site respond in smarter, more human ways.
It’s a shift toward more intuitive, helpful digital experiences, and just one of the ways AI is shaping what’s next for Drupal.
More updates coming soon in this series on AI and Drupal.
A woman is handed an eviction notice and told to leave by tomorrow. A teenager receives a court summons without explanation. A single parent loses access to benefits after filling out the wrong form.
None of these situations begins with a request for legal representation. They begin with confusion, urgency, and a need for direction. But legal aid teams — no matter how dedicated — can’t always respond in real time.
The way legal support is delivered still depends on limited capacity, outdated workflows, and rigid hours. Intake doesn’t scale with demand. Urgency isn’t always recognised. Help often arrives too late.
What’s changing now is the infrastructure. Not the mission.
Legal aid remains the responder — the one interpreting, advocating, and showing up.
But with the right systems in place, it can respond faster, smarter, and earlier.
This is where AI fits in. Not as a replacement. As a system that helps legal aid do what it’s meant to do, when it matters most.
Legal aid nonprofits were built to fill gaps in access. But those gaps have widened, and existing systems haven’t kept pace.
Staffing is thin across the sector. Attorneys and support teams are stretched across urgent caseloads, underpaid compared to the private sector, and often managing both client work and internal operations. Burnout is constant, and hiring is slow.
Millions qualify for help but never receive it. Nonprofits are forced to triage: turning away eligible clients, taking fewer cases, or offering only partial support. The need is overwhelming — and growing.
Many legal aid organisations still rely on fragmented technology: paper forms, legacy case management systems, static websites, and unintegrated CRMS. Intake, updates, and documentation take more time than they should, and errors are common.
Websites are often inaccessible — not mobile-friendly, not multilingual, not ADA-compliant. Intake forms break. Confirmation messages don’t arrive. Clients, many already facing barriers, find themselves dropped or stuck.
Some regions have no legal aid presence. Others have offices, but limited expertise. Clients in rural or underserved areas face long delays or no help at all.
Before clients even speak to a person, they’re asked to complete long forms and supply extensive documentation. Many drop off. Staff then spend hours reviewing incomplete data or manually checking eligibility.
Cases like immigration, elder abuse, or housing discrimination require niche legal skills. Few nonprofits have specialists on staff, meaning generalists handle complex matters, or referrals fall through.
Grant cycles fluctuate. Reporting requirements are burdensome. Time spent chasing funds often pulls staff away from legal work.
Without integrated systems, organisations struggle to see what’s working — or where they’re falling short. That limits improvement, funding, and impact measurement.
Non-English speakers and disabled clients often face even greater barriers. Many legal aid orgs lack translation support or accessible design, leaving already-marginalised communities excluded again.
These challenges aren’t new. But they don’t have to stay unsolved.
.avif)
Legal aid doesn’t need automation for its own sake. It needs systems that help teams respond with clarity, at scale, and in time to make a difference.
AI can support that shift, not by replacing people, but by removing the friction that slows them down. From intake to research, triage to follow-up, purpose-built AI agents are helping legal aid teams operate with more speed, precision, and confidence.
The result? Faster answers, clearer insight, and more capacity where it matters most.
Legal questions rarely begin with legal terminology. Clients ask:
“Can they make me leave?”
“What does this letter mean?”
“Do I have to go to court?”
Semantic Search agents go beyond keyword matching. They understand intent, follow context, and search across documents, policies, and templates — even when queries are vague or incomplete.
Legal aid teams use these agents to:
Clients get answers faster. Staff spend less time scanning folders.
Simple forms can't handle complex questions. And when people drop off mid-intake, follow-up becomes harder and costlier.
Conversational AI enables dynamic, multi-step dialogue. These agents understand nuance, handle follow-up, and maintain context across interactions — all while staying grounded in your real data and governed by built-in safety guardrails.
Legal aid organisations are already using these systems to:
They don’t replace human staff — they hold the conversation open until staff are ready to step in.
Legal teams often deal with PDFS, scans, handwritten notes, and inconsistent formats. It’s time-consuming and easy to miss critical information.
Document Analyst agents extract, interpret, and contextualise information from structured and unstructured content.
They’re already helping legal aid teams:
From compliance to intake, these agents turn documents into decisions.
These agents also strengthen what happens behind the scenes:
Every Aeldris agent runs on a unified, purpose-built AI console with enterprise-grade security, user-level permissions, flexible APIS, and live retraining feedback loops.
From no-code configurations to developer-level integrations, legal aid teams retain full control over how agents behave, respond, and evolve. Audit trails and governance protocols come built-in, ensuring compliance isn’t an afterthought — it’s embedded.
These systems aren’t prototypes. They’re designed for organisations that can’t afford mistakes.
Just as important as performance is transparency. That’s why leading teams are also measuring:
In legal aid, trust is earned through care, clarity, and constant review. AI is no exception.

Don’t automate everything. Start where volumes are high and rules are clear—evictions, wage claims, family law.
Northwest Justice Project began with a single issue and expanded after field validation.
In Chicago, the Lawyers’ Committee for Better Housing developed an eviction-focused AI assistant now used by seven organisations in three states. Shared systems reduce duplication and accelerate progress.
Programs like Pro Bono Net’s Legal Empowerment and Technology Fellowship pair legal aid teams with technologists to co-develop AI systems that reflect local needs, not generic templates.

Legal professionals aren’t being replaced, and they shouldn’t be. But the systems around them are changing. Not with abstract automation, but with clear, focused upgrades that help legal aid respond before legal problems escalate.
In the coming years, we’ll see AI helping legal aid organisations:
The next wave of AI in legal aid is about deploying intentionally, where demand is high, timelines are tight, and human judgment remains essential.
That includes paying attention to human-centred design, making sure systems are accessible, multilingual, and usable in low-connectivity environments. Because many of the people who need legal aid the most are also navigating compounding barriers: disability, language exclusion, rural isolation, or digital inexperience.
We’re already seeing what that looks like in practice:
These aren’t test cases. They’re part of how legal infrastructure is being rebuilt around responsiveness.
AI is not the first responder. But it’s helping legal aid become one.
Legal aid doesn’t need a new mission. It needs systems that keep up with the one it already has.
AI is not the first responder, it never will be, but it is what helps legal aid become the first responder — in every language, every jurisdiction, every format.
Not by making decisions. But by helping people get heard sooner, and helping legal professionals step in better prepared.
More people are coming to legal aid — with urgent needs, layered issues, and no time to wait. Housing, custody, immigration, benefits. It rarely fits into one category anymore. And legal aid teams, already stretched thin, are forced to triage everything at once.
That triage usually starts with intake. And that’s where most systems fall apart.
Static forms, overloaded hotlines, confusing websites - these weren’t built for high-volume, high-urgency legal work.
When someone types “I got a court letter” or “my landlord’s threatening me,” they don’t need a PDF or a 12-step process. They need answers. Fast.
This is where Conversational AI changes the workflow.
Instead of sending people down a maze of forms, it opens a conversation. The person explains what’s going on in their own words. The AI listens, asks relevant follow-up questions, flags emergencies, and guides them to the right next step: eligibility, legal info, appointment scheduling, or escalation to a staff attorney.
No searching or second-guessing, just progress.
It’s not about replacing staff, it’s about how can we give them their time back. Every minute AI spends gathering context or handling routine queries is a minute a caseworker can spend reviewing evidence, preparing filings, or showing up in court.
It also reduces drop-offs. When people get clear help at the first point of contact — in their language, without jumping platforms- they stay engaged. They show up. They follow through.
And for the team? It means less repetition, better triage, and more time for legal work that actually requires legal judgment.
Access to legal aid is often judged by outcomes - court decisions, legal remedies, and protections granted. But the real breakdown happens earlier.
The moment someone looks for help and doesn’t know where to go next, doesn’t get a reply, or doesn’t understand the next step, that’s where access quietly collapses.
Many people get stuck at the intake stage. This is where a client first interacts with the legal system — and it’s also where the system becomes too technical, too slow, or too inconsistent for many to continue.
Common structural barriers include:
These blockers shape who gets access and who quietly gives up. When the front door to legal aid is confusing or delayed, people facing urgent issues — eviction, domestic disputes, employment claims, etc, may not get through at all. That’s not just an access issue. It becomes a public and civic one.
.avif)
Conversational AI is designed for high-volume, high-stakes environments where people need more than quick answers — they need clarity, consistency, and follow-through.
It steps in where human availability is limited and processes are often fragmented, helping people complete tasks, understand decisions, and move forward with confidence.
Most support systems break down after the first question. Someone asks for help, gets a basic answer, and then has to start over with every follow-up.
Conversational AI doesn’t reset at each interaction — it carries the context forward. It understands the flow of a conversation, remembers what’s already been shared, and adjusts based on what the person needs next.
This is especially critical in legal and healthcare settings, where a person might need to ask five related questions to even reach the right starting point.
This isn’t about pulling information from the internet. Every response is based on your verified documentation — your policies, your workflows, your eligibility rules.
That means clients, students, patients, or employees are getting answers that reflect how your system actually works, not how it’s supposed to work in theory.
Legal information, medical intake, and compliance-driven onboarding- these are the areas where a wrong answer cannot be brushed off.
Conversational AI includes rules and filters that keep responses within safe, defined boundaries. That could mean flagging sensitive questions, deferring to a human when needed, or applying regional logic to responses (e.g. different legal rules by jurisdiction). It’s designed to reduce risk, not add to it.
Some people type fast and directly. Others explain their situation slowly, emotionally, or in their own words.
The AI listens for intent, not just keywords. It interprets what people mean, not just what they say, and responds in ways that match the tone of your organisation, whether that’s formal, warm, procedural, or compassionate.
That’s what keeps the experience clear and human, even if no staff member is available.
People don’t only reach out during business hours. They try to find legal help late at night, check their benefits status early in the morning, or need onboarding support on weekends.
Conversational AI doesn’t run on shifts. It’s ready whenever someone has a question, through a website, a help portal, SMS, or a mobile app.
It’s not there to replace anyone. It’s there to keep the system moving when people need it most.
Imagine this: a tenant logs on to a legal aid portal just before midnight. They’ve received a 30-day notice to vacate, but the details feel off — no warning, no explanation. They aren’t sure if it qualifies as an unlawful eviction. They’re not a lawyer. They just want to know what to do next.
The conversational assistant greets them and asks: “Are you dealing with a housing issue?”
No intake form. No waiting until morning. Just a guided set of questions, in their preferred language, checking jurisdiction, basic eligibility, and urgency. By the time a staff member reviews the case, the assistant has already logged the key facts, flagged potential wrongful eviction, and gathered the client’s consent to proceed. The legal team doesn’t need to start from scratch — they can move straight to decision-making.
Now, take a different situation. An hourly worker opens the site at 7 a.m. They’re owed three weeks of pay from a contract job. No email responses, no payment. They don’t even know if this counts as wage theft. The assistant walks them through local labour law definitions — clearly, without legalese. It asks if the client has proof. Screenshots, unpaid invoices, correspondence — all uploaded securely. When legal aid sees this case, it’s already documented and categorised for review. No duplication, no confusion, no delay.
Or think about someone accessing the system from a domestic violence shelter. They’re scared, unsure of what to say, and just trying to understand their options. They don’t use terms like “restraining order” or “protective custody.” They simply say: “I had to leave home. I don’t feel safe.” The AI doesn’t need technical terms. It’s trained to pick up risk indicators and respond with care. It routes the case for emergency handling, connects the client with support services, and logs everything discreetly for legal review.
These are not edge cases. These are daily realities. Legal aid organisations are fielding more cases than they can handle — not just complex litigation, but the overwhelming volume of initial contact, intake, triage, and clarification. It’s not uncommon for clients to give up halfway through the process because they hit a wall: no answer, unclear steps, or language they can’t navigate.
Conversational AI changes this. Not by replacing legal staff, but by giving them more time to focus on what requires legal judgment — and less time on administrative intake. It collects the right information once, routes it correctly, and gives people clarity on where they stand and what’s next. It’s responsive, multilingual, and able to operate at any hour, which is critical when people don’t have the luxury of waiting.
The implication is simple: fewer missed cases. Less friction at the door. More consistency in how people are heard, understood, and supported — no matter their location, literacy, or language.
In practical terms, it means a system that listens before the lawyer even logs in. And in legal aid, where the first interaction can determine the outcome, that makes a measurable difference.
.avif)
Conversational AI is about making legal aid sustainable for the people seeking help and for the teams doing the work.
When the front end becomes more functional, the entire process improves.
Legal professionals shouldn’t spend hours repeating intake questions, clarifying missing form fields, or sorting through misdirected queries. Those steps, while necessar,y drain time from the matters that require legal reasoning, empathy, or negotiation.
Conversational AI takes care of the upfront work, so staff can apply their expertise where it’s most needed: complex cases, urgent advocacy, and courtroom preparation.
It's not a time-saver for its own sake — it's a reallocation of human energy toward the parts of legal aid that machines can’t handle.
Instead of chasing incomplete forms or unclear notes, caseworkers receive structured, legible information from the start.
The AI collects facts through a guided, conversational flow, asking questions in a logical order and adapting based on the client’s answers.
This reduces administrative cleanup and avoids duplication. Staff don’t have to guess what the person meant. They can act on a clearer picture from the beginning.
Confusing forms, unclear eligibility, or lack of follow-up often lead people to abandon their efforts, not because they didn’t qualify, but because the system felt closed off.
With conversational AI, the experience is dynamic and supportive. Clients are guided step by step, with real-time feedback, and they’re more likely to complete the process.
That means fewer missed cases and more people getting actual help, not just starting the journey but finishing it.
Legal aid often varies dramatically by geography — some regions have well-resourced teams; others rely on volunteers or are spread too thin.
Language access is another barrier, especially in multilingual communities. Conversational AI standardises that first point of contact.
Whether someone is in a large city or a rural area, speaking English or another language, they receive the same level of initial support. That consistency helps close the equity gap in access.
For many people, the legal system feels like something that happens to them — cold, bureaucratic, hard to understand. By replacing static forms with real-time interaction, the process starts to feel human again. Clients don’t have to guess what’s expected. They’re met with clarity, not silence. That shift — from gatekeeping to guided support — changes how people engage with the law. It builds trust, even before a lawyer gets involved.
.avif)
Chatgpt has raised expectations about what generative AI can do. It can write essays, generate summaries, and respond to queries in fluent, human-like language. But that’s very different from handling legal intake.
In legal contexts, precision matters. A hallucinated citation or vague eligibility answer isn’t just a technical glitch, it can confuse, mislead, or cost someone their chance at getting help.
This doesn’t mean Chatgpt has no role. It means we need domain-specific models with controls, transparency, and training that’s rooted in legal practice. The promise is real, but the foundation needs to match the stakes.
Legal conversations involve trust. People share information they wouldn’t share with anyone else. They need to know that their data is safe, their identities protected, and their background doesn’t skew how they’re treated.
Any AI in the legal domain must:
Transparency is about trust and not compliance. And in legal aid, trust is foundational.
Legal aid has long been limited by a simple problem: too much need, too few resources.
Conversational AI is becoming the system that responds when human teams are unavailable, helping legal organisations scale their impact without sacrificing clarity or care.
At the industry level, adoption is well underway. Global spending on legal AI software reached $37 billion in 2024, as legal teams across the public and private sectors began integrating AI into their operations. This movement includes pro bono work and public interest law, not just corporate legal departments.
For example, Norton Rose Fulbright used AI-assisted e-discovery to support the UK government's COVID-19 inquiry — a clear sign that automation can reduce overhead in document-heavy, high-stakes work. Meanwhile, Garfield, an AI-enabled law firm in the UK, offers services such as debt recovery letters for only £2, expanding access to individuals and small businesses who would otherwise opt out of legal action altogether.
In Australia, firms like MinterEllison are applying AI to speed up discovery processes, reducing the time and cost associated with large case preparation. In India, startups such as CaseMine are modernising legal research with AI models that surface non-obvious linkages across case law, making legal research more efficient and accessible.
In the United States, QED42 partnered with Illinois Legal Aid Online (ILAO) to implement Conversational AI that streamlines how clients access legal support. The assistant manages eligibility screening, triage, and guided navigation in plain language, across both desktop and mobile. It also supports multilingual interactions, integrates with existing case management systems, and uses conversational memory to handle follow-up questions without repeating steps. The result is lower drop-off during intake, faster completion rates, and more time for staff to focus on complex legal needs rather than intake bottlenecks.
This is more than automation, it is the foundation of a more responsive and reliable legal infrastructure. AI systems are reducing drop-off at intake, improving accuracy across languages and regions, and helping staff focus on complex legal problems rather than administrative backlogs.
The legal system has often relied on scarcity-based models, limited capacity, long delays, and unequal access. AI offers a way to change that. The foundations are already being laid in courts, firms, and legal aid systems around the world.
Justice begins when someone is heard. Conversational AI helps make sure that moment happens -clearly, quickly, and at scale.

I was deep in another AI research rabbit hole. YouTube tabs everywhere, notes piling up, when something unexpected grabbed my attention. A new video from AWS featured three Solutions Architects walking through what could be a breakthrough in connecting AI with live data sources. And it wasn’t just another generic demo.
Just weeks ago, we unpacked the foundational ideas behind the Model Context Protocol, a framework designed to change how AI systems understand, retrieve, and apply contextual knowledge. At the time, it felt ambitious, maybe even abstract. But this AWS session made it real. They weren’t just talking. They were building. Real architectures. Real cloud integrations. Real-time intelligence.
Suddenly, MCP wasn’t just a protocol. It felt like the missing link between cloud-native services and the next generation of intelligent applications.
As Trevor Spers, Anil Nin, and Adam Bloom walked through their demonstration, I realised this wasn’t just another tech talk. This was a blueprint for solving some of the most frustrating challenges in AI development challenges I’d wrestled with countless times.
Curious? Watch the full technical breakdown:
Every AI developer knows the pain:
AWS’s approach? A game-changing protocol that makes these headaches disappear.
In their detailed YouTube showcase, AWS revealed several groundbreaking approaches to Model Context Protocol:
2. Standardised multi-server interactions
3. Enterprise-grade MCP implementation
4. Open ecosystem approach
The AWS technical walkthrough specifically covered:
Traditional AI development faced significant hurdles:
AWS’s MCP implementation directly addresses these pain points by providing a standardised, scalable approach to AI-data interactions.
AWS showcased a powerful multi-server MCP architecture that allows:
2. DynamoDB integration
3. Bedrock knowledge bases
MCP enables organisations to:
AWS’s MCP implementation includes:
# Hypothetical MCP-enabled workflow
def enterprise_data_analysis(query):
"""
Demonstrates cross-server MCP interaction
- Location service for geographical context
- DynamoDB for historical data
- Knowledge base for semantic understanding
"""
location_context = location_server.get_regional_details(query)
historical_data = dynamo_server.query_with_context(location_context)
insights = knowledge_base.analyze_comprehensive_data(historical_data)
return insights
AWS’s take on Model Context Protocol moves MCP from concept to capability. This isn’t a speculative framework, it’s a working system that addresses the core blockers AI teams face daily: fragmentation, complexity, and scale.
By connecting cloud-native services directly to AI reasoning through a unified protocol, AWS is changing how teams approach intelligent applications. No more building brittle, one-off integrations. No more patchwork access layers. Instead, a standard that supports extensibility, governance, and intelligence at scale.
As MCP continues to mature, the shift will be clear: less infrastructure pain, more focus on model logic and real-world outcomes. For teams building serious AI systems, that’s foundational.
Now’s the time to think differently about how your AI interacts with data. And if AWS’s blueprint is any signal, the next phase of AI won’t just be smart. It’ll be contextually fluent, cloud-native, and operationally ready.

Staying organised in Obsidian can feel like a full-time job, especially when your notes start multiplying across projects, ideas, and domains. Imagine you’re working on a long-term research project. You’ve got dozens of notes scattered across different folders: meeting summaries, article highlights, draft outlines, and to-do lists. Manually curating and connecting them is time-consuming.
Now, imagine asking your AI assistant: “Summarise my notes on cognitive science from last month and create a dashboard of key insights in my Obsidian.” And it does exactly that.
By integrating Claude with Obsidian using the Model Context Protocol (MCP), this kind of interaction becomes possible. Claude can read, organise, and restructure your Obsidian vault, generate summaries, build dashboards, and surface insights, all without leaving your workspace. This guide walks you through setting up the Claude-MCP integration, so your AI assistant becomes a true thinking partner inside Obsidian.
Before we begin, ensure you have:
Let’s get into it
The integration works through a client-server architecture:
When Claude needs to read or write to your Obsidian vault, it sends a structured request through the MCP protocol to the MCP-Obsidian server, which then communicates with Obsidian through its REST API. This architecture allows Claude to perform operations like creating notes, establishing connections, and organising your knowledge base.
Obsidian doesn’t have a built-in REST API, so we’ll need to install a community plugin:
Once the REST API plugin is installed:
Now we’ll set up the MCP-Obsidian server that will bridge Claude and your Obsidian vault:
curl -LsSf https://astral.sh/uv/install.sh | sh
or for macOS with Homebrew:
brew install uv
git clone https://github.com/MarkusPfundstein/mcp-obsidian.git
cd mcp-obsidian
echo "OBSIDIAN_API_KEY=your_api_key_here" > .env
Replace your_api_key_here with the API key you copied from Obsidian.
Now we’ll configure Claude to connect to the MCP-Obsidian server:
{
"model": "claude-3-5-sonnet",
"mcpServers": [
{
"name": "obsidian",
"command": "/opt/homebrew/bin/uv run -m mcp_obsidian.main",
"cwd": "/Users/username/claude-mcp-configs/mcp-obsidian",
"env": {}
}
]
}
-Replace /opt/homebrew/bin/uv with the path to your uv installation (find it using which uv in the terminal)
-Replace /Users/username/claude-mcp-configs/mcp-obsidian with the path to your cloned repository
-The order of arguments is critical, note the run command comes before the -m mcp_obsidian.main parameter
-If you’re using uvx instead of uv (as in some cases), adjust accordingly
One of the most common issues (which I personally encountered) is incorrect argument order in the uv command. The correct pattern is:
uv run [options] script [script_arguments]
If you see an error like the unrecognised subcommand '/Users/your/path', it likely means the arguments are in the wrong order. Ensure that the run comes before your script path or module.
After restarting Claude, let’s verify that the integration is working:
If everything worked correctly, you should see the new file in your Obsidian vault. Congratulations! You’ve successfully integrated Claude with Obsidian.
One of the most powerful applications is having Claude analyse and restructure your Obsidian vault. I’ve used this to:
For example, ask Claude:
Analyse my vault structure and suggest a better organisation for my Work/Projects folder. Create necessary folders and move files accordingly.
Claude excels at creating dashboards that provide quick access to important information:
Create a Professional Dashboard for my Work section that links to all important project folders, reference materials, and technical documentation.
This automatically creates a centralised dashboard with:
Claude can help implement and maintain structured organisational frameworks like the PARA method (Projects, Areas, Resources, Archives):
Analyse my vault and reorganise it according to the PARA method. Create appropriate folders and README files for each section.
This creates a well-structured vault with:
I’ve used the integration to maintain consistent templates throughout my vault:
Create a template for project notes that includes sections for objectives, status, and key resources.
Claude can then apply these templates consistently across your vault, ensuring standardised note structures.
The true power of this setup emerges when combined with other MCP servers:
I’ve found this combination particularly powerful. Memory MCP allows Claude to remember details about your vault structure, preferences, and past interactions across sessions. With both servers enabled:
{
"model": "claude-3-5-sonnet",
"mcpServers": [
{
"name": "obsidian",
"command": "/opt/homebrew/bin/uv run -m mcp_obsidian.main",
"cwd": "/Users/username/claude-mcp-configs/mcp-obsidian",
"env": {}
},
{
"name": "memory",
"command": "node /path/to/memory/dist/main.js",
"cwd": "/path/to/memory",
"env": {
"MEMORY_PATH": "/Users/username/claude-mcp-configs/memory.json"
}
}
]
}
This allows Claude to:
When working with complex vault organisations, adding SequentialThinking MCP enables Claude to:
This is particularly useful when working with large vaults containing technical documentation or multiple projects that require careful organisation and dashboard creation.
For optimal results, create a dedicated Claude project specifically for Obsidian interaction:
Use the Obsidian MCP tools as much as possible to help me organise and enhance my knowledge base. Always look for opportunities to create meaningful connections between notes and maintain a consistent structure.
This ensures Claude is proactively using the Obsidian tools whenever appropriate
While the integration is powerful, keep these security considerations in mind:
When working with files in your vault, be clear and specific about paths:
If the tools icon doesn’t appear or shows fewer than expected tools:
If Claude asks for permission repeatedly or can’t connect:
If Claude can’t find or create files at the specified paths:
Integrating Claude with Obsidian via the Model Context Protocol (MCP) turns a personal knowledge base into an intelligent, adaptive system. You get the best of both worlds: Obsidian’s local-first, markdown-based structure and Claude’s ability to interpret, organise, and act on that structure in real-time. This isn’t just about productivity hacks, it’s about scaling your thinking.
With this setup, Claude becomes more than a passive assistant. It actively collaborates with you, restructuring folders based on content patterns, generating context-aware dashboards, auto-tagging new notes, and even maintaining consistent naming conventions across your vault. It reduces friction at every layer of knowledge management.
This integration has reshaped how I work in Obsidian. I now spend more time writing, connecting ideas, and thinking, and less time dragging files, fixing folder chaos, or building manual indexes. Claude automatically surfaces related notes, groups them into logical hierarchies, and keeps evolving the structure as the vault grows.
Over time, the system adapts to your workflow. For instance, it can learn that you prefer project notes grouped by quarter or that you separate deep research from meeting summaries. You can also script custom automation through Claude to generate weekly digests, build project timelines from scattered notes, or convert raw thoughts into structured documentation.
The more you use it, the more it becomes your second brain, organised not by rules, but by understanding.
.avif)
MCP, or Model Context Protocol, is gaining serious traction as organizations race to improve the performance and responsiveness of AI agents. Behind the scenes, many are building their own MCP servers, custom middleware systems designed to optimize how context is managed between applications and language models. But what exactly is an MCP server, and how does it work?
Before jumping into the technical setup, it’s worth understanding the role of an MCP server. Think of it as an intelligent intermediary. Instead of sending raw prompts directly to a language model, an MCP server receives input from the client, enriches it with relevant context, and then passes it on to the model. It also processes the model’s output before returning it to the client.
This setup enables more advanced context handling than a direct API call, especially when working with multi-step workflows or agent-based systems.
Originally introduced as a standard protocol for bridging clients and language models, MCP now represents a crucial layer for anyone building scalable, high-performance AI systems.
Let’s walk through what it takes to build one from scratch.
Application:
A Drupal website that contains information about Properties would have fields like Address, Price, Booking Availability Date, Amenities, etc. We would expose all this content through JSON: API and then create an MCP server based on this API.
Later, we would connect our MCP server with a client application (for our case, we would be using VS Code Insider, but you can use any, like Cursor IDE or Streamlit app) and would ask questions in the chat based on properties. It should use our MCP tools and provide answers.
Implementation:
Let's say we have our exposed JSON: API from Drupal based on it we would start creating our MCP server.
Here are some common steps we would be doing to create an MCP Server
curl -LsSf <https://astral.sh/uv/install.sh> | sh# Create a new directory for our project
uv init appname
cd appname
# Create virtual environment and activate it
uv venv
source .venv/bin/activate
# Install dependencies
uv add "mcp[cli]" httpx
# Create our server file
touch appname.pyfrom typing import Any
import httpx
from mcp.server.fastmcp import FastMCP
# Initialize FastMCP server
mcp = FastMCP("airbnb")
# Constants
PROPERTY_API = "<https://airbnb.ddev.site/>"
async def make_website_request(url: str) -> dict[str, Any] | None:
"""Make a request to the Our Local site with proper error handling."""
async with httpx.AsyncClient(verify=False, follow_redirects=True) as client:
try:
response = await client.get(url)
response.raise_for_status()
data = response.json()
return data.get('data', [])
except httpx.RequestError as e:
print(f"An error occurred: {e}")
return None
def format_property_data(data: dict[str, Any], location: str = None, max_price: float = None) -> str:
"""Format property data into a readable string."""
if not data:
return "No property data available."
properties = []
for property in data:
attributes = property.get("attributes", {})
name = attributes.get("title")
body = attributes.get("body")['value']
address = attributes.get("field_address")
availability_from = attributes.get("field_avaialbility_date")
availability_to = attributes.get("field_availability_date_to")
number_of_guests = attributes.get("field_number_of_guest")
price_per_night = float(attributes.get("field_price_per_night"))
# Filter by location if specified
if location and location.lower() not in address.lower():
continue
# Filter by price if specified
if max_price and price_per_night > max_price:
continue
properties.append(f"This is the Property Name: {name}\\n"
f"Description: {body}\\n"
f"Address: {address}\\n"
f"Availability From: {availability_from}\\n"
f"Availability To: {availability_to}\\n"
f"Number of Guests: {number_of_guests}\\n"
f"Price per Night: {price_per_night}\\n")
if not properties:
message = "No properties found"
if location:
message += f" in {location}"
if max_price:
message += f" under price of {max_price}"
return message + "."
properties.append("\\n")
properties.append("This is the Property Listing")
properties.append("\\n")
return "\\n".join(properties)
@mcp.tool()
async def get_property_data():
"""Get all property data """
url = f"{PROPERTY_API}/jsonapi/node/property_listing"
data = await make_website_request(url)
return format_property_data(data)
@mcp.tool()
async def get_properties_by_location(location: str):
"""Get property data filtered by location"""
url = f"{PROPERTY_API}/jsonapi/node/property_listing"
data = await make_website_request(url)
return format_property_data(data, location)
@mcp.tool()
async def get_properties_by_price_and_location(location: str, max_price: float):
"""Get property data filtered by location and maximum price"""
url = f"{PROPERTY_API}/jsonapi/node/property_listing"
data = await make_website_request(url)
return format_property_data(data, location, max_price)
@mcp.tool()
async def get_properties_by_date_and_location(location: str, after_date: str):
"""Get property data filtered by location and availability date"""
url = f"{PROPERTY_API}/jsonapi/node/property_listing"
data = await make_website_request(url)
# Filter data by availability date before passing to format_property_data
if data:
filtered_data = [
property for property in data
if property.get("attributes", {}).get("field_avaialbility_date") <= after_date
]
else:
filtered_data = None
return format_property_data(filtered_data, location)



if __name__ == "__main__":
# Initialize and run the server
mcp.run(transport='stdio')
If you see the above examples, you will see the MCP tools are basically just receiving data from the Drupal Content, after that our Agent and LLM manage, filter, and handle the user request from the chat on their own. That’s what LLMs can provide.
{
"mcp": {
"inputs": [],
"servers": {
"airbnb": {
"command": "uv",
"args": [
"--directory",
"/home/vighnesh/Projects/AI/airbnb",
"run",
"airbnb.py"
],
}
}
}
}
Once this is done you would see “Start/Stop/Restart”.
Just like this, we would be able to chat with the Agent who would answer by using the tools created by our custom MCP server.
The full code can be found here.
The real momentum behind AI right now is about smarter context.
And that’s where MCP comes in. As more teams move from basic prompt-response setups to real use cases that involve multiple systems, documents, APIs, and workflows, there’s a growing need for something that can handle context properly. Not just pass it along, but manage it—filter it, format it, structure it, and make it useful to a language model. That’s exactly what MCP was built for.
Industry-wide, this shift is becoming clear. McKinsey’s 2024 AI report found that 72% of businesses have embedded AI in at least one function, tools like MCP are filling that gap by standardizing how systems talk to agents and how agents talk to models.
We’re already seeing real adoption. Developers are wiring up MCP servers to platforms like VS Code and Cursor, using them to bring live context into legal research tools, travel apps, real estate portals, and customer service agents.
Companies in the U.S., Germany, India, and Singapore are exploring MCP for everything from enterprise search to healthcare automation. The use cases are getting sharper—and the tooling is catching up.
Drupal is one example in this mix. With structured content already in place, it becomes a strong candidate for feeding data into an MCP layer. But the real story is bigger. This is about any system that holds structured knowledge becoming part of the agent stack—connected through a shared protocol that knows how to work with context.
Looking ahead, the expectation is that MCP (or something very close to it) becomes the default. Just like REST or GraphQL became the standard for web APIs, MCP is shaping up to be the standard for context APIs.
If you’re working on anything involving agents, internal data, or real-time context, this is worth paying attention to. You don’t want to duct tape this stuff together. You want a protocol that does the heavy lifting.
Want to see what this looks like in action? Check out:
References: https://modelcontextprotocol.io/quickstart/server

Automatically generating meaningful alt text for images in CKEditor—without writing a single line of code—is now within reach. AI-powered automation improves accessibility and streamlines content creation, allowing teams to focus on what matters most.
Alt text plays a key role in creating inclusive digital experiences, especially for users who rely on screen readers. While it’s a small part of the content workflow, it has a big impact—and AI can make it even easier to get right.
In this blog, we’ll look at how to build an AI Automator in CKEditor that generates alt text for images automatically. For example, when a content creator inserts an image of a chart comparing annual CO₂ emissions by country, the AI Automator can instantly generate alt text like “Bar chart comparing annual CO₂ emissions in the US, China, India, and EU from 2015 to 2024.”
The result: more accessible content, smoother publishing, and one less manual step.
The AI Automator module in Drupal allows for seamless AI-powered workflows inside CKEditor. Automator Chains type helps you chain multiple AI processes together (e.g., image analysis → text generation). AI can:
Alt text is crucial for accessibility, helping visually impaired users understand images. Instead of manually adding alt text for each image.
To create an AI Automator Chain Type for generating alt text from images, you first need to navigate to the Automator Chain Types configuration page. After adding a new chain type, you will define input and output fields to process the image and store the generated alt text.

You now need to edit the Image Alt Text field, configure the AI Automator settings, define the input mode and prompt, and set the AI provider.



To enable AI Automator for Output Image with Alt Text, you need to similar settings with appropriate prompt.


Enable AI Automator in CKEditor, by configuring the text format settings, here you will add the AI CKEditor plugin for the text format and enable AI Automators, and setting up the image alt text generation settings for ckeditor.


To test the AI Automator Chain Type, you should now create an article and insert an image in CKEditor.


This feature can be extended for media reference entities as well once the ticket is closed.
This AI-powered CKEditor assistant can be useful for:
Accessibility Tools: Improve image descriptions for visually impaired users.
SEO Optimization: Enhance image searchability with meaningful alt text.
Content Automation: Streamline the process of adding alt text to images.
AI assistants in CKEditor are already reshaping content creation. With the AI Automator module for Drupal, you can generate meaningful alt text for images—without writing a single line of code. From improving accessibility to enhancing SEO and removing repetitive steps, AI is making content workflows faster and more intentional.
A 2024 study found that 88% of marketers use AI daily, and 68% of service professionals rely on it for content creation. Even small businesses are part of the shift—98% use AI enabled services and 40% are experimenting with generative models.
Drupal is keeping pace. With support for OpenAI, Azure, Cohere, and others, its growing AI ecosystem brings model-based automation directly into the editor. The AI Automator handles everything from alt-text suggestions to smart content tweaks—already used by nonprofits, publishers, and public agencies across the US, India, and Europe.
This is the start of model-driven publishing: CMS experiences that work with you. Try the AI Automator, build your assistant in CKEditor, and be part of what’s next.