Sizing Estimate
| Date | 2026-03-21 |
| Method | Architecture-Driven PERT v3 |
| Scope Clarity | B – Partially Defined (60%) |
| Repos Explored | 5 of 7 affected repos |
| Calibrated From | 333 historic stories, 10 comparable epics |
Estimate Summary
================================================================
PRD SIZING ESTIMATE (PERT)
Feature: Uncrew Industrial Operations Platform
----------------------------------------------------------------
Stories: 36
Expected Duration: 167.7 days (range: 155 - 180, 95% CI)
Weeks: 33.5
Confidence: High (stddev ratio: 0.037)
Expected Cost: $201,200
Cost Range: $186,200 - $216,200 (95% CI)
Cost Basis: $1,200/day fully-loaded
($200k avg salary x 1.4 overhead)
Scope: B (60%) | Stats age: 1d
Method: Architecture-driven PERT v3 -- 5 repos explored
================================================================Cost Breakdown by Domain
| Domain | Stories | Expected Days | Expected Cost |
|---|---|---|---|
| Backend Go (orchestration + dock + missions) | 19 | 91.1d | $109,300 |
| Frontend React | 8 | 38.5d | $46,200 |
| Firmware C++ (pathfinding + mavlink + camera) | 3 | 23.2d | $27,800 |
| Protobuf / API Definitions | 4 | 10.7d | $12,800 |
| Infrastructure + Structural | 2 | 10.0d | $12,000 |
| Totals | 36 | 167.7d | $201,200 |
Cost basis: $200,000 average annual salary with 1.4x fully-loaded multiplier (benefits, overhead, tools, management) = $280,000 / 230 effective working days = $1,200/day. Adjust the multiplier for your team’s actual overhead.
Story Breakdown
Proto Layer – uncrew-api-private
| # | Story | Opt | Likely | Pess | Expected | Cost |
|---|---|---|---|---|---|---|
| 1 | Define orchestration service protos (templates, schedules, dispatch, webhooks) | 2d | 4d | 7d | 4.2d | $5,000 |
| 2 | Define dock status service protos (status, health, adapter interface) | 1d | 2d | 4d | 2.2d | $2,600 |
| 3 | Define data delivery service protos (delivery status, webhook config) | 1d | 2d | 4d | 2.2d | $2,600 |
| 4 | Add camera_objectives + template_ref to mission.proto | 1d | 2d | 4d | 2.2d | $2,600 |
New Orchestration Service – Go + Temporal
| # | Story | Opt | Likely | Pess | Expected | Cost |
|---|---|---|---|---|---|---|
| 5 | Service scaffolding: Go project, Temporal SDK, K8s Helm chart, CI pipeline | 3d | 5d | 10d | 5.5d | $6,600 |
| 6 | Mission template CRUD (Temporal activities + PostgreSQL persistence) | 3d | 5d | 8d | 5.2d | $6,200 |
| 7 | Recurring schedule cron workflows (Temporal cron, blackout windows) | 3d | 5d | 10d | 5.5d | $6,600 |
| 8 | On-demand mission API + priority queuing (urgent vs routine) | 2d | 4d | 8d | 4.3d | $5,200 |
| 9 | Mission dispatch workflow (template resolve, dock check, plan, dispatch) | 4d | 7d | 14d | 7.7d | $9,200 |
| 10 | Webhook dispatch for mission status + data delivery events | 2d | 3d | 6d | 3.3d | $4,000 |
| 11 | Mission failure notification workflow (weather, dock offline, drone unavailable) | 2d | 3d | 6d | 3.3d | $4,000 |
| 12 | OAuth2/API key auth + multi-tenant isolation | 2d | 4d | 8d | 4.3d | $5,200 |
| 13 | Usage metering API (read from existing hubops-core data) | 2d | 3d | 6d | 3.3d | $4,000 |
Dock Management – Go + MQTT (in orchestration service)
| # | Story | Opt | Likely | Pess | Expected | Cost |
|---|---|---|---|---|---|---|
| 14 | Dock adapter interface + MQTT broker integration | 3d | 5d | 10d | 5.5d | $6,600 |
| 15 | Horizon dock adapter implementation (depends on dock protocol docs) | 4d | 7d | 14d | 7.7d | $9,200 |
| 16 | Dock readiness gating as Temporal activity (pre-dispatch check) | 1d | 2d | 5d | 2.3d | $2,800 |
| 17 | Dock health history storage + anomaly alerts | 2d | 4d | 7d | 4.2d | $5,000 |
Missions Service – uncrew-missions-service
| # | Story | Opt | Likely | Pess | Expected | Cost |
|---|---|---|---|---|---|---|
| 18 | Add camera_objectives to Mission model + CameraObjective SOP + mission items | 3d | 6d | 10d | 6.2d | $7,400 |
| 19 | Add template_ref to MissionRequest + accept missions from orchestration service | 1d | 3d | 5d | 3.0d | $3,600 |
Pathfinding – uncrew-pathfinding (C++)
| # | Story | Opt | Likely | Pess | Expected | Cost |
|---|---|---|---|---|---|---|
| 20 | Camera-objective cost function component (inspect targets, altitude, angles) | 4d | 7d | 14d | 7.7d | $9,200 |
Mavlink Shim – uncrew-mavlink-shim (C++)
| # | Story | Opt | Likely | Pess | Expected | Cost |
|---|---|---|---|---|---|---|
| 21 | Gimbal control policy + MAVLink gimbal passthrough commands | 5d | 8d | 16d | 8.8d | $10,600 |
Data Passthrough – uncrew-uav-camera-capture + GCP
| # | Story | Opt | Likely | Pess | Expected | Cost |
|---|---|---|---|---|---|---|
| 22 | Data passthrough pipeline: inference results to customer GCS bucket (Cloud Functions) | 4d | 6d | 12d | 6.7d | $8,000 |
| 23 | Data delivery confirmation + retry logic | 2d | 3d | 6d | 3.3d | $4,000 |
Frontend – uncrew-apollo-frontend
| # | Story | Opt | Likely | Pess | Expected | Cost |
|---|---|---|---|---|---|---|
| 24 | Mission template builder UI (extend existing POC Mission Planner) | 3d | 6d | 10d | 6.2d | $7,400 |
| 25 | Scheduling UI + calendar view (FullCalendar integration) | 4d | 7d | 12d | 7.3d | $8,800 |
| 26 | Dock status dashboard (map + status list + indicators) | 3d | 5d | 9d | 5.3d | $6,400 |
| 27 | Usage metering dashboard (Recharts, filters, metric cards) | 3d | 5d | 9d | 5.3d | $6,400 |
| 28 | Camera objectives in mission planning UI (angle, altitude, target selection) | 2d | 4d | 8d | 4.3d | $5,200 |
| 29 | Data delivery status in mission detail view + manual retry | 1d | 2d | 5d | 2.3d | $2,800 |
| 30 | Operations calendar view with conflict detection | 2d | 4d | 8d | 4.3d | $5,200 |
| 31 | Usage export (CSV/PDF download + scheduled email) | 2d | 3d | 6d | 3.3d | $4,000 |
Structural Stories
| # | Story | Opt | Likely | Pess | Expected | Cost |
|---|---|---|---|---|---|---|
| 32 | Spike: Investigate Horizon dock protocol + document interface | 2d | 3d | 5d | 3.2d | $3,800 |
| 33 | Spike: Validate HX1 MAVLink gimbal command compatibility | 2d | 3d | 7d | 3.5d | $4,200 |
| 34 | Infrastructure: Temporal Cloud setup + new service K8s namespace + Helm | 2d | 4d | 8d | 4.3d | $5,200 |
| 35 | Cross-service integration testing (orchestration -> missions -> mavlink -> data) | 3d | 6d | 12d | 6.5d | $7,800 |
| 36 | OpenAPI spec + API documentation for customer-facing endpoints | 2d | 3d | 5d | 3.2d | $3,800 |
Architectural Decisions
| Decision | Rationale |
|---|---|
| Temporal Cloud for orchestration + scheduling | Eliminates custom scheduler engine (~15-20d saved). Durable workflows handle crash recovery. Cron workflows are built-in. Go SDK is first-class. Visibility UI comes free. |
| MQTT for dock communication | Industry standard for IoT telemetry. Horizon dock likely supports it. Push-based (vs polling) reduces latency. |
| GCP Cloud Functions for data passthrough | Serverless, scales to 100+ sites without infra management. Routes inference results to customer cloud buckets. |
| FullCalendar (React library) for scheduling UI | Mature open-source calendar component. Saves weeks of custom frontend work. |
Architecture Sketch
+----------------------------------------------+
| NEW: Orchestration Service (Go) |
| + Temporal Cloud |
Customer UI --------->| +-------------+ +------------------+ |
Customer API -------->| | Scheduler | | Mission Templates| |
| | (Temporal | | (CRUD, versioned)| |
| | cron) | +--------+---------+ |
| +------+-------+ | |
| | | |
| +------v-------------------v------+ |
| | Mission Dispatch Workflow | |
| | (dock check, queue, priority) | |
| +------+---------------------------+ |
| | |
| +------v-----------+ |
| | Dock Manager | |
| | (MQTT adapter, |<--- Horizon Dock |
| | health history) | (MQTT) |
| +-----------------+ |
| |
| +-----------------+ |
| | Usage Metering | |
| | (read hubops) | |
| +-----------------+ |
+------------------+---------------------------+
| gRPC
+----------------------v--------------------------+
| uncrew-missions-service (Go) |
| + camera_objectives field on Mission |
| + template_ref field on MissionRequest |
| + CameraObjective -> CameraSOP -> items |
+------------------+------------------------------+
|
+------------------------+------------------------+
v v v
uncrew-pathfinding (C++) mavlink-shim (C++) uav-camera-capture
+ camera_objective_cost + gimbal_control + data passthrough
function component policy (new) to customer cloud
+ MAVLink gimbal (GCP Cloud Funcs)
passthrough
+----------------------------------------------+
| uncrew-apollo-frontend (React) |
| + Mission Template Builder UI |
| + Dock Status Dashboard |
| + Scheduling / Calendar View (FullCalendar) |
| + Usage Metering Dashboard (Recharts) |
| + Camera objectives in mission planner |
+----------------------------------------------+
+----------------------------------------------+
| uncrew-api-private (Protobuf) |
| + orchestration/v1/ (new domain) |
| + dock_status/v1/ (new domain) |
| + data_delivery/v1/ (new domain) |
| + camera_objectives in mission.proto |
+----------------------------------------------+Repos Explored
| Repo | Tech Stack | Exploration Depth | Key Findings |
|---|---|---|---|
uncrew-missions-service | Go / gRPC / GORM / PostgreSQL | Deep | Objectives -> SOPs -> MissionItems pipeline. Clear extension points for camera_objectives and template_ref. |
uncrew-apollo-frontend | React 18 / Vite / TypeScript / Zustand | Deep | POC Mission Planner page exists with drag-drop objectives. Mapbox+Deck.gl, Recharts already available. |
uncrew-api-private | Protobuf / gRPC (multi-language codegen) | Deep | 20+ gRPC services. Well-established pattern for adding new service domains. |
uncrew-mavlink-shim | C++ / MAVSDK / Boost.Asio | Medium | No existing gimbal control code. Camera capture is HTTP-only. Gimbal needs new policy + MAVLink passthrough. |
uncrew-pathfinding | C++ / Boost / Theta* | Medium | C++ library (not Python as PRD assumed). Composable cost function system. Camera-objective routing = new cost function component. |
Comparable Epics (Historic Data)
| Epic | Summary | Actual Days | Stories | Relevance |
|---|---|---|---|---|
| CORE-2552 | Uncrew Bundled Deployment (New Service) | 166.4d | 18 | Closest: greenfield Go service with K8s deployment |
| CORE-2472 | AirDEX Ingest (External Integration) | 298.5d | 23 | External integration, multi-repo, streaming data |
| CORE-2775 | Simulator Failure Injection | 38.2d | 26 | Multi-repo (7 repos), firmware + frontend + backend |
Historic accuracy note: Across 296 past stories, actuals averaged 4x estimates (median), with only 24% of stories completing within 2x of their estimate. This estimate uses PERT with conservative pessimistic values to account for this pattern. The 95% CI range of 155-180 days represents the statistical spread, but systemic risks (undocumented dock protocol, untested gimbal compatibility, Temporal learning curve) could push actual duration toward the comparable epic range of 166-298 days.
Risk Flags
| Flag | Source | Impact |
|---|---|---|
hard_repo_mavlink | Detected (mavlink-shim in scope) | Gimbal work is specialized C++ with no existing code to build on |
new_service | PRD input | Greenfield orchestration service is the largest single work item |
external_integration | PRD input | Horizon dock protocol undocumented; HX1 gimbal compatibility untested |
multi_repo | PRD input | 7 repos affected; coordination overhead |
api_design | PRD input | New REST + gRPC APIs require contract-first design |
infrastructure | PRD input | Temporal Cloud, new K8s namespace, MQTT broker |
Phase Mapping
The PRD defines three phases. Here is how stories map:
Phase 0: Discovery (Stories 32-33) – ~6.7 days / $8,000
- Spike: Horizon dock protocol investigation
- Spike: HX1 MAVLink gimbal compatibility
Phase 1: MVP (Stories 1-19, 22-27, 34-36) – ~131.5 days / $157,800
- Proto definitions (all)
- Orchestration service (scaffolding, templates, scheduling, dispatch, auth)
- Dock management (adapter, Horizon implementation, readiness gating)
- Missions service changes (camera objectives, template ref)
- Data passthrough pipeline + confirmation
- Frontend: template builder, scheduling UI, dock dashboard, metering dashboard
- Infrastructure + integration testing + documentation
Phase 1.1 / Phase 2: Full Vision (Stories 20-21, 28-31) – ~29.5 days / $35,400
- Camera-objective cost function (pathfinding, C++)
- Gimbal control policy (mavlink-shim, C++)
- Camera objectives in mission planning UI
- Data delivery status UI
- Operations calendar with conflict detection
- Usage export (CSV/PDF)
Last updated on