tech-hub-skills 1.2.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/.claude/README.md +291 -0
  2. package/.claude/bin/cli.js +266 -0
  3. package/.claude/package.json +46 -0
  4. package/.claude/roles/ai-engineer/skills/01-prompt-engineering/prompt_ab_tester.py +356 -0
  5. package/.claude/roles/ai-engineer/skills/01-prompt-engineering/prompt_template_manager.py +274 -0
  6. package/.claude/roles/ai-engineer/skills/01-prompt-engineering/token_cost_estimator.py +324 -0
  7. package/.claude/roles/ai-engineer/skills/02-rag-pipeline/document_chunker.py +336 -0
  8. package/.claude/roles/ai-engineer/skills/02-rag-pipeline/rag_pipeline.sql +213 -0
  9. package/.claude/roles/data-engineer/skills/01-lakehouse-architecture/bronze_ingestion.py +337 -0
  10. package/.claude/roles/data-engineer/skills/01-lakehouse-architecture/medallion_queries.sql +300 -0
  11. package/.claude/roles/data-scientist/skills/01-eda-automation/eda_generator.py +446 -0
  12. package/.claude/roles/system-design/skills/08-process-automation/ai_prompt_generator.py +744 -0
  13. package/.claude/roles/system-design/skills/08-process-automation/automation_recommender.py +688 -0
  14. package/.claude/roles/system-design/skills/08-process-automation/plan_generator.py +679 -0
  15. package/.claude/roles/system-design/skills/08-process-automation/process_analyzer.py +528 -0
  16. package/.claude/roles/system-design/skills/08-process-automation/process_parser.py +684 -0
  17. package/.claude/roles/system-design/skills/08-process-automation/role_matcher.py +615 -0
  18. package/.claude/skills/README.md +336 -0
  19. package/.claude/skills/ai-engineer.md +104 -0
  20. package/.claude/skills/aws.md +143 -0
  21. package/.claude/skills/azure.md +149 -0
  22. package/.claude/skills/backend-developer.md +108 -0
  23. package/.claude/skills/code-review.md +399 -0
  24. package/.claude/skills/compliance-automation.md +747 -0
  25. package/.claude/skills/compliance-officer.md +108 -0
  26. package/.claude/skills/data-engineer.md +113 -0
  27. package/.claude/skills/data-governance.md +102 -0
  28. package/.claude/skills/data-scientist.md +123 -0
  29. package/.claude/skills/database-admin.md +109 -0
  30. package/.claude/skills/devops.md +160 -0
  31. package/.claude/skills/docker.md +160 -0
  32. package/.claude/skills/enterprise-dashboard.md +613 -0
  33. package/.claude/skills/finops.md +184 -0
  34. package/.claude/skills/frontend-developer.md +108 -0
  35. package/.claude/skills/gcp.md +143 -0
  36. package/.claude/skills/ml-engineer.md +115 -0
  37. package/.claude/skills/mlops.md +187 -0
  38. package/.claude/skills/network-engineer.md +109 -0
  39. package/.claude/skills/optimization-advisor.md +329 -0
  40. package/.claude/skills/orchestrator.md +623 -0
  41. package/.claude/skills/platform-engineer.md +102 -0
  42. package/.claude/skills/process-automation.md +226 -0
  43. package/.claude/skills/process-changelog.md +184 -0
  44. package/.claude/skills/process-documentation.md +484 -0
  45. package/.claude/skills/process-kanban.md +324 -0
  46. package/.claude/skills/process-versioning.md +214 -0
  47. package/.claude/skills/product-designer.md +104 -0
  48. package/.claude/skills/project-starter.md +443 -0
  49. package/.claude/skills/qa-engineer.md +109 -0
  50. package/.claude/skills/security-architect.md +135 -0
  51. package/.claude/skills/sre.md +109 -0
  52. package/.claude/skills/system-design.md +126 -0
  53. package/.claude/skills/technical-writer.md +101 -0
  54. package/.gitattributes +2 -0
  55. package/GITHUB_COPILOT.md +106 -0
  56. package/README.md +117 -224
  57. package/package.json +4 -42
  58. package/bin/cli.js +0 -241
  59. /package/{LICENSE → .claude/LICENSE} +0 -0
  60. /package/{bin → .claude/bin}/copilot.js +0 -0
  61. /package/{bin → .claude/bin}/postinstall.js +0 -0
  62. /package/{tech_hub_skills/skills → .claude/commands}/README.md +0 -0
  63. /package/{tech_hub_skills/skills → .claude/commands}/ai-engineer.md +0 -0
  64. /package/{tech_hub_skills/skills → .claude/commands}/aws.md +0 -0
  65. /package/{tech_hub_skills/skills → .claude/commands}/azure.md +0 -0
  66. /package/{tech_hub_skills/skills → .claude/commands}/backend-developer.md +0 -0
  67. /package/{tech_hub_skills/skills → .claude/commands}/code-review.md +0 -0
  68. /package/{tech_hub_skills/skills → .claude/commands}/compliance-automation.md +0 -0
  69. /package/{tech_hub_skills/skills → .claude/commands}/compliance-officer.md +0 -0
  70. /package/{tech_hub_skills/skills → .claude/commands}/data-engineer.md +0 -0
  71. /package/{tech_hub_skills/skills → .claude/commands}/data-governance.md +0 -0
  72. /package/{tech_hub_skills/skills → .claude/commands}/data-scientist.md +0 -0
  73. /package/{tech_hub_skills/skills → .claude/commands}/database-admin.md +0 -0
  74. /package/{tech_hub_skills/skills → .claude/commands}/devops.md +0 -0
  75. /package/{tech_hub_skills/skills → .claude/commands}/docker.md +0 -0
  76. /package/{tech_hub_skills/skills → .claude/commands}/enterprise-dashboard.md +0 -0
  77. /package/{tech_hub_skills/skills → .claude/commands}/finops.md +0 -0
  78. /package/{tech_hub_skills/skills → .claude/commands}/frontend-developer.md +0 -0
  79. /package/{tech_hub_skills/skills → .claude/commands}/gcp.md +0 -0
  80. /package/{tech_hub_skills/skills → .claude/commands}/ml-engineer.md +0 -0
  81. /package/{tech_hub_skills/skills → .claude/commands}/mlops.md +0 -0
  82. /package/{tech_hub_skills/skills → .claude/commands}/network-engineer.md +0 -0
  83. /package/{tech_hub_skills/skills → .claude/commands}/optimization-advisor.md +0 -0
  84. /package/{tech_hub_skills/skills → .claude/commands}/orchestrator.md +0 -0
  85. /package/{tech_hub_skills/skills → .claude/commands}/platform-engineer.md +0 -0
  86. /package/{tech_hub_skills/skills → .claude/commands}/process-automation.md +0 -0
  87. /package/{tech_hub_skills/skills → .claude/commands}/process-changelog.md +0 -0
  88. /package/{tech_hub_skills/skills → .claude/commands}/process-documentation.md +0 -0
  89. /package/{tech_hub_skills/skills → .claude/commands}/process-kanban.md +0 -0
  90. /package/{tech_hub_skills/skills → .claude/commands}/process-versioning.md +0 -0
  91. /package/{tech_hub_skills/skills → .claude/commands}/product-designer.md +0 -0
  92. /package/{tech_hub_skills/skills → .claude/commands}/project-starter.md +0 -0
  93. /package/{tech_hub_skills/skills → .claude/commands}/qa-engineer.md +0 -0
  94. /package/{tech_hub_skills/skills → .claude/commands}/security-architect.md +0 -0
  95. /package/{tech_hub_skills/skills → .claude/commands}/sre.md +0 -0
  96. /package/{tech_hub_skills/skills → .claude/commands}/system-design.md +0 -0
  97. /package/{tech_hub_skills/skills → .claude/commands}/technical-writer.md +0 -0
  98. /package/{tech_hub_skills → .claude}/roles/ai-engineer/skills/01-prompt-engineering/README.md +0 -0
  99. /package/{tech_hub_skills → .claude}/roles/ai-engineer/skills/02-rag-pipeline/README.md +0 -0
  100. /package/{tech_hub_skills → .claude}/roles/ai-engineer/skills/03-agent-orchestration/README.md +0 -0
  101. /package/{tech_hub_skills → .claude}/roles/ai-engineer/skills/04-llm-guardrails/README.md +0 -0
  102. /package/{tech_hub_skills → .claude}/roles/ai-engineer/skills/05-vector-embeddings/README.md +0 -0
  103. /package/{tech_hub_skills → .claude}/roles/ai-engineer/skills/06-llm-evaluation/README.md +0 -0
  104. /package/{tech_hub_skills → .claude}/roles/azure/skills/01-infrastructure-fundamentals/README.md +0 -0
  105. /package/{tech_hub_skills → .claude}/roles/azure/skills/02-data-factory/README.md +0 -0
  106. /package/{tech_hub_skills → .claude}/roles/azure/skills/03-synapse-analytics/README.md +0 -0
  107. /package/{tech_hub_skills → .claude}/roles/azure/skills/04-databricks/README.md +0 -0
  108. /package/{tech_hub_skills → .claude}/roles/azure/skills/05-functions/README.md +0 -0
  109. /package/{tech_hub_skills → .claude}/roles/azure/skills/06-kubernetes-service/README.md +0 -0
  110. /package/{tech_hub_skills → .claude}/roles/azure/skills/07-openai-service/README.md +0 -0
  111. /package/{tech_hub_skills → .claude}/roles/azure/skills/08-machine-learning/README.md +0 -0
  112. /package/{tech_hub_skills → .claude}/roles/azure/skills/09-storage-adls/README.md +0 -0
  113. /package/{tech_hub_skills → .claude}/roles/azure/skills/10-networking/README.md +0 -0
  114. /package/{tech_hub_skills → .claude}/roles/azure/skills/11-sql-cosmos/README.md +0 -0
  115. /package/{tech_hub_skills → .claude}/roles/azure/skills/12-event-hubs/README.md +0 -0
  116. /package/{tech_hub_skills → .claude}/roles/code-review/skills/01-automated-code-review/README.md +0 -0
  117. /package/{tech_hub_skills → .claude}/roles/code-review/skills/02-pr-review-workflow/README.md +0 -0
  118. /package/{tech_hub_skills → .claude}/roles/code-review/skills/03-code-quality-gates/README.md +0 -0
  119. /package/{tech_hub_skills → .claude}/roles/code-review/skills/04-reviewer-assignment/README.md +0 -0
  120. /package/{tech_hub_skills → .claude}/roles/code-review/skills/05-review-analytics/README.md +0 -0
  121. /package/{tech_hub_skills → .claude}/roles/data-engineer/skills/01-lakehouse-architecture/README.md +0 -0
  122. /package/{tech_hub_skills → .claude}/roles/data-engineer/skills/02-etl-pipeline/README.md +0 -0
  123. /package/{tech_hub_skills → .claude}/roles/data-engineer/skills/03-data-quality/README.md +0 -0
  124. /package/{tech_hub_skills → .claude}/roles/data-engineer/skills/04-streaming-pipelines/README.md +0 -0
  125. /package/{tech_hub_skills → .claude}/roles/data-engineer/skills/05-performance-optimization/README.md +0 -0
  126. /package/{tech_hub_skills → .claude}/roles/data-governance/skills/01-data-catalog/README.md +0 -0
  127. /package/{tech_hub_skills → .claude}/roles/data-governance/skills/02-data-lineage/README.md +0 -0
  128. /package/{tech_hub_skills → .claude}/roles/data-governance/skills/03-data-quality-framework/README.md +0 -0
  129. /package/{tech_hub_skills → .claude}/roles/data-governance/skills/04-access-control/README.md +0 -0
  130. /package/{tech_hub_skills → .claude}/roles/data-governance/skills/05-master-data-management/README.md +0 -0
  131. /package/{tech_hub_skills → .claude}/roles/data-governance/skills/06-compliance-privacy/README.md +0 -0
  132. /package/{tech_hub_skills → .claude}/roles/data-scientist/skills/01-eda-automation/README.md +0 -0
  133. /package/{tech_hub_skills → .claude}/roles/data-scientist/skills/02-statistical-modeling/README.md +0 -0
  134. /package/{tech_hub_skills → .claude}/roles/data-scientist/skills/03-feature-engineering/README.md +0 -0
  135. /package/{tech_hub_skills → .claude}/roles/data-scientist/skills/04-predictive-modeling/README.md +0 -0
  136. /package/{tech_hub_skills → .claude}/roles/data-scientist/skills/05-customer-analytics/README.md +0 -0
  137. /package/{tech_hub_skills → .claude}/roles/data-scientist/skills/06-campaign-analysis/README.md +0 -0
  138. /package/{tech_hub_skills → .claude}/roles/data-scientist/skills/07-experimentation/README.md +0 -0
  139. /package/{tech_hub_skills → .claude}/roles/data-scientist/skills/08-data-visualization/README.md +0 -0
  140. /package/{tech_hub_skills → .claude}/roles/devops/skills/01-cicd-pipeline/README.md +0 -0
  141. /package/{tech_hub_skills → .claude}/roles/devops/skills/02-container-orchestration/README.md +0 -0
  142. /package/{tech_hub_skills → .claude}/roles/devops/skills/03-infrastructure-as-code/README.md +0 -0
  143. /package/{tech_hub_skills → .claude}/roles/devops/skills/04-gitops/README.md +0 -0
  144. /package/{tech_hub_skills → .claude}/roles/devops/skills/05-environment-management/README.md +0 -0
  145. /package/{tech_hub_skills → .claude}/roles/devops/skills/06-automated-testing/README.md +0 -0
  146. /package/{tech_hub_skills → .claude}/roles/devops/skills/07-release-management/README.md +0 -0
  147. /package/{tech_hub_skills → .claude}/roles/devops/skills/08-monitoring-alerting/README.md +0 -0
  148. /package/{tech_hub_skills → .claude}/roles/devops/skills/09-devsecops/README.md +0 -0
  149. /package/{tech_hub_skills → .claude}/roles/finops/skills/01-cost-visibility/README.md +0 -0
  150. /package/{tech_hub_skills → .claude}/roles/finops/skills/02-resource-tagging/README.md +0 -0
  151. /package/{tech_hub_skills → .claude}/roles/finops/skills/03-budget-management/README.md +0 -0
  152. /package/{tech_hub_skills → .claude}/roles/finops/skills/04-reserved-instances/README.md +0 -0
  153. /package/{tech_hub_skills → .claude}/roles/finops/skills/05-spot-optimization/README.md +0 -0
  154. /package/{tech_hub_skills → .claude}/roles/finops/skills/06-storage-tiering/README.md +0 -0
  155. /package/{tech_hub_skills → .claude}/roles/finops/skills/07-compute-rightsizing/README.md +0 -0
  156. /package/{tech_hub_skills → .claude}/roles/finops/skills/08-chargeback/README.md +0 -0
  157. /package/{tech_hub_skills → .claude}/roles/ml-engineer/skills/01-mlops-pipeline/README.md +0 -0
  158. /package/{tech_hub_skills → .claude}/roles/ml-engineer/skills/02-feature-engineering/README.md +0 -0
  159. /package/{tech_hub_skills → .claude}/roles/ml-engineer/skills/03-model-training/README.md +0 -0
  160. /package/{tech_hub_skills → .claude}/roles/ml-engineer/skills/04-model-serving/README.md +0 -0
  161. /package/{tech_hub_skills → .claude}/roles/ml-engineer/skills/05-model-monitoring/README.md +0 -0
  162. /package/{tech_hub_skills → .claude}/roles/mlops/skills/01-ml-pipeline-orchestration/README.md +0 -0
  163. /package/{tech_hub_skills → .claude}/roles/mlops/skills/02-experiment-tracking/README.md +0 -0
  164. /package/{tech_hub_skills → .claude}/roles/mlops/skills/03-model-registry/README.md +0 -0
  165. /package/{tech_hub_skills → .claude}/roles/mlops/skills/04-feature-store/README.md +0 -0
  166. /package/{tech_hub_skills → .claude}/roles/mlops/skills/05-model-deployment/README.md +0 -0
  167. /package/{tech_hub_skills → .claude}/roles/mlops/skills/06-model-observability/README.md +0 -0
  168. /package/{tech_hub_skills → .claude}/roles/mlops/skills/07-data-versioning/README.md +0 -0
  169. /package/{tech_hub_skills → .claude}/roles/mlops/skills/08-ab-testing/README.md +0 -0
  170. /package/{tech_hub_skills → .claude}/roles/mlops/skills/09-automated-retraining/README.md +0 -0
  171. /package/{tech_hub_skills → .claude}/roles/platform-engineer/skills/01-internal-developer-platform/README.md +0 -0
  172. /package/{tech_hub_skills → .claude}/roles/platform-engineer/skills/02-self-service-infrastructure/README.md +0 -0
  173. /package/{tech_hub_skills → .claude}/roles/platform-engineer/skills/03-slo-sli-management/README.md +0 -0
  174. /package/{tech_hub_skills → .claude}/roles/platform-engineer/skills/04-developer-experience/README.md +0 -0
  175. /package/{tech_hub_skills → .claude}/roles/platform-engineer/skills/05-incident-management/README.md +0 -0
  176. /package/{tech_hub_skills → .claude}/roles/platform-engineer/skills/06-capacity-management/README.md +0 -0
  177. /package/{tech_hub_skills → .claude}/roles/product-designer/skills/01-requirements-discovery/README.md +0 -0
  178. /package/{tech_hub_skills → .claude}/roles/product-designer/skills/02-user-research/README.md +0 -0
  179. /package/{tech_hub_skills → .claude}/roles/product-designer/skills/03-brainstorming-ideation/README.md +0 -0
  180. /package/{tech_hub_skills → .claude}/roles/product-designer/skills/04-ux-design/README.md +0 -0
  181. /package/{tech_hub_skills → .claude}/roles/product-designer/skills/05-product-market-fit/README.md +0 -0
  182. /package/{tech_hub_skills → .claude}/roles/product-designer/skills/06-stakeholder-management/README.md +0 -0
  183. /package/{tech_hub_skills → .claude}/roles/security-architect/skills/01-pii-detection/README.md +0 -0
  184. /package/{tech_hub_skills → .claude}/roles/security-architect/skills/02-threat-modeling/README.md +0 -0
  185. /package/{tech_hub_skills → .claude}/roles/security-architect/skills/03-infrastructure-security/README.md +0 -0
  186. /package/{tech_hub_skills → .claude}/roles/security-architect/skills/04-iam/README.md +0 -0
  187. /package/{tech_hub_skills → .claude}/roles/security-architect/skills/05-application-security/README.md +0 -0
  188. /package/{tech_hub_skills → .claude}/roles/security-architect/skills/06-secrets-management/README.md +0 -0
  189. /package/{tech_hub_skills → .claude}/roles/security-architect/skills/07-security-monitoring/README.md +0 -0
  190. /package/{tech_hub_skills → .claude}/roles/system-design/skills/01-architecture-patterns/README.md +0 -0
  191. /package/{tech_hub_skills → .claude}/roles/system-design/skills/02-requirements-engineering/README.md +0 -0
  192. /package/{tech_hub_skills → .claude}/roles/system-design/skills/03-scalability/README.md +0 -0
  193. /package/{tech_hub_skills → .claude}/roles/system-design/skills/04-high-availability/README.md +0 -0
  194. /package/{tech_hub_skills → .claude}/roles/system-design/skills/05-cost-optimization-design/README.md +0 -0
  195. /package/{tech_hub_skills → .claude}/roles/system-design/skills/06-api-design/README.md +0 -0
  196. /package/{tech_hub_skills → .claude}/roles/system-design/skills/07-observability-architecture/README.md +0 -0
  197. /package/{tech_hub_skills → .claude}/roles/system-design/skills/08-process-automation/PROCESS_TEMPLATE.md +0 -0
  198. /package/{tech_hub_skills → .claude}/roles/system-design/skills/08-process-automation/README.md +0 -0
