Spaces:
Sleeping
Sleeping
| import type { RFPAnswer } from '../stores/appStore' | |
| export interface DocumentOptions { | |
| title: string | |
| company: string | |
| date: string | |
| generatedBy: string | |
| rfpName?: string | |
| bidNumber?: string | |
| } | |
| export async function generateWordDocument( | |
| answers: RFPAnswer[], | |
| options: DocumentOptions | |
| ): Promise<Blob> { | |
| // Generate enhanced HTML content with proper styling for Word | |
| const htmlContent = generateWordCompatibleHTML(answers, options) | |
| // Create a more sophisticated document structure | |
| const wordContent = ` | |
| <!DOCTYPE html> | |
| <html xmlns:o="urn:schemas-microsoft-com:office:office" | |
| xmlns:w="urn:schemas-microsoft-com:office:word" | |
| xmlns="http://www.w3.org/TR/REC-html40"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="Generator" content="SEDNA Consulting Group RFP System"> | |
| <!--[if gte mso 9]> | |
| <xml> | |
| <w:WordDocument> | |
| <w:View>Print</w:View> | |
| <w:Zoom>90</w:Zoom> | |
| <w:DoNotPromptForConvert/> | |
| <w:DoNotShowInsertionsAndDeletions/> | |
| </w:WordDocument> | |
| </xml> | |
| <![endif]--> | |
| <style> | |
| @page { | |
| size: 8.5in 11in; | |
| margin: 0; | |
| } | |
| body { | |
| font-family: 'Arial', 'Calibri', sans-serif; | |
| font-size: 11pt; | |
| line-height: 1.15; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| .sedna-cover { | |
| width: 100%; | |
| height: 100vh; | |
| margin: 0; | |
| padding: 0; | |
| position: relative; | |
| background: white; | |
| page-break-after: always; | |
| overflow: hidden; | |
| } | |
| .geometric-background { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 65%; | |
| background: linear-gradient(135deg, | |
| #d3d3d3 0%, | |
| #a9a9a9 20%, | |
| #808080 40%, | |
| #404040 60%, | |
| #2c2c2c 80%, | |
| #1a1a1a 100% | |
| ); | |
| clip-path: polygon(0 0, 100% 0, 85% 100%, 0 80%); | |
| } | |
| .geometric-accent { | |
| position: absolute; | |
| top: 15%; | |
| right: 8%; | |
| width: 280px; | |
| height: 180px; | |
| background: linear-gradient(45deg, | |
| rgba(59, 130, 246, 0.2) 0%, | |
| rgba(59, 130, 246, 0.4) 50%, | |
| rgba(30, 64, 175, 0.3) 100% | |
| ); | |
| border-radius: 20px; | |
| transform: skew(-15deg, 0deg); | |
| } | |
| .tech-elements { | |
| position: absolute; | |
| top: 25%; | |
| right: 12%; | |
| width: 200px; | |
| height: 120px; | |
| } | |
| .person-icon { | |
| position: absolute; | |
| top: 20px; | |
| left: 80px; | |
| font-size: 48px; | |
| color: #fbbf24; | |
| text-shadow: 2px 2px 4px rgba(0,0,0,0.3); | |
| } | |
| .network-dots { | |
| position: absolute; | |
| top: 40px; | |
| left: 20px; | |
| width: 160px; | |
| height: 80px; | |
| } | |
| .network-dots::before { | |
| content: ''; | |
| position: absolute; | |
| width: 6px; | |
| height: 6px; | |
| background: rgba(255, 255, 255, 0.6); | |
| border-radius: 50%; | |
| box-shadow: | |
| 20px 0 rgba(255, 255, 255, 0.4), | |
| 40px 10px rgba(255, 255, 255, 0.5), | |
| 60px -5px rgba(255, 255, 255, 0.3), | |
| 80px 15px rgba(255, 255, 255, 0.4), | |
| 100px 5px rgba(255, 255, 255, 0.5), | |
| 120px 20px rgba(255, 255, 255, 0.3), | |
| 10px 25px rgba(255, 255, 255, 0.4), | |
| 30px 35px rgba(255, 255, 255, 0.5), | |
| 50px 30px rgba(255, 255, 255, 0.3), | |
| 70px 40px rgba(255, 255, 255, 0.4), | |
| 90px 35px rgba(255, 255, 255, 0.5), | |
| 110px 45px rgba(255, 255, 255, 0.3); | |
| } | |
| .rfp-title-section { | |
| position: absolute; | |
| top: 40%; | |
| left: 50%; | |
| transform: translate(-50%, -50%); | |
| text-align: center; | |
| color: white; | |
| z-index: 10; | |
| } | |
| .rfp-main-title { | |
| font-size: 48px; | |
| font-weight: bold; | |
| margin-bottom: 15px; | |
| text-shadow: 3px 3px 6px rgba(0,0,0,0.5); | |
| letter-spacing: 3px; | |
| } | |
| .rfp-subtitle { | |
| font-size: 20px; | |
| opacity: 0.9; | |
| text-shadow: 2px 2px 4px rgba(0,0,0,0.5); | |
| font-weight: 300; | |
| } | |
| .white-section { | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 35%; | |
| background: white; | |
| display: flex; | |
| align-items: center; | |
| padding: 0 60px; | |
| box-sizing: border-box; | |
| } | |
| .company-info-left { | |
| flex: 1; | |
| padding-right: 40px; | |
| } | |
| .company-info-right { | |
| flex: 1; | |
| padding-left: 40px; | |
| border-left: 2px solid #e2e8f0; | |
| } | |
| .company-name-large { | |
| font-size: 28px; | |
| font-weight: bold; | |
| color: #000; | |
| margin-bottom: 20px; | |
| letter-spacing: 1px; | |
| } | |
| .address-section h4 { | |
| font-size: 14px; | |
| font-weight: bold; | |
| color: #4a5568; | |
| margin-bottom: 8px; | |
| margin-top: 0; | |
| } | |
| .address-text { | |
| font-size: 13px; | |
| color: #4a5568; | |
| line-height: 1.5; | |
| margin: 0; | |
| } | |
| .contact-section h3 { | |
| font-size: 18px; | |
| font-weight: bold; | |
| color: #000; | |
| margin-bottom: 15px; | |
| margin-top: 0; | |
| text-decoration: underline; | |
| } | |
| .contact-section h4 { | |
| font-size: 14px; | |
| font-weight: bold; | |
| color: #4a5568; | |
| margin-bottom: 5px; | |
| margin-top: 15px; | |
| } | |
| .contact-name { | |
| font-size: 22px; | |
| font-weight: bold; | |
| color: #000; | |
| margin: 8px 0; | |
| } | |
| .contact-details { | |
| font-size: 13px; | |
| color: #4a5568; | |
| line-height: 1.6; | |
| margin: 0; | |
| } | |
| .website-banner { | |
| position: absolute; | |
| bottom: 20px; | |
| right: 60px; | |
| background: #4a5568; | |
| color: white; | |
| padding: 10px 25px; | |
| font-size: 16px; | |
| font-weight: bold; | |
| letter-spacing: 0.5px; | |
| } | |
| .page-break { | |
| page-break-before: always; | |
| padding: 40px; | |
| } | |
| .section-header { | |
| font-size: 24pt; | |
| font-weight: bold; | |
| color: #1e40af; | |
| margin: 0 0 25px 0; | |
| border-bottom: 3px solid #1e40af; | |
| padding-bottom: 10px; | |
| } | |
| .subsection-header { | |
| font-size: 16pt; | |
| font-weight: bold; | |
| color: #059669; | |
| margin: 25px 0 15px 0; | |
| background: #f0f9ff; | |
| padding: 8px 12px; | |
| border-left: 4px solid #059669; | |
| } | |
| .question-container { | |
| margin: 25px 0; | |
| padding: 20px; | |
| border: 1px solid #e2e8f0; | |
| border-radius: 8px; | |
| } | |
| .question-header { | |
| font-size: 18pt; | |
| font-weight: bold; | |
| color: #059669; | |
| margin: 0 0 20px 0; | |
| background: #f0f9ff; | |
| padding: 12px 15px; | |
| border-left: 4px solid #059669; | |
| } | |
| .question-label { | |
| font-size: 14pt; | |
| font-weight: bold; | |
| color: #7c3aed; | |
| margin: 15px 0 8px 0; | |
| } | |
| .question-content { | |
| font-size: 12pt; | |
| color: #374151; | |
| margin: 0 0 20px 0; | |
| padding: 10px; | |
| background: #faf5ff; | |
| border-left: 3px solid #7c3aed; | |
| } | |
| .answer-content { | |
| font-size: 11pt; | |
| color: #1f2937; | |
| line-height: 1.6; | |
| text-align: justify; | |
| margin: 0 0 15px 0; | |
| } | |
| .references-section { | |
| margin-top: 20px; | |
| padding-top: 15px; | |
| border-top: 1px solid #e2e8f0; | |
| } | |
| .references-label { | |
| font-size: 12pt; | |
| font-weight: bold; | |
| color: #dc2626; | |
| margin-bottom: 8px; | |
| } | |
| .references-content { | |
| font-size: 10pt; | |
| color: #7c3aed; | |
| padding: 10px; | |
| background: #faf5ff; | |
| border-left: 3px solid #7c3aed; | |
| } | |
| .section-intro { | |
| font-size: 12pt; | |
| color: #6b7280; | |
| font-style: italic; | |
| margin-bottom: 30px; | |
| padding: 15px; | |
| background: #f8f9fa; | |
| border-radius: 5px; | |
| } | |
| .toc-content { | |
| background: #f8f9fa; | |
| padding: 20px; | |
| border-radius: 8px; | |
| border: 1px solid #e2e8f0; | |
| } | |
| .capability-grid, .industry-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 10px; | |
| margin: 15px 0; | |
| } | |
| .capability-item, .industry-item { | |
| font-size: 11pt; | |
| color: #1f2937; | |
| padding: 8px; | |
| background: #f0f9ff; | |
| border-radius: 4px; | |
| border-left: 3px solid #3b82f6; | |
| } | |
| .summary-grid { | |
| display: grid; | |
| grid-template-columns: 1fr 1fr; | |
| gap: 30px; | |
| margin: 20px 0; | |
| } | |
| .summary-section { | |
| background: #f8f9fa; | |
| padding: 20px; | |
| border-radius: 8px; | |
| border: 1px solid #e2e8f0; | |
| } | |
| .summary-details { | |
| font-size: 11pt; | |
| color: #1f2937; | |
| line-height: 1.6; | |
| margin: 0; | |
| } | |
| .disclaimer-section { | |
| margin: 30px 0; | |
| padding: 20px; | |
| background: #fef2f2; | |
| border: 1px solid #fecaca; | |
| border-radius: 8px; | |
| } | |
| .disclaimer-text { | |
| font-size: 10pt; | |
| color: #7f1d1d; | |
| line-height: 1.5; | |
| margin: 0; | |
| } | |
| .document-footer { | |
| margin-top: 40px; | |
| text-align: center; | |
| } | |
| .footer-line { | |
| height: 3px; | |
| background: linear-gradient(90deg, #1e40af, #3b82f6, #1e40af); | |
| margin: 20px 0; | |
| } | |
| .footer-title { | |
| font-size: 16pt; | |
| font-weight: bold; | |
| color: #1e40af; | |
| margin-bottom: 10px; | |
| } | |
| .footer-copyright { | |
| font-size: 10pt; | |
| color: #6b7280; | |
| } | |
| .answer-text { | |
| font-size: 11pt; | |
| color: #1f2937; | |
| line-height: 1.6; | |
| margin: 10px 0; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| ${htmlContent} | |
| </body> | |
| </html>` | |
| await new Promise(resolve => setTimeout(resolve, 1000)) | |
| const blob = new Blob([wordContent], { | |
| type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' | |
| }) | |
| return blob | |
| } | |
| function generateWordCompatibleHTML(answers: RFPAnswer[], options: DocumentOptions): string { | |
| let htmlContent = ` | |
| <div class="sedna-cover"> | |
| <div class="geometric-background"></div> | |
| <div class="geometric-accent"></div> | |
| <div class="tech-elements"> | |
| <div class="person-icon">π€</div> | |
| <div class="network-dots"></div> | |
| </div> | |
| <div class="rfp-title-section"> | |
| <div class="rfp-main-title">RFP RESPONSE</div> | |
| <div class="rfp-subtitle">Professional Technology Solutions</div> | |
| </div> | |
| <div class="white-section"> | |
| <div class="company-info-left"> | |
| <div class="company-name-large">SEDNA CONSULTING GROUP</div> | |
| <div class="address-section"> | |
| <h4>HQ Address:</h4> | |
| <p class="address-text"> | |
| 860 US Route 1 N, Suite 102<br> | |
| Edison, NJ 08817 | |
| </p> | |
| </div> | |
| </div> | |
| <div class="company-info-right"> | |
| <div class="contact-section"> | |
| <h3>Main Point of Contact</h3> | |
| <h4>Name & Title:</h4> | |
| <div class="contact-name">Neha Arnold, CEO</div> | |
| <p class="contact-details"> | |
| <strong>Email:</strong> neha@sednacg.com<br> | |
| <strong>Phone #:</strong> 484-893-9910 | |
| </p> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="website-banner">www.sednacg.com</div> | |
| </div> | |
| <div class="page-break"> | |
| <div class="section-header">EXECUTIVE SUMMARY</div> | |
| <p class="answer-text"> | |
| Dear Evaluation Committee,<br><br> | |
| SEDNA Consulting Group is pleased to submit our comprehensive proposal in response to your | |
| ${options.rfpName || 'Request for Proposal'}${options.bidNumber ? ` (Bid No: ${options.bidNumber})` : ''}. | |
| As a leading provider of professional technology solutions, we bring extensive expertise, proven | |
| methodologies, and a commitment to excellence that ensures successful project outcomes.<br><br> | |
| Our response demonstrates:<br> | |
| β’ Deep understanding of your requirements and objectives<br> | |
| β’ Comprehensive technical capabilities and industry expertise<br> | |
| β’ Proven track record of successful project delivery<br> | |
| β’ Commitment to quality, innovation, and client satisfaction<br><br> | |
| We look forward to the opportunity to partner with ${options.company} and deliver exceptional | |
| results that exceed your expectations.<br><br> | |
| Sincerely,<br><br> | |
| <strong>Neha Arnold, CEO</strong><br> | |
| SEDNA Consulting Group<br> | |
| Phone: 484-893-9910<br> | |
| Email: neha@sednacg.com | |
| </p> | |
| </div> | |
| <div class="page-break"> | |
| <div class="section-header">TABLE OF CONTENTS</div> | |
| <div class="toc-content"> | |
| <p class="answer-text"> | |
| <strong>1. Executive Summary</strong> ................................................ Page 2<br><br> | |
| <strong>2. RFP Responses:</strong><br>` | |
| // Add table of contents entries for each question | |
| answers.forEach((answer, index) => { | |
| const questionTitle = answer.question.length > 60 | |
| ? answer.question.substring(0, 60) + "..." | |
| : answer.question | |
| htmlContent += ` <strong>Question ${index + 1}:</strong> ${questionTitle} .............. Page ${index + 4}<br>` | |
| }) | |
| htmlContent += `<br> | |
| <strong>3. Company Profile & Capabilities</strong> ................................. Page ${answers.length + 4}<br> | |
| <strong>4. Document Summary</strong> ............................................... Page ${answers.length + 5} | |
| </p> | |
| </div> | |
| </div> | |
| <div class="page-break"> | |
| <div class="section-header">RFP RESPONSES</div> | |
| <p class="section-intro"> | |
| The following sections provide comprehensive responses to each question in your RFP. | |
| Each response demonstrates our understanding of your requirements and our capability | |
| to deliver exceptional results. | |
| </p> | |
| </div>` | |
| // Add each question and answer | |
| answers.forEach((answer, index) => { | |
| htmlContent += ` | |
| <div class="question-container"> | |
| <div class="question-header">QUESTION ${index + 1}</div> | |
| <div class="question-label">QUESTION:</div> | |
| <div class="question-content">${answer.question}</div> | |
| <div class="question-label">RESPONSE:</div> | |
| <div class="answer-content">${answer.finalAnswer || answer.aiGeneratedAnswer}</div>` | |
| if (answer.citations && answer.citations.length > 0) { | |
| htmlContent += ` | |
| <div class="references-section"> | |
| <div class="references-label">REFERENCES:</div> | |
| <div class="references-content">` | |
| answer.citations.forEach((citation, citIndex) => { | |
| htmlContent += `[${citIndex + 1}] ${citation}<br>` | |
| }) | |
| htmlContent += `</div> | |
| </div>` | |
| } | |
| htmlContent += `</div>` | |
| if (index < answers.length - 1) { | |
| htmlContent += `<div class="page-break"></div>` | |
| } | |
| }) | |
| htmlContent += ` | |
| <div class="page-break"> | |
| <div class="section-header">COMPANY PROFILE & CAPABILITIES</div> | |
| <div class="subsection-header">ABOUT SEDNA CONSULTING GROUP</div> | |
| <p class="answer-text"> | |
| SEDNA Consulting Group is a premier technology consulting firm specializing in comprehensive | |
| IT solutions, digital transformation, and strategic consulting services. Founded with a mission | |
| to deliver exceptional value through innovative technology solutions, we have established | |
| ourselves as a trusted partner for organizations seeking to optimize their technology investments | |
| and achieve sustainable competitive advantages. | |
| </p> | |
| <div class="subsection-header">CORE CAPABILITIES</div> | |
| <div class="capability-grid"> | |
| <div class="capability-item">β’ Strategic Technology Consulting</div> | |
| <div class="capability-item">β’ System Integration & Implementation</div> | |
| <div class="capability-item">β’ Digital Transformation Services</div> | |
| <div class="capability-item">β’ Project Management & Delivery</div> | |
| <div class="capability-item">β’ Quality Assurance & Testing</div> | |
| <div class="capability-item">β’ Training & Knowledge Transfer</div> | |
| </div> | |
| <div class="subsection-header">INDUSTRY EXPERTISE</div> | |
| <div class="industry-grid"> | |
| <div class="industry-item">β’ Government & Public Sector</div> | |
| <div class="industry-item">β’ Healthcare & Life Sciences</div> | |
| <div class="industry-item">β’ Financial Services</div> | |
| <div class="industry-item">β’ Education & Research</div> | |
| <div class="industry-item">β’ Manufacturing & Industrial</div> | |
| <div class="industry-item">β’ Technology & Communications</div> | |
| </div> | |
| <div class="subsection-header">COMPETITIVE ADVANTAGES</div> | |
| <p class="answer-text"> | |
| β’ <strong>Proven Track Record:</strong> Successful delivery of complex technology initiatives<br> | |
| β’ <strong>Technical Expertise:</strong> Deep knowledge across multiple platforms and technologies<br> | |
| β’ <strong>Agile Methodologies:</strong> Adaptive delivery approaches that respond to changing needs<br> | |
| β’ <strong>Client Focus:</strong> Strong emphasis on client satisfaction and long-term partnerships<br> | |
| β’ <strong>Quality Assurance:</strong> Comprehensive QA and risk management practices | |
| </p> | |
| <div class="subsection-header">CERTIFICATIONS & STANDARDS</div> | |
| <p class="answer-text"> | |
| β’ ISO 9001:2015 Quality Management System<br> | |
| β’ CMMI Level 3 Process Maturity<br> | |
| β’ PMP Certified Project Managers<br> | |
| β’ Industry-specific security clearances and certifications | |
| </p> | |
| </div> | |
| <div class="page-break"> | |
| <div class="section-header">DOCUMENT SUMMARY</div> | |
| <div class="summary-grid"> | |
| <div class="summary-section"> | |
| <div class="subsection-header">RFP INFORMATION</div> | |
| <p class="summary-details"> | |
| <strong>RFP Name:</strong> ${options.rfpName || 'Request for Proposal'}<br> | |
| <strong>Bid Number:</strong> ${options.bidNumber || 'Not Specified'}<br> | |
| <strong>Client Organization:</strong> ${options.company}<br> | |
| <strong>Total Questions Answered:</strong> ${answers.length}<br> | |
| <strong>Document Date:</strong> ${new Date().toLocaleDateString('en-US', { | |
| year: 'numeric', | |
| month: 'long', | |
| day: 'numeric' | |
| })} | |
| </p> | |
| </div> | |
| <div class="summary-section"> | |
| <div class="subsection-header">SUBMISSION DETAILS</div> | |
| <p class="summary-details"> | |
| <strong>Submitted By:</strong> Neha Arnold, CEO<br> | |
| <strong>Contact Email:</strong> neha@sednacg.com<br> | |
| <strong>Contact Phone:</strong> 484-893-9910<br> | |
| <strong>Company Website:</strong> www.sednacg.com<br> | |
| <strong>Generated By:</strong> ${options.generatedBy} | |
| </p> | |
| </div> | |
| </div> | |
| <div class="disclaimer-section"> | |
| <div class="subsection-header">CONFIDENTIALITY NOTICE</div> | |
| <p class="disclaimer-text"> | |
| This document contains confidential and proprietary information of SEDNA Consulting Group. | |
| The information contained herein is submitted solely for the purpose of responding to the | |
| referenced Request for Proposal and may not be reproduced, distributed, or disclosed to | |
| third parties without the express written permission of SEDNA Consulting Group. | |
| </p> | |
| </div> | |
| <div class="document-footer"> | |
| <div class="footer-line"></div> | |
| <div class="footer-content"> | |
| <div class="footer-title">END OF DOCUMENT</div> | |
| <div class="footer-copyright">Β© ${new Date().getFullYear()} SEDNA CONSULTING GROUP - ALL RIGHTS RESERVED</div> | |
| </div> | |
| </div> | |
| </div>` | |
| return htmlContent | |
| } | |
| export function generateDocumentPreview( | |
| answers: RFPAnswer[], | |
| options: DocumentOptions | |
| ): string { | |
| const htmlContent = generateWordCompatibleHTML(answers, options) | |
| // Add CSS styles for web preview | |
| return ` | |
| <style> | |
| .preview-container { | |
| max-width: 8.5in; | |
| margin: 0 auto; | |
| background: white; | |
| box-shadow: 0 0 20px rgba(0,0,0,0.1); | |
| font-family: 'Calibri', 'Arial', sans-serif; | |
| } | |
| .cover-page { | |
| min-height: 800px; | |
| position: relative; | |
| background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%); | |
| } | |
| .geometric-header { | |
| background: linear-gradient(135deg, | |
| #a9a9a9 0%, | |
| #a9a9a9 25%, | |
| #404040 50%, | |
| #404040 75%, | |
| #202020 100%); | |
| height: 60%; | |
| position: relative; | |
| color: white; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| align-items: center; | |
| padding: 40px; | |
| } | |
| .tech-visual { | |
| position: absolute; | |
| top: 20%; | |
| right: 10%; | |
| width: 150px; | |
| height: 100px; | |
| background: radial-gradient(circle, rgba(59, 130, 246, 0.3) 30%, transparent 70%); | |
| border-radius: 15px; | |
| } | |
| .tech-icon { | |
| position: absolute; | |
| top: 25%; | |
| right: 15%; | |
| font-size: 36px; | |
| color: #fbbf24; | |
| } | |
| .main-title { | |
| font-size: 36px; | |
| font-weight: bold; | |
| text-align: center; | |
| margin: 20px 0; | |
| text-shadow: 2px 2px 4px rgba(0,0,0,0.3); | |
| letter-spacing: 2px; | |
| } | |
| .subtitle { | |
| font-size: 16px; | |
| text-align: center; | |
| opacity: 0.9; | |
| margin-bottom: 20px; | |
| } | |
| .company-section { | |
| background: white; | |
| padding: 30px; | |
| height: 40%; | |
| display: flex; | |
| align-items: center; | |
| } | |
| .company-left { | |
| flex: 1; | |
| padding-right: 30px; | |
| } | |
| .company-right { | |
| flex: 1; | |
| border-left: 2px solid #e2e8f0; | |
| padding-left: 30px; | |
| } | |
| .company-name { | |
| font-size: 24px; | |
| font-weight: bold; | |
| color: #000; | |
| margin-bottom: 15px; | |
| letter-spacing: 1px; | |
| } | |
| .contact-header { | |
| font-size: 16px; | |
| font-weight: bold; | |
| color: #000; | |
| margin-bottom: 15px; | |
| text-decoration: underline; | |
| } | |
| .contact-name { | |
| font-size: 18px; | |
| font-weight: bold; | |
| color: #000; | |
| margin: 10px 0; | |
| } | |
| .website-footer { | |
| position: absolute; | |
| bottom: 20px; | |
| right: 30px; | |
| background: #4a5568; | |
| color: white; | |
| padding: 8px 20px; | |
| font-size: 14px; | |
| font-weight: bold; | |
| } | |
| .page-break { | |
| margin: 40px 0; | |
| padding: 20px 0; | |
| border-top: 2px solid #e2e8f0; | |
| } | |
| .section-header { | |
| font-size: 24px; | |
| font-weight: bold; | |
| color: #1e40af; | |
| margin: 30px 0 20px 0; | |
| border-bottom: 3px solid #1e40af; | |
| padding-bottom: 10px; | |
| } | |
| .question-header { | |
| font-size: 18px; | |
| font-weight: bold; | |
| color: #059669; | |
| margin: 25px 0 15px 0; | |
| background: #f0f9ff; | |
| padding: 10px 15px; | |
| border-left: 4px solid #059669; | |
| } | |
| .question-text { | |
| font-size: 14px; | |
| font-weight: bold; | |
| color: #374151; | |
| margin: 15px 0 10px 0; | |
| } | |
| .answer-text { | |
| font-size: 12px; | |
| color: #1f2937; | |
| line-height: 1.6; | |
| margin: 10px 0; | |
| } | |
| .references { | |
| font-size: 11px; | |
| color: #7c3aed; | |
| margin: 15px 0; | |
| padding: 10px; | |
| background: #faf5ff; | |
| border-left: 3px solid #7c3aed; | |
| } | |
| </style> | |
| <div class="preview-container"> | |
| ${htmlContent} | |
| </div>` | |
| } | |
| function generateDocumentContent(answers: RFPAnswer[], options: DocumentOptions): string { | |
| const coverPage = ` | |
| SEDNA CONSULTING GROUP | |
| Professional Technology Solutions | |
| RFP RESPONSE | |
| ${options.rfpName || 'Request for Proposal'} | |
| ${options.bidNumber ? `Bid No: ${options.bidNumber}` : ''} | |
| Submitted To: ${options.company} | |
| Date: ${new Date().toLocaleDateString('en-US', { | |
| year: 'numeric', | |
| month: 'long', | |
| day: 'numeric' | |
| })} | |
| βββββββββββββββββββββββββββββββ | |
| Main Point of Contact: | |
| Neha Arnold, CEO | |
| Email: neha@sednacg.com | |
| Phone: 484-893-9910 | |
| HQ Address: | |
| 860 US Route 1 N, Suite 102 | |
| Edison, NJ 08817 | |
| www.sednacg.com | |
| βββββββββββββββββββββββββββββββ | |
| CONFIDENTIAL AND PROPRIETARY INFORMATION | |
| Β© ${new Date().getFullYear()} SEDNA CONSULTING GROUP | |
| ALL RIGHTS RESERVED | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| PAGE BREAK | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| EXECUTIVE SUMMARY | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| Dear Evaluation Committee, | |
| SEDNA Consulting Group is pleased to submit our comprehensive proposal in | |
| response to your Request for Proposal. As a leading provider of professional | |
| technology solutions, we bring extensive expertise, proven methodologies, and | |
| a commitment to excellence that ensures successful project outcomes. | |
| Our response demonstrates: | |
| β’ Deep understanding of your requirements and objectives | |
| β’ Comprehensive technical capabilities and industry expertise | |
| β’ Proven track record of successful project delivery | |
| β’ Commitment to quality, innovation, and client satisfaction | |
| We look forward to the opportunity to partner with ${options.company} and | |
| deliver exceptional results that exceed your expectations. | |
| Sincerely, | |
| Neha Arnold, CEO | |
| SEDNA Consulting Group | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| PAGE BREAK | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| TABLE OF CONTENTS | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| 1. Executive Summary ................................................ Page 2 | |
| 2. RFP Responses: | |
| ` | |
| let content = coverPage | |
| // Add table of contents entries for each question | |
| answers.forEach((answer, index) => { | |
| const questionTitle = answer.question.length > 60 | |
| ? answer.question.substring(0, 60) + "..." | |
| : answer.question | |
| content += ` Question ${index + 1}: ${questionTitle} .............. Page ${index + 4}\n` | |
| }) | |
| content += ` | |
| 3. Company Profile & Capabilities ................................. Page ${answers.length + 4} | |
| 4. Document Summary ............................................... Page ${answers.length + 5} | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| PAGE BREAK | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RFP RESPONSES | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ` | |
| answers.forEach((answer, index) => { | |
| content += ` | |
| QUESTION ${index + 1} | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| QUESTION: | |
| ${answer.question} | |
| RESPONSE: | |
| ${answer.finalAnswer || answer.aiGeneratedAnswer} | |
| ` | |
| if (answer.citations && answer.citations.length > 0) { | |
| content += `REFERENCES: | |
| ` | |
| answer.citations.forEach((citation, citIndex) => { | |
| content += `[${citIndex + 1}] ${citation}\n` | |
| }) | |
| } | |
| content += ` | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| PAGE BREAK | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ` | |
| }) | |
| content += ` | |
| COMPANY PROFILE & CAPABILITIES | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ABOUT SEDNA CONSULTING GROUP | |
| SEDNA Consulting Group is a premier technology consulting firm specializing in | |
| comprehensive IT solutions, digital transformation, and strategic consulting | |
| services. Founded with a mission to deliver exceptional value through innovative | |
| technology solutions, we have established ourselves as a trusted partner for | |
| organizations seeking to optimize their technology investments and achieve | |
| sustainable competitive advantages. | |
| CORE CAPABILITIES | |
| β’ Strategic Technology Consulting | |
| β’ System Integration & Implementation | |
| β’ Digital Transformation Services | |
| β’ Project Management & Delivery | |
| β’ Quality Assurance & Testing | |
| β’ Training & Knowledge Transfer | |
| INDUSTRY EXPERTISE | |
| β’ Government & Public Sector | |
| β’ Healthcare & Life Sciences | |
| β’ Financial Services | |
| β’ Education & Research | |
| β’ Manufacturing & Industrial | |
| β’ Technology & Communications | |
| COMPETITIVE ADVANTAGES | |
| β’ Proven track record of successful project delivery | |
| β’ Deep technical expertise across multiple platforms | |
| β’ Agile and adaptive delivery methodologies | |
| β’ Strong focus on client satisfaction and long-term partnerships | |
| β’ Comprehensive quality assurance and risk management practices | |
| CERTIFICATIONS & STANDARDS | |
| β’ ISO 9001:2015 Quality Management | |
| β’ CMMI Level 3 Process Maturity | |
| β’ PMP Certified Project Managers | |
| β’ Industry-specific security clearances | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| PAGE BREAK | |
| ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| DOCUMENT SUMMARY | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| RFP INFORMATION: | |
| β’ RFP Name: ${options.rfpName || 'Request for Proposal'} | |
| β’ ${options.bidNumber ? `Bid Number: ${options.bidNumber}` : 'Bid Number: Not Specified'} | |
| β’ Client: ${options.company} | |
| β’ Total Questions Answered: ${answers.length} | |
| DOCUMENT DETAILS: | |
| β’ Document Generated: ${new Date().toLocaleString()} | |
| β’ Generated By: ${options.generatedBy} | |
| β’ System: SEDNA Consulting Group RFP Management System | |
| β’ Version: 2.0 | |
| SUBMISSION INFORMATION: | |
| β’ Submitted By: Neha Arnold, CEO | |
| β’ Contact Email: neha@sednacg.com | |
| β’ Contact Phone: 484-893-9910 | |
| β’ Company Website: www.sednacg.com | |
| DISCLAIMER: | |
| This document contains confidential and proprietary information of SEDNA | |
| Consulting Group. The information contained herein is submitted solely for | |
| the purpose of responding to the referenced RFP and may not be reproduced | |
| or distributed without express written permission. | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| END OF DOCUMENT | |
| Β© ${new Date().getFullYear()} SEDNA CONSULTING GROUP | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ` | |
| return content | |
| } |