diff --git a/company_site/Inoivce Template.pdf b/company_site/Inoivce Template.pdf new file mode 100644 index 0000000..3cdc845 Binary files /dev/null and b/company_site/Inoivce Template.pdf differ diff --git a/company_site/company_site/settings.py b/company_site/company_site/settings.py index 4e5f6db..1a50939 100644 --- a/company_site/company_site/settings.py +++ b/company_site/company_site/settings.py @@ -11,6 +11,7 @@ https://docs.djangoproject.com/en/5.0/ref/settings/ """ from pathlib import Path +import os # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent @@ -151,4 +152,4 @@ EMAIL_USE_TLS = True # Authentication Redirects LOGIN_REDIRECT_URL = '/' -LOGOUT_REDIRECT_URL = '/' \ No newline at end of file +LOGOUT_REDIRECT_URL = '/' diff --git a/company_site/company_site/urls.py b/company_site/company_site/urls.py index 2faedbe..7a04a06 100644 --- a/company_site/company_site/urls.py +++ b/company_site/company_site/urls.py @@ -20,6 +20,7 @@ from django.urls import include, path urlpatterns = [ path("public/", include("public.urls")), + path("", include("public.urls")), path("financial/", include("financial.urls")), path("planning/", include("planning.urls")), path("accounts/", include("django.contrib.auth.urls")), diff --git a/company_site/financial/admin.py b/company_site/financial/admin.py old mode 100644 new mode 100755 index 17fca7b..70b2446 --- a/company_site/financial/admin.py +++ b/company_site/financial/admin.py @@ -1,8 +1,24 @@ from django.contrib import admin -from .models import Contract +from .models import Contract, Employee, ChargeNumber, TimeCard, TimeCardCell # Register your models here. class ContractAdmin(admin.ModelAdmin): pass -admin.site.register(Contract, ContractAdmin) \ No newline at end of file +class EmployeeAdmin(admin.ModelAdmin): + pass + +class ChargeNumberAdmin(admin.ModelAdmin): + pass + +class TimeCardAdmin(admin.ModelAdmin): + pass + +class TimeCardCellAdmin(admin.ModelAdmin): + pass + +admin.site.register(Contract, ContractAdmin) +admin.site.register(Employee, EmployeeAdmin) +admin.site.register(ChargeNumber, ChargeNumberAdmin) +admin.site.register(TimeCard, TimeCardAdmin) +admin.site.register(TimeCardCell, TimeCardCellAdmin) \ No newline at end of file diff --git a/company_site/financial/migrations/0014_chargenumber_name.py b/company_site/financial/migrations/0014_chargenumber_name.py new file mode 100644 index 0000000..16bbd31 --- /dev/null +++ b/company_site/financial/migrations/0014_chargenumber_name.py @@ -0,0 +1,18 @@ +# Generated by Django 5.0 on 2026-03-26 14:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('financial', '0013_alter_employee_primaryaddress_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='chargenumber', + name='name', + field=models.CharField(blank=True, max_length=100, null=True), + ), + ] diff --git a/company_site/financial/models.py b/company_site/financial/models.py old mode 100644 new mode 100755 index 3920344..b7e65f6 --- a/company_site/financial/models.py +++ b/company_site/financial/models.py @@ -192,6 +192,7 @@ class ChargeNumber(IdMixin, TimeMixin): MAX_NUM_TASK_TYPES = "MAX", "MAX_NUM_TASK_TYPES" charge_number_type = EnumField(ChargeNumberTypeEnum) + name = models.CharField(max_length=100, blank=True, null=True) contract = models.ForeignKey(Contract, on_delete=models.CASCADE) amount = models.FloatField(default=0.0) @@ -202,7 +203,7 @@ class ChargeNumber(IdMixin, TimeMixin): end_date = models.DateField(null=True, blank=True, default = None) def __str__(self): - return self.slug or f"CN-{self.id}" + return self.name or self.slug or f"CN-{self.id}" @property def get_percent_complete(self): diff --git a/company_site/financial/templates/financial/contract_detail.html b/company_site/financial/templates/financial/contract_detail.html index 436dc78..8a93185 100644 --- a/company_site/financial/templates/financial/contract_detail.html +++ b/company_site/financial/templates/financial/contract_detail.html @@ -30,6 +30,7 @@ + {% endif %}
@@ -40,7 +41,8 @@

Earned Value Management

-
+
BAC (Budget) @@ -68,7 +70,8 @@
-
+
Schedule Variance @@ -88,32 +91,38 @@
SPI - + {{ evm.spi }} - {% if evm.spi >= 1 %}On/ahead{% elif evm.spi > 0 %}Behind{% else %}No data{% endif %} + {% if evm.spi >= 1 %}On/ahead{% elif evm.spi > 0 %}Behind{% else %}No data{% + endif %}
CPI - + {{ evm.cpi }} - {% if evm.cpi >= 1 %}Efficient{% elif evm.cpi > 0 %}Over-spending{% else %}No data{% endif %} + {% if evm.cpi >= 1 %}Efficient{% elif evm.cpi > 0 %}Over-spending{% else %}No + data{% endif %}
- -
- -
-

S-Curve (PV vs EV vs AC)

