"""Machine-readable site discovery endpoints for crawlers and AI agents.""" from django.http import HttpResponse from django.template.loader import render_to_string from django.urls import reverse # Public marketing pages included in sitemap and llms.txt. # Tuple: (url_name, title, changefreq, priority, summary) PUBLIC_PAGE_ENTRIES = ( ( "public_index", "Home", "weekly", "1.0", "Company homepage with an overview of AI ML Operations services.", ), ( "forward_deployed", "Forward-Deployed AI", "monthly", "0.9", "Embedded AI engineering — we work inside your environment to build production systems.", ), ( "bot", "AI Agents", "monthly", "0.9", "Custom AI agents and agentic workflows tailored to your operational bottlenecks.", ), ( "ml_model", "ML Models", "monthly", "0.8", "Machine learning model development, training, and deployment for production use.", ), ( "chat", "Secure AI Chat", "monthly", "0.8", "Private, hosted AI chat deployments with enterprise-grade security.", ), ( "ai_sensor", "AI Sensor Algorithms", "monthly", "0.7", "Computer vision and sensor-fusion algorithms for real-world sensing applications.", ), ( "ai_education", "AI Education", "monthly", "0.7", "Hands-on AI training and workshops for teams adopting agentic workflows.", ), ( "computers", "Computer Builds", "monthly", "0.7", "Custom workstation and server builds optimized for AI and ML workloads.", ), ( "file_hosting", "File Hosting", "monthly", "0.7", "Managed file hosting and storage for teams that need reliable data access.", ), ( "web_design", "Web Design and Hosting", "monthly", "0.8", "Custom brand-tailored sites with interactive package pricing. You own the site and data. " "Public site + client portal (UTM/leads) always included; add-ons for Email/SMS, direct mail, " "blog, Stripe payments, social, and AI social. Every build includes three-instance hosting, " "SEO/accessibility/LLM readiness, and Grafana metrics and alerts.", ), ( "contact", "Contact", "monthly", "0.9", "Contact form to inquire about forward-deployed AI engineering services.", ), ( "terms_of_service", "Terms of Service and Privacy", "yearly", "0.3", "Terms of service and privacy policy for AI ML Operations, LLC.", ), ) SERVICE_URL_NAMES = frozenset({ "forward_deployed", "bot", "ml_model", "chat", "ai_sensor", "ai_education", "computers", "file_hosting", "web_design", }) def get_service_entries(): """Return service page metadata for WebMCP navigation tools.""" return [ { "slug": url_name, "name": title, "summary": summary, } for url_name, title, _changefreq, _priority, summary in PUBLIC_PAGE_ENTRIES if url_name in SERVICE_URL_NAMES ] def _absolute_url(request, url_name): return request.build_absolute_uri(reverse(url_name)) def robots_txt(request): sitemap_url = _absolute_url(request, "sitemap_xml") content = render_to_string( "public/robots.txt", { "sitemap_url": sitemap_url, "llms_url": _absolute_url(request, "llms_txt"), }, ) return HttpResponse(content, content_type="text/plain; charset=utf-8") def sitemap_xml(request): pages = [ { "loc": _absolute_url(request, url_name), "changefreq": changefreq, "priority": priority, } for url_name, _title, changefreq, priority, _summary in PUBLIC_PAGE_ENTRIES ] content = render_to_string("public/sitemap.xml", {"pages": pages}) return HttpResponse(content, content_type="application/xml; charset=utf-8") def llms_txt(request): from .web_design_pricing import ( WEB_DESIGN_INCLUDED, features_for_json, ) pages = [ { "title": title, "url": _absolute_url(request, url_name), "summary": summary, } for url_name, title, _changefreq, _priority, summary in PUBLIC_PAGE_ENTRIES ] content = render_to_string( "public/llms.txt", { "site_url": request.build_absolute_uri("/"), "contact_url": _absolute_url(request, "contact"), "web_design_url": _absolute_url(request, "web_design"), "web_design_features": features_for_json(), "web_design_included": WEB_DESIGN_INCLUDED, "pages": pages, }, ) return HttpResponse(content, content_type="text/plain; charset=utf-8")