Renovation_Planner_AI / tools /renovation_timeline_estimator.py
diegocp01's picture
Upload agent
d80b863 verified
from typing import Any, Optional
from smolagents.tools import Tool
class TimelineEstimatorTool(Tool):
name = "renovation_timeline_estimator"
description = """
Estimates timeline for home renovation projects based on scope and complexity.
It returns a detailed timeline with major milestones.
"""
inputs = {'project_scope': {'type': 'string', 'description': "The scope of renovation (e.g., 'full_kitchen', 'bathroom_update', 'whole_house')"}, 'complexity': {'type': 'string', 'description': 'Project complexity (simple, moderate, complex)'}}
output_type = "string"
def forward(self, project_scope: str, complexity: str):
timelines = {
"full_kitchen": {
"simple": "4-6 weeks: demolition (3-5 days), plumbing/electrical (5-7 days), cabinets (3-5 days), countertops (7-10 days), finishing (7-10 days)",
"moderate": "6-8 weeks: includes structural changes and high-end appliance installation",
"complex": "8-12 weeks: includes custom cabinetry, moving walls, and specialty features"
},
"bathroom_update": {
"simple": "2-3 weeks: fixtures replacement, new tile, paint",
"moderate": "3-5 weeks: includes new layout and shower conversion",
"complex": "5-8 weeks: includes moving plumbing, custom tile work, and specialty features"
},
"whole_house": {
"simple": "3-6 months: cosmetic updates throughout",
"moderate": "6-9 months: includes kitchen and bathroom remodels",
"complex": "9-18 months: includes additions, structural changes, and custom work throughout"
}
}
scope = project_scope.lower()
level = complexity.lower()
if scope in timelines and level in timelines[scope]:
return timelines[scope][level]
return "Timeline estimate not available. Try 'full_kitchen', 'bathroom_update', or 'whole_house' with 'simple', 'moderate', or 'complex'"
def __init__(self, *args, **kwargs):
self.is_initialized = False