- + +
+
+

S-Curve (PV vs EV vs AC)

+
+ +
- -
-

Performance Indices

- +
+

Performance Indices

+
+ +
{% endif %} @@ -123,9 +132,12 @@

Charge Numbers

{% if charge_numbers %} {% if mermaid_gantt %} -
-
-{{ mermaid_gantt|safe }} +
+

Timeline

+
+
+ {{ mermaid_gantt|safe }} +
{% endif %} @@ -135,7 +147,7 @@ - + @@ -147,18 +159,20 @@ {% for cn in charge_numbers %} - + - - + + {% endfor %} @@ -177,7 +191,8 @@ {% else %}
-

There are no charge numbers for this contract.

+

There are no charge numbers for this contract. +

{% csrf_token %} {{ charge_number_form.as_p }} @@ -198,14 +213,16 @@ padding: 20px 16px; text-align: center; background: var(--surface-color); - border: 1px solid rgba(255,255,255,0.08); + border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 12px; transition: transform 0.2s ease, box-shadow 0.2s ease; } + .evm-kpi-card:hover { transform: translateY(-3px); box-shadow: 0 8px 24px rgba(0, 243, 255, 0.08); } + .evm-kpi-label { font-size: 0.75rem; text-transform: uppercase; @@ -214,19 +231,71 @@ margin-bottom: 6px; font-weight: 600; } + .evm-kpi-value { font-size: 1.5rem; font-weight: 800; color: #fff; line-height: 1.2; } + .evm-kpi-sub { font-size: 0.75rem; color: var(--text-muted, #888); margin-top: 4px; } - .evm-positive { color: #39ff14 !important; } - .evm-negative { color: #ff4444 !important; } + + .evm-positive { + color: #39ff14 !important; + } + + .evm-negative { + color: #ff4444 !important; + } + + .evm-charts-stack { + display: flex; + flex-direction: column; + gap: 20px; + margin-bottom: 2rem; + width: 100%; + } + + .evm-chart-card { + padding: 20px; + width: 100%; + } + + .evm-chart-title { + margin-bottom: 1rem; + font-size: 1.1rem; + color: var(--text-muted); + } + + .evm-chart-canvas-wrap { + position: relative; + width: 100%; + height: 320px; + } + + .evm-chart-canvas-wrap--compact { + height: 260px; + max-width: 480px; + } + + .charge-gantt-scroll { + overflow-x: auto; + width: 100%; + padding-bottom: 0.5rem; + } + + .charge-gantt-scroll .mermaid { + min-width: 720px; + } + + .charge-date-cell { + white-space: nowrap; + } {% endif %} {% endblock %} \ No newline at end of file diff --git a/company_site/financial/templates/financial/time_logs.html b/company_site/financial/templates/financial/time_logs.html index ac3ee9a..f83ef07 100644 --- a/company_site/financial/templates/financial/time_logs.html +++ b/company_site/financial/templates/financial/time_logs.html @@ -17,6 +17,110 @@
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + Clear +
+ +
+ +
+
+

Hours by Contract

+ {% if contract_totals %} +
Slug/IDSlug/ID/Name Type Amount % Complete
{{ cn.slug }}{{ cn }} {{ cn.get_charge_number_type_display }} ${{ cn.amount|floatformat:2 }} - + {{ cn.percent_complete|floatformat:0 }}% {{ cn.start_date|default:"-" }}{{ cn.end_date|default:"-" }}{{ cn.start_date|default:"-" }}{{ cn.end_date|default:"-" }} - Edit + Edit
+ + + + + + + + {% for row in contract_totals %} + + + + + {% endfor %} + +
ContractHours
{{ row.charge_number__contract__name }}{{ row.total_hours|floatformat:2 }}
+ {% else %} +

No contract totals for current filters.

+ {% endif %} +
+
+

Hours by Charge Number

+ {% if charge_number_totals %} + + + + + + + + + + {% for row in charge_number_totals %} + + + + + + {% endfor %} + +
Charge NumberContractHours
{{ row.charge_number__name|default:"—" }}{{ row.charge_number__contract__name }}{{ row.total_hours|floatformat:2 }}
+ {% else %} +

No charge number totals for current filters.

+ {% endif %} +
+
+

+ Grand total: {{ grand_total|floatformat:2 }} hrs + (all filtered rows, including entries without a charge number) +

+
diff --git a/company_site/financial/views.py b/company_site/financial/views.py index 5d7185a..dd11ed2 100644 --- a/company_site/financial/views.py +++ b/company_site/financial/views.py @@ -114,7 +114,7 @@ def contract_detail(request, contract_slug): has_dates = True start = cn.start_date.strftime("%Y-%m-%d") end = cn.end_date.strftime("%Y-%m-%d") - slug_label = cn.slug or f"ID-{cn.id}" + slug_label = cn.name or cn.slug or f"ID-{cn.id}" mermaid_gantt_lines.append(f" {slug_label} : {start}, {end}") mermaid_gantt = None @@ -178,8 +178,72 @@ def timekeeping(request): @user_passes_test(is_admin) def time_logs(request): - logs = TimeCardCell.objects.all().order_by('-date', '-created') - return render(request, 'financial/time_logs.html', {'logs': logs}) + logs = TimeCardCell.objects.select_related( + 'timeCard__employee__user', + 'charge_number__contract', + ).order_by('-date', '-created') + + employee_ids = [] + for raw in request.GET.getlist('employee'): + if raw: + try: + employee_ids.append(int(raw)) + except (ValueError, TypeError): + pass + month = request.GET.get('month') + contract_id = request.GET.get('contract') + charge_number_id = request.GET.get('charge_number') + + if employee_ids: + logs = logs.filter(timeCard__employee_id__in=employee_ids) + if month: + try: + year, mon = month.split('-', 1) + logs = logs.filter(date__year=int(year), date__month=int(mon)) + except (ValueError, TypeError): + pass + if contract_id: + logs = logs.filter(charge_number__contract_id=contract_id) + if charge_number_id: + logs = logs.filter(charge_number_id=charge_number_id) + + charge_numbers = ChargeNumber.objects.select_related('contract').order_by('contract__name', 'name') + if contract_id: + charge_numbers = charge_numbers.filter(contract_id=contract_id) + + contract_totals = ( + logs.filter(charge_number__isnull=False) + .values('charge_number__contract_id', 'charge_number__contract__name') + .annotate(total_hours=Sum('hour')) + .order_by('charge_number__contract__name') + ) + charge_number_totals = ( + logs.filter(charge_number__isnull=False) + .values( + 'charge_number_id', + 'charge_number__name', + 'charge_number__contract__name', + ) + .annotate(total_hours=Sum('hour')) + .order_by('charge_number__contract__name', 'charge_number__name') + ) + grand_total = logs.aggregate(total_hours=Sum('hour'))['total_hours'] or 0.0 + + return render(request, 'financial/time_logs.html', { + 'logs': logs, + 'employees': Employee.objects.select_related('user').order_by('user__last_name', 'user__first_name'), + 'contracts': Contract.objects.order_by('name'), + 'charge_numbers': charge_numbers, + 'contract_totals': contract_totals, + 'charge_number_totals': charge_number_totals, + 'grand_total': grand_total, + 'filters': { + 'employees': [str(eid) for eid in employee_ids], + 'month': month or '', + 'contract': contract_id or '', + 'charge_number': charge_number_id or '', + }, + }) @user_passes_test(is_admin) def edit_time_log(request, log_id): diff --git a/company_site/planning/templates/planning/backlog.html b/company_site/planning/templates/planning/backlog.html index 01f26ef..20da25f 100644 --- a/company_site/planning/templates/planning/backlog.html +++ b/company_site/planning/templates/planning/backlog.html @@ -8,24 +8,58 @@

Backlog

- View Board + View + Board {% if is_developer %} {% endif %}
- - - {% for status_value, status_label in statuses %} - + + {% endfor %} + + + +
+ + +
+ +
+ + +
+ + Clear + Filters -
+
@@ -38,10 +72,21 @@ {% for item in items %} - + - - + + diff --git a/company_site/planning/templates/planning/board.html b/company_site/planning/templates/planning/board.html index 0a46703..e3d3bc0 100644 --- a/company_site/planning/templates/planning/board.html +++ b/company_site/planning/templates/planning/board.html @@ -5,112 +5,129 @@ {% block content %}

Planning Board

- View Backlog + View + Backlog {% if is_developer %} {% endif %} @@ -123,10 +140,13 @@

Todo {{ todo_items.count }}

{% for item in todo_items %} -
+
{{ item.title }}
{% if item.charge_number %} -
{{ item.charge_number.contract.name }} ({{ item.charge_number.slug }})
+
+ {{ item.charge_number.contract.name }} ({{ item.charge_number }})
{% endif %} {% if item.description %}
{{ item.description|truncatechars:50 }}
@@ -141,10 +161,13 @@

In Progress {{ in_progress_items.count }}

{% for item in in_progress_items %} -
+
{{ item.title }}
{% if item.charge_number %} -
{{ item.charge_number.contract.name }} ({{ item.charge_number.slug }})
+
+ {{ item.charge_number.contract.name }} ({{ item.charge_number }})
{% endif %} {% if item.description %}
{{ item.description|truncatechars:50 }}
@@ -159,10 +182,13 @@

Done {{ done_items.count }}

{% for item in done_items %} -
+
{{ item.title }}
{% if item.charge_number %} -
{{ item.charge_number.contract.name }} ({{ item.charge_number.slug }})
+
+ {{ item.charge_number.contract.name }} ({{ item.charge_number }})
{% endif %} {% if item.description %}
{{ item.description|truncatechars:50 }}
@@ -186,7 +212,8 @@
- +
- +
- +
@@ -16,23 +17,23 @@ {% endfor %}
- +
- +
- +
Created: {{ item.created_at|date:"M d, Y H:i" }}
@@ -41,7 +42,10 @@
- +
@@ -54,25 +58,56 @@ // Ensure form redirects to the current page upon save or delete document.getElementById('editItemNext').value = window.location.pathname; document.getElementById('deleteItemNext').value = window.location.pathname; + + // Handle AJAX submission for editing + const editForm = document.querySelector('form[action*="edit"]'); + if (editForm) { + editForm.onsubmit = (e) => { + e.preventDefault(); + const formData = new FormData(editForm); + fetch(editForm.action, { + method: 'POST', + body: formData, + headers: { + 'X-Requested-With': 'XMLHttpRequest', + 'X-CSRFToken': formData.get('csrf_token') + } + }).then(res => res.json()) + .then(data => { + if (data.status === 'success') { + // Close modal and refresh the current page to show updates + // (Alternatively, we could update the item in the DOM dynamically) + location.reload(); + } else { + alert('Error updating item: ' + (data.message || 'Unknown error')); + } + }); + }; + } {% else %}

{{ item.title }}

- {{ item.get_status_display }} + {{ + item.get_status_display }} {% if item.charge_number %} - Charge Number: {{ item.charge_number.contract.name }} ({{ item.charge_number.slug }}) ({{ item.charge_number.get_percent_complete|floatformat:0 }}% Complete) + Charge + Number: {{ item.charge_number.contract.name }} ({{ item.charge_number.slug }}) ({{ + item.charge_number.get_percent_complete|floatformat:0 }}% Complete) {% endif %}
-{% if item.description %} -{{ item.description }} -{% else %} -No description provided. -{% endif %} + {% if item.description %} + {{ item.description }} + {% else %} + No description provided. + {% endif %}

Created: {{ item.created_at|date:"M d, Y H:i" }}
Updated: {{ item.updated_at|date:"M d, Y H:i" }}
-{% endif %} +{% endif %} \ No newline at end of file diff --git a/company_site/public/templates/base.html b/company_site/public/templates/base.html index e37b1ee..89c2f03 100644 --- a/company_site/public/templates/base.html +++ b/company_site/public/templates/base.html @@ -7,25 +7,25 @@ {% block title %}AI ML Operations, LLC{% endblock %} + content="{% block meta_description %}AI ML Operations, LLC — forward-deployed AI engineering. We embed with your team to build and deploy custom agentic workflows and production AI systems.{% endblock %}"> + content="{% block og_description %}Forward-deployed AI engineering — custom agentic workflows deployed in your environment.{% endblock %}"> + content="{% block og_image %}{{ request.scheme }}://{{ request.get_host }}{% static 'public/img/logo.png' %}{% endblock %}"> + content="{% block twitter_description %}Forward-deployed AI engineering — custom agentic workflows deployed in your environment.{% endblock %}"> + content="{% block twitter_image %}{{ request.scheme }}://{{ request.get_host }}{% static 'public/img/logo.png' %}{% endblock %}"> @@ -34,7 +34,7 @@ - + {% if not debug %} AI ML Operations, LLC. All rights reserved. + +
diff --git a/company_site/public/templates/public/bot.html b/company_site/public/templates/public/bot.html index b5a9d3f..55d0620 100644 --- a/company_site/public/templates/public/bot.html +++ b/company_site/public/templates/public/bot.html @@ -1,55 +1,97 @@ {% extends "base.html" %} {% load static %} -{% block title %}Agentic Bots - AI ML Operations, LLC{% endblock %} -{% block meta_description %}Intelligent agentic bots for automation and engagement. AI ML Operations, LLC develops -custom bots for Telegram and other platforms.{% endblock %} +{% block title %}AI Agents & Automation - AI ML Operations, LLC{% endblock %} +{% block meta_description %}Custom proprietary AI agents for workflow automation and conversations. Web-hosted, scalable, with real-time performance analytics by AI ML Operations, LLC.{% endblock %} +{% block og_title %}AI Agents & Automation - AI ML Operations, LLC{% endblock %} +{% block og_description %}Proprietary web-hosted AI agents with scalable hosting and real-time performance analytics.{% endblock %} {% block content %} - -
+
-

Agentic Bots

-

Intelligent Bots for Automation and Engagement

+

AI Agents & Automation

+

+ Proprietary agents built for your workflows and conversations—hosted, scalable, and observable. +

+
-
-

About Agentic Bots

-

- At AI ML Operations, we create intelligent, agentic bots designed to automate tasks, engage users, and streamline - workflows. Our bots currently integrate seamlessly with Telegram, but we can customize them to suit your specific - platform or needs. Whether you need a bot for customer support, data collection, or process automation, we deliver - solutions that are reliable, scalable, and easy to use. +

About Our AI Agents

+

+ We design and deploy proprietary AI agents that automate tasks, support customers, and orchestrate multi-step workflows. + Agents are web-hosted and built to scale with your business. As part of our forward-deployed engagements—or as standalone + products—we integrate with your platforms (including Telegram and custom channels) and give you visibility into how + agents perform in the real world.

-

What We Offer

-
Custom Bot Development
-

Tailored bots designed to meet your unique business requirements.

+
Custom Agent Development
+

Agents tailored to your data, policies, and workflows—not generic chatbots.

+
+
+
Web-Hosted & Scalable
+

Production hosting and maintenance so your agents stay available 24/7.

+
+
+
Analytics & Insights
+

Real-time performance metrics and conversation analytics so you can improve outcomes continuously.

Platform Integration
-

Bots that integrate with Telegram or other platforms of your choice.

-
-
-
Hosting & Maintenance
-

We host and maintain your bots, ensuring they run smoothly 24/7.

+

Telegram, web embeds, APIs, and custom channels connected to your operations.

-
+
+

How We Build

+

+ Robust agentic orchestration—not simple API wrappers. Representative stack: +

+
+
+ LangChain & LangGraph +

Stateful agent workflows and multi-step orchestration.

+
+
+ LangSmith +

Tracing, evaluation, and observability for LLM pipelines.

+
+
+ Pydantic AI +

Type-safe agents with structured inputs and outputs.

+
+
+ Pipecat AI +

Real-time voice and multimodal conversation pipelines.

+
+
+ Model Context Protocol (MCP) +

Standardized tool and data access for agent systems.

+
+
+ Local & Self-Hosted LLM Inference +

On-prem and air-gapped deployment for sensitive workloads.

+
+
+
+
+ +

Applications

@@ -57,30 +99,29 @@ custom bots for Telegram and other platforms.{% endblock %} Customer Support Customer Support -

Automate responses and provide instant support to your customers.

+

Automate responses and escalate intelligently when human judgment is required.

Data Collection Data Collection -

Gather and organize data efficiently using intelligent bots.

+

Gather and structure data from conversations and workflows automatically.

Process Automation Process Automation -

Streamline workflows and reduce manual effort with automated bots.

+

Multi-step agent workflows that reduce manual effort across departments.

-

Ready to Automate?

-

Contact us today to create your custom agentic bot.

- Get Started +

Tell us the workflow you want an agent to own—we will design, deploy, and monitor it.

+ Get Started
-{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/company_site/public/templates/public/change_password.html b/company_site/public/templates/public/change_password.html new file mode 100644 index 0000000..d3407cc --- /dev/null +++ b/company_site/public/templates/public/change_password.html @@ -0,0 +1,74 @@ +{% extends "base.html" %} +{% load static %} + +{% block title %}Change Password - AI ML Operations, LLC{% endblock %} + +{% block content %} +
+
+

Change Password

+ +
+ {% if messages %} + {% for message in messages %} +
+ {{ message }} +
+ {% endfor %} + {% endif %} + +
+ {% csrf_token %} + {% for field in form %} +
+ + {{ field }} + {% if field.help_text %} + {{ + field.help_text }} + {% endif %} + {% for error in field.errors %} +

{{ error + }}

+ {% endfor %} +
+ {% endfor %} + +
+ +
+ + + +
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/company_site/public/templates/public/chat.html b/company_site/public/templates/public/chat.html index af510d8..6736c27 100644 --- a/company_site/public/templates/public/chat.html +++ b/company_site/public/templates/public/chat.html @@ -2,8 +2,7 @@ {% load static %} {% block title %}Secure AI Chat - AI ML Operations, LLC{% endblock %} -{% block meta_description %}Secure, private AI chat solution by AI ML Operations, LLC. Host locally, analyze files -securely, and keep your data safe.{% endblock %} +{% block meta_description %}Secure, hosted AI chat by AI ML Operations, LLC—an example of scalable, privacy-first AI products with production deployment.{% endblock %} {% block content %} @@ -12,8 +11,8 @@ securely, and keep your data safe.{% endblock %}

Your Private, Secure AI Workspace

- Experience the power of a locally hosted Large Language Model. - Keep your data safe, analyze files securely, and never worry about third-party access. + A production-ready, hosted LLM workspace—built the way we deliver forward-deployed systems: scalable, observable, and + designed to keep your data under your control.

Launch Chat diff --git a/company_site/public/templates/public/contact.html b/company_site/public/templates/public/contact.html index 9cd8c40..8a3458b 100644 --- a/company_site/public/templates/public/contact.html +++ b/company_site/public/templates/public/contact.html @@ -2,15 +2,14 @@ {% load static %} {% block title %}Contact Us - AI ML Operations, LLC{% endblock %} -{% block meta_description %}Get in touch with AI ML Operations, LLC. Contact us for AI solutions, web design, hosting, -and more. We'd love to hear from you.{% endblock %} +{% block meta_description %}Tell AI ML Operations about your operational bottleneck. Forward-deployed AI engineering, custom agents, and production ML deployments.{% endblock %} {% block content %}

Get in Touch

-

We'd love to hear from you.

+

Describe the workflow or bottleneck you want to automate—we will help you scope a forward-deployed solution.

@@ -46,11 +45,11 @@ and more. We'd love to hear from you.{% endblock %}
- +
- +
diff --git a/company_site/public/templates/public/forward_deployed.html b/company_site/public/templates/public/forward_deployed.html new file mode 100644 index 0000000..2cfc3ea --- /dev/null +++ b/company_site/public/templates/public/forward_deployed.html @@ -0,0 +1,152 @@ +{% extends "base.html" %} +{% load static %} + +{% block title %}Forward-Deployed AI Engineering - AI ML Operations, LLC{% endblock %} +{% block meta_description %}AI ML Operations embeds with your team to architect, build, and deploy custom AI workflows and agentic automation in your environment—not slide decks.{% endblock %} +{% block og_title %}Forward-Deployed AI Engineering - AI ML Operations, LLC{% endblock %} +{% block og_description %}Embed with your team. Map bottlenecks. Build and deploy production AI workflows in your stack.{% endblock %} +{% block twitter_title %}Forward-Deployed AI Engineering - AI ML Operations, LLC{% endblock %} +{% block twitter_description %}Embed with your team. Map bottlenecks. Build and deploy production AI workflows in your stack.{% endblock %} + +{% block content %} +
+
+

Forward-Deployed AI

+

+ We embed with your team to architect, build, and deploy custom AI workflows that solve real operational bottlenecks. +

+ +
+
+ +
+
+

What Is Forward-Deployed AI?

+

+ Instead of handing you a strategy deck and walking away, we work inside your organization—onsite or embedded remotely. + We map messy, real-world workflows, integrate with your existing systems, and ship production automation that your team + can run day to day. You get faster time-to-value without hiring a full-time specialized AI engineering team. +

+
+
+ +
+
+

How We Work

+
+
+ 01 + Embed +

Join your team to understand operations, stakeholders, and constraints—not just the tech stack.

+
+
+ 02 + Map +

Audit workflows, data sources, and integration points. Identify where AI removes friction.

+
+
+ 03 + Build +

Design agentic workflows, APIs, and orchestration tailored to your environment and security needs.

+
+
+ 04 + Deploy +

Ship to production with monitoring, documentation, and handoff so the system keeps running after we leave.

+
+ +
+ 05 + Monitor +

Track performance, refine workflows, and iterate for continuous improvement.

+
+
+ 06 + Handoff +

Transfer ownership and documentation to your team for ongoing maintenance.

+
+
+
+
+ +
+
+

What We Deliver

+
+
+
Workflow Automation
+

Multi-step agentic pipelines that connect LLMs, tools, and your internal systems—not one-off chat wrappers.

+
+
+
Deep Integrations
+

CRM, ticketing, databases, document stores, and custom APIs wired into solutions that fit how you already work.

+
+
+
Enterprise-Ready Architecture
+

Self-hosted and air-gapped options, sensitive-data handling, and architectures designed with compliance-minded teams in mind.

+
+
+
+
+ +
+
+

Technical Stack

+

+ We build robust, observable agent systems—not demos. Representative tools and frameworks we use: +

+
+
+ LangChain & LangGraph +

Stateful agent workflows and multi-step orchestration.

+
+
+ LangSmith +

Tracing, evaluation, and observability for LLM pipelines.

+
+
+ Pydantic AI +

Type-safe agents with structured inputs and outputs.

+
+
+ Pipecat AI +

Real-time voice and multimodal conversation pipelines.

+
+
+ Model Context Protocol (MCP) +

Standardized tool and data access for agent systems.

+
+
+ Local & Self-Hosted LLM Inference +

On-prem and air-gapped deployment for sensitive workloads.

+
+
+ n8n +

Workflow automation connecting APIs, triggers, and internal systems.

+
+
+
+
+ +
+
+

Who This Is For

+

+ Leaders who have access to LLMs but struggle to wire them into daily operations. Teams suffering from “AI fatigue”—lots of + pilots, little production impact. Organizations that need an engineer in the trenches, not another advisory engagement. +

+
+
+ +
+
+

Ready to Deploy?

+

Tell us the workflow that is costing you the most time. We will help you automate it.

+ +
+
+{% endblock %} diff --git a/company_site/public/templates/public/index.html b/company_site/public/templates/public/index.html new file mode 100755 index 0000000..5573d05 --- /dev/null +++ b/company_site/public/templates/public/index.html @@ -0,0 +1,143 @@ + +{% load static %} + + + AI/ML Operations, LLC + + + +
+ +
+ + +
+
+
+

About Us

+

At AI/ML Operations, we're are commited to bringing production ready AI and ML to workflows. We have over a decad of experience create both ML models as well as AI algorithms to solve some of the the most demanding problem spaces.

+
+
+
+ +
+
+

Services

+
+
+

ML Model Creation

+

Unleash the power of data with our cutting-edge ML model creation services, tailored to your unique needs. From data preprocessing to model training and deployment, we streamline the process to unlock actionable insights.

+
+
+

Pipeline Optimization

+

Boost efficiency and productivity with our pipeline optimization solutions. We fine-tune your workflows, automate repetitive tasks, and integrate advanced analytics to optimize your business processes for peak performance.

+
+
+

AI Algorithms for Sensors

+

Harness the potential of sensor data with our advanced AI algorithms tailored for diverse applications. From real-time processing to post collection data analysis, our algorithms empower you to extract valuable insights, optimize processes, and drive innovation.

+
+
+

Web Design

+

Elevate your online presence with captivating web design that blends creativity with functionality. Our expert designers craft visually stunning websites that engage your audience and drive conversions, ensuring a seamless user experience across all devices.

+
+
+

File Hosting

+

Securely store and share your files with ease using our reliable file hosting platform. With robust encryption and flexible access controls, you can confidently manage your data, collaborate seamlessly, and streamline your workflow.

+
+
+

App Virtualization

+

Transform your software delivery with our app virtualization solutions, enabling seamless access to applications from any device, anywhere. Experience enhanced flexibility, scalability, and security as we optimize your IT infrastructure for the digital age.

+
+
+ +
+
+
+
+
+

Partners

+
+ Ansys +
+
+
+
+
+
+

Contact Us

+
+ {% csrf_token %} +
+ {% if success %} + + {% endif %} + {% if errors %} + + {% endif %} + + +
+ +
+
+ +
+
+ +
+
+ {% if capchaForm %} + {{ capchaForm }} + {% endif %} +
+
+ + + +
+ +
+ + +
+
+
+

© AI/ML Operations, LLC. ALL RIGHTS RESERVED

+ +
+
+ +
+ + + + diff --git a/company_site/public/templates/public/ml_model.html b/company_site/public/templates/public/ml_model.html index 10ec790..7fa4d37 100644 --- a/company_site/public/templates/public/ml_model.html +++ b/company_site/public/templates/public/ml_model.html @@ -18,11 +18,15 @@ supervised, unsupervised, and reinforcement learning.{% endblock %}

About ML Model Creation

-

- At AI ML Operations, we specialize in creating custom machine learning models to solve complex problems across - industries. With extensive expertise in supervised, unsupervised, and reinforcement learning, we design models - that deliver accurate, scalable, and actionable insights. Whether you need predictive analytics, pattern - recognition, or decision-making systems, we provide end-to-end solutions tailored to your needs. +

+ We build custom machine learning models and deploy them inside your pipelines—not as disconnected experiments. + With expertise in supervised, unsupervised, and reinforcement learning, we deliver models that integrate with + forward-deployed engagements: predictive analytics, pattern recognition, and decision systems wired into how you operate. +

+

+ Need full workflow automation around your models? See our + forward-deployed AI and + AI agents services.

diff --git a/company_site/public/templates/public/new_index.html b/company_site/public/templates/public/new_index.html index 33b3641..51376a2 100644 --- a/company_site/public/templates/public/new_index.html +++ b/company_site/public/templates/public/new_index.html @@ -2,8 +2,11 @@ {% load static %} {% block title %}Home - AI ML Operations, LLC{% endblock %} -{% block meta_description %}AI ML Operations, LLC specializes in delivering production-ready AI and ML solutions, custom -web design, and reliable hosting services.{% endblock %} +{% block meta_description %}Forward-deployed AI engineering by AI ML Operations, LLC. We embed with your team to build and deploy custom agentic workflows, integrations, and production AI systems.{% endblock %} +{% block og_title %}Forward-Deployed AI Engineering - AI ML Operations, LLC{% endblock %} +{% block og_description %}We embed with your team to architect, build, and deploy custom AI workflows that solve real operational bottlenecks.{% endblock %} +{% block twitter_title %}Forward-Deployed AI Engineering - AI ML Operations, LLC{% endblock %} +{% block twitter_description %}We embed with your team to architect, build, and deploy custom AI workflows that solve real operational bottlenecks.{% endblock %} {% block content %} @@ -11,74 +14,152 @@ web design, and reliable hosting services.{% endblock %}

AI ML Operations

-

Taking concepts to production with intelligent solutions.

+

+ Forward-deployed AI engineering. We embed with your team to architect, build, and deploy custom AI workflows that solve complex operational bottlenecks. +

+
-
+

About Us

-

- At AI/ML Operations, we are dedicated to delivering production-ready AI and ML solutions that seamlessly integrate - into your workflows. With over a decade of experience, we specialize in crafting cutting-edge machine learning - models and AI algorithms to tackle the most complex and demanding challenges across various industries. +

+ At AI ML Operations, we deliver production-ready AI by embedding with your team—not handing off strategy decks. + With over a decade of experience, we audit your real workflows, integrate with your infrastructure, and deploy + agentic automation and machine learning where it creates measurable impact. You reduce time-to-value without building + a full-time specialized AI engineering org from scratch.

+ + +
+
+

How We Work

+
+
+ 01 + Embed +

Work alongside your team—onsite or remote—to understand operations and constraints.

+
+
+ 02 + Map +

Document workflows, data flows, and integration points across your stack.

+
+
+ 03 + Build +

Ship agents, orchestration, and integrations tailored to your environment.

+
+
+ 04 + Deploy +

Launch to production with monitoring, analytics, and a clean handoff.

+
+
+ 05 + Monitor +

Track performance, refine workflows, and iterate for continuous improvement.

+
+
+ 06 + Handoff +

Transfer ownership and documentation to your team for ongoing maintenance.

+
+
+

+ Learn more about forward-deployed AI → +

+
+
+ + + + -
+

Our Services

+

+ Core delivery: embedded AI engineering and production agents. +

- - AI Sensor Algorithms -

Develop intelligent algorithms that enhance sensor data processing, enabling real-time - insights and decision-making for IoT and industrial applications.

+
+ Primary + Forward-Deployed AI +

Embed with your team to map bottlenecks, build integrations, and deploy custom AI workflows in your environment.

- - AI Education -

Stay ahead of the AI technology curve with our AI Education classes. Classes are tailored - to the audience familiarity with AI. Held in-person or virtual.

+
+ Primary + AI Agents & Automation +

Proprietary web-hosted agents for your workflows and conversations—scalable hosting plus performance and real-time analytics.

- - Bot Creation -

Build agentic intelligent bots for workflow automation, customer support, and data - collection for enhancing productivity and user experience.

-
- - - Chat -

Chat is a closed-source Large Language Model (LLM) designed specifically for small and - medium businesses.

-
- - - Computer Builds -

Whether you're looking for a server for storage or compute or a workstation computer, we - will build your next system for you.

-
- - - File Hosting -

Secure and scalable file hosting solutions to store, manage, and share your data with ease - and confidence.

+
+ Primary + Web Design and Hosting +

Modern websites with reliable hosting for your online presence.

ML Model Creation -

Design and deploy custom machine learning models tailored to your business needs, ensuring - accuracy, scalability, and performance.

+

Custom models designed for deployment inside your pipelines—not experiments that never ship.

- - Web Design and Hosting -

Create visually stunning and highly functional websites, coupled with reliable hosting - solutions to ensure your online presence is always at its best.

+
+ Secure AI Chat +

Hosted LLM workspace with privacy-first architecture—an example of how we deliver scalable, observable AI products.

+
+ + + AI Sensor Algorithms +

Intelligent algorithms for sensor data processing, real-time insights, and IoT applications.

+
+ + + AI Education +

Tailored AI training for your team—in-person or virtual.

+
+ + + Computer Builds +

Servers and workstations for compute, storage, and local inference workloads.

+
+ + + File Hosting +

Secure, scalable file hosting to store and share your data.

@@ -86,4 +167,4 @@ web design, and reliable hosting services.{% endblock %}
-{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/company_site/public/templates/public/web_design.html b/company_site/public/templates/public/web_design.html index 663ad44..45fc97a 100644 --- a/company_site/public/templates/public/web_design.html +++ b/company_site/public/templates/public/web_design.html @@ -93,12 +93,15 @@ visually stunning, functional websites tailored to your business.{% endblock %}

Web Hosting Plans

-
- +
+
+ Monthly + + Yearly +
@@ -139,12 +142,18 @@ visually stunning, functional websites tailored to your business.{% endblock %}
diff --git a/company_site/public/urls.py b/company_site/public/urls.py old mode 100644 new mode 100755 index 00ec244..195ad5d --- a/company_site/public/urls.py +++ b/company_site/public/urls.py @@ -11,7 +11,9 @@ urlpatterns = [ path("ai_sensor", views.ai_sensor, name="ai_sensor"), path("file_hosting", views.file_hosting, name="file_hosting"), path("bot_creation", views.bot, name="bot"), + path("forward-deployed-ai", views.forward_deployed, name="forward_deployed"), path("ml_model", views.ml_model, name="ml_model"), path("contact", views.contact, name="contact"), + path("change_password", views.change_password, name="change_password"), path("preview_email//", views.preview_email, name="preview_email") -] \ No newline at end of file +] diff --git a/company_site/public/views.py b/company_site/public/views.py old mode 100644 new mode 100755 index e656882..685c454 --- a/company_site/public/views.py +++ b/company_site/public/views.py @@ -1,4 +1,4 @@ -from django.shortcuts import render, get_object_or_404 +from django.shortcuts import render, get_object_or_404, redirect from django.http import HttpResponse from .models import Contact, EmailMessage @@ -8,6 +8,9 @@ from django.conf import settings from django.core.mail import send_mail from .forms import FormWithCaptcha from django.contrib.auth.decorators import login_required +from django.contrib.auth.forms import PasswordChangeForm +from django.contrib.auth import update_session_auth_hash +from django.contrib import messages def send_contact_email(email, subject, message): subject = "New Contact Request for AI ML Operations, LLC" @@ -46,6 +49,9 @@ def file_hosting(request): def bot(request): return render(request, "public/bot.html", {}) +def forward_deployed(request): + return render(request, "public/forward_deployed.html", {}) + def ml_model(request): return render(request, "public/ml_model.html", {}) @@ -101,4 +107,21 @@ def contact(request): capcha = None if settings.DEBUG else FormWithCaptcha() return render(request, "public/contact.html", {'capchaForm': capcha}) + +@login_required +def change_password(request): + if request.method == 'POST': + form = PasswordChangeForm(request.user, request.POST) + if form.is_valid(): + user = form.save() + update_session_auth_hash(request, user) # Important! + messages.success(request, 'Your password was successfully updated!') + return redirect('public_index') + else: + messages.error(request, 'Please correct the error below.') + else: + form = PasswordChangeForm(request.user) + return render(request, 'public/change_password.html', { + 'form': form + })
{{ item.title }}{% if item.charge_number %}{{ item.charge_number.contract.name }} - {{ item.charge_number.slug }} ({{ item.charge_number.get_percent_complete|floatformat:0 }}%){% else %}-{% endif %}{{ item.get_status_display }} + {% if item.charge_number %}{{ + item.charge_number }} ({{ item.charge_number.get_percent_complete|floatformat:0 + }}%) + {% else %} + - + {% endif %} + + {{ item.get_status_display }} {{ item.created_at|date:"M d, Y" }} {{ item.updated_at|date:"M d, Y" }}