Enterprise Cloud Solutions, Powered by Intelligence

BPT Enterprise Service empowers businesses with AI-driven document management and intelligent chat solutions. Upload, analyze, and interact with your data seamlessly.

Get Started

Why BPT Enterprise Service?

Our platform combines enterprise-grade security with cutting-edge AI to transform how you work with documents.

Document Intelligence

Upload PDFs, Word documents, Excel spreadsheets, and text files. Our AI automatically processes, chunks, and indexes your content for instant retrieval.

AI-Powered Chat

Ask natural language questions and get accurate, well-formatted answers powered by Qwen AI, drawing from your entire document knowledge base.

Enterprise Security

Role-based access control, JWT authentication, and document-level permissions keep your data secure and organized.

About BPT Enterprise Service

BPT Enterprise Service (Blue Power Technology) is a technology company specializing in enterprise cloud infrastructure and AI-powered business solutions. Headquartered in Jakarta, we serve businesses across Southeast Asia with scalable, secure, and intelligent cloud platforms built on Alibaba Cloud.

500+
Enterprise Clients
10K+
Documents Processed
99.9%
Uptime SLA

Ask BPT Enterprise Service AI

Hi! I'm BPT Enterprise Service's AI assistant. Ask me anything about our services and solutions.

← Back to Home

Verify Your Email

We sent a 6-digit code to your email

Didn't receive the code? Resend
← Back to Login

Documents

0 docs 0 vectors

Click to upload or drag & drop

PDF, DOCX, XLSX, TXT, CSV (max 20MB)

Uploading...

Documents

Document Chunks

Loading chunks...

Chat with Documents

Ask questions about your uploaded documents. The AI will find relevant information and generate answers.

