AI Consulting / Professional Services AI-Powered Web App (CustomGPT Chat Experience)

Launching a Branded CustomGPT Chatbot Portal with Secure OpenAI Assistants API

Built and deployed a responsive, branded chat interface connected to a proprietary CustomGPT via the OpenAI Assistants API—without transferring sensitive training data to developers. Productionized the backend on a VPS with auto-restart to keep the bot reliably online.

"From a barebones test page to a production-ready, branded AI chat portal—deployed overnight"
OpenAIAssistantsAPIGPT-4oRAGPythonSystemdVPScPanelResponsiveUI
Frontend
HTMLCSSJavaScript (Vanilla)Responsive Web Design
Backend
Python (API bridge/service)Linux (VPS)systemd
AI Models
OpenAI GPT-4o
Infrastructure
cPanelVPS HostingOpenAI Assistants API
< 24 hours
Time-to-deploy from offer acceptance to live dev portal
Rapid build + VPS deployment to https://dev.northernai.ca/
5
Retrieval results per query (optimized from 20)
Reduced \"max num results\" to improve relevance and lower token overhead in Assistants File Search
Auto-restart on reboot
Uptime resilience for the chatbot backend
systemd service configured to start/restart the Python app automatically

Problem Statement

The client had a proprietary, document-trained CustomGPT and an API key, but their dev server only hosted a plain test page. They needed a polished, on-brand chatbot experience that could be embedded on a subdomain, while also protecting sensitive customer-owned training data (could not be shared with the developer).

Our Approach

Architected a lightweight web chat UI on dev.northernai.ca and connected it to an OpenAI Assistant (API-accessible equivalent of a CustomGPT). Implemented a small Python service to broker requests to the Assistants API and deployed it on the client’s VPS under cPanel, then hardened runtime reliability using a managed process + systemd so the chatbot service automatically restarts on failure or reboot.

Proprietary-document Q&A via OpenAI Assistants (File Search)

Technical Details
Guided the client to create the OpenAI Assistant directly in their own OpenAI dashboard (to avoid transferring proprietary documents). Tuned retrieval behavior by reducing \"max num results\" from the default 20 to 5 to improve response focus and reduce context bloat/token pressure. Validated the assistant behavior with client-provided test questions/expected answers and advised on assistant instruction tweaks to prevent responses from unnecessarily citing internal file references.
Business Value
Delivered an AI chatbot that leverages the client’s proprietary knowledge base while maintaining strict data ownership boundaries. The client could update/attach documents inside OpenAI without developer access to source materials, enabling safer ongoing iteration and faster approvals from their sensitive end-customer.

Challenges We Solved

Secure Assistant creation without exposing proprietary training data

Client could not share CustomGPT instructions/documents due to strict confidentiality (third-party customer-owned content). Direct recreation by the developer would require access to sensitive files.

Implemented a workflow where the client created/configured the Assistant and uploaded files inside their own OpenAI account, then shared only the Assistant ID and API key. This preserved data boundaries while enabling full API integration.

OpenAI Assistants APIOpenAI Platform DashboardSecurity-by-design process

Token pressure and retrieval tuning in document-grounded chat

Client observed model/token issues during early testing and the assistant was returning overly verbose answers with unnecessary source-style references. Default retrieval size risked noisy context injection.

Validated model selection (GPT-4o) and tuned retrieval by limiting maximum results to 5, improving response focus and reducing excess context. Advised updating assistant instructions to suppress file/source callouts in user-facing answers.

GPT-4oOpenAI File Search / Retrieval settingsPrompt/Instruction tuning

Deploying behind cPanel pathing and permissions constraints

Initial deployment faced bugs related to cPanel directory structure and access constraints; needed correct document root and environment to serve the app reliably under a subdomain.

Identified the correct deployment target (/home/devnorthernai/public_html), aligned files accordingly, and completed deployment to the live dev subdomain.

cPanelLinux filesystemSSH

Productionizing the Python service for reliability

A chatbot bridge service must stay online; ad-hoc execution risks downtime on crashes or server reboot.

Created a process manager and configured a systemd unit to keep the Python app running continuously with automatic start on boot and restart on failure.

PythonsystemdLinux VPS

Live incident recovery months after launch

After months of operation, the portal began throwing errors; root cause unclear (server instability).

Re-accessed the environment (cPanel + OpenAI dashboard verification), checked Assistant status, and restored functionality; confirmed the app working again for the client.

cPanelOpenAI PlatformOperational troubleshooting

Project Timeline

1

Discovery

Reviewed the existing dev endpoint (single test page) and clarified constraints: connect to a custom-trained GPT experience via API while keeping proprietary documents private. Confirmed hosting environment (VPS with cPanel) and brand source (northernai.ca color palette).

2

Build

Designed and implemented a clean, branded, mobile-responsive chat UI. Guided the client through creating the OpenAI Assistant in their own account, integrated using the Assistant ID/API key, tested against known Q&A, and tuned retrieval settings for relevance.

3

Launch

Deployed to the dev subdomain document root on the VPS, then productionized the Python backend using systemd for auto-restart. Provided operational guidance (instruction tweaks, ongoing file updates) and later performed incident recovery to restore service.

Ready to Build Something Similar?

Let's discuss how we can help transform your business with AI.

Start Your Project