Spaces:
Runtime error
Runtime error
Delete service.py
Browse files- service.py +0 -1159
service.py
DELETED
|
@@ -1,1159 +0,0 @@
|
|
| 1 |
-
from fastapi import FastAPI, HTTPException
|
| 2 |
-
from pydantic import BaseModel
|
| 3 |
-
import os
|
| 4 |
-
from langgraph.graph import END
|
| 5 |
-
from langchain_google_genai import ChatGoogleGenerativeAI
|
| 6 |
-
from langchain_community.tools import DuckDuckGoSearchRun
|
| 7 |
-
from langgraph.graph import StateGraph
|
| 8 |
-
from typing import Dict, List
|
| 9 |
-
from docx import Document
|
| 10 |
-
# ✅ Set Google Gemini API Key
|
| 11 |
-
os.environ["GOOGLE_API_KEY"] = "AIzaSyCxfUhnGGmVjWy1PZJIpjv3hfBDkSDcWJA"
|
| 12 |
-
# ✅ Initialize Google Gemini Model
|
| 13 |
-
llm = ChatGoogleGenerativeAI(model="gemini-2.0-flash")
|
| 14 |
-
# ✅ Define Search Tool
|
| 15 |
-
search_tool = DuckDuckGoSearchRun(region="uk-en", safe="strict")
|
| 16 |
-
app = FastAPI()
|
| 17 |
-
class ContentState(Dict):
|
| 18 |
-
idea: str
|
| 19 |
-
company_name: str
|
| 20 |
-
services: Dict[str, List[str]] # Main services with their sub-services
|
| 21 |
-
service_area: Dict[str, Dict[str, str]] # Each area has multiple sub-service pages
|
| 22 |
-
research_data: str
|
| 23 |
-
seo_optimization: str
|
| 24 |
-
home_page: str
|
| 25 |
-
about_us_page: str
|
| 26 |
-
service_page: str
|
| 27 |
-
individual_service_page: Dict[str, str] # Single service pages
|
| 28 |
-
service_area_page: Dict[str, Dict[str, str]] # Each area with its sub-services
|
| 29 |
-
quality_score: int
|
| 30 |
-
feedback: str
|
| 31 |
-
content: str
|
| 32 |
-
data: str
|
| 33 |
-
text:str
|
| 34 |
-
meeting_point:str
|
| 35 |
-
file_path:str
|
| 36 |
-
|
| 37 |
-
# ✅ Define Workflow
|
| 38 |
-
workflow = StateGraph(ContentState)
|
| 39 |
-
|
| 40 |
-
# ✅ Research Task
|
| 41 |
-
def research_task(state: ContentState) -> ContentState:
|
| 42 |
-
research_query = f"{state['idea']}-{state['company_name']} - {state['services']}"
|
| 43 |
-
research_data = search_tool.run(research_query )
|
| 44 |
-
state.update({"research_data": research_data})
|
| 45 |
-
return state
|
| 46 |
-
|
| 47 |
-
# ✅ SEO Optimization Task
|
| 48 |
-
def seo_optimization_task(state: ContentState) -> ContentState:
|
| 49 |
-
prompt = f"Optimize the following research for SEO: {state['research_data']}"
|
| 50 |
-
seo_optimization = llm.invoke(prompt)
|
| 51 |
-
state.update({"seo_optimization": seo_optimization})
|
| 52 |
-
return state
|
| 53 |
-
|
| 54 |
-
# ✅ Content Writing Task (Generates Home, About Us, and Service Pages)
|
| 55 |
-
def content_writing_task(state: ContentState) -> ContentState:
|
| 56 |
-
research_data = state["research_data"]
|
| 57 |
-
seo_data = state["seo_optimization"]
|
| 58 |
-
services = "\n".join(f"- {service}" for service in state["services"])
|
| 59 |
-
main_services = list(state["services"].keys()) # Extract main service names
|
| 60 |
-
main_services_str = "\n".join(f"- {service}" for service in main_services) # Format for readability
|
| 61 |
-
services_list = [
|
| 62 |
-
subservice
|
| 63 |
-
for main_service, subservices in state["services"].items()
|
| 64 |
-
for subservice in subservices
|
| 65 |
-
]
|
| 66 |
-
|
| 67 |
-
service_area = "\n".join(f"- {area}" for area in state["service_area"])
|
| 68 |
-
company_name=state["company_name"]
|
| 69 |
-
prompts = {
|
| 70 |
-
"home_page": f"""You are an expert web content writer specializing in **SEO-optimized, high-converting website copy**. Your task is to write a compelling **Home Page** for a company named **{company_name}**, which provides **{services}**. Your writing should be persuasive, well-structured, and engaging while maintaining a clear, informative tone.
|
| 71 |
-
|
| 72 |
-
### **Key Requirements:**
|
| 73 |
-
|
| 74 |
-
#### **1. Engaging Headline & Subheadline:**
|
| 75 |
-
- Create a powerful, attention-grabbing **headline** that highlights the company’s expertise and core offering.
|
| 76 |
-
- Follow with a **subheadline** that builds trust and credibility while reinforcing key benefits.
|
| 77 |
-
|
| 78 |
-
#### **2. Strong Introduction (First 2-3 Sentences Must Hook the Reader):**
|
| 79 |
-
- Clearly introduce the company, its specialization, and the core services.
|
| 80 |
-
- Ensure the tone is professional yet friendly to build trust and engagement.
|
| 81 |
-
|
| 82 |
-
#### **3. Service Sections (Well-Structured & Persuasive):**
|
| 83 |
-
- **Break down key services** (**{services_list}**) into well-defined sections.
|
| 84 |
-
- Explain the benefits of each service using a persuasive yet informative style.
|
| 85 |
-
- Highlight **unique selling points** (e.g., fast installation, expert engineers, same-day service).
|
| 86 |
-
- If applicable, mention warranties, certifications, and brand affiliations.
|
| 87 |
-
- Service show in a paragraph. The heading should be the service name and then the paragraph should be the service description.
|
| 88 |
-
|
| 89 |
-
#### **4. Trust & Experience (Builds Authority):**
|
| 90 |
-
- Showcase the company’s years of experience, qualifications, and certifications.
|
| 91 |
-
- Mention **Gas Safe registration**, City and Guilds qualifications, or any other relevant credentials.
|
| 92 |
-
|
| 93 |
-
#### **5. Customer Benefits & Competitive Advantages:**
|
| 94 |
-
- Clearly **differentiate** this company from competitors.
|
| 95 |
-
- Emphasize **why customers should choose this business** (e.g., fast service, 7-day availability, great warranties).
|
| 96 |
-
- Mention any **freebies or added-value services** (e.g., “Free Smart Thermostat with Every Boiler Installation”).
|
| 97 |
-
|
| 98 |
-
#### **6. **Why Choose Us?** (Unique Selling Points)
|
| 99 |
-
- Emphasize what sets the company apart (e.g., 24/7 availability, warranties, financing options, and add other which give plus points).
|
| 100 |
-
- Reinforce a **customer-first approach**, focusing on transparency, trust, and superior service.
|
| 101 |
-
|
| 102 |
-
#### **7. Call to Action (Drives Conversions):**
|
| 103 |
-
- End with a **strong, action-oriented CTA**, such as:
|
| 104 |
-
- “Get a Free Quote Today – Call Now!”
|
| 105 |
-
- “Book Your Boiler Installation in Just 24 Hours!”
|
| 106 |
-
- Encourage urgency and easy next steps.
|
| 107 |
-
|
| 108 |
-
#### **8. SEO Optimization (Ensures Visibility):**
|
| 109 |
-
- Naturally integrate **high-ranking keywords** without keyword stuffing.
|
| 110 |
-
- Ensure content is structured for **readability and engagement**.
|
| 111 |
-
- Generate a **compelling meta description** (160 characters max) that improves search engine click-through rates.
|
| 112 |
-
|
| 113 |
-
#### **9. Local Relevance (If Applicable):**
|
| 114 |
-
- Ensure the content is adaptable to any location unless specified.
|
| 115 |
-
- If a location is provided, highlight **local expertise** and availability.
|
| 116 |
-
|
| 117 |
-
#### **10. Insights from Client Meeting (Ensures Accuracy & Alignment):**
|
| 118 |
-
- Incorporate key takeaways from the client meeting.
|
| 119 |
-
- Use the following extracted insights to align the website content with client expectations:
|
| 120 |
-
{state["meeting_point"]}
|
| 121 |
-
|
| 122 |
-
**Use the following research data for accuracy:**
|
| 123 |
-
{research_data}
|
| 124 |
-
|
| 125 |
-
**Apply these SEO best practices:**
|
| 126 |
-
{seo_data}
|
| 127 |
-
|
| 128 |
-
Ensure the content is UK based, use UK keywords, persuasive, engaging, and easy to read. Keep paragraphs short and **use bullet points for clarity when needed**. Your writing should feel **professional yet approachable**, with a strong focus on **conversion and engagement**.
|
| 129 |
-
Please do not provide code or HTML tags and avoid using colons in the middle of sentences.
|
| 130 |
-
""",
|
| 131 |
-
"about_us_page": f"""You are an expert web content writer skilled in crafting **engaging, structured, and customer-focused About Us pages**.
|
| 132 |
-
Write a professional and compelling **About Us** page for **{company_name}**, a trusted provider of **{services}**. The content must be well-structured, engaging, and clearly communicate the company’s mission, services, and coverage areas.
|
| 133 |
-
|
| 134 |
-
### **Key Requirements:**
|
| 135 |
-
|
| 136 |
-
#### **1. Introduction (Who We Are & What We Do)**
|
| 137 |
-
- Start with a strong, engaging introduction that:
|
| 138 |
-
- Establishes expertise and credibility.
|
| 139 |
-
- Mentions **years of experience, location, and key services**.
|
| 140 |
-
- Highlights the company’s commitment to **quality, customer satisfaction, and professional service**.
|
| 141 |
-
- Provide **detailed company information** to build trust and authority.
|
| 142 |
-
|
| 143 |
-
#### **2. Our Mission & Values**
|
| 144 |
-
- Describe the company’s **core values and commitment**:
|
| 145 |
-
- Integrity, professionalism, and high-quality service.
|
| 146 |
-
- Dedication to customer-first service and long-term client relationships.
|
| 147 |
-
|
| 148 |
-
#### **3. Service Overview (With Subservices in Bullet Points)**
|
| 149 |
-
- Display only **the services exactly as provided in `{services_list}`**, without modifying or adding extra services.
|
| 150 |
-
- Ensure subservices **stay in their original format** without splitting words.
|
| 151 |
-
- Example structure:
|
| 152 |
-
|
| 153 |
-
{services_list}
|
| 154 |
-
|
| 155 |
-
#### **4. Areas We Serve (Exact Format & Integrity Preserved)**
|
| 156 |
-
- Display only **the locations exactly as provided in `{service_area}`**.
|
| 157 |
-
- Ensure locations with **multiple words remain intact** (e.g., "Newton Abbot" will not split).
|
| 158 |
-
- Display in a **clean bullet-point list**.
|
| 159 |
-
|
| 160 |
-
{service_area}
|
| 161 |
-
|
| 162 |
-
#### **5. Insights from Client Meeting (Ensures Accuracy & Alignment)**
|
| 163 |
-
- Use the following extracted insights from the client meeting to align the content with their expectations:
|
| 164 |
-
{state["meeting_point"]}
|
| 165 |
-
|
| 166 |
-
#### **6. SEO Optimization (Improves Search Visibility)**
|
| 167 |
-
- Naturally integrate **SEO best practices** to improve online visibility.
|
| 168 |
-
- Use **high-ranking keywords** while ensuring natural readability.
|
| 169 |
-
- Maintain a **clear and structured format** to enhance search rankings.
|
| 170 |
-
- Include a **compelling meta description** (max 160 characters) for better click-through rates.
|
| 171 |
-
|
| 172 |
-
#### **7. Research-Based Accuracy**
|
| 173 |
-
- Ensure the content is aligned with industry standards and trends.
|
| 174 |
-
- Use the following research data to enhance credibility:
|
| 175 |
-
{research_data}
|
| 176 |
-
|
| 177 |
-
#### **8. Call to Action (Encouraging Customer Engagement)**
|
| 178 |
-
- End with a **clear and compelling CTA**, such as:
|
| 179 |
-
- **"For expert services in {service_area}, contact us today!"**
|
| 180 |
-
- **"Get in touch to schedule your consultation."**
|
| 181 |
-
|
| 182 |
-
### **Page Structure:**
|
| 183 |
-
1. **About {company_name}** (Introduction)
|
| 184 |
-
2. **Our Mission & Values** (Commitment to quality and customer satisfaction)
|
| 185 |
-
3. **Our Services** (List services dynamically from `{services_list}`)
|
| 186 |
-
4. **Areas We Cover** (List locations dynamically from `{service_area}`)
|
| 187 |
-
5. **Client Insights** (Incorporate `{state["meeting_point"]}` for alignment)
|
| 188 |
-
6. **SEO & Research** (Ensure factual accuracy and search visibility)
|
| 189 |
-
7. **Contact Us** (Call to Action)
|
| 190 |
-
|
| 191 |
-
Ensure the content is **concise, well-structured, and SEO-friendly**, using **bullet points** for readability and **natural keyword integration** for better search rankings.
|
| 192 |
-
Please do not provide code or HTML tags.
|
| 193 |
-
""",
|
| 194 |
-
|
| 195 |
-
|
| 196 |
-
"service_page": f"""You are a professional web content strategist and expert copywriter.
|
| 197 |
-
Create a **well-structured, engaging, and customer-focused service page** for {company_name}.
|
| 198 |
-
Ensure that **each main service has its own heading**, with **detailed descriptions of all corresponding subservices** underneath in a structured format.
|
| 199 |
-
|
| 200 |
-
---
|
| 201 |
-
|
| 202 |
-
### **Key Requirements:**
|
| 203 |
-
|
| 204 |
-
#### **1. Headline & Introduction**
|
| 205 |
-
- Start with a **strong, engaging headline** introducing the main service category.
|
| 206 |
-
- Provide a **concise yet compelling introduction**, highlighting why this service is important and how it benefits customers.
|
| 207 |
-
|
| 208 |
-
#### **2. Service Breakdown (Main Services & Corresponding Subservices)**
|
| 209 |
-
- Each **main service** from `{main_services_str}` should be displayed as a heading, followed by a structured description.
|
| 210 |
-
- **Format:** `## Main Service Name`
|
| 211 |
-
- Each **subservice** from `{services}` should be described thoroughly underneath its corresponding main service:
|
| 212 |
-
- **Format:** `### Subservice Name`
|
| 213 |
-
- **Include a full, well-structured description** that explains the service, its purpose, benefits, and any unique value it offers to customers.
|
| 214 |
-
|
| 215 |
-
#### **Example Format:**
|
| 216 |
-
|
| 217 |
-
## Solar Panel Installation**
|
| 218 |
-
At {company_name}, we provide expert solar panel installation services designed to maximize energy efficiency and savings. Our goal is to make solar energy accessible and affordable, ensuring that your home or business benefits from clean and sustainable power.
|
| 219 |
-
|
| 220 |
-
### **High-Quality Solar Panels Installed**
|
| 221 |
-
We offer premium-grade solar panels tailored to your property's energy needs. Our experts assess your location, energy consumption, and budget to create an optimal solar solution that maximizes savings and efficiency.
|
| 222 |
-
|
| 223 |
-
### **Professional System Maintenance**
|
| 224 |
-
Regular maintenance is essential for ensuring the longevity and performance of your solar energy system. Our team conducts thorough inspections, panel cleaning, and system diagnostics to maintain efficiency and extend the life of your investment.
|
| 225 |
-
|
| 226 |
-
### **Fast and Reliable Repairs**
|
| 227 |
-
If your solar panels or inverters develop faults, our skilled technicians provide prompt repair services to restore functionality. We quickly diagnose issues such as wiring problems, faulty components, and system inefficiencies, ensuring your system operates at peak performance.
|
| 228 |
-
|
| 229 |
-
### **Expert Solar Consultation**
|
| 230 |
-
Not sure which solar solution is best for your property? Our consultation services include detailed site evaluations, financial feasibility studies, and customized system design recommendations to help you make the best investment decision.
|
| 231 |
-
|
| 232 |
-
---
|
| 233 |
-
|
| 234 |
-
## Electrical Wiring**
|
| 235 |
-
Proper wiring ensures your solar power system functions safely and efficiently. At {company_name}, we provide expert electrical wiring services to guarantee seamless energy distribution from your solar panels to your home or business.
|
| 236 |
-
|
| 237 |
-
### **Fixed Wiring Solutions**
|
| 238 |
-
Our professional team offers high-quality fixed wiring solutions designed for maximum stability and efficiency. We ensure compliance with industry safety standards and optimal electrical performance for your solar system.
|
| 239 |
-
|
| 240 |
-
### **New Wiring Installations**
|
| 241 |
-
If your current electrical setup is outdated or inadequate for your solar energy needs, we provide new wiring installations that improve energy flow and ensure seamless connectivity between components.
|
| 242 |
-
|
| 243 |
-
---
|
| 244 |
-
|
| 245 |
-
#### **3. Service Process Overview**
|
| 246 |
-
- Provide a **clear, step-by-step breakdown** of how the service is delivered.
|
| 247 |
-
- Keep it **simple, engaging, and informative**.
|
| 248 |
-
|
| 249 |
-
#### **4. Insights from Client Meeting (Ensures Accuracy & Alignment)**
|
| 250 |
-
- Incorporate key takeaways from the client meeting to align service descriptions with customer expectations:
|
| 251 |
-
{state["meeting_point"]}
|
| 252 |
-
|
| 253 |
-
#### **5. Call to Action (CTA)**
|
| 254 |
-
- End with a **strong, persuasive CTA**, such as:
|
| 255 |
-
- **"Contact us today for a free consultation!"**
|
| 256 |
-
- **"Book your service now and enjoy hassle-free solar solutions."**
|
| 257 |
-
|
| 258 |
-
#### **6. SEO Optimization & Readability**
|
| 259 |
-
- Ensure content is **SEO-optimized** for better search rankings.
|
| 260 |
-
- Use **concise paragraphs, bullet points, and subheadings** for easy reading.
|
| 261 |
-
|
| 262 |
-
#### **7. Adaptability**
|
| 263 |
-
- **Do not mention specific locations unless required.**
|
| 264 |
-
- **Use this research:** {research_data}
|
| 265 |
-
- **Apply these SEO best practices:** {seo_data}
|
| 266 |
-
|
| 267 |
-
The content must be **engaging, structured, and persuasive**, ensuring customers can easily navigate and understand your services.
|
| 268 |
-
|
| 269 |
-
---
|
| 270 |
-
Please do not provide code or HTML tags.
|
| 271 |
-
""",
|
| 272 |
-
|
| 273 |
-
|
| 274 |
-
"individual_service_page": f"""
|
| 275 |
-
Each service listed below must have its **own dedicated page** with content that is **specific to that subservice**. **Ensure that a response is generated for every subservice** without skipping any.
|
| 276 |
-
|
| 277 |
-
**📌 Important Instructions:**
|
| 278 |
-
- Generate **a full separate response for each subservice** in `{services_list}`.
|
| 279 |
-
- Do **not** skip any subservice.
|
| 280 |
-
- Do **not** mix content between subservices.
|
| 281 |
-
- The content must be **unique for each subservice** and **not generic**.
|
| 282 |
-
- Maintain a **consistent format** and ensure high-quality, structured writing.
|
| 283 |
-
- The output must include **every subservice in the input list**.
|
| 284 |
-
- **Use SEO best practices** and relevant keywords for better search rankings.
|
| 285 |
-
|
| 286 |
-
---
|
| 287 |
-
|
| 288 |
-
🔹 **For each subservice in `{services_list}`, use the following structure:**
|
| 289 |
-
|
| 290 |
-
---
|
| 291 |
-
|
| 292 |
-
### **[Subservice Name]**
|
| 293 |
-
|
| 294 |
-
#### **Trusted [Subservice Name] Experts**
|
| 295 |
-
- Provide a compelling introduction emphasizing expertise and trustworthiness.
|
| 296 |
-
- Mention the experience and commitment to customer satisfaction.
|
| 297 |
-
|
| 298 |
-
#### **What is [Subservice Name]?**
|
| 299 |
-
- Define `[Subservice Name]` clearly and concisely.
|
| 300 |
-
- Explain how it works and why it is beneficial.
|
| 301 |
-
- Ensure the explanation is **exclusive to this subservice**.
|
| 302 |
-
|
| 303 |
-
#### **Why Choose Our [Subservice Name] Services?**
|
| 304 |
-
- List reasons why customers should trust your services.
|
| 305 |
-
- Highlight experience, qualifications, and customer-centric approach.
|
| 306 |
-
- Use **bullet points** for clarity.
|
| 307 |
-
|
| 308 |
-
#### **Key Benefits of [Subservice Name]**
|
| 309 |
-
- List the main benefits of this specific service.
|
| 310 |
-
- Explain how customers will benefit from choosing this service.
|
| 311 |
-
- Use **bullet points** for clarity.
|
| 312 |
-
|
| 313 |
-
#### **Signs You Need [Subservice Name] (if applicable)**
|
| 314 |
-
- Provide a list of signs that indicate when this service is needed.
|
| 315 |
-
- Keep it **directly relevant** to this service.
|
| 316 |
-
|
| 317 |
-
#### **How Our [Subservice Name] Process Works**
|
| 318 |
-
- Describe the process step by step in an easy-to-understand manner.
|
| 319 |
-
- Ensure clarity and professionalism.
|
| 320 |
-
|
| 321 |
-
#### **Insights from Client Meeting (Ensures Accuracy & Alignment)**
|
| 322 |
-
- Incorporate key takeaways from the client meeting to align content with expectations:
|
| 323 |
-
{state["meeting_point"]}
|
| 324 |
-
|
| 325 |
-
#### **SEO Optimization & Research-Based Accuracy**
|
| 326 |
-
- Integrate **high-ranking keywords** naturally for SEO optimization.
|
| 327 |
-
- Ensure content is structured for **readability and engagement**.
|
| 328 |
-
- Use the following research data to enhance credibility:
|
| 329 |
-
{research_data}
|
| 330 |
-
- Apply these **SEO best practices** for better visibility:
|
| 331 |
-
{seo_data}
|
| 332 |
-
|
| 333 |
-
#### **Call to Action**
|
| 334 |
-
- End with a strong **Call to Action (CTA)**, encouraging visitors to **book, contact, or request a quote**.
|
| 335 |
-
- Include a **phone number, email, or link** for immediate action.
|
| 336 |
-
|
| 337 |
-
---
|
| 338 |
-
|
| 339 |
-
**📌 Final Reminder:**
|
| 340 |
-
✅ **Generate content for every subservice** listed in `{services_list}`.
|
| 341 |
-
✅ Do **not** generate only one or a few subservices; all must be included.
|
| 342 |
-
✅ Keep responses **structured, engaging, and informative**.
|
| 343 |
-
✅ Maintain a **professional yet persuasive** tone.
|
| 344 |
-
✅ Ensure **SEO-friendly** and **human-like writing**.
|
| 345 |
-
✅ Do **not** include any code or HTML tags.
|
| 346 |
-
""",
|
| 347 |
-
|
| 348 |
-
|
| 349 |
-
"service_area_page": f"""
|
| 350 |
-
Generate a detailed and engaging service area page for {service_area}.
|
| 351 |
-
|
| 352 |
-
For each service in {services_list}, follow this structured format:
|
| 353 |
-
|
| 354 |
-
---
|
| 355 |
-
{service_area}
|
| 356 |
-
|
| 357 |
-
### [Unique, keyword-rich heading including the service name and {service_area}]
|
| 358 |
-
- Write a compelling introduction about this service, explaining its importance and benefits for customers in {service_area}.
|
| 359 |
-
- Highlight key features and how it addresses specific needs.
|
| 360 |
-
|
| 361 |
-
- Provide additional details, such as:
|
| 362 |
-
- The expertise of the team.
|
| 363 |
-
- Service quality and any guarantees.
|
| 364 |
-
- Unique aspects of this service in {service_area} (e.g., compliance with local regulations, availability, or exclusive offers).
|
| 365 |
-
|
| 366 |
-
- Ensure the content is **informative, specific, and valuable to the reader**.
|
| 367 |
-
- Maintain a **natural variation in wording** while keeping the format consistent across all services.
|
| 368 |
-
- Each service description should be in paragraph form, with the **service name as the heading** followed by the description.
|
| 369 |
-
- Ensure all services are displayed in full.
|
| 370 |
-
|
| 371 |
-
### **Insights from Client Meeting (Ensures Accuracy & Alignment)**
|
| 372 |
-
- Incorporate key takeaways from the client meeting to align the content with expectations:
|
| 373 |
-
{state["meeting_point"]}
|
| 374 |
-
|
| 375 |
-
### **SEO Optimization & Research-Based Accuracy**
|
| 376 |
-
- Naturally integrate **high-ranking keywords** for SEO optimization.
|
| 377 |
-
- Ensure content is structured for **readability and engagement**.
|
| 378 |
-
- Use the following research data to enhance credibility:
|
| 379 |
-
{research_data}
|
| 380 |
-
- Apply these **SEO best practices** for better search rankings:
|
| 381 |
-
{seo_data}
|
| 382 |
-
|
| 383 |
-
**Final Requirements:**
|
| 384 |
-
✅ Ensure content is **location-specific** to {service_area}.
|
| 385 |
-
✅ Keep the tone **professional, engaging, and informative**.
|
| 386 |
-
✅ Do **not** use generic descriptions—each service must be unique.
|
| 387 |
-
✅ Maintain **SEO-friendly** and **human-like writing**.
|
| 388 |
-
✅ Do **not** include any code or HTML tags.
|
| 389 |
-
""",
|
| 390 |
-
|
| 391 |
-
}
|
| 392 |
-
pages = {key: llm.invoke(prompt) for key, prompt in prompts.items()}
|
| 393 |
-
state.update(pages)
|
| 394 |
-
print("content_done")
|
| 395 |
-
return state
|
| 396 |
-
|
| 397 |
-
def refine_content(state: ContentState) -> ContentState:
|
| 398 |
-
company_name=state["company_name"]
|
| 399 |
-
|
| 400 |
-
prompts = {
|
| 401 |
-
"home_page": f"""You are an expert UK-based web content writer. Your task is to refine the following **Home Page Content** to match the structure, style, and detail level of top-tier UK service websites. The content should be well-organized, highly detailed, and formatted professionally.
|
| 402 |
-
---
|
| 403 |
-
|
| 404 |
-
### **Few-Shot Examples of Desired Structure (UK-Specific, Highly Detailed)**
|
| 405 |
-
|
| 406 |
-
#### **Example 1 - Exeter’s Heating Experts**
|
| 407 |
-
🏡 **Your Trusted Local Heating Specialists**
|
| 408 |
-
| Providing Gas Boiler Installations & Central Heating Solutions Across Exeter & South Devon
|
| 409 |
-
|
| 410 |
-
🔹 **Professional Boiler Installations – A-rated Efficiency & Reliability**
|
| 411 |
-
At **South Coast Plumbing and Heating**, we specialise in fitting modern **A-rated combi, traditional, and system boilers** from **Viessmann, Worcester Bosch, and Vaillant**—brands known for their exceptional reliability and energy efficiency. Our **Gas Safe registered engineers** ensure that your new boiler is installed safely, efficiently, and in compliance with **UK heating regulations**.
|
| 412 |
-
|
| 413 |
-
⭐ **Why Choose Us for Your Boiler Installation?**
|
| 414 |
-
✔ **Next-Day Boiler Fitting:** If your boiler breaks down unexpectedly, we can fit a **replacement boiler within 24 hours**.
|
| 415 |
-
✔ **Free Smart Thermostat:** Every boiler installation includes a **smart thermostat**, helping you **reduce energy bills** by up to 30%.
|
| 416 |
-
✔ **Extended Manufacturer’s Warranties:** We offer warranties of **up to 10 years** for select models, ensuring peace of mind.
|
| 417 |
-
|
| 418 |
-
🔹 **Experienced & Certified Heating Engineers**
|
| 419 |
-
Our team is **Gas Safe Registered** and **certified through City & Guilds**, with a **combined experience of over 40 years**. We’ve worked on **every type of heating system**, meaning we can handle anything from complex installations to emergency repairs.
|
| 420 |
-
|
| 421 |
-
📞 **Reliable Customer Service** – We always **answer your calls** and **respond promptly** to your inquiries, so you’re never left waiting when you need help.
|
| 422 |
-
|
| 423 |
-
🔹 **Air-Source Heat Pump Installations – Future-Proof Your Home**
|
| 424 |
-
Looking for a sustainable heating solution? We install **energy-efficient air-source heat pumps** that help **reduce carbon footprint** and **lower heating costs**. These systems **extract heat from the air** to provide **year-round warmth**, even in cold UK weather.
|
| 425 |
-
|
| 426 |
-
🔹 **Annual Boiler Servicing – Keep Your Heating System Running Smoothly**
|
| 427 |
-
Regular servicing extends the **lifespan of your boiler** and prevents costly breakdowns. Our **comprehensive servicing includes**:
|
| 428 |
-
✅ Checking for **gas leaks and corrosion**
|
| 429 |
-
✅ Testing **efficiency and emissions**
|
| 430 |
-
✅ Inspecting **safety controls and components**
|
| 431 |
-
✅ Cleaning & optimizing **internal parts**
|
| 432 |
-
|
| 433 |
-
🗓 **Book your annual servicing today** to keep your heating system in peak condition!
|
| 434 |
-
|
| 435 |
-
---
|
| 436 |
-
|
| 437 |
-
#### **Example 2 - Cheltenham Heating Solutions**
|
| 438 |
-
🔥 **Your Local Heating & Boiler Experts in Cheltenham, Gloucester, and Worcestershire**
|
| 439 |
-
|
| 440 |
-
✅ **New Gas Boilers - High Efficiency & Cost Savings**
|
| 441 |
-
We supply and install the **latest A-rated boilers** from **Worcester Bosch, Vaillant, and Ideal**. Our boilers come with **up to 10 years’ warranty** and are **professionally installed by our Gas Safe engineers**.
|
| 442 |
-
|
| 443 |
-
⭐ **Exclusive Benefits When You Choose Us:**
|
| 444 |
-
✔ **FREE Annual Boiler Servicing** – We service your boiler **free of charge** for the **entire length of your warranty**!
|
| 445 |
-
✔ **Flexible Finance Options** – Spread the cost of your new boiler with **0% interest-free finance**.
|
| 446 |
-
✔ **Expert Guidance & No Hard Sell** – We provide **honest advice** and won’t pressure you into unnecessary purchases.
|
| 447 |
-
|
| 448 |
-
📞 **Emergency Boiler Repairs - Fast Response**
|
| 449 |
-
Boiler failure? No heating or hot water? Our **emergency call-out service** ensures a **same-day response** to restore warmth to your home quickly.
|
| 450 |
-
|
| 451 |
-
🔹 **Comprehensive Central Heating Services**
|
| 452 |
-
From full **central heating system installations** to **power flushing** and **radiator repairs**, we offer a **complete range of services** to keep your home warm and energy-efficient.
|
| 453 |
-
|
| 454 |
-
🛠 **What We Offer:**
|
| 455 |
-
✅ **Gas Boiler Replacements & Repairs**
|
| 456 |
-
✅ **Landlord Gas Safety Certificates (CP12)**
|
| 457 |
-
✅ **Radiator & Thermostat Installations**
|
| 458 |
-
✅ **Power Flushing for Heating Systems**
|
| 459 |
-
✅ **Emergency Plumbing Services**
|
| 460 |
-
|
| 461 |
-
📍 **Areas We Cover:** Cheltenham, Gloucester, Tewkesbury, Worcester, Stroud, and surrounding areas.
|
| 462 |
-
|
| 463 |
-
---
|
| 464 |
-
|
| 465 |
-
### **NOW, Refine the Following Home Page Content to Match These High-Detail Examples:**
|
| 466 |
-
|
| 467 |
-
{state["home_page"].content}
|
| 468 |
-
|
| 469 |
-
---
|
| 470 |
-
|
| 471 |
-
### **📌 Instructions for Refinement (UK-Specific, Highly Detailed & Professional):**
|
| 472 |
-
✅ **Enhance Detail & Professionalism:** The content should be **well-structured, informative, and engaging**.
|
| 473 |
-
✅ **Use UK Spelling & Terminology:** Ensure terms like **Gas Safe, A-rated boilers, VAT, CP12 certificates, Smart Thermostats, 10-Year Warranties** are included.
|
| 474 |
-
✅ **Use UK city only :** If the city need then use only UK city not a other**.
|
| 475 |
-
✅ **Improve Readability:** Format with **clear headings, bullet points, and short paragraphs** for better user experience.
|
| 476 |
-
✅ **Make it SEO-Friendly (Without Being Robotic):** Use relevant keywords naturally, ensuring it reads as **authentic, high-quality website content**.
|
| 477 |
-
✅ **Focus on Benefits & Trustworthiness:** Clearly outline **why customers should choose this company**, including guarantees, fast response times, expert knowledge, and certifications.
|
| 478 |
-
✅ **Ensure Content is UK Market-Specific:** Adapt services, pricing models, and customer expectations to fit UK consumer standards.
|
| 479 |
-
✅ Do NOT modify punctuation or add extra symbols. Maintain the original punctuation exactly as provided.
|
| 480 |
-
✅ Do NOT add colon in the center of the sentence.
|
| 481 |
-
|
| 482 |
-
Return the improved home page content in a **fully structured, highly detailed, and polished format** suitable for a professional UK service business website.
|
| 483 |
-
Not give any code and html tags.""",
|
| 484 |
-
|
| 485 |
-
"about_us_page": f""" You are an expert UK-based content writer specializing in home services. Your task is to refine the following **About Us Page Content** for a heating and plumbing company to match the structure, style, and detail level of top-tier UK service websites. The content should be well-organized, informative, and highly professional.
|
| 486 |
-
---
|
| 487 |
-
### **Few-Shot Examples of Desired Structure (UK-Specific, Highly Detailed)**
|
| 488 |
-
|
| 489 |
-
#### **Example 1 - South Coast Plumbing and Heating**
|
| 490 |
-
🏡 **Experienced Heating & Plumbing Specialists in Exeter, Devon**
|
| 491 |
-
|
| 492 |
-
**South Coast Plumbing and Heating** is a trusted team of **Gas Safe-registered engineers and certified plumbers** with over **20 years of industry experience**. We proudly serve **both domestic and commercial clients** across **Exeter, Devon, and the surrounding areas**, offering comprehensive heating and plumbing services.
|
| 493 |
-
|
| 494 |
-
🔹 **Our Expertise Includes:**
|
| 495 |
-
✔ **New Gas & Oil Boiler Installations** – We specialise in the installation of modern **A-rated gas and oil boilers**, ensuring energy-efficient heating solutions for homes and businesses.
|
| 496 |
-
✔ **Boiler Repairs & Servicing** – Our **Gas Safe registered engineers** carry out professional repairs and servicing, extending the lifespan of your boiler and preventing costly breakdowns.
|
| 497 |
-
✔ **Air-Source Heat Pumps** – We install **renewable heating systems**, such as **air-source heat pumps**, to provide a **sustainable alternative** to traditional heating.
|
| 498 |
-
✔ **Central Heating Systems & Power Flushing** – Our team also handles full central heating installations and **system power flushing**, ensuring that your home stays warm and your heating system operates at peak performance.
|
| 499 |
-
|
| 500 |
-
🔹 **Why Choose Us?**
|
| 501 |
-
✔ **Over 20 Years of Experience** – We’ve built our reputation by delivering **reliable, affordable, and high-quality services**.
|
| 502 |
-
✔ **24/7 Emergency Plumbing** – We’re available around the clock for emergency plumbing needs.
|
| 503 |
-
✔ **Fully Qualified & Gas Safe Registered** – All our engineers are **fully certified**, offering peace of mind that your home is in expert hands.
|
| 504 |
-
✔ **Areas We Cover:** Exeter, Exmouth, Newton Abbot, Taunton, Honiton, and surrounding areas.
|
| 505 |
-
|
| 506 |
-
🔹 **Our Commitment:**
|
| 507 |
-
At **South Coast Plumbing and Heating**, we focus on delivering a **personalised, customer-centric service**. We believe in honesty, integrity, and **exceptional workmanship**. Whether it’s a routine boiler service or an urgent repair, we treat every project with the same level of care and professionalism.
|
| 508 |
-
|
| 509 |
-
---
|
| 510 |
-
|
| 511 |
-
#### **Example 2 - Superior Heat Solutions**
|
| 512 |
-
🔥 **Your Local Heating Experts in Central Scotland**
|
| 513 |
-
|
| 514 |
-
At **Superior Heat Solutions**, we take pride in our team’s **14+ years of experience** in the heating and plumbing industry. We provide **high-quality, energy-efficient solutions** to meet your unique needs—whether it’s a new boiler, **central heating repairs**, or a **full bathroom installation**.
|
| 515 |
-
|
| 516 |
-
🔹 **Our Core Services Include:**
|
| 517 |
-
✔ **New Boiler Installations** – We offer **A-rated gas boilers** from leading brands such as **Vaillant, Worcester Bosch, and Ideal**, backed by up to **10-year warranties**.
|
| 518 |
-
✔ **Air Source Heat Pumps** – Our engineers are skilled in installing **eco-friendly heat pumps**, which help reduce carbon emissions and lower heating costs.
|
| 519 |
-
✔ **Power Flushing** – We provide professional **power flushing services** to remove sludge and debris from your heating system, improving efficiency and performance.
|
| 520 |
-
✔ **General Plumbing Services** – From fixing leaks to **installing new radiators**, our team is equipped to handle all your plumbing needs.
|
| 521 |
-
|
| 522 |
-
🔹 **Our Promise to You:**
|
| 523 |
-
✔ **Guaranteed Quality Work** – We stand behind our work, ensuring that every project is completed to the **highest standard**.
|
| 524 |
-
✔ **Affordable Pricing & Transparent Quotes** – We promise to beat any written quote for **boiler installations**, ensuring you get the best value for money.
|
| 525 |
-
✔ **Constant Communication** – We keep you updated at every stage of the project, offering clear guidance and transparent advice.
|
| 526 |
-
|
| 527 |
-
🔹 **Areas We Serve:**
|
| 528 |
-
We proudly serve **Cheltenham**, **Gloucester**, **Tewkesbury**, **Stroud**, and the surrounding areas in **Central Scotland**.
|
| 529 |
-
|
| 530 |
-
---
|
| 531 |
-
|
| 532 |
-
### **NOW, Refine the Following About Us Content to Match These High-Detail Examples:**
|
| 533 |
-
|
| 534 |
-
{state["about_us_page"].content}
|
| 535 |
-
|
| 536 |
-
---
|
| 537 |
-
|
| 538 |
-
### **📌 Instructions for Refinement (UK-Specific, Highly Detailed & Professional):**
|
| 539 |
-
✅ **Enhance Detail & Professionalism:** The content should be **well-structured**, **clear**, and **engaging**.
|
| 540 |
-
✅ **Use UK Spelling & Terminology:** Ensure terms like **Gas Safe**, **A-rated boilers**, **VAT**, and **renewable energy** are included.
|
| 541 |
-
✅ **Improve Readability:** Use **clear headings**, **bullet points**, and **short paragraphs** for ease of reading.
|
| 542 |
-
✅ **Focus on Benefits & Trustworthiness:** Make sure to clearly outline **why customers should choose this company**, highlighting **experience, customer service, and certifications**.
|
| 543 |
-
✅ **Make it SEO-Friendly:** Integrate **relevant UK-based keywords** naturally into the content to improve SEO ranking without sacrificing readability.
|
| 544 |
-
✅ **Include Location Details & Coverage Areas:** Clearly specify the regions served, emphasizing the **local expertise** of the business.
|
| 545 |
-
|
| 546 |
-
Return the improved **About Us Page** content in a **fully structured, highly detailed, and polished format** suitable for a professional UK service business website.
|
| 547 |
-
Not give any code and html tags.""",
|
| 548 |
-
|
| 549 |
-
|
| 550 |
-
|
| 551 |
-
|
| 552 |
-
"service_page": f""" You are an expert in creating **SEO-optimized, highly detailed, and engaging** service pages for business websites.
|
| 553 |
-
Your task is to **refine the service page content** to make it more structured, comprehensive, and conversion-friendly.
|
| 554 |
-
|
| 555 |
-
### **Instructions for Refinement:**
|
| 556 |
-
- **Expand Each Section** – Provide **in-depth descriptions** of the services, including their **benefits and processes**.
|
| 557 |
-
- **Use Clear Headings & Subheadings** – Structure the content properly for **better readability and SEO**.
|
| 558 |
-
- **Highlight Key Features with Bullet Points** – Make the information **easy to scan and engaging**.
|
| 559 |
-
- **Incorporate Persuasive & Actionable Language** – Encourage visitors to **take action** (e.g., **"Get a Free Quote Today!"**).
|
| 560 |
-
- **Ensure Natural Keyword Integration** – Optimize for **search engines** while keeping it human-friendly.
|
| 561 |
-
- **Mention the Location Where Relevant** – If the services are location-specific, naturally include city names.
|
| 562 |
-
|
| 563 |
-
---
|
| 564 |
-
|
| 565 |
-
### **Examples of Well-Structured Service Pages:**
|
| 566 |
-
|
| 567 |
-
#### **🔹 Emergency Plumbing Services in Lancashire**
|
| 568 |
-
At **Jaws Gas Services**, we specialize in **fast-response emergency plumbing** across Lancashire, covering areas like **Blackburn, Bolton, Burnley, Preston, and Blackpool**. Our team is available **24/7** to handle urgent plumbing problems.
|
| 569 |
-
|
| 570 |
-
### **Why Choose Our Emergency Plumbing Service?**
|
| 571 |
-
✅ **Rapid Response:** We arrive quickly to prevent further damage.
|
| 572 |
-
✅ **Expert Repairs:** Skilled plumbers with years of experience.
|
| 573 |
-
✅ **Transparent Pricing:** No hidden charges—just fair, upfront costs.
|
| 574 |
-
✅ **Local & Trusted:** A dedicated Lancashire-based team you can rely on.
|
| 575 |
-
|
| 576 |
-
### **Common Emergency Plumbing Issues We Fix:**
|
| 577 |
-
- **Burst Pipes & Leaks** – We quickly repair and replace damaged pipes.
|
| 578 |
-
- **No Hot Water** – We diagnose and fix heating system failures.
|
| 579 |
-
- **Blocked Drains & Toilets** – Swift solutions to prevent overflow and backups.
|
| 580 |
-
|
| 581 |
-
🚀 **Don't wait—call Jaws Gas Services for emergency plumbing now!**
|
| 582 |
-
|
| 583 |
-
---
|
| 584 |
-
|
| 585 |
-
#### **🔹 Professional Boiler Installation in Scotland**
|
| 586 |
-
At **Superior Heat Solutions**, we provide **top-quality boiler installation** services throughout Scotland. Whether you're replacing an old unit or installing a brand-new system, we have the expertise to **fit high-efficiency A-rated boilers** from top manufacturers.
|
| 587 |
-
|
| 588 |
-
### **Why Choose Us for Your Boiler Installation?**
|
| 589 |
-
🔥 **Expert Installation:** We fit combi, system, and conventional boilers.
|
| 590 |
-
🔥 **Affordable Pricing:** Competitive rates with flexible finance options.
|
| 591 |
-
🔥 **Energy Efficiency:** Save on heating bills with our A-rated systems.
|
| 592 |
-
🔥 **Hassle-Free Process:** From selection to installation, we handle everything.
|
| 593 |
-
|
| 594 |
-
🚀 **Upgrade your heating today—book a free consultation!**
|
| 595 |
-
|
| 596 |
-
---
|
| 597 |
-
|
| 598 |
-
### **🔹 Power Flushing Service in Exeter**
|
| 599 |
-
Does your heating system take too long to warm up? Our **power flushing service** removes sludge, rust, and debris to restore your **radiators’ efficiency**.
|
| 600 |
-
|
| 601 |
-
### **Benefits of Power Flushing:**
|
| 602 |
-
💧 **Improved Heat Distribution:** Say goodbye to cold spots in your home.
|
| 603 |
-
💧 **Lower Energy Bills:** A cleaner system runs more efficiently.
|
| 604 |
-
💧 **Prevents Boiler Damage:** Extends the life of your heating system.
|
| 605 |
-
|
| 606 |
-
**Starting from just £300**—get in touch today to book your power flush!
|
| 607 |
-
|
| 608 |
-
---
|
| 609 |
-
|
| 610 |
-
### **Now, refine the following service page content into a highly detailed, structured, and persuasive version like the examples above:**
|
| 611 |
-
|
| 612 |
-
{state["service_page"].content}
|
| 613 |
-
|
| 614 |
-
**Make sure to:**
|
| 615 |
-
- Expand the details of each section.
|
| 616 |
-
- Use structured headings and subheadings.
|
| 617 |
-
- Improve the **clarity, engagement, and persuasiveness** of the content.
|
| 618 |
-
- Include **strong call-to-action statements**.
|
| 619 |
-
- Ensure **SEO optimization** with natural keyword integration.
|
| 620 |
-
- Not Mention any location.
|
| 621 |
-
- All the data shown in a pargraph.
|
| 622 |
-
|
| 623 |
-
Provide the refined content in a **well-formatted and professional** manner.
|
| 624 |
-
Not give any code and html tags.
|
| 625 |
-
|
| 626 |
-
""",
|
| 627 |
-
|
| 628 |
-
"individual_service_page": f"""
|
| 629 |
-
Your **task** is to **rewrite and refine** the given service page content while ensuring that it follows the diverse structures, tones, and formatting of the provided examples.
|
| 630 |
-
|
| 631 |
-
### **Instructions**
|
| 632 |
-
- Carefully **analyze the example service pages**—each subservice follows a unique structure.
|
| 633 |
-
- **Do not copy or mix example content into the final output.** The provided examples are for structure reference only.
|
| 634 |
-
- **Do not use bullet points** or repetitive templates. Instead, ensure the content is presented in well-structured paragraphs.
|
| 635 |
-
- Keep the writing **clear, professional, and SEO-friendly**, optimizing for readability and engagement.
|
| 636 |
-
- Structure the content with **logical transitions** between sections while maintaining a natural, narrative flow.
|
| 637 |
-
Is there name use of company name used this name {company_name}.
|
| 638 |
-
Not add any specific area in the content and not add colon in the center of the sentence.
|
| 639 |
-
|
| 640 |
-
---
|
| 641 |
-
|
| 642 |
-
### **Example Formats of Well-Structured Service Pages**
|
| 643 |
-
The following examples are for structure reference only. **Do not mix their content into the final response.**
|
| 644 |
-
|
| 645 |
-
#### **Example 1:
|
| 646 |
-
Oil Boilers Page**
|
| 647 |
-
- Trusted Oil Boiler Installation Experts
|
| 648 |
-
|
| 649 |
-
At South Coast Plumbing and Heating, we specialise in installing high-quality oil boilers. With years of expertise, we are committed to providing exceptional service to our valued customers across Devon.
|
| 650 |
-
|
| 651 |
-
- What Are Oil Boilers?
|
| 652 |
-
|
| 653 |
-
Oil boilers are reliable and efficient heating solutions for properties not connected to the gas grid. They burn heating oil to provide heat and hot water, making them ideal for rural homes and businesses. Modern oil boilers are designed to be energy-efficient, helping to reduce fuel costs and environmental impact.
|
| 654 |
-
The lifespan of an oil boiler typically ranges between 15 to 20 years, depending on regular maintenance and servicing. By investing in a high-quality boiler and ensuring it is properly maintained, you can enjoy consistent heating and hot water for many years to come.
|
| 655 |
-
|
| 656 |
-
- Ask Us About Fitting your New Oil Boiler
|
| 657 |
-
|
| 658 |
-
We understand that every property is unique, so we offer tailored solutions to meet your heating needs. Whether you’re replacing an old boiler or installing a new one, you can trust us to get the job done efficiently and to the highest standard.
|
| 659 |
-
Ready to upgrade your heating system? Get in touch with South Coast Plumbing and Heating for a free quote. Let us help you stay warm and comfortable all year round!
|
| 660 |
-
|
| 661 |
-
|
| 662 |
-
---
|
| 663 |
-
|
| 664 |
-
#### **Boiler Servicing Funnel Text**
|
| 665 |
-
- Online Booking For Boiler Services
|
| 666 |
-
|
| 667 |
-
An annual boiler service is essential to keep your boiler running smoothly all year. Regular maintenance is also usually required to maintain warranties and help prevent system breakdowns. Book us, your local boiler and heating team, for your annual boiler service in Exeter, Exmouth, Newton Abbot, Honiton, and Cullompton.
|
| 668 |
-
|
| 669 |
-
- Service Your Boiler Annually
|
| 670 |
-
|
| 671 |
-
An annual maintenance check for your boiler is essential. A knowledgeable gas engineer can regularly service your central heating and avoid potential risks like carbon monoxide poisoning, gas leaks, explosions, and fires.
|
| 672 |
-
Corrosion and boiler faults can be spotted early before they cause a boiler breakdown. Prevention is better than cure, and regular boiler maintenance can help stop costly breakdowns and repairs in the future. Our engineers will point out any weaknesses so you can plan and budget for a repair before it becomes an issue.
|
| 673 |
-
|
| 674 |
-
- Keep Your Boiler Warranty Valid
|
| 675 |
-
|
| 676 |
-
To keep your boiler warranty valid, annual servicing must be completed by a qualified engineer. Our team is qualified and approved to service gas and oil boilers - you can trust us for all your heating solutions. Don’t lose out - keep your manufacturer’s warranty up to date by calling us for a service every 12 months.
|
| 677 |
-
|
| 678 |
-
---
|
| 679 |
-
#### **Boiler Repairs Funnel Text**
|
| 680 |
-
|
| 681 |
-
- No Heating Or Hot Water?
|
| 682 |
-
Our skilled gas engineers are equipped with the expertise and tools to diagnose and fix boiler, heating and hot water problems. With our prompt and reliable service, you can trust us to get your system up and running in no time. Broken down boilers are fixed properly, and often in a single visit when you use our local heating services.
|
| 683 |
-
|
| 684 |
-
- Broken Down Boilers Fixed
|
| 685 |
-
|
| 686 |
-
A broken boiler can be a major inconvenience in your daily life, but at South Coast Plumbing and Heating in Exeter, we’re here to help. Our team of skilled gas engineers is equipped to handle any boiler repair, big or small.
|
| 687 |
-
We understand the importance of fast boiler repair services, so we work quickly to diagnose and correct the problems. With our fast and efficient services, you'll have your boiler up and running in no time.
|
| 688 |
-
|
| 689 |
-
- Boiler Stopped Working? We Can Help!
|
| 690 |
-
|
| 691 |
-
Our team has years of experience repairing central heating and boilers, and we have seen most of the problems that occur.
|
| 692 |
-
- Boiler leaks
|
| 693 |
-
- No heating
|
| 694 |
-
- Cold radiators
|
| 695 |
-
- No hot water
|
| 696 |
-
- Low gas pressure
|
| 697 |
-
- Broken controls
|
| 698 |
-
- Timer not working
|
| 699 |
-
- Non-firing boiler
|
| 700 |
-
- Boiler fault codes
|
| 701 |
-
|
| 702 |
-
These are all common faults that we repair immediately, but if you have other issues with your boiler, don’t hesitate to call us. We repair boilers in Exeter, Exmouth, Newton Abbot, Cullompton and Honiton.
|
| 703 |
-
---
|
| 704 |
-
#### **Example 2:
|
| 705 |
-
New Boiler Page**
|
| 706 |
-
- A New Boiler At A Great Price
|
| 707 |
-
|
| 708 |
-
Oil boilers are designed to be robust and durable. Often, they can last for up to 15 years, or even longer if they are well maintained. However, there will come a point in every oil boiler’s life when it stops functioning as it should and therefore needs to be replaced.
|
| 709 |
-
If your gas boiler is more than 12 years old or no longer works reliably, it’s probably time to consider replacing it with a new model. Our dedicated team of fully certified experts are on hand to assist you. We can install a new, energy-efficient, cost-effective boiler for your home for a fixed-rate.
|
| 710 |
-
We are happy to help with your boiler installation throughout the entire process, from choosing a new boiler to fitting everything you need. Our simple three-step consultation process ensures that we can answer your queries and provide a fixed-rate quote conveniently.
|
| 711 |
-
- Oil To Gas Conversion
|
| 712 |
-
|
| 713 |
-
Get rid of your oil boiler and convert to gas central heating - we are available to complete the conversion in the Belfast area. There are many advantages to converting from oil to gas, one of main advantages is having instant hot water when changing to a gas-combi boiler system. Here are a few other advantages:
|
| 714 |
-
- No need for an oil tank; we will remove it
|
| 715 |
-
- Your inefficient oil boiler will be replaced by an energy-efficient gas model
|
| 716 |
-
- Stored water is no longer required, so we remove the hot water cylinder
|
| 717 |
-
- Your cold water storage tank is also no longer needed; you gain valuable space
|
| 718 |
-
- Have complete control over your heating system with optional smart controls
|
| 719 |
-
- Monthly energy bills will be lower
|
| 720 |
-
- Oil leaks and oil theft are no longer a risk
|
| 721 |
-
|
| 722 |
-
- What to Expect From an Oil to Gas Conversion
|
| 723 |
-
|
| 724 |
-
With over 17 years’ experience in oil to gas conversions, our engineers have a wealth of experience to meet any challenges that might arise when completing the conversion.
|
| 725 |
-
Most oil to gas conversions take around two days (we don’t like to rush).This is adequate time to ensure that the job is completed to the highest possible standard. Our experience and attention to detail is why Reid Energy Solutions has earned a first-rate reputation.
|
| 726 |
-
---
|
| 727 |
-
#### **Boiler Servicing Page**
|
| 728 |
-
- Maintain your Boiler With Annual Servicing
|
| 729 |
-
|
| 730 |
-
Our annual boiler service will help keep your boiler working efficiently all year round. Your boiler is in good hands when you book us to maintain your hot water and heating system. Our team of engineers service boilers in Belfast and the surrounding areas. Make sure your heating is safe, efficient and reliable by choosing us to service your boiler.
|
| 731 |
-
|
| 732 |
-
- Why Servicing Your Boiler is Essential
|
| 733 |
-
|
| 734 |
-
Booking an annual service for your boiler keeps your home and loved ones safe. Potential risks like carbon monoxide poisoning, oil or gas leaks and fires can be avoided when a knowledgeable heating engineer regularly checks your central heating. We all rely on our heating systems to keep supplying warmth and hot water every day, so a maintenance check every 12 months is essential.
|
| 735 |
-
Reduce the chance of needing an emergency callout in the winter. With a boiler service every 12 months, corrosion and potential faults can be spotted early before they cause a boiler breakdown. Our engineers will point out any weaknesses so you can plan and budget for a repair before they become an issue.
|
| 736 |
-
|
| 737 |
-
- Keep Your Boiler Warranty Valid
|
| 738 |
-
|
| 739 |
-
New boilers come with a manufacturer’s warranty, but to keep it valid, annual servicing must be completed by a qualified engineer. The team at Reid Energy is qualified and approved for oil and gas boiler servicing - you can trust us for all your heating solutions. At the end of the service appointment, our engineers provide documentation as proof should you need it for your warranty.
|
| 740 |
-
Don’t let things lapse by putting off the maintenance check; you can book your boiler service online! The price is fixed with no hidden surprises, and we will arrive as scheduled to maintain your boiler properly while providing peace of mind. We service boilers in Belfast, Comber, Killinchy, Newtownards and Lisburn.
|
| 741 |
-
---
|
| 742 |
-
#### **Boiler Repairs Page**
|
| 743 |
-
- Brokendown Boiler Repairs
|
| 744 |
-
|
| 745 |
-
Is your heating not working? Our expert boiler repair service is here to quickly and effectively resolve any issues with your heating or hot water system. We offer boiler repairs in the Belfast, Comber, Killinchy, Newtownards and Lisburn areas.
|
| 746 |
-
Our skilled oil and gas engineers are equipped with the knowledge and tools to diagnose and fix heating and hot water problems. With our prompt and reliable service, you can trust us to get your boiler up and running in no time.
|
| 747 |
-
|
| 748 |
-
- No Hot Water? We Can Help!
|
| 749 |
-
|
| 750 |
-
The team at Reid Energy Solutions has years of experience repairing heating and boilers and has seen most of the problems that occur.
|
| 751 |
-
- Boiler leaks
|
| 752 |
-
- Cold radiators
|
| 753 |
-
- No water
|
| 754 |
-
- Low gas pressure
|
| 755 |
-
- Broken controls
|
| 756 |
-
- The timer not working
|
| 757 |
-
- Non-firing boiler
|
| 758 |
-
|
| 759 |
-
These are all common faults that we repair straight away, but if you have other issues with your boiler, don’t hesitate to call us.
|
| 760 |
-
|
| 761 |
-
- Boilers Fixed Quickly
|
| 762 |
-
We are confident we can get your boiler working properly again in no time. Our team is happy to fix boilers and has repaired combi, system and regular boilers with a variety of issues. We start by checking your boiler and heating carefully before identifying the fault. Once we have pinpointed the problem, we can let you know the cost of repairs and get to work quickly.
|
| 763 |
-
Boilers sometimes develop faults that mean they aren’t working properly. Modern boilers often display a fault code, but if you’re not sure what to do next, we can rectify the issues and leave you with a boiler that runs properly again.
|
| 764 |
-
|
| 765 |
-
---
|
| 766 |
-
|
| 767 |
-
### **Now Rewrite and Refine the Following Service Page Content to Match the Structure Above**
|
| 768 |
-
- **Ensure each subservice has an appropriate heading**
|
| 769 |
-
- **Write in paragraphs, not bullet points**
|
| 770 |
-
- **Each subservice should follow a distinct structure, avoiding generic formatting**
|
| 771 |
-
|
| 772 |
-
#### **Content to Refine**
|
| 773 |
-
{state["individual_service_page"].content}
|
| 774 |
-
|
| 775 |
-
---
|
| 776 |
-
|
| 777 |
-
### **Pattern Checking and Content Validation**
|
| 778 |
-
**After rewriting the content, verify that**
|
| 779 |
-
|
| 780 |
-
1. **Each subservice has a distinct heading** clearly indicating the topic
|
| 781 |
-
2. **It follows a paragraph format** with smooth transitions between sections
|
| 782 |
-
3. **The structure varies appropriately** based on the closest relevant example
|
| 783 |
-
4. **There are no bullet points, lists, or repetitive templates**—everything is in natural, professional paragraphs
|
| 784 |
-
5. **The content remains engaging, SEO-optimized, and aligned with business website standards**
|
| 785 |
-
6. ** The content shown on a paragraph only shown those content which has two to three word so this content shown in a bullet point**
|
| 786 |
-
|
| 787 |
-
If the structure does not match the provided examples, **revise and refine it accordingly** to ensure **each subservice has its own unique format** while maintaining high-quality, professional writing.
|
| 788 |
-
Not give any code and html tags.
|
| 789 |
-
""",
|
| 790 |
-
|
| 791 |
-
"service_area_page": f"""
|
| 792 |
-
Your task is to refine the content of the service area page for {state["service_area_page"].content}.
|
| 793 |
-
Use the provided example to ensure **consistency in structure, clarity, and professional tone** while making each service area unique.
|
| 794 |
-
|
| 795 |
-
**⚠️ IMPORTANT:**
|
| 796 |
-
👉 **DO NOT include any introduction, explanation, or summary before the refined content.**
|
| 797 |
-
👉 Start directly with the refined service area pages.
|
| 798 |
-
👉 **Each service area must have unique headings** while maintaining the same subservices.
|
| 799 |
-
👉 **Headings must NOT contain any punctuation (e.g., no commas, periods, or exclamation marks).**
|
| 800 |
-
|
| 801 |
-
### **Few-Shot Example:**
|
| 802 |
-
#### **Example: Service Areas with the Same Subservices but Unique Headings**
|
| 803 |
-
|
| 804 |
-
✅ **Exeter**
|
| 805 |
-
- **Heating Solutions for Exeter Homes**
|
| 806 |
-
Whether you need a **new boiler, central heating installation, power flushing service, or boiler repair**, our **Gas Safe engineers** ensure your home stays warm and comfortable. **South Coast Plumbing and Heating** provides a **full range of heating services** in Exeter, covering **Natural Gas and oil boilers**.
|
| 807 |
-
|
| 808 |
-
- **Energy Efficient Boiler Installation Exeter**
|
| 809 |
-
Looking for an **energy-efficient boiler upgrade** in Exeter? We **supply and install A-rated gas and oil boilers** from leading manufacturers. Our skilled heating engineers help you choose the **best replacement boiler** for your home. **Get an online quote** today for a high-performance boiler that reduces energy costs.
|
| 810 |
-
|
| 811 |
-
- **Reliable Boiler Servicing Exeter Homes**
|
| 812 |
-
Routine maintenance is key to keeping your boiler in **top condition**. Our team provides **annual servicing** across Exeter, ensuring safety, efficiency, and early detection of any issues. **Regular servicing** extends your boiler’s lifespan and helps maintain your warranty.
|
| 813 |
-
|
| 814 |
-
---
|
| 815 |
-
|
| 816 |
-
✅ **Exmouth**
|
| 817 |
-
- **Trusted Heating Experts Exmouth**
|
| 818 |
-
If you’re in Exmouth and need a **new boiler, central heating installation, power flushing, or boiler repair**, our **Gas Safe engineers** are ready to assist. **South Coast Plumbing and Heating** serves Exmouth, offering **expert heating solutions** for both **Natural Gas and oil boilers**.
|
| 819 |
-
|
| 820 |
-
- **High Performance Boiler Installation Exmouth**
|
| 821 |
-
Planning to **upgrade to an A-rated boiler** in Exmouth? We install **high-efficiency boilers** from trusted manufacturers. Our specialists guide you in selecting the **perfect boiler** for your home, ensuring **maximum energy savings**. **Request an online quote** today.
|
| 822 |
-
|
| 823 |
-
- **Annual Boiler Checkups Exmouth**
|
| 824 |
-
Keep your boiler running **safely and efficiently** with our **annual servicing** in Exmouth. Our team conducts a **detailed inspection** to prevent costly repairs and extend your boiler’s lifespan. Book your **boiler service in Exmouth** today.
|
| 825 |
-
|
| 826 |
-
### **Guidelines for Refinement:**
|
| 827 |
-
🔹 **Follow the Format:** Each service area should have structured sections like the example, including a location-based heading, service highlights, and a clear description.
|
| 828 |
-
🔹 **Unique Headings for Each Service Area:** Ensure **headings are different** for each location while keeping subservices the same. **Avoid using the same title structure across all locations.**
|
| 829 |
-
🔹 **No Punctuation in Headings:** Headings **must not contain any punctuation** (e.g., no commas, periods, or exclamation marks).
|
| 830 |
-
🔹 **Consistency with Readability:** Maintain **bullet points, concise descriptions, and proper formatting** for clarity.
|
| 831 |
-
🔹 **Location-Specific Details:** Make sure each section sounds **tailored to the specific area** while keeping **the core service offerings consistent**.
|
| 832 |
-
|
| 833 |
-
🚀 **Final Output Format:**
|
| 834 |
-
✅ No unnecessary introduction or explanation
|
| 835 |
-
✅ Starts directly with the **first service area**
|
| 836 |
-
✅ Uses **unique headings without punctuation**
|
| 837 |
-
✅ Ensures **professional, structured, and readable content**
|
| 838 |
-
Not give any code and html tags.
|
| 839 |
-
"""
|
| 840 |
-
|
| 841 |
-
}
|
| 842 |
-
pages = {key: llm.invoke(prompt).content.strip() for key, prompt in prompts.items()}
|
| 843 |
-
state.update(pages)
|
| 844 |
-
print("refine_done")
|
| 845 |
-
return state
|
| 846 |
-
|
| 847 |
-
def evaluate_content_quality(state: ContentState) -> ContentState:
|
| 848 |
-
"""Evaluates content quality, ensuring fair scoring that reflects real improvements."""
|
| 849 |
-
previous_score = state.get("quality_score", None) # Get previous score if available
|
| 850 |
-
# Get previous score if available
|
| 851 |
-
|
| 852 |
-
prompt = f"""
|
| 853 |
-
### **Strict Content Quality Evaluation (NO Guesswork Allowed)**
|
| 854 |
-
You are a **highly strict but fair content evaluator**. Your job is to **accurately measure quality improvements** and ensure a logical score adjustment.
|
| 855 |
-
|
| 856 |
-
---
|
| 857 |
-
|
| 858 |
-
### **🚨 VERY IMPORTANT – STRICT RULES 🚨**
|
| 859 |
-
- **You MUST compare the content to its previous version.** If no prior version is available, evaluate as usual.
|
| 860 |
-
- **If improvements have been made, the score should increase.** If the score stays the same or drops, you must justify why.
|
| 861 |
-
- **DO NOT suggest changes unrelated to the provided content.** No hallucinations about missing videos, testimonials, or interactive elements.
|
| 862 |
-
- **All feedback must be content-based, fact-driven, and specific.**
|
| 863 |
-
- **You MUST provide at least 5 unique, real improvement areas**—no generic feedback.
|
| 864 |
-
---
|
| 865 |
-
### **Evaluation Criteria (Be Critical, But Only on Real Issues)**
|
| 866 |
-
1. **Readability & Flow** – Does the content read smoothly and professionally?
|
| 867 |
-
2. **Logical Structure & Clarity** – Is the content well-structured with clear headings and transitions?
|
| 868 |
-
3. **Depth & Relevance** – Does it provide unique insights and valuable details?
|
| 869 |
-
4. **SEO Optimization** – Are keywords well-integrated and formatting SEO-friendly?
|
| 870 |
-
5. **Accuracy & Credibility** – Are all claims factually correct, with no vague statements?
|
| 871 |
-
6. **Persuasiveness & CTA Strength** – Are the calls to action compelling?
|
| 872 |
-
7. **Spelling & Language Precision** – Any typos or awkward phrasing?
|
| 873 |
-
|
| 874 |
-
---
|
| 875 |
-
|
| 876 |
-
### **Scoring System (Adjust Fairly Based on Changes)**
|
| 877 |
-
- **0-3: Unacceptable** – Major issues. Needs total rewrite.
|
| 878 |
-
- **4-6: Below Average** – Needs significant work before being usable.
|
| 879 |
-
- **7: Average** – Acceptable, but **lacks refinement**.
|
| 880 |
-
- **8: Above Average** – Good, but **not quite premium quality**.
|
| 881 |
-
- **9: Almost There** – High quality, **minor refinements needed**.
|
| 882 |
-
- **10: Perfect** – **Extremely rare.** Must be **flawless and highly persuasive**.
|
| 883 |
-
|
| 884 |
-
---
|
| 885 |
-
|
| 886 |
-
### **Content to Evaluate:**
|
| 887 |
-
```
|
| 888 |
-
{state["home_page"]}
|
| 889 |
-
{state["about_us_page"]}
|
| 890 |
-
{state["service_page"]}
|
| 891 |
-
{state["individual_service_page"]}
|
| 892 |
-
{state["service_area_page"]}
|
| 893 |
-
```
|
| 894 |
-
|
| 895 |
-
---
|
| 896 |
-
|
| 897 |
-
### **Final Output Format (STRICTLY FOLLOW THIS)**
|
| 898 |
-
**Quality Score: X/10**
|
| 899 |
-
**Reason for Score (MUST justify if score drops or stays the same):**
|
| 900 |
-
- **[Short but detailed explanation]**
|
| 901 |
-
**Key Areas to Improve (MUST list 5+ real, unique issues):**
|
| 902 |
-
- **[Issue 1]**
|
| 903 |
-
- **[Issue 2]**
|
| 904 |
-
- **[Issue 3]**
|
| 905 |
-
- **[Issue 4]**
|
| 906 |
-
- **[Issue 5]**
|
| 907 |
-
|
| 908 |
-
**If the score does NOT increase, explicitly state why.**
|
| 909 |
-
"""
|
| 910 |
-
|
| 911 |
-
response = llm.invoke(prompt)
|
| 912 |
-
output = response.content
|
| 913 |
-
|
| 914 |
-
# Extract the score from the response
|
| 915 |
-
try:
|
| 916 |
-
score_line = [line for line in output.split("\n") if "Quality Score" in line][0]
|
| 917 |
-
score = int(score_line.split(":")[-1].strip().split("/")[0])
|
| 918 |
-
except (IndexError, ValueError):
|
| 919 |
-
score = 0 # Default to 0 if parsing fails
|
| 920 |
-
|
| 921 |
-
# Extract feedback
|
| 922 |
-
improvement_lines = []
|
| 923 |
-
capture = False
|
| 924 |
-
for line in output.split("\n"):
|
| 925 |
-
if "Key Areas to Improve" in line:
|
| 926 |
-
capture = True
|
| 927 |
-
continue
|
| 928 |
-
if capture and line.strip():
|
| 929 |
-
improvement_lines.append(line.strip())
|
| 930 |
-
|
| 931 |
-
improvements = "\n".join(improvement_lines) if improvement_lines else "No major weaknesses found."
|
| 932 |
-
|
| 933 |
-
# **Fix Score Inconsistency: Force Justification**
|
| 934 |
-
if previous_score is not None and score < previous_score:
|
| 935 |
-
print("\n🚨 **Warning:** The score decreased! Checking for justification... 🚨")
|
| 936 |
-
if "explicitly state why" not in output:
|
| 937 |
-
print("⚠️ No valid reason for lowering the score. Reverting to previous score.")
|
| 938 |
-
score = previous_score # Prevent unfair decreases
|
| 939 |
-
|
| 940 |
-
# Print Feedback
|
| 941 |
-
print(f"\n=== Quality Evaluation ===")
|
| 942 |
-
print(f"Content Quality Score: {score}/10")
|
| 943 |
-
print(f"Key Areas to Improve:\n{improvements}\n")
|
| 944 |
-
|
| 945 |
-
# Update State
|
| 946 |
-
state["quality_score"] = score
|
| 947 |
-
state["feedback"] = improvements
|
| 948 |
-
|
| 949 |
-
return state
|
| 950 |
-
def feedback_improvement(state: ContentState) -> ContentState:
|
| 951 |
-
feedback = state["feedback"]
|
| 952 |
-
previous_score = state["quality_score"]
|
| 953 |
-
|
| 954 |
-
# Previous versions of all pages
|
| 955 |
-
previous_home_page = state["home_page"]
|
| 956 |
-
previous_about_us = state["about_us_page"]
|
| 957 |
-
previous_service_page = state["service_page"]
|
| 958 |
-
previous_individual_service_page = state["individual_service_page"]
|
| 959 |
-
previous_service_area_page = state["service_area_page"]
|
| 960 |
-
|
| 961 |
-
# Adjusted prompts for refining content
|
| 962 |
-
prompts = {
|
| 963 |
-
"refine_home_page_content": f"""
|
| 964 |
-
You are a **senior UK-based content strategist and conversion copywriter**. Your task is to **significantly enhance the quality of the given content** by addressing every issue mentioned in the feedback. Your goal is to **maximize the quality score (Currently: {previous_score})**.
|
| 965 |
-
|
| 966 |
-
### **🚀 Critical Directives (Must Follow)**
|
| 967 |
-
✅ **Aggressively fix ALL Issues Highlighted in Feedback (No Exceptions)**
|
| 968 |
-
✅ **Enhance Structure, Readability, and Persuasiveness with Concrete Improvements**
|
| 969 |
-
✅ **Ensure High SEO Optimization & Conversion-Driven Writing**
|
| 970 |
-
✅ **Use More Engaging, Clear, and Action-Oriented Language**
|
| 971 |
-
✅ **Ensure the new version is drastically better than the previous one**
|
| 972 |
-
|
| 973 |
-
### **❌ Common Mistakes to Avoid**
|
| 974 |
-
🚫 **DO NOT return content that is too similar to the original**
|
| 975 |
-
🚫 **DO NOT simply rephrase—fully transform weak sections**
|
| 976 |
-
🚫 **DO NOT ignore any issues in feedback**
|
| 977 |
-
🚫 **DO NOT include explanations, commentary, HTML tags, or code**
|
| 978 |
-
|
| 979 |
-
---
|
| 980 |
-
|
| 981 |
-
### **🔍 Issues in the Previous Version (MUST BE FIXED):**
|
| 982 |
-
{feedback}
|
| 983 |
-
|
| 984 |
-
### **📜 Previous Version (Revise & Improve):**
|
| 985 |
-
{previous_home_page}
|
| 986 |
-
|
| 987 |
-
🔹 **Your rewrite must show a noticeable, measurable improvement over the previous version. If it does not, the quality score will remain the same. Not give any code and html tags.**
|
| 988 |
-
""",
|
| 989 |
-
|
| 990 |
-
"refine_about_us_content": f"""
|
| 991 |
-
You are a **senior UK-based content strategist and conversion copywriter**. Your mission is to **aggressively refine and enhance** the About Us content to make it **more engaging, trustworthy, and conversion-driven**.
|
| 992 |
-
|
| 993 |
-
### **🚀 Mandatory Improvements**
|
| 994 |
-
✅ **Fully Address Every Issue Highlighted in the Feedback**
|
| 995 |
-
✅ **Strengthen Brand Storytelling & Emotional Appeal**
|
| 996 |
-
✅ **Improve Readability, Flow, and Clarity**
|
| 997 |
-
✅ **Ensure SEO Optimization & Persuasive Copywriting**
|
| 998 |
-
✅ **Significantly Increase the Quality Score (Currently: {previous_score})**
|
| 999 |
-
|
| 1000 |
-
### **❌ Avoid These Mistakes**
|
| 1001 |
-
🚫 **Do NOT return content that is too similar to the original**
|
| 1002 |
-
🚫 **Do NOT just rephrase—fully transform weak sections**
|
| 1003 |
-
🚫 **Do NOT ignore any feedback points**
|
| 1004 |
-
🚫 **Do NOT include explanations, commentary, HTML tags, or code**
|
| 1005 |
-
|
| 1006 |
-
---
|
| 1007 |
-
|
| 1008 |
-
### **🔍 Issues in the Previous Version (MUST BE FIXED):**
|
| 1009 |
-
{feedback}
|
| 1010 |
-
|
| 1011 |
-
### **📜 Previous Version (Rewrite & Improve):**
|
| 1012 |
-
{previous_about_us}
|
| 1013 |
-
|
| 1014 |
-
🔹 **Your rewrite must demonstrate a measurable improvement. If it does not, the quality score will remain the same. Not give any code and html tags.**
|
| 1015 |
-
""",
|
| 1016 |
-
|
| 1017 |
-
|
| 1018 |
-
"refine_service_page_content": f"""
|
| 1019 |
-
You are a **senior UK-based content strategist and SEO specialist**. Your mission is to **completely refine and optimize** the Service Page content to make it **highly engaging, persuasive, and conversion-focused**.
|
| 1020 |
-
|
| 1021 |
-
### **🚀 Critical Directives (Must Follow)**
|
| 1022 |
-
✅ **Fix ALL Issues Highlighted in the Feedback Below (No Exceptions)**
|
| 1023 |
-
✅ **Make Service Descriptions More Engaging & Benefit-Driven**
|
| 1024 |
-
✅ **Improve Readability, Clarity, and SEO Optimization**
|
| 1025 |
-
✅ **Strengthen CTAs & User Engagement**
|
| 1026 |
-
✅ **Increase the Quality Score (Currently: {previous_score})**
|
| 1027 |
-
|
| 1028 |
-
### **❌ Common Mistakes to Avoid**
|
| 1029 |
-
🚫 **DO NOT return a slightly modified version—Make Drastic Improvements**
|
| 1030 |
-
🚫 **DO NOT just rephrase—fully transform weak sections**
|
| 1031 |
-
🚫 **DO NOT ignore any feedback points**
|
| 1032 |
-
🚫 **DO NOT include explanations, commentary, HTML tags, or code**
|
| 1033 |
-
|
| 1034 |
-
---
|
| 1035 |
-
|
| 1036 |
-
### **🔍 Issues in the Previous Version (MUST BE FIXED):**
|
| 1037 |
-
{feedback}
|
| 1038 |
-
|
| 1039 |
-
### **📜 Previous Service Page Content (Rewrite & Improve):**
|
| 1040 |
-
{previous_service_page}
|
| 1041 |
-
|
| 1042 |
-
🔹 **Your rewrite must demonstrate a measurable improvement. If it does not, the quality score will remain the same. Not give any code and html tags.**
|
| 1043 |
-
""",
|
| 1044 |
-
|
| 1045 |
-
"refine_individual_service_page_content": f"""
|
| 1046 |
-
You are a **senior UK-based content strategist and SEO specialist**. Your task is to **significantly enhance the quality of the individual service page content** by making it **clear, persuasive, and highly optimized for conversions**.
|
| 1047 |
-
|
| 1048 |
-
### **🚀 Key Objectives**
|
| 1049 |
-
✅ **Address Every Issue Highlighted in the Feedback Below**
|
| 1050 |
-
✅ **Improve Service Descriptions for Maximum Clarity & Persuasion**
|
| 1051 |
-
✅ **Enhance Readability, Engagement, and SEO Performance**
|
| 1052 |
-
✅ **Strengthen Call-to-Actions (CTAs) to Drive More Conversions**
|
| 1053 |
-
✅ **Ensure a Noticeable Quality Score Increase (Currently: {previous_score})**
|
| 1054 |
-
|
| 1055 |
-
### **❌ Strict Guidelines**
|
| 1056 |
-
🚫 **DO NOT submit a version that is too similar to the original**
|
| 1057 |
-
🚫 **DO NOT just rephrase—fully transform weak sections**
|
| 1058 |
-
🚫 **DO NOT ignore any feedback points**
|
| 1059 |
-
🚫 **DO NOT include explanations, commentary, HTML tags, or code**
|
| 1060 |
-
|
| 1061 |
-
---
|
| 1062 |
-
|
| 1063 |
-
### **🔍 Issues in the Previous Version (MUST BE FIXED):**
|
| 1064 |
-
{feedback}
|
| 1065 |
-
|
| 1066 |
-
### **📜 Previous Individual Service Page Content (Rewrite & Improve):**
|
| 1067 |
-
{previous_individual_service_page}
|
| 1068 |
-
|
| 1069 |
-
🔹 **Your rewrite must demonstrate a measurable improvement. If it does not, the quality score will remain the same. Not give any code and html tags.**
|
| 1070 |
-
""",
|
| 1071 |
-
|
| 1072 |
-
|
| 1073 |
-
"refine_service_area_page_content": f"""
|
| 1074 |
-
You are a **senior UK-based content strategist and SEO specialist**. Your job is to **significantly enhance the quality of the service area page content**, ensuring it is **engaging, location-optimized, and highly persuasive**.
|
| 1075 |
-
|
| 1076 |
-
### **🚀 Must-Have Improvements**
|
| 1077 |
-
✅ **Fix ALL Issues Highlighted in the Feedback Below**
|
| 1078 |
-
✅ **Enhance Structure, Readability, and Persuasiveness**
|
| 1079 |
-
✅ **Improve Location-Specific Optimization for SEO**
|
| 1080 |
-
✅ **Strengthen CTAs & User Engagement**
|
| 1081 |
-
✅ **Ensure a Noticeable Quality Score Increase (Currently: {previous_score})**
|
| 1082 |
-
|
| 1083 |
-
### **❌ Strict Rules**
|
| 1084 |
-
🚫 **DO NOT submit a version that is too similar to the original**
|
| 1085 |
-
🚫 **DO NOT just rephrase—fully transform weak sections**
|
| 1086 |
-
🚫 **DO NOT ignore any feedback points**
|
| 1087 |
-
🚫 **DO NOT include explanations, commentary, HTML tags, or code**
|
| 1088 |
-
|
| 1089 |
-
---
|
| 1090 |
-
|
| 1091 |
-
### **🔍 Issues in the Previous Version (MUST BE FIXED):**
|
| 1092 |
-
{feedback}
|
| 1093 |
-
|
| 1094 |
-
### **📜 Previous Service Area Page Content (Rewrite & Improve):**
|
| 1095 |
-
{previous_service_area_page}
|
| 1096 |
-
|
| 1097 |
-
🔹 **Your rewrite must demonstrate a measurable improvement. If it does not, the quality score will remain the same. Not give any code and html tags.**
|
| 1098 |
-
""",
|
| 1099 |
-
|
| 1100 |
-
}
|
| 1101 |
-
|
| 1102 |
-
# Invoke LLM for refinement on all pages
|
| 1103 |
-
refined_pages = {key: llm.invoke(prompt).content.strip() for key, prompt in prompts.items()}
|
| 1104 |
-
|
| 1105 |
-
# Update state with refined content
|
| 1106 |
-
state.update({
|
| 1107 |
-
"home_page": refined_pages["refine_home_page_content"],
|
| 1108 |
-
"about_us_page": refined_pages["refine_about_us_content"],
|
| 1109 |
-
"service_page": refined_pages["refine_service_page_content"],
|
| 1110 |
-
"individual_service_page": refined_pages["refine_individual_service_page_content"],
|
| 1111 |
-
"service_area_page": refined_pages["refine_service_area_page_content"],
|
| 1112 |
-
})
|
| 1113 |
-
|
| 1114 |
-
return state
|
| 1115 |
-
|
| 1116 |
-
def upload_file(state: ContentState) -> ContentState:
|
| 1117 |
-
file_path= state["file_path"]
|
| 1118 |
-
print(file_path)
|
| 1119 |
-
# Load the document
|
| 1120 |
-
doc = Document(file_path)
|
| 1121 |
-
|
| 1122 |
-
# Read and print the content
|
| 1123 |
-
text = "\n".join([para.text for para in doc.paragraphs])
|
| 1124 |
-
print("upload done")
|
| 1125 |
-
return {"text": text}
|
| 1126 |
-
|
| 1127 |
-
def meeting_insights(state: ContentState) -> ContentState:
|
| 1128 |
-
data=state["text"]
|
| 1129 |
-
prompt = f"""
|
| 1130 |
-
### Role:
|
| 1131 |
-
You are an expert **Website Content Analyst** specializing in extracting relevant information from meeting transcripts. Your job is to analyze the provided transcript, identify key discussions about website content, and present only the most useful insights.
|
| 1132 |
-
|
| 1133 |
-
### Task:
|
| 1134 |
-
Process the transcript and extract essential details **directly contributing to website content creation**, while ignoring unrelated discussions, small talk, and general meeting logistics.
|
| 1135 |
-
|
| 1136 |
-
### Responsibilities:
|
| 1137 |
-
1. **Understand Website Goals** – Identify the client's main objectives and purpose for the website.
|
| 1138 |
-
2. **Define Site Structure** – Extract discussed pages, sections, and overall navigation flow.
|
| 1139 |
-
3. **Summarize Content Strategy** – Capture insights about content types (text, images, blogs, videos, FAQs).
|
| 1140 |
-
4. **Extract Branding & Design Preferences** – Note colors, typography, branding elements, and overall visual style.
|
| 1141 |
-
5. **Identify Functional & Interactive Elements** – List features like forms, integrations, buttons, and CTAs.
|
| 1142 |
-
6. **Analyze Target Audience & Messaging** – Understand the audience and tone/style of communication.
|
| 1143 |
-
|
| 1144 |
-
### Guidelines:
|
| 1145 |
-
- Strictly **filter out** unrelated discussions, filler words, or non-essential details.
|
| 1146 |
-
- Focus on **clear, actionable insights** for content development.
|
| 1147 |
-
- Present the extracted information in a structured, professional format.
|
| 1148 |
-
|
| 1149 |
-
### Input Transcript:
|
| 1150 |
-
{data}
|
| 1151 |
-
|
| 1152 |
-
### Optimized Output:
|
| 1153 |
-
Provide a structured summary with only the **necessary insights** that contribute to website content creation.
|
| 1154 |
-
"""
|
| 1155 |
-
|
| 1156 |
-
response = llm.invoke(prompt)
|
| 1157 |
-
meeting_point = response.content
|
| 1158 |
-
print("insights done",meeting_point)
|
| 1159 |
-
return {"meeting_point": meeting_point}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|