UserEmailRoleVerifiedStatusDocumentsLast LoginRegisteredActions
Loading users...
// Quotation Generator Functions var subscriptionType = 'monthly'; var boqData = null; function setSubscriptionType(type) { subscriptionType = type; document.getElementById('monthlyBtn').style.background = type === 'monthly' ? 'var(--primary)' : 'white'; document.getElementById('monthlyBtn').style.color = type === 'monthly' ? 'white' : 'var(--text)'; document.getElementById('monthlyBtn').style.borderColor = 'var(--primary)'; document.getElementById('yearlyBtn').style.background = type === 'yearly' ? 'var(--primary)' : 'white'; document.getElementById('yearlyBtn').style.color = type === 'yearly' ? 'white' : 'var(--text)'; document.getElementById('yearlyBtn').style.borderColor = 'var(--primary)'; if (boqData) updateBoqPreview(); } function handleBoQUpload(event) { var file = event.target.files[0]; if (!file) return; document.getElementById('boqFileName').style.display = 'block'; document.getElementById('boqFileNameText').textContent = file.name; showMessage('Loading BoQ file...', 'info'); var reader = new FileReader(); reader.onload = function(e) { try { var data = new Uint8Array(e.target.result); var workbook = XLSX.read(data, { type: 'array' }); if (!workbook.Sheets['Production']) { showMessage('Error: Excel file must contain a "Production" sheet', 'error'); return; } var jsonData = XLSX.utils.sheet_to_json(workbook.Sheets['Production'], { header: 1 }); parseBoQData(jsonData); } catch (err) { showMessage('Error parsing file: ' + err.message, 'error'); } }; reader.readAsArrayBuffer(file); } function parseBoQData(data) { var kurs = 19100; for (var i = 0; i < data.length; i++) { if (data[i][0] === 'KURS' || data[i][0] === 'Kurs') { kurs = parseFloat(data[i][1]) || 19100; break; } } boqData = { kurs: kurs, compute: null, gpu: null, rds: null, otherItems: null }; // Parse sections (simplified) var sections = ['Compute - No GPU', 'GPU', 'RDS', 'Other Items']; var currentSection = null; for (var i = 0; i < data.length; i++) { var row = data[i]; if (!row[0]) continue; for (var s = 0; s < sections.length; s++) { if (row[0].toString().includes(sections[s])) { currentSection = sections[s]; if (!boqData[currentSection === 'Compute - No GPU' ? 'compute' : currentSection === 'GPU' ? 'gpu' : currentSection === 'RDS' ? 'rds' : 'otherItems']) { var key = currentSection === 'Compute - No GPU' ? 'compute' : currentSection === 'GPU' ? 'gpu' : currentSection === 'RDS' ? 'rds' : 'otherItems'; boqData[key] = { items: [], totalMonthUSD: 0, totalYearUSD: 0 }; } break; } } if (currentSection && row[1] && typeof row[1] === 'string' && row[1].trim() !== '' && !row[0].toString().includes('TOTAL')) { var key = currentSection === 'Compute - No GPU' ? 'compute' : currentSection === 'GPU' ? 'gpu' : currentSection === 'RDS' ? 'rds' : 'otherItems'; if (boqData[key]) { boqData[key].items.push({ no: parseInt(row[0]) || boqData[key].items.length + 1, item: row[1], instanceType: row[2] || '', vCPU: parseInt(row[3]) || 0, ram: parseInt(row[4]) || 0, systemDisk: parseInt(row[6]) || 0, dataDisk: parseInt(row[8]) || 0, region: row[12] || 'Indonesia', qty: parseInt(row[13]) || 1, priceMonthUSD: parseFloat(row[14]) || 0, priceYearUSD: parseFloat(row[15]) || 0, monthlyIDR: (parseFloat(row[14]) || 0) * kurs, yearlyIDR: (parseFloat(row[15]) || 0) * kurs }); } } } // Calculate totals ['compute', 'gpu', 'rds', 'otherItems'].forEach(function(key) { if (boqData[key]) { boqData[key].totalMonthUSD = boqData[key].items.reduce(function(sum, item) { return sum + item.priceMonthUSD * item.qty; }, 0); boqData[key].totalYearUSD = boqData[key].items.reduce(function(sum, item) { return sum + item.priceYearUSD * item.qty; }, 0); } }); document.getElementById('customerInfoSection').style.display = 'block'; document.getElementById('boqPreviewSection').style.display = 'block'; document.getElementById('generateBtn').style.display = 'inline-block'; // Set default dates var today = new Date(); var validDate = new Date(today.getTime() + 30 * 24 * 60 * 60 * 1000); document.getElementById('dateOfIssue').value = today.toISOString().split('T')[0]; document.getElementById('validUntil').value = validDate.toISOString().split('T')[0]; document.getElementById('quoteReference').value = 'QT-' + today.getFullYear() + '-' + String(Date.now()).slice(-6); updateBoqPreview(); showMessage('BoQ file loaded successfully!', 'success'); } function updateBoqPreview() { if (!boqData) return; var html = ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; var totalUSD = 0; var totalIDR = 0; ['compute', 'gpu', 'rds', 'otherItems'].forEach(function(key) { if (boqData[key] && boqData[key].items.length > 0) { var usd = subscriptionType === 'monthly' ? boqData[key].totalMonthUSD : boqData[key].totalYearUSD; var idr = subscriptionType === 'monthly' ? boqData[key].totalMonthUSD * boqData.kurs : boqData[key].totalYearUSD * boqData.kurs; totalUSD += usd; totalIDR += idr; var label = key === 'compute' ? 'Compute - No GPU' : key === 'gpu' ? 'GPU' : key === 'rds' ? 'RDS' : 'Other Items'; html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; } }); html += ''; html += ''; html += ''; html += ''; html += ''; html += ''; html += '
SectionItems' + (subscriptionType === 'monthly' ? 'Monthly (USD)' : 'Yearly (USD)') + '' + (subscriptionType === 'monthly' ? 'Monthly (IDR)' : 'Yearly (IDR)') + '
' + label + '' + boqData[key].items.length + '$' + usd.toFixed(2) + 'Rp ' + idr.toLocaleString('id-ID', {maximumFractionDigits:0}) + '
Grand Total' + boqData.compute.items.length + boqData.gpu.items.length + boqData.rds.items.length + boqData.otherItems.items.length + '$' + totalUSD.toFixed(2) + 'Rp ' + totalIDR.toLocaleString('id-ID', {maximumFractionDigits:0}) + '
'; html += '

Exchange Rate (KURS): Rp ' + boqData.kurs.toLocaleString('id-ID') + '

