Skip to content

Sizing Estimate

Andi Lamprecht Andi Lamprecht ·· 8 min read· Draft
Date2026-03-21
MethodArchitecture-Driven PERT v3
Scope ClarityB – Partially Defined (60%)
Repos Explored5 of 7 affected repos
Calibrated From333 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

DomainStoriesExpected DaysExpected Cost
Backend Go (orchestration + dock + missions)1991.1d$109,300
Frontend React838.5d$46,200
Firmware C++ (pathfinding + mavlink + camera)323.2d$27,800
Protobuf / API Definitions410.7d$12,800
Infrastructure + Structural210.0d$12,000
Totals36167.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

#StoryOptLikelyPessExpectedCost
1Define orchestration service protos (templates, schedules, dispatch, webhooks)2d4d7d4.2d$5,000
2Define dock status service protos (status, health, adapter interface)1d2d4d2.2d$2,600
3Define data delivery service protos (delivery status, webhook config)1d2d4d2.2d$2,600
4Add camera_objectives + template_ref to mission.proto1d2d4d2.2d$2,600

New Orchestration Service – Go + Temporal

#StoryOptLikelyPessExpectedCost
5Service scaffolding: Go project, Temporal SDK, K8s Helm chart, CI pipeline3d5d10d5.5d$6,600
6Mission template CRUD (Temporal activities + PostgreSQL persistence)3d5d8d5.2d$6,200
7Recurring schedule cron workflows (Temporal cron, blackout windows)3d5d10d5.5d$6,600
8On-demand mission API + priority queuing (urgent vs routine)2d4d8d4.3d$5,200
9Mission dispatch workflow (template resolve, dock check, plan, dispatch)4d7d14d7.7d$9,200
10Webhook dispatch for mission status + data delivery events2d3d6d3.3d$4,000
11Mission failure notification workflow (weather, dock offline, drone unavailable)2d3d6d3.3d$4,000
12OAuth2/API key auth + multi-tenant isolation2d4d8d4.3d$5,200
13Usage metering API (read from existing hubops-core data)2d3d6d3.3d$4,000

Dock Management – Go + MQTT (in orchestration service)

#StoryOptLikelyPessExpectedCost
14Dock adapter interface + MQTT broker integration3d5d10d5.5d$6,600
15Horizon dock adapter implementation (depends on dock protocol docs)4d7d14d7.7d$9,200
16Dock readiness gating as Temporal activity (pre-dispatch check)1d2d5d2.3d$2,800
17Dock health history storage + anomaly alerts2d4d7d4.2d$5,000

Missions Service – uncrew-missions-service

#StoryOptLikelyPessExpectedCost
18Add camera_objectives to Mission model + CameraObjective SOP + mission items3d6d10d6.2d$7,400
19Add template_ref to MissionRequest + accept missions from orchestration service1d3d5d3.0d$3,600

Pathfinding – uncrew-pathfinding (C++)

#StoryOptLikelyPessExpectedCost
20Camera-objective cost function component (inspect targets, altitude, angles)4d7d14d7.7d$9,200

Mavlink Shim – uncrew-mavlink-shim (C++)

#StoryOptLikelyPessExpectedCost
21Gimbal control policy + MAVLink gimbal passthrough commands5d8d16d8.8d$10,600

Data Passthrough – uncrew-uav-camera-capture + GCP

#StoryOptLikelyPessExpectedCost
22Data passthrough pipeline: inference results to customer GCS bucket (Cloud Functions)4d6d12d6.7d$8,000
23Data delivery confirmation + retry logic2d3d6d3.3d$4,000

Frontend – uncrew-apollo-frontend

#StoryOptLikelyPessExpectedCost
24Mission template builder UI (extend existing POC Mission Planner)3d6d10d6.2d$7,400
25Scheduling UI + calendar view (FullCalendar integration)4d7d12d7.3d$8,800
26Dock status dashboard (map + status list + indicators)3d5d9d5.3d$6,400
27Usage metering dashboard (Recharts, filters, metric cards)3d5d9d5.3d$6,400
28Camera objectives in mission planning UI (angle, altitude, target selection)2d4d8d4.3d$5,200
29Data delivery status in mission detail view + manual retry1d2d5d2.3d$2,800
30Operations calendar view with conflict detection2d4d8d4.3d$5,200
31Usage export (CSV/PDF download + scheduled email)2d3d6d3.3d$4,000

Structural Stories

#StoryOptLikelyPessExpectedCost
32Spike: Investigate Horizon dock protocol + document interface2d3d5d3.2d$3,800
33Spike: Validate HX1 MAVLink gimbal command compatibility2d3d7d3.5d$4,200
34Infrastructure: Temporal Cloud setup + new service K8s namespace + Helm2d4d8d4.3d$5,200
35Cross-service integration testing (orchestration -> missions -> mavlink -> data)3d6d12d6.5d$7,800
36OpenAPI spec + API documentation for customer-facing endpoints2d3d5d3.2d$3,800

Architectural Decisions

DecisionRationale
Temporal Cloud for orchestration + schedulingEliminates 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 communicationIndustry standard for IoT telemetry. Horizon dock likely supports it. Push-based (vs polling) reduces latency.
GCP Cloud Functions for data passthroughServerless, scales to 100+ sites without infra management. Routes inference results to customer cloud buckets.
FullCalendar (React library) for scheduling UIMature 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

RepoTech StackExploration DepthKey Findings
uncrew-missions-serviceGo / gRPC / GORM / PostgreSQLDeepObjectives -> SOPs -> MissionItems pipeline. Clear extension points for camera_objectives and template_ref.
uncrew-apollo-frontendReact 18 / Vite / TypeScript / ZustandDeepPOC Mission Planner page exists with drag-drop objectives. Mapbox+Deck.gl, Recharts already available.
uncrew-api-privateProtobuf / gRPC (multi-language codegen)Deep20+ gRPC services. Well-established pattern for adding new service domains.
uncrew-mavlink-shimC++ / MAVSDK / Boost.AsioMediumNo existing gimbal control code. Camera capture is HTTP-only. Gimbal needs new policy + MAVLink passthrough.
uncrew-pathfindingC++ / Boost / Theta*MediumC++ library (not Python as PRD assumed). Composable cost function system. Camera-objective routing = new cost function component.

Comparable Epics (Historic Data)

EpicSummaryActual DaysStoriesRelevance
CORE-2552Uncrew Bundled Deployment (New Service)166.4d18Closest: greenfield Go service with K8s deployment
CORE-2472AirDEX Ingest (External Integration)298.5d23External integration, multi-repo, streaming data
CORE-2775Simulator Failure Injection38.2d26Multi-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

FlagSourceImpact
hard_repo_mavlinkDetected (mavlink-shim in scope)Gimbal work is specialized C++ with no existing code to build on
new_servicePRD inputGreenfield orchestration service is the largest single work item
external_integrationPRD inputHorizon dock protocol undocumented; HX1 gimbal compatibility untested
multi_repoPRD input7 repos affected; coordination overhead
api_designPRD inputNew REST + gRPC APIs require contract-first design
infrastructurePRD inputTemporal 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