-
-
Isupport Homepage
-
Guest mode Agentic Support interface with voice, text and file upload input support
-
Logged-In mode Agentic Support interface with voice, text and file upload input support
-
Diagnostic Chat Session with uploaded Error Log file part 1
-
Diagnostic Chat Session with uploaded Error Log file part 2
-
Diagnostic Chat Session with uploaded Error Log file part 3
-
Diagnostic Chat Session with uploaded Error Log file part 4
-
Diagnostic Chat Session with uploaded Error Log file part 5
-
User Language preferences settings
-
User Preferred Agent Persona selection
-
Admin Portal Login
-
Admin Dashboard
-
Support Agent Persona Management
-
Runbook Management
-
Approved Software Download Sources
Inspiration
Information Technology (IT) support has always been reactive and at times, slow and frustrating. Users wait on hold, describe their problems to multiple agents being handed over from one subject matter expert to another, and often receive generic advice that doesn't account for their specific environment. We wanted to flip that experience entirely. Inspired by how seasoned IT engineers actually think that is: methodically, contextually, and empathetically . We built iSupport to bring that same structured expertise to anyone, instantly through Artificial Intelligence (AI). Our desire was to build something genuinely accessible: a support tool that speaks your language, literally, and works whether you prefer typing or talking. The idea of a platform that doesn't just chat but actually diagnoses the root cause and offers a solution was the spark that drove everything.
What it does
iSupport is an AI-powered IT support platform that guides users through a structured 8-phase diagnostic workflow — from symptom identification all the way to solution documentation. Every conversation follows a proven troubleshooting methodology:
- Symptom Identification
- Environment Assessment
- Impact Analysis
- Hypothesis Formation
- Systematic Testing
- Solution Implementation
- Verification
- Documentation (auto-captured to runbook)
Users interact via text or voice with named AI personas , for example Agent Sarah, that have distinct personalities and voice characteristics. The platform supports file and image uploads for multimodal analysis, automatically detects the user's language and responds in kind across 12+ languages, and enforces a tech-only guardrail so conversations stay focused and productive.
Successful resolutions are automatically saved to a runbook database with credibility scoring, making the system smarter over time. A subscription model with location-aware payment options gates access tiers, and a full admin portal gives platform operators visibility and control over users, metrics, and configuration.
How we built it
We used Spec-Driven Development approach with Kiro IDE to properly architect features of the platform and perform comprehensive testing.
Architecture Diagram
┌─────────────────────────────────────────────────────────────────────────┐
│ USER INTERFACE LAYER │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────────┐ │
│ │ Chat UI │ │ Admin Portal│ │ Auth / Payment UI │ │
│ │ (app.html) │ │ (admin.html)│ │ (index.html) │ │
│ └──────┬───────┘ └──────┬───────┘ └────────────┬─────────────┘ │
│ │ WebSocket │ REST │ REST │
└──────────┼──────────────────┼─────────────────────────┼────────────────┘
│ │ │
┌──────────▼──────────────────▼─────────────────────────▼────────────────┐
│ API / SERVER LAYER │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Express.js Server + Socket.IO │ │
│ │ /api/auth /api/chat /api/admin /api/payments /api/voice │ │
│ └──────────────────────────┬───────────────────────────────────────┘ │
│ │ │
│ ┌──────────────────────────▼───────────────────────────────────────┐ │
│ │ Middleware Layer │ │
│ │ Auth (JWT) │ Rate Limiter │ Tech Guardrail │ │
│ └──────────────────────────┬───────────────────────────────────────┘ │
└────────────────────────────── ┼ ───────────────────────────────────────┘
│
┌───────────────────────────────▼────────────────────────────────────────┐
│ BUSINESS LOGIC LAYER │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ ChatService (Diagnostic-First) │ │
│ │ All conversations → DiagnosticWorkflowService │ │
│ └──────────────────────────┬──────────────────────────────────────┘ │
│ │ │
│ ┌──────────────────────────▼──────────────────────────────────────┐ │
│ │ StrandsAgentService │ │
│ │ AWS Strands SDK │ Session Memory │ Persona System │ │
│ └──┬──────────┬───────────────┬──────────────────┬────────────────┘ │
│ │ │ │ │ │
│ ┌──▼──┐ ┌───▼────┐ ┌───────▼──────┐ ┌───────▼──────────────────┐ │
│ │Nova │ │Voice │ │Diagnostic │ │Runbook │ │
│ │Orch-│ │Service │ │Session │ │Service │ │
│ │estr-│ │ │ │Manager │ │(credibility scoring) │ │
│ │ator │ └───┬────┘ └──────────────┘ └──────────────────────────┘ │
│ └──┬──┘ │ │
└─────┼──────────┼──────────────────────────────────────────────────────┘
│ │
┌─────▼──────────▼──────────────────────────────────────────────────────┐
│ AWS SERVICES LAYER │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Nova Model Orchestration │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Nova Premier │ │ Nova Pro │ │ Nova Lite │ │ │
│ │ │ (Reasoning, │ │ (Images, │ │ (Language │ │ │
│ │ │ Guardrail, │ │ Video, │ │ Detection, │ │ │
│ │ │ Fillers) │ │ Screenshots)│ │ 200+ langs) │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Nova Sonic │ │Nova Embeddings│ │ Nova Act │ │ │
│ │ │ (Voice I/O, │ │ (File/Doc │ │ (Software │ │ │
│ │ │ Speech-to- │ │ Vectorize) │ │ Downloads) │ │ │
│ │ │ Speech) │ │ │ │ │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Voice Synthesis Fallback Chain │ │
│ │ Tier 1: Nova Sonic → Tier 2: Amazon Polly → Tier 3: Browser│ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ Voice Input Fallback Chain │ │
│ │ Tier 1: Nova Sonic → Tier 2: AWS Transcribe → Tier 3: Browser│ │
│ └──────────────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────────────┘
│
┌───────────────────────────────▼────────────────────────────────────────┐
│ DATA LAYER │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
│ │ SQLite (Dev) │ │ MySQL (Prod) │ │ Translation │ │
│ │ Users, Sessions │ │ Users, Sessions │ │ Cache (DB) │ │
│ │ Personas, │ │ Personas, │ │ │ │
│ │ Runbook │ │ Runbook │ │ │ │
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
└────────────────────────────────────────────────────────────────────────┘
Payment Layer:
┌────────────────────────────────────────────────────────────────────────┐
│ Stripe (Global: card, bank debit) │ Paynow (Zimbabwe: EcoCash) │
└────────────────────────────────────────────────────────────────────────┘
Backend
The server is built on Node.js with Express.js, using Socket.IO for real-time bidirectional streaming. All chat interactions are routed through a single ChatService that delegates to StrandsAgentService, which integrates the AWS Strands Agents SDK to give each persona persistent session memory and structured reasoning across the 8-phase diagnostic workflow.
Nova Model Orchestration
We built a NovaOrchestrator that intelligently routes every task to the right model:
- Nova Premier — complex reasoning, intent classification, human filler generation, tech guardrail enforcement
- Nova Pro — image and video analysis, extracting error messages from screenshots
- Nova Lite — language detection across 200+ languages, lightweight text processing
- Nova Sonic — primary speech-to-speech voice I/O
- Nova Embeddings — document vectorization, file content extraction
- Nova Act — automated software download guidance from approved manufacturer sources
Voice Architecture
Voice output uses a three-tier fallback: Nova Sonic → Amazon Polly (neural SSML) → Browser Speech API. Voice input mirrors this: Nova Sonic → AWS Transcribe (streaming) → Browser Speech Recognition. This ensures voice always works regardless of service availability. A VoiceTextProcessor handles intelligent coordination — when a response contains code or commands, the voice says "Here is the command on your screen" rather than reading characters aloud.
Diagnostic Workflow
DiagnosticWorkflowService implements the 8-phase framework as structured state. SessionResolutionService handles resolution confirmation and automatically captures successful solutions into the RunbookService with credibility scoring. Solutions with negative credibility scores are bypassed in favour of direct Nova reasoning.
Multilingual Support
LanguageService uses Nova Lite to detect language on every message. A TranslationCacheService caches UI element translations in the database to avoid redundant model calls. User language preferences (interface, conversation, voice) are persisted per account and applied across sessions.
Payments
PaymentService integrates both Stripe and Paynow, with location-aware routing — users in Zimbabwe are offered EcoCash and OneMoney, while global users get card and regional bank debit options.
Frontend
Vanilla HTML5/CSS/JS with marked.js + highlight.js for safe, syntax-highlighted markdown rendering. DOMPurify sanitises all AI-generated HTML before injection. The diagnostic progress UI streams phase updates in real time via WebSocket events.
Database
A factory pattern abstracts SQLite (development) and MySQL (production), with the admin portal providing ETL migration between the two.
Challenges we ran into
Making structured diagnostics feel human. An 8-phase workflow can easily feel like filling out a form. We had to layer in HumanLikeConversationService with empathetic fillers, contextual transitions, and adaptive phrasing — "Sorry to hear your machine is facing this issue, let's start by..." to make it feel like talking to a real engineer rather than a decision tree.
Voice synchronisation. Keeping Nova Sonic's streaming audio in sync with text streaming over WebSockets required a custom StreamingBufferOptimizer. Timing drift between voice playback and the typing effect animation was a persistent issue that needed careful coordination through metadata passed from Nova Premier to Nova Sonic.
Building resilient fallback chains. Nova Sonic isn't always available. Neither is Polly. We had to design both the voice output and voice input pipelines to degrade gracefully through three tiers without the user noticing a service switch.
Duplicate messages under rapid WebSocket events. Session state consistency across reconnects and rapid message sends caused duplicate delivery bugs that took significant debugging time to isolate and fix.
Balancing model cost vs quality. Routing every single message through Nova Premier would be expensive. We had to carefully define which tasks warranted Premier (reasoning, guardrail) vs Lite (language detection) vs Pro (file analysis) to keep costs manageable without sacrificing quality.
Accomplishments that we're proud of
The self-learning runbook is something we're genuinely proud of. The platform builds a searchable, credibility-scored knowledge base automatically from every resolved session, no human curation required. The more it's used, the smarter it gets.
The multilingual support : Nova Lite detects language mid-conversation and the entire UI, voice output, and AI responses adapt without the user doing anything. The translation cache means this doesn't strain the model on every page load.
Shipping a fully diagnostic-first architecture : Every single interaction uses the full Strands + Nova stack , this was an architectural commitment that paid off in consistency and quality.
This MVP proves that AI models such as Nova can be used in the Information Technology Support use case.
What we learned
We learned that structured AI workflows are significantly harder to make feel human than unstructured chat. The gap between "technically correct" and "actually pleasant to use" is enormous, and bridging it requires deliberate design at every layer — not just the model prompt.
We learned a lot about the Nova model family's distinct strengths. Routing the right task to the right model (Premier for reasoning, Lite for language detection, Pro for vision) makes a real difference in both output quality and cost. Treating them as a coordinated fleet rather than interchangeable options was the right call.
Building resilient fallback chains taught us to never assume a cloud service will be available, and to design for graceful degradation from day one rather than bolting it on later.
We also learned that WebSocket session state is deceptively complex , race conditions between connection events, persona loading, and session initialisation caused subtle bugs that only appeared under real usage patterns.
What's next for iSupport
Runbook-powered RAG. With enough resolved sessions, the runbook becomes a powerful retrieval-augmented generation layer where the AI cites proven solutions with confidence scores, dramatically reducing hallucination risk for common IT problems.
Proactive diagnostics. Agent hooks that monitor system telemetry and flag issues before users even notice them — shifting iSupport from reactive to predictive support.
Session initiated software downloads. If the user's solution requires installing a library, plugin or driver, isupport will use Nova Act to initiate a software download onto the user computer via browser. Isupport will contain a list of approved software vendors for software downloads.
Admin analytics dashboard. Resolution rate tracking, common failure category analysis, model cost attribution per session, and subscription conversion funnels turning iSupport into a platform that IT teams can actively optimise and measure ROI on.
Mobile app. The voice-first interaction model is a natural fit for mobile. A React Native client with push notifications for proactive diagnostics is the logical next step.
Built With
- aws-nova-models
- aws-polly
- aws-transcribe
- css3
- express.js
- html5
- javascript
- kiro
- mysql
- node.js
- sqlite
- strands-sdk

Log in or sign up for Devpost to join the conversation.