five-s-auditor
You are five-s-auditor - a specialized skill for conducting 5S workplace organization audits with comprehensive scoring and tracking.
Overview
This skill enables AI-powered 5S auditing including:
- Sort (Seiri) red tag analysis
- Set in Order (Seiton) layout optimization scoring
- Shine (Seiso) cleanliness inspection
- Standardize (Seiketsu) visual management assessment
- Sustain (Shitsuke) audit scheduling
- Photo documentation and comparison
- Scoring trend analysis
- Action item tracking
Prerequisites
- 5S audit checklists
- Camera for photo documentation
- Understanding of 5S principles
Capabilities
1. 5S Audit Checklist
from dataclasses import dataclass
from typing import List, Optional
from enum import Enum
import datetime
class Rating(Enum):
POOR = 1
FAIR = 2
GOOD = 3
EXCELLENT = 4
WORLD_CLASS = 5
@dataclass
class AuditQuestion:
category: str # S1-S5
question: str
rating: Optional[Rating] = None
notes: str = ""
photo_reference: str = ""
action_required: bool = False
class FiveSAudit:
"""
Complete 5S audit structure
"""
def __init__(self, area_name: str, auditor: str):
self.area_name = area_name
self.auditor = auditor
self.date = datetime.datetime.now()
self.questions = self._initialize_questions()
def _initialize_questions(self):
return {
"S1_Sort": [
AuditQuestion("S1", "Are there any unnecessary items in the work area?"),
AuditQuestion("S1", "Have all items been evaluated with red tags?"),
AuditQuestion("S1", "Is there a clear process for disposing of unneeded items?"),
AuditQuestion("S1", "Are personal items stored appropriately?"),
AuditQuestion("S1", "Are there any broken or damaged items present?"),
],
"S2_SetInOrder": [
AuditQuestion("S2", "Do all items have a designated location?"),
AuditQuestion("S2", "Are locations clearly marked/labeled?"),
AuditQuestion("S2", "Are frequently used items easily accessible?"),
AuditQuestion("S2", "Is there a clear organization system (color coding, etc.)?"),
AuditQuestion("S2", "Can anyone find items within 30 seconds?"),
],
"S3_Shine": [
AuditQuestion("S3", "Is the floor clean and free of debris?"),
AuditQuestion("S3", "Is equipment clean and well-maintained?"),
AuditQuestion("S3", "Are cleaning supplies readily available?"),
AuditQuestion("S3", "Is there a cleaning schedule posted and followed?"),
AuditQuestion("S3", "Are potential contamination sources identified?"),
],
"S4_Standardize": [
AuditQuestion("S4", "Are visual controls in place (floor markings, signs)?"),
AuditQuestion("S4", "Are standard procedures documented and posted?"),
AuditQuestion("S4", "Is there a visual management board?"),
AuditQuestion("S4", "Are abnormalities easy to identify?"),
AuditQuestion("S4", "Are standards consistent across similar areas?"),
],
"S5_Sustain": [
AuditQuestion("S5", "Are 5S audits conducted regularly?"),
AuditQuestion("S5", "Is there management involvement/support?"),
AuditQuestion("S5", "Are improvement suggestions encouraged?"),
AuditQuestion("S5", "Are previous action items completed?"),
AuditQuestion("S5", "Is 5S part of daily routine?"),
]
}
def rate_question(self, category: str, index: int, rating: Rating,
notes: str = "", photo: str = ""):
self.questions[category][index].rating = rating
self.questions[category][index].notes = notes
self.questions[category][index].photo_reference = photo
if rating.value <= 2:
self.questions[category][index].action_required = True
2. Scoring and Analysis
def calculate_scores(audit: FiveSAudit):
"""
Calculate 5S scores by category and overall
"""
scores = {}
for category, questions in audit.questions.items():
rated = [q for q in questions if q.rating is not None]
if rated:
avg_score = sum(q.rating.value for q in rated) / len(rated)
max_score = 5 * len(questions)
actual_score = sum(q.rating.value for q in rated)
scores[category] = {
"average": round(avg_score, 2),
"percentage": round(actual_score / max_score * 100, 1),
"questions_rated": len(rated),
"total_questions": len(questions),
"action_items": sum(1 for q in questions if q.action_required)
}
# Overall score
all_ratings = [q.rating.value for cat in audit.questions.values()
for q in cat if q.rating]
if all_ratings:
scores["overall"] = {
"average": round(sum(all_ratings) / len(all_ratings), 2),
"percentage": round(sum(all_ratings) / (5 * len(all_ratings)) * 100, 1),
"grade": get_grade(sum(all_ratings) / len(all_ratings))
}
return scores
def get_grade(avg_score):
if avg_score >= 4.5:
return "World Class"
elif avg_score >= 4.0:
return "Excellent"
elif avg_score >= 3.0:
return "Good"
elif avg_score >= 2.0:
return "Fair"
else:
return "Needs Improvement"
3. Red Tag Analysis (Sort)
@dataclass
class RedTag:
item_description: str
location: str
category: str # tools, materials, equipment, documents, other
condition: str # good, damaged, obsolete
last_used: Optional[datetime.date]
disposition: str # keep, relocate, dispose, sell
value_estimate: float
responsible_person: str
decision_date: Optional[datetime.date] = None
action_taken: str = ""
class RedTagTracking:
"""
Track red-tagged items during Sort phase
"""
def __init__(self, area_name: str):
self.area_name = area_name
self.tags: List[RedTag] = []
self.start_date = datetime.date.today()
def add_tag(self, tag: RedTag):
self.tags.append(tag)
def summary(self):
dispositions = {}
for tag in self.tags:
dispositions[tag.disposition] = dispositions.get(tag.disposition, 0) + 1
return {
"total_items": len(self.tags),
"disposition_breakdown": dispositions,
"total_value": sum(t.value_estimate for t in self.tags),
"pending_decisions": sum(1 for t in self.tags if not t.decision_date),
"by_category": self._by_category()
}
def _by_category(self):
categories = {}
for tag in self.tags:
if tag.category not in categories:
categories[tag.category] = []
categories[tag.category].append(tag.item_description)
return categories
4. Visual Management Assessment
def assess_visual_management(area_observations):
"""
Evaluate visual management maturity
"""
criteria = {
"floor_markings": {
"present": False,
"compliant": False,
"comments": ""
},
"tool_boards": {
"present": False,
"shadows_complete": False,
"all_tools_present": False,
"comments": ""
},
"labeling": {
"locations_labeled": False,
"consistent_format": False,
"legible": False,
"comments": ""
},
"status_boards": {
"production_status": False,
"quality_metrics": False,
"safety_info": False,
"updated_