uberization-readiness
Assess company readiness for construction industry uberization. Analyze data transparency, process automation, and competitive positioning against open data platforms.
What this skill does
# Uberization Readiness Assessment
## Overview
The construction industry faces disruption from open data platforms that bring transparency to pricing, quality, and performance. Companies that fail to adapt risk being "uberized" out of the market.
> "Traditional business model often thrives on opacity... Automation and open data bring radical transparency." — Artem Boiko
> "Working with construction companies on process automation is like trying to build a copy of Uber for taxi drivers at an airport in 2005." — Artem Boiko
## What is Construction Uberization?
```
┌─────────────────────────────────────────────────────────────────┐
│ TRADITIONAL vs UBERIZED CONSTRUCTION │
├─────────────────────────────────────────────────────────────────┤
│ │
│ TRADITIONAL MODEL UBERIZED MODEL │
│ ───────────────── ────────────── │
│ │
│ • Opaque pricing • Transparent rates │
│ • Relationship-based • Performance-based │
│ • Manual processes • Automated workflows │
│ • Information asymmetry • Open data access │
│ • Proprietary data • Shared databases │
│ • Slow decision making • Real-time analytics │
│ │
│ "Knowledge is power" "Data is shared" │
│ │
└─────────────────────────────────────────────────────────────────┘
```
## Readiness Assessment Framework
```python
from dataclasses import dataclass
from enum import Enum
from typing import List, Dict
class ReadinessLevel(Enum):
VULNERABLE = 1 # High disruption risk
REACTIVE = 2 # Responding to change
ADAPTIVE = 3 # Actively transforming
LEADING = 4 # Driving change
@dataclass
class AssessmentDimension:
name: str
current_state: str
target_state: str
score: int # 1-10
actions: List[str]
def assess_uberization_readiness(company_data: dict) -> dict:
"""Assess company readiness for industry disruption"""
dimensions = []
# 1. Data Transparency
dimensions.append(AssessmentDimension(
name="Data Transparency",
current_state=company_data.get("pricing_model", "opaque"),
target_state="Transparent pricing with clear breakdowns",
score=rate_transparency(company_data),
actions=[
"Publish rate cards for standard work items",
"Use CWICR codes for consistent pricing",
"Provide detailed estimate breakdowns"
]
))
# 2. Process Automation
dimensions.append(AssessmentDimension(
name="Process Automation",
current_state=company_data.get("automation_level", "manual"),
target_state="Automated workflows with minimal manual intervention",
score=rate_automation(company_data),
actions=[
"Implement ETL pipelines for data processing",
"Automate daily reporting",
"Deploy AI for document processing"
]
))
# 3. Data Accessibility
dimensions.append(AssessmentDimension(
name="Data Accessibility",
current_state=company_data.get("data_access", "siloed"),
target_state="Real-time data access for all stakeholders",
score=rate_accessibility(company_data),
actions=[
"Deploy dashboards for clients",
"Provide API access to project data",
"Eliminate data silos"
]
))
# 4. Performance Metrics
dimensions.append(AssessmentDimension(
name="Performance Tracking",
current_state=company_data.get("kpi_tracking", "none"),
target_state="Real-time KPIs with historical benchmarks",
score=rate_performance(company_data),
actions=[
"Track cost variance per project",
"Measure schedule performance index",
"Monitor quality metrics"
]
))
# 5. Open Standards Adoption
dimensions.append(AssessmentDimension(
name="Open Standards",
current_state=company_data.get("standards", "proprietary"),
target_state="Full adoption of open data standards",
score=rate_standards(company_data),
actions=[
"Adopt IFC for BIM data exchange",
"Use CWICR for work item classification",
"Implement open APIs"
]
))
# Calculate overall readiness
total_score = sum(d.score for d in dimensions)
max_score = len(dimensions) * 10
readiness_pct = (total_score / max_score) * 100
if readiness_pct < 30:
level = ReadinessLevel.VULNERABLE
elif readiness_pct < 50:
level = ReadinessLevel.REACTIVE
elif readiness_pct < 75:
level = ReadinessLevel.ADAPTIVE
else:
level = ReadinessLevel.LEADING
return {
"dimensions": dimensions,
"total_score": total_score,
"max_score": max_score,
"readiness_percentage": readiness_pct,
"readiness_level": level.name,
"risk_assessment": generate_risk_assessment(level, dimensions)
}
```
## Self-Assessment Questionnaire
```python
assessment_questions = [
# Data Transparency
{
"category": "Data Transparency",
"question": "How are your project estimates presented to clients?",
"options": {
"Lump sum only": 1,
"Cost categories without detail": 3,
"Line item detail": 6,
"Full transparency with unit rates": 10
}
},
{
"category": "Data Transparency",
"question": "Can clients access project data in real-time?",
"options": {
"No access": 1,
"Monthly reports": 3,
"Weekly reports": 5,
"Real-time dashboard": 10
}
},
# Process Automation
{
"category": "Process Automation",
"question": "How are daily reports generated?",
"options": {
"Manual writing": 1,
"Template filling": 3,
"Semi-automated": 6,
"Fully automated": 10
}
},
{
"category": "Process Automation",
"question": "How is estimate data created?",
"options": {
"Manual in Excel": 1,
"Estimating software": 4,
"BIM-linked QTO": 7,
"AI-assisted automation": 10
}
},
# Data Accessibility
{
"category": "Data Accessibility",
"question": "How is project data stored?",
"options": {
"Local files": 1,
"Shared drives": 3,
"Cloud platform": 6,
"Integrated database with API": 10
}
},
# Open Standards
{
"category": "Open Standards",
"question": "What work classification system do you use?",
"options": {
"Internal codes only": 1,
"CSI MasterFormat": 5,
"Open standard (CWICR, Uniclass)": 8,
"Multiple standards with mapping": 10
}
}
]
```
## Competitive Threat Analysis
```python
def analyze_competitive_threats(market_data: dict) -> dict:
"""Analyze threats from open data platforms"""
threats = []
# Threat 1: Price transparency platforms
if market_data.get("price_platforms_active"):
threats.append({
"threat": "Price Comparison Platforms",
"description": "Platforms like OpenEstimate allow clients to compare contractor rates",
"impact": "HIGH",
"response": "Compete on value and transparency, not information asymmetry"
})
# Threat 2: Performance rating systems
threats.append({
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.