# Optional: Notify admin for review if adminReviewEnabled: sendToReviewQueue(sensorID, description)
## 4 Implementation Details
To mitigate this, the prompt design was carefully tuned to prioritize conciseness and relevance, ensuring the generated content remains informative without becoming unnecessarily long. This was achieved through prompt engineering techniques that emphasize summary-level insights, reduce redundancy, and filter out less critical details, helping to maintain clarity and focus on the generated output. For example, rather than repeating full sensor values with detailed qualifiers in every paragraph, prompts were optimized to group-related observations (e.g., temperature, humidity, and air quality) into concise summaries while omitting unnecessary restatements--particularly when readings remain stable across time steps. In future iterations, an interactive analysis view could allow users to explore the data more deeply by posing follow-up questions to the AI, similar to research prototypes that support conversational interaction with charts. For the current version, however, the system provides static but content-rich descriptions designed to strike a balance between detail and clarity. To ensure the long-term scalability and extensibility of the platform, the system architecture was designed following modern software engineering principles, particularly emphasizing modularity and separation of concerns. The backend adopts the Laravel Model-View-Controller framework, which encourages clean code organization and facilitates future enhancements with minimal impact on existing components. Figure 6: Detailed analysis view in AccessiDashboard, showing AI-generated narrative descriptions. Each block (titled “Sensor Analysis” with a timestamp) contains a few paragraphs describing conditions (temperature, humidity, etc.) and notable events or advice. In addition to MVC best practices, the system leverages a microservices-inspired structure that separates key functions--such as sensor data ingestion, AI-based description generation, and user management--into loosely coupled modules. This allows each component to be developed, deployed, and scaled independently, avoiding the limitations of a traditional monolithic design. For example, the AI microservice can be hosted separately and scaled according to the computational demand without affecting the core platform's stability. This architectural approach enhances both maintainability and performance under increasing load, enabling the platform to serve diverse user needs in real time. Although formal load testing and performance benchmarks are planned as part of future validation efforts, the use of stateless controllers, Redis-based caching, and asynchronous task queues lays a strong foundation for high-concurrency operation and horizontal scaling. Finally, from a development standpoint, ensuring all these views remained consistent was a matter of careful templating. We reused components as much as possible. For example, the heading and navigation bars remain the same across modes (so users do not get a completely different page when switching, avoiding confusion). We leveraged Laravel's Blade includes to keep the code DRY (Don't Repeat Yourself) [49]. Styling was unified through a shared CSS file, providing a clean and accessible layout across views, characterized by appropriate spacing, readable font sizes, high-contrast color schemes (e.g., dark text on a light background), and clearly defined section separators. To ensure responsiveness and compatibility with smartphones and other mobile devices, we utilized custom CSS media queries. Although this approach was tailored to the project's needs, a responsive framework such as Bootstrap [50] could have been employed as an alternative. AccessiDashboard incorporates an administrator workflow and accessibility validation strategy that enables administrative users--responsible for connecting new IoT sensors and configuring dashboard views--to maintain accessibility compliance without requiring specialized expertise.