IoT analytics SaaS platform for HVAC and refrigeration
LLM feature in a production SaaS product
role: Designed and built the generation service, the context builder and the prompts.
// problem
Field technicians wrote the technical descriptions in their service reports by hand. It was slow, quality varied from one technician to the next, and the descriptions often ignored the telemetry the platform already had.
// approach
- Generation runs behind a provider-agnostic LLM service. A cloud-hosted OpenAI deployment is the default, with OpenAI and Anthropic as configurable fallbacks.
- Prompts are built from structured context: the equipment profile, a telemetry snapshot, and the anomalies the technician flagged, with measured values and expected ranges.
- Two modes: generate a description from scratch, or enhance what the technician already wrote.
- Output is constrained to a fixed format that drops straight into the report.
// architecture
Technician input
Telemetry snapshot
Context builder
equipment, readings, anomalies
LLM service
primary + fallbacks
Output validator
fixed format
Service report
// guardrails and production concerns
- The model must say when the data is insufficient instead of guessing.
- Calls authenticate with cloud identity tokens, not API keys.
- Token caching and request timeouts on every call.
- Configurable fallback providers, so the feature does not depend on a single vendor.
// outcome
Technicians get a grounded first draft, or a cleaned-up version of their own text, built from data the platform already has and ready for the report. It is applied AI with production discipline: grounding, refusal behaviour, structured output, provider independence and secretless authentication.
// stack
- LLM integration
- Azure OpenAI
- OpenAI
- Anthropic
- Node.js
- TypeScript