# Accessible IoT Dashboard Design with AI-Enhanced Descriptions for Visually Impaired Users
## 3 System Design and Architecture
### Core Components
#### 3.2.3. AI Integration for Generating Long Descriptions  
A core innovation of AccessiDashboard is the automated generation of long descriptions for charts and complex data using an LLM. The integration is designed to produce useful descriptions without human intervention, though with the option for human review. The process of generating a description is as follows:  
1. Data and Context Gathering: When a new sensor visualization is created or updated, the system compiles the relevant data points. This includes recent readings (e.g., the last N data points or last T minutes of data), summary statistics (min, max, average, current value), and contextual metadata (sensor name, units, any threshold definitionssuch as what constitutes \"high\" or \"low\"). If a short caption or alt text exists, that might be included to guide the AI. 2. Prompt Construction: The system constructs a prompt to send to the LLM. The prompt is written in natural language, instructing the model to act as an explainer. For example: _\"The following are recent readings from a sensor measuring temperature (in \({}^{\circ}\)C). Provide a detailed yet concise description of the trend and any significant changes. Data: 14:00--22.5 \({}^{\circ}\)C, 14:10--23.0 \({}^{\circ}\)C, 14:20--24.5 \({}^{\circ}\)C, 14:30--26.0 \({}^{\circ}\)C, 14:40--25.5 \({}^{\circ}\)C. The sensor is indoors; normal range is 20-25 \({}^{\circ}\)C.\"_. This prompt encourages the AI to note the trend (rising then slightly falling temperature), relate to normal range, etc. 3. AI Generation: The LLM processes the prompt and returns a generated description. The output is expected to be a structured text--typically a few sentences or a short paragraph. We encourage the model to mention the overall trend (e.g., increasing, decreasing, stable), highlight any anomalies or out-of-range values, and possibly contextualize what those values mean (if it has the info, like \"this is within normal range\" or \"this is unusually high\"). 4. Post-processing and Storage: The returned text is checked (basic validations like ensuring it is not empty and does not contain obviously wrong units, etc.). Then, it is stored in the LongDescription model associated with that sensor. If the AI output contains any phrasing that might be misleading or require tweaking (perhaps the AI used an uncommon term for something), an administrator interface allows for editing the description before it is shown to end-users. In the current demonstrator, we log the AI's raw output for auditing but display it directly to the user if no human edits are made. By generating multi-sentence narratives, these long descriptions give visually impaired users a much richer understanding of the data. For example, instead of just knowing a chart's title and current value, the user might hear: _\"The temperature increased from 22 \({}^{\circ}\)C to 28 \({}^{\circ}\)C between 9:00 and 12:00, then dropped back to 22 \({}^{\circ}\)C by 15:00, indicating a midday peak. This pattern is typical for the day's weather. A brief spike around 13:00 reached 28 \({}^{\circ}\)C, which is slightly above the usual range, possibly due to direct sunlight.\"_ Such a description conveys the shape of the data (increase then decrease), specific key values, and context about normalcy. It may even offer a hypothesis (like the sunlight) which, while not certain, gives additional insight. Figure 2 shows the pseudocode that describes how AccessiDashboard automatically generates narrative descriptions from incoming sensor data. When new readings arrive, the system compiles relevant statistics and contextual metadata, then formulates a structured prompt for the OpenAI model. The AI returns a textual description summarizing trends, anomalies, and expected values. The output is then validated--checking for completeness and correct units--before being saved to the database and optionally flagged for human review.