'; document.getElementById('boqPreviewContent').innerHTML = html; } function showMessage(msg, type) { var el = document.getElementById('quotationMessage'); el.style.display = 'block'; el.style.background = type === 'error' ? '#fef2f2' : type === 'success' ? '#f0fdf4' : '#eff6ff'; el.style.color = type === 'error' ? '#dc2626' : type === 'success' ? '#16a34a' : '#2563eb'; el.textContent = msg; } function generateQuotationFile() { if (!boqData) { showMessage('Please upload a BoQ file first.', 'error'); return; } var customerName = document.getElementById('customerName').value.trim(); var customerEmail = document.getElementById('customerEmail').value.trim(); if (!customerName || !customerEmail) { showMessage('Please fill in customer name and email.', 'error'); return; } showMessage('Generating quotation...', 'info'); try { var workbook = XLSX.utils.book_new(); var data = []; // Header data.push(['PT. Blue Power Technology']); data.push(['Centennial Tower 12th floor']); data.push(['Jl. Gatot Subroto kav. 24-25']); data.push(['Jakarta Selatan, Indonesia']); data.push(['P. 021 806 22278 | F. 021 806 22279']); data.push(['www.bluepowertechnology.com']); data.push([]); // Customer Info data.push(['Customer Name', '', '', customerName]); data.push(['Address', '', '', document.getElementById('customerAddress').value]); data.push(['Email', '', '', customerEmail]); data.push(['Quote Reference', '', '', document.getElementById('quoteReference').value]); data.push(['Date Of Issue', '', '', document.getElementById('dateOfIssue').value]); data.push(['Valid Until', '', '', document.getElementById('validUntil').value]); data.push([]); // Subscription header var subType = subscriptionType === 'monthly' ? 'Monthly' : 'Yearly'; data.push(['Virtual Server : Indonesia']); data.push([subType + ' Subscription']); data.push(['Item', 'Description', 'Description', subType + ' Price (IDR)', subType + ' Price (IDR)']); // Items var allItems = boqData.compute.items.concat(boqData.gpu.items, boqData.rds.items, boqData.otherItems.items); allItems.forEach(function(item) { data.push(['Server #' + item.no, item.item, item.instanceType]); data.push(['Qty: ' + item.qty, item.vCPU + ' Core, ' + item.ram + ' GB RAM']); data.push(['Region: ' + item.region, 'System Disk ' + item.systemDisk + ' GB, Data Disk ' + item.dataDisk + ' GB']); var price = subscriptionType === 'monthly' ? item.monthlyIDR : item.yearlyIDR; data.push(['', '', '', price.toLocaleString('id-ID', {maximumFractionDigits:0}), price.toLocaleString('id-ID', {maximumFractionDigits:0})]); }); // Subtotal var subtotal = subscriptionType === 'monthly' ? (boqData.compute.totalMonthUSD + boqData.gpu.totalMonthUSD + boqData.rds.totalMonthUSD + boqData.otherItems.totalMonthUSD) * boqData.kurs : (boqData.compute.totalYearUSD + boqData.gpu.totalYearUSD + boqData.rds.totalYearUSD + boqData.otherItems.totalYearUSD) * boqData.kurs; data.push(['Sub Total', 'Sub Total', 'Sub Total', subtotal.toLocaleString('id-ID', {maximumFractionDigits:0}), subtotal.toLocaleString('id-ID', {maximumFractionDigits:0})]); data.push([]); // Discount var discount = parseFloat(document.getElementById('discount').value) || 0; var discountAmount = subtotal * (discount / 100); var partnerPrice = subtotal - discountAmount; data.push(['', '', 'Est User Price', subtotal.toLocaleString('id-ID', {maximumFractionDigits:0})]); data.push(['', '', 'Discount', discount + '%']); data.push(['', '', 'Est Partner Price', partnerPrice.toLocaleString('id-ID', {maximumFractionDigits:0})]); data.push([]); // Terms data.push(['Term of Payment:']); data.push(['1. ' + subType + ' basis, 100% - 2 weeks after invoice']); data.push(['2. Price quoted is under Rupiah']); data.push(['3. The exchange rate used is IDR ' + boqData.kurs]); var worksheet = XLSX.utils.aoa_to_sheet(data); XLSX.utils.book_append_sheet(workbook, worksheet, subType); var fileName = 'Quotation_' + document.getElementById('quoteReference').value + '_' + subscriptionType + '.xlsx'; XLSX.writeFile(workbook, fileName); showMessage('Quotation generated successfully! Check your downloads.', 'success'); } catch (err) { showMessage('Error generating quotation: ' + err.message, 'error'); } }