@@ -0,0 +1,688 @@
1
+ """
2
+ Automation Recommender - Recommends optimal automation strategies.
3
+
4
+ Part of the Tech Hub Skills Library (sd-08: Process Automation).
5
+ """
6
+
7
+ from dataclasses import dataclass, field
8
+ from typing import List, Dict, Optional, Tuple
9
+ from enum import Enum
10
+
11
+ from process_analyzer import ProcessAnalysis, ProcessComplexity, AutomationType
12
+
13
+
14
+ class AutomationApproach(Enum):
15
+ """High-level automation approaches."""
16
+ BUILD = "build" # Custom development
17
+ BUY = "buy" # Purchase existing solution
18
+ CONFIGURE = "configure" # Configure existing tools
19
+ HYBRID = "hybrid" # Mix of approaches
20
+
21
+
22
+ class RiskLevel(Enum):
23
+ """Risk levels for automation initiatives."""
24
+ LOW = "low"
25
+ MEDIUM = "medium"
26
+ HIGH = "high"
27
+ CRITICAL = "critical"
28
+
29
+
30
+ @dataclass
31
+ class ToolRecommendation:
32
+ """A recommended tool for automation."""
33
+ name: str
34
+ category: str
35
+ fit_score: float # 0-100
36
+ pros: List[str]
37
+ cons: List[str]
38
+ azure_service: Optional[str] = None
39
+ estimated_cost: str = "varies"
40
+ learning_curve: str = "medium"
41
+
42
+
43
+ @dataclass
44
+ class AutomationStrategy:
45
+ """Complete automation strategy recommendation."""
46
+ primary_approach: AutomationApproach
47
+ automation_types: List[AutomationType]
48
+ recommended_tools: List[ToolRecommendation]
49
+ implementation_phases: List[Dict]
50
+ risk_assessment: Dict
51
+ estimated_effort_weeks: float
52
+ confidence_score: float # 0-100
53
+
54
+ def to_dict(self) -> Dict:
55
+ """Convert to dictionary."""
56
+ return {
57
+ "primary_approach": self.primary_approach.value,
58
+ "automation_types": [t.value for t in self.automation_types],
59
+ "recommended_tools": [
60
+ {
61
+ "name": t.name,
62
+ "category": t.category,
63
+ "fit_score": t.fit_score,
64
+ "azure_service": t.azure_service
65
+ }
66
+ for t in self.recommended_tools
67
+ ],
68
+ "phases": self.implementation_phases,
69
+ "risk_assessment": self.risk_assessment,
70
+ "effort_weeks": self.estimated_effort_weeks,
71
+ "confidence": self.confidence_score
72
+ }
73
+
74
+
75
+ class AutomationRecommender:
76
+ """
77
+ Recommends optimal automation strategies based on process analysis.
78
+
79
+ Evaluates multiple automation approaches and provides detailed
80
+ recommendations including tools, patterns, and implementation guidance.
81
+ """
82
+
83
+ # Tool catalog by automation type
84
+ TOOL_CATALOG = {
85
+ AutomationType.RPA: [
86
+ ToolRecommendation(
87
+ name="Power Automate",
88
+ category="RPA/Workflow",
89
+ fit_score=85,
90
+ pros=["Azure native", "Low-code", "Office 365 integration"],
91
+ cons=["Limited for complex logic", "Licensing costs"],
92
+ azure_service="Power Platform",
93
+ estimated_cost="$15/user/month",
94
+ learning_curve="low"
95
+ ),
96
+ ToolRecommendation(
97
+ name="UiPath",
98
+ category="RPA",
99
+ fit_score=90,
100
+ pros=["Enterprise-grade", "AI capabilities", "Large community"],
101
+ cons=["Higher cost", "Steeper learning curve"],
102
+ estimated_cost="$420/robot/month",
103
+ learning_curve="medium"
104
+ ),
105
+ ],
106
+ AutomationType.WORKFLOW: [
107
+ ToolRecommendation(
108
+ name="Azure Logic Apps",
109
+ category="Workflow",
110
+ fit_score=88,
111
+ pros=["Azure native", "400+ connectors", "Serverless"],
112
+ cons=["Consumption pricing can spike", "Limited debugging"],
113
+ azure_service="Logic Apps",
114
+ estimated_cost="Pay-per-execution",
115
+ learning_curve="low"
116
+ ),
117
+ ToolRecommendation(
118
+ name="Apache Airflow",
119
+ category="Workflow Orchestration",
120
+ fit_score=85,
121
+ pros=["Open source", "Python-native", "Highly flexible"],
122
+ cons=["Requires infrastructure", "Steeper learning curve"],
123
+ azure_service="Azure Container Apps",
124
+ estimated_cost="Infrastructure only",
125
+ learning_curve="medium"
126
+ ),
127
+ ],
128
+ AutomationType.DATA_PIPELINE: [
129
+ ToolRecommendation(
130
+ name="Azure Data Factory",
131
+ category="Data Integration",
132
+ fit_score=92,
133
+ pros=["Azure native", "90+ connectors", "Mapping data flows"],
134
+ cons=["Complex pricing", "Limited transformations"],
135
+ azure_service="Data Factory",
136
+ estimated_cost="Pay-per-activity",
137
+ learning_curve="medium"
138
+ ),
139
+ ToolRecommendation(
140
+ name="Azure Synapse Pipelines",
141
+ category="Data Integration",
142
+ fit_score=88,
143
+ pros=["Unified analytics", "Spark integration", "Serverless SQL"],
144
+ cons=["Overkill for simple ETL", "Higher cost"],
145
+ azure_service="Synapse Analytics",
146
+ estimated_cost="Varies by usage",
147
+ learning_curve="medium"
148
+ ),
149
+ ToolRecommendation(
150
+ name="dbt",
151
+ category="Data Transformation",
152
+ fit_score=85,
153
+ pros=["SQL-first", "Version control", "Testing built-in"],
154
+ cons=["Transformation only", "Requires warehouse"],
155
+ azure_service="Azure Synapse/Databricks",
156
+ estimated_cost="Free (open source)",
157
+ learning_curve="low"
158
+ ),
159
+ ],
160
+ AutomationType.ML_BASED: [
161
+ ToolRecommendation(
162
+ name="Azure Machine Learning",
163
+ category="ML Platform",
164
+ fit_score=90,
165
+ pros=["Full MLOps", "AutoML", "Managed endpoints"],
166
+ cons=["Complexity", "Cost at scale"],
167
+ azure_service="Azure ML",
168
+ estimated_cost="Compute-based",
169
+ learning_curve="high"
170
+ ),
171
+ ToolRecommendation(
172
+ name="MLflow",
173
+ category="ML Lifecycle",
174
+ fit_score=85,
175
+ pros=["Open source", "Experiment tracking", "Model registry"],
176
+ cons=["Requires hosting", "Basic UI"],
177
+ azure_service="Azure ML (integrated)",
178
+ estimated_cost="Free (open source)",
179
+ learning_curve="medium"
180
+ ),
181
+ ],
182
+ AutomationType.AI_POWERED: [
183
+ ToolRecommendation(
184
+ name="Azure OpenAI Service",
185
+ category="LLM Platform",
186
+ fit_score=95,
187
+ pros=["GPT-4 access", "Enterprise security", "Azure integration"],
188
+ cons=["Token costs", "Rate limits"],
189
+ azure_service="Azure OpenAI",
190
+ estimated_cost="$0.01-0.12/1K tokens",
191
+ learning_curve="medium"
192
+ ),
193
+ ToolRecommendation(
194
+ name="LangChain",
195
+ category="LLM Framework",
196
+ fit_score=82,
197
+ pros=["Flexible", "Many integrations", "Active community"],
198
+ cons=["Rapid changes", "Abstraction overhead"],
199
+ estimated_cost="Free (open source)",
200
+ learning_curve="medium"
201
+ ),
202
+ ToolRecommendation(
203
+ name="Semantic Kernel",
204
+ category="LLM Orchestration",
205
+ fit_score=85,
206
+ pros=["Microsoft backed", "C#/Python", "Azure native"],
207
+ cons=["Newer ecosystem", "Less examples"],
208
+ azure_service="Azure OpenAI",
209
+ estimated_cost="Free (open source)",
210
+ learning_curve="medium"
211
+ ),
212
+ ],
213
+ AutomationType.INFRASTRUCTURE: [
214
+ ToolRecommendation(
215
+ name="Terraform",
216
+ category="IaC",
217
+ fit_score=92,
218
+ pros=["Multi-cloud", "Large community", "State management"],
219
+ cons=["HCL learning curve", "State file management"],
220
+ azure_service="Any",
221
+ estimated_cost="Free (open source)",
222
+ learning_curve="medium"
223
+ ),
224
+ ToolRecommendation(
225
+ name="Bicep",
226
+ category="IaC",
227
+ fit_score=88,
228
+ pros=["Azure native", "ARM simplified", "VS Code support"],
229
+ cons=["Azure only", "Smaller community"],
230
+ azure_service="Azure Resource Manager",
231
+ estimated_cost="Free",
232
+ learning_curve="low"
233
+ ),
234
+ ],
235
+ AutomationType.SECURITY: [
236
+ ToolRecommendation(
237
+ name="Microsoft Defender for Cloud",
238
+ category="Security Posture",
239
+ fit_score=90,
240
+ pros=["Azure native", "CSPM/CWPP", "Compliance"],
241
+ cons=["Cost at scale", "Alert fatigue"],
242
+ azure_service="Defender for Cloud",
243
+ estimated_cost="$15/server/month",
244
+ learning_curve="medium"
245
+ ),
246
+ ToolRecommendation(
247
+ name="Azure Policy",
248
+ category="Governance",
249
+ fit_score=88,
250
+ pros=["Free", "Preventive controls", "Built-in policies"],
251
+ cons=["Limited remediation", "Policy as code learning"],
252
+ azure_service="Azure Policy",
253
+ estimated_cost="Free",
254
+ learning_curve="medium"
255
+ ),
256
+ ],
257
+ }
258
+
259
+ def __init__(self):
260
+ """Initialize the recommender."""
261
+ pass
262
+
263
+ def recommend(
264
+ self,
265
+ analysis: ProcessAnalysis,
266
+ budget_constraint: Optional[float] = None,
267
+ timeline_weeks: Optional[int] = None,
268
+ prefer_azure_native: bool = True
269
+ ) -> AutomationStrategy:
270
+ """
271
+ Generate automation strategy recommendations.
272
+
273
+ Args:
274
+ analysis: Process analysis from ProcessAnalyzer
275
+ budget_constraint: Maximum budget (optional)
276
+ timeline_weeks: Target timeline in weeks (optional)
277
+ prefer_azure_native: Prefer Azure-native solutions
278
+
279
+ Returns:
280
+ Complete AutomationStrategy recommendation
281
+ """
282
+ # Determine primary approach
283
+ primary_approach = self._determine_approach(analysis, budget_constraint)
284
+
285
+ # Get tool recommendations
286
+ tools = self._recommend_tools(
287
+ analysis.automation_types,
288
+ prefer_azure_native
289
+ )
290
+
291
+ # Generate implementation phases
292
+ phases = self._generate_phases(analysis, tools)
293
+
294
+ # Assess risks
295
+ risks = self._assess_risks(analysis)
296
+
297
+ # Estimate effort
298
+ effort = self._estimate_effort(analysis, primary_approach)
299
+
300
+ # Calculate confidence
301
+ confidence = self._calculate_confidence(analysis, tools)
302
+
303
+ return AutomationStrategy(
304
+ primary_approach=primary_approach,
305
+ automation_types=analysis.automation_types,
306
+ recommended_tools=tools,
307
+ implementation_phases=phases,
308
+ risk_assessment=risks,
309
+ estimated_effort_weeks=effort,
310
+ confidence_score=confidence
311
+ )
312
+
313
+ def _determine_approach(
314
+ self,
315
+ analysis: ProcessAnalysis,
316
+ budget: Optional[float]
317
+ ) -> AutomationApproach:
318
+ """Determine build vs buy vs configure."""
319
+ complexity = analysis.complexity
320
+
321
+ if complexity == ProcessComplexity.SIMPLE:
322
+ return AutomationApproach.CONFIGURE
323
+ elif complexity == ProcessComplexity.MODERATE:
324
+ if budget and budget < 50000:
325
+ return AutomationApproach.CONFIGURE
326
+ return AutomationApproach.HYBRID
327
+ elif complexity == ProcessComplexity.COMPLEX:
328
+ return AutomationApproach.HYBRID
329
+ else: # ENTERPRISE
330
+ return AutomationApproach.BUILD
331
+
332
+ def _recommend_tools(
333
+ self,
334
+ automation_types: List[AutomationType],
335
+ prefer_azure: bool
336
+ ) -> List[ToolRecommendation]:
337
+ """Get tool recommendations for automation types."""
338
+ tools = []
339
+ seen_tools = set()
340
+
341
+ for auto_type in automation_types:
342
+ if auto_type in self.TOOL_CATALOG:
343
+ for tool in self.TOOL_CATALOG[auto_type]:
344
+ if tool.name not in seen_tools:
345
+ # Boost Azure-native tools if preferred
346
+ if prefer_azure and tool.azure_service:
347
+ tool.fit_score = min(100, tool.fit_score + 5)
348
+ tools.append(tool)
349
+ seen_tools.add(tool.name)
350
+
351
+ # Sort by fit score
352
+ tools.sort(key=lambda t: t.fit_score, reverse=True)
353
+
354
+ return tools[:8] # Top 8 recommendations
355
+
356
+ def _generate_phases(
357
+ self,
358
+ analysis: ProcessAnalysis,
359
+ tools: List[ToolRecommendation]
360
+ ) -> List[Dict]:
361
+ """Generate implementation phases."""
362
+ phases = []
363
+
364
+ # Phase 1: Foundation
365
+ phases.append({
366
+ "phase": 1,
367
+ "name": "Foundation & Setup",
368
+ "duration_weeks": 1,
369
+ "activities": [
370
+ "Set up development environment",
371
+ "Configure Azure resources",
372
+ "Establish CI/CD pipeline",
373
+ "Document current process baseline"
374
+ ],
375
+ "deliverables": [
376
+ "Infrastructure provisioned",
377
+ "Development environment ready",
378
+ "Baseline metrics captured"
379
+ ],
380
+ "skills_needed": ["do-01", "do-03", "az-01"]
381
+ })
382
+
383
+ # Phase 2: Core Automation (varies by type)
384
+ core_activities = []
385
+ core_skills = []
386
+
387
+ if AutomationType.DATA_PIPELINE in analysis.automation_types:
388
+ core_activities.extend([
389
+ "Build data extraction connectors",
390
+ "Implement transformation logic",
391
+ "Set up data quality checks"
392
+ ])
393
+ core_skills.extend(["de-02", "de-03"])
394
+
395
+ if AutomationType.ML_BASED in analysis.automation_types:
396
+ core_activities.extend([
397
+ "Develop ML model",
398
+ "Set up training pipeline",
399
+ "Configure model serving"
400
+ ])
401
+ core_skills.extend(["ml-01", "ml-03", "ml-04"])
402
+
403
+ if AutomationType.AI_POWERED in analysis.automation_types:
404
+ core_activities.extend([
405
+ "Design prompt templates",
406
+ "Integrate LLM API",
407
+ "Implement guardrails"
408
+ ])
409
+ core_skills.extend(["ai-01", "ai-04", "ai-07"])
410
+
411
+ if AutomationType.WORKFLOW in analysis.automation_types:
412
+ core_activities.extend([
413
+ "Design workflow orchestration",
414
+ "Implement business logic",
415
+ "Configure triggers and schedules"
416
+ ])
417
+ core_skills.extend(["de-02", "do-01"])
418
+
419
+ phases.append({
420
+ "phase": 2,
421
+ "name": "Core Automation Development",
422
+ "duration_weeks": 2,
423
+ "activities": core_activities or ["Implement automation logic"],
424
+ "deliverables": [
425
+ "Core automation components built",
426
+ "Unit tests passing",
427
+ "Integration points defined"
428
+ ],
429
+ "skills_needed": list(set(core_skills)) or ["de-02"]
430
+ })
431
+
432
+ # Phase 3: Integration & Testing
433
+ phases.append({
434
+ "phase": 3,
435
+ "name": "Integration & Testing",
436
+ "duration_weeks": 1,
437
+ "activities": [
438
+ "End-to-end integration testing",
439
+ "Performance testing",
440
+ "Security review",
441
+ "User acceptance testing"
442
+ ],
443
+ "deliverables": [
444
+ "All tests passing",
445
+ "Security approval",
446
+ "UAT sign-off"
447
+ ],
448
+ "skills_needed": ["do-06", "sa-05", "sd-03"]
449
+ })
450
+
451
+ # Phase 4: Deployment & Monitoring
452
+ phases.append({
453
+ "phase": 4,
454
+ "name": "Deployment & Monitoring",
455
+ "duration_weeks": 1,
456
+ "activities": [
457
+ "Deploy to production",
458
+ "Configure monitoring and alerts",
459
+ "Create runbooks",
460
+ "Train users"
461
+ ],
462
+ "deliverables": [
463
+ "Production deployment complete",
464
+ "Monitoring dashboard live",
465
+ "Documentation complete"
466
+ ],
467
+ "skills_needed": ["do-07", "do-08", "sd-07"]
468
+ })
469
+
470
+ return phases
471
+
472
+ def _assess_risks(self, analysis: ProcessAnalysis) -> Dict:
473
+ """Assess automation risks."""
474
+ risks = {
475
+ "overall_level": RiskLevel.LOW.value,
476
+ "factors": [],
477
+ "mitigations": []
478
+ }
479
+
480
+ # Complexity risk
481
+ if analysis.complexity in [ProcessComplexity.COMPLEX, ProcessComplexity.ENTERPRISE]:
482
+ risks["factors"].append({
483
+ "risk": "High process complexity",
484
+ "level": "high",
485
+ "impact": "Implementation delays, cost overruns"
486
+ })
487
+ risks["mitigations"].append(
488
+ "Break into smaller phases with clear milestones"
489
+ )
490
+ risks["overall_level"] = RiskLevel.MEDIUM.value
491
+
492
+ # Data integration risk
493
+ if len(analysis.data_sources_involved) > 3:
494
+ risks["factors"].append({
495
+ "risk": "Multiple data source integration",
496
+ "level": "medium",
497
+ "impact": "Integration complexity, data quality issues"
498
+ })
499
+ risks["mitigations"].append(
500
+ "Implement robust data validation and monitoring"
501
+ )
502
+
503
+ # Stakeholder risk
504
+ if len(analysis.stakeholders) > 4:
505
+ risks["factors"].append({
506
+ "risk": "Many stakeholders",
507
+ "level": "medium",
508
+ "impact": "Conflicting requirements, approval delays"
509
+ })
510
+ risks["mitigations"].append(
511
+ "Establish clear RACI and regular stakeholder updates"
512
+ )
513
+
514
+ # Compliance risk
515
+ if analysis.compliance_requirements:
516
+ risks["factors"].append({
517
+ "risk": "Compliance requirements",
518
+ "level": "high",
519
+ "impact": "Regulatory penalties, project blocks"
520
+ })
521
+ risks["mitigations"].append(
522
+ "Engage Security Architect early, document compliance controls"
523
+ )
524
+ risks["overall_level"] = RiskLevel.HIGH.value
525
+
526
+ # Change management risk
527
+ if analysis.total_time_minutes > 120:
528
+ risks["factors"].append({
529
+ "risk": "Significant process change",
530
+ "level": "medium",
531
+ "impact": "User resistance, adoption challenges"
532
+ })
533
+ risks["mitigations"].append(
534
+ "Develop change management plan with training"
535
+ )
536
+
537
+ return risks
538
+
539
+ def _estimate_effort(
540
+ self,
541
+ analysis: ProcessAnalysis,
542
+ approach: AutomationApproach
543
+ ) -> float:
544
+ """Estimate implementation effort in weeks."""
545
+ base_effort = {
546
+ ProcessComplexity.SIMPLE: 1,
547
+ ProcessComplexity.MODERATE: 3,
548
+ ProcessComplexity.COMPLEX: 6,
549
+ ProcessComplexity.ENTERPRISE: 12
550
+ }
551
+
552
+ approach_multiplier = {
553
+ AutomationApproach.CONFIGURE: 0.5,
554
+ AutomationApproach.BUY: 0.75,
555
+ AutomationApproach.HYBRID: 1.0,
556
+ AutomationApproach.BUILD: 1.5
557
+ }
558
+
559
+ effort = base_effort.get(analysis.complexity, 4)
560
+ effort *= approach_multiplier.get(approach, 1.0)
561
+
562
+ # Add time for integrations
563
+ effort += len(analysis.data_sources_involved) * 0.5
564
+
565
+ # Add time for compliance
566
+ if analysis.compliance_requirements:
567
+ effort += 2
568
+
569
+ return round(effort, 1)
570
+
571
+ def _calculate_confidence(
572
+ self,
573
+ analysis: ProcessAnalysis,
574
+ tools: List[ToolRecommendation]
575
+ ) -> float:
576
+ """Calculate confidence score for recommendations."""
577
+ confidence = 70.0 # Base confidence
578
+
579
+ # Higher automation score = higher confidence
580
+ confidence += (analysis.automation_score - 50) * 0.3
581
+
582
+ # More tool options = higher confidence
583
+ if len(tools) >= 5:
584
+ confidence += 10
585
+
586
+ # Simpler processes = higher confidence
587
+ complexity_adjustment = {
588
+ ProcessComplexity.SIMPLE: 15,
589
+ ProcessComplexity.MODERATE: 5,
590
+ ProcessComplexity.COMPLEX: -5,
591
+ ProcessComplexity.ENTERPRISE: -15
592
+ }
593
+ confidence += complexity_adjustment.get(analysis.complexity, 0)
594
+
595
+ return max(0, min(100, round(confidence, 1)))
596
+
597
+ def compare_approaches(
598
+ self,
599
+ analysis: ProcessAnalysis
600
+ ) -> List[Dict]:
601
+ """Compare different automation approaches."""
602
+ approaches = []
603
+
604
+ for approach in AutomationApproach:
605
+ effort = self._estimate_effort(analysis, approach)
606
+
607
+ cost_multiplier = {
608
+ AutomationApproach.CONFIGURE: 0.3,
609
+ AutomationApproach.BUY: 0.6,
610
+ AutomationApproach.HYBRID: 1.0,
611
+ AutomationApproach.BUILD: 1.5
612
+ }
613
+
614
+ flexibility_score = {
615
+ AutomationApproach.CONFIGURE: 40,
616
+ AutomationApproach.BUY: 50,
617
+ AutomationApproach.HYBRID: 75,
618
+ AutomationApproach.BUILD: 95
619
+ }
620
+
621
+ approaches.append({
622
+ "approach": approach.value,
623
+ "effort_weeks": effort,
624
+ "relative_cost": cost_multiplier.get(approach, 1.0),
625
+ "flexibility_score": flexibility_score.get(approach, 50),
626
+ "best_for": self._get_approach_best_for(approach)
627
+ })
628
+
629
+ return approaches
630
+
631
+ def _get_approach_best_for(self, approach: AutomationApproach) -> str:
632
+ """Get description of when approach is best."""
633
+ descriptions = {
634
+ AutomationApproach.CONFIGURE: "Simple processes, tight timelines, limited budget",
635
+ AutomationApproach.BUY: "Standard processes, quick deployment needed",
636
+ AutomationApproach.HYBRID: "Most scenarios, balance of speed and flexibility",
637
+ AutomationApproach.BUILD: "Unique requirements, competitive advantage, full control"
638
+ }
639
+ return descriptions.get(approach, "General use")
640
+
641
+
642
+ # Example usage
643
+ if __name__ == "__main__":
644
+ from process_analyzer import ProcessAnalyzer
645
+
646
+ # First analyze the process
647
+ analyzer = ProcessAnalyzer()
648
+ analysis = analyzer.analyze_process(
649
+ name="Customer Onboarding",
650
+ description="Onboard new enterprise customers",
651
+ steps=[
652
+ {"name": "Receive application", "time_minutes": 5, "manual": False},
653
+ {"name": "Verify documents", "time_minutes": 45, "manual": True, "requires_expertise": True},
654
+ {"name": "Credit check", "time_minutes": 30, "manual": True, "data_sources": ["Credit Bureau"]},
655
+ {"name": "Risk assessment", "time_minutes": 60, "manual": True, "requires_decision": True},
656
+ {"name": "Generate contract", "time_minutes": 20, "manual": True},
657
+ {"name": "Send for signature", "time_minutes": 10, "manual": True},
658
+ {"name": "Setup account", "time_minutes": 30, "manual": True, "tools_used": ["CRM", "ERP"]}
659
+ ],
660
+ frequency="daily",
661
+ stakeholders=["Sales", "Risk", "Legal", "Operations"],
662
+ compliance_requirements=["KYC", "AML"]
663
+ )
664
+
665
+ # Get recommendations
666
+ recommender = AutomationRecommender()
667
+ strategy = recommender.recommend(analysis, prefer_azure_native=True)
668
+
669
+ print("=" * 60)
670
+ print("AUTOMATION STRATEGY RECOMMENDATION")
671
+ print("=" * 60)
672
+ print(f"\nPrimary Approach: {strategy.primary_approach.value.upper()}")
673
+ print(f"Estimated Effort: {strategy.estimated_effort_weeks} weeks")
674
+ print(f"Confidence Score: {strategy.confidence_score}%")
675
+
676
+ print(f"\nRecommended Tools:")
677
+ for tool in strategy.recommended_tools[:5]:
678
+ print(f" - {tool.name} ({tool.category}): {tool.fit_score}% fit")
679
+ if tool.azure_service:
680
+ print(f" Azure: {tool.azure_service}")
681
+
682
+ print(f"\nImplementation Phases:")
683
+ for phase in strategy.implementation_phases:
684
+ print(f" Phase {phase['phase']}: {phase['name']} ({phase['duration_weeks']}w)")
685
+
686
+ print(f"\nRisk Assessment: {strategy.risk_assessment['overall_level'].upper()}")
687
+ for risk in strategy.risk_assessment['factors']:
688
+ print(f" - {risk['risk']} ({risk['level']})")