| System | PRD | Usage Audit | Transcript Insights | Eval | Status |
|---|---|---|---|---|---|
| Current Scope | |||||
| 90.io | ✓ | ✓ | ✓ | ✓ | Complete |
| HubSpot | ✓ | ✓ | ✓ | — | In Progress |
| Blueprint | ✓ | N/A (spreadsheet) | ✓ | — | In Progress |
| Mavenlink | ✓ | ✓ | ✓ | — | In Progress |
| Future — Not in current scope | |||||
| BambooHR | — | — | — | — | |
| Jira | — | — | — | — | |
| NetSuite | — | — | — | — | |
| Lattice | — | — | — | — | |
| Workable | — | — | — | — | |
| Confluence | — | — | — | — | |
| DEEL | — | — | — | — | |
EOS + CRM + Estimator as the primary 12-week effort. PSA foundation as stretch goal. Tracks overlap — shared data model enables parallel work.
Source module assessments, architecture planning, data model design
In progress — 3 of 11 systems assessed. CEO feedback applied March 27.
Canonical data model review and sign-off with Zaelab leadership
Gate — must be approved before build begins
Person, Organization, Auth, MCP framework. Scorecard, Rocks (L1→L2→L3), To-Dos, Issues, V/TO, Meetings, Accountability Chart
Replaces 90.io. Foundation entities shared across all modules.
Deal/Opportunity + Pipeline Stages + Contacts + Companies, deal scoring, basic reporting
June 2026 HubSpot deadline. Overlaps with EOS tail. Built on shared Person + Organization entities.
Scope templates, Rate cards, Resource planning, SOW generation, margin approvals
Replaces Blueprint. Bridges CRM to PSA. Sold-as margin born here. Overlaps with CRM tail.
Time tracking, Project setup from won deals, basic invoicing, staff margin
Stretch goal — scope calibrated based on EOS/CRM/Estimator progress. Full Mavenlink replacement continues in Phase 2.
Full PSA (Mavenlink), HRIS (BambooHR), ATS (Workable), Wiki (Confluence), ITSM (Jira), LMS (Lattice), Client Portal, Finance (NetSuite)
Sequenced after 12-week core effort ships
Zaelab is a ~$40M technology services company. 300 people. 25+ countries. Two acquisitions in the last year. 9+ SaaS platforms. ~$1.5M/year in software spend. And their CEO still can't answer a basic question about where the business is at.
"We have what the world tells us is a best in class PSA. We have HubSpot, we have Bamboo, we have Jira. And I still can't get a goddamn piece of information to know where the business is at." — Evan Klein
ZOS is a purpose-built, AI-native operating system that replaces Zaelab's siloed SaaS stack with a single platform that owns the data.
"This needs to have persistence and be the actual data storage. I need to sunset these other systems from the world." — Evan Klein
ZOS replaces 11 systems with 4 core modules (first effort) plus cross-cutting platform capabilities. Current status and assessment progress are tracked in the Tracker tab.
The build sequence follows the business flow: Deal (where opportunities enter the pipeline) → Estimate (where scope is priced) → Project (created when a Deal is won, where work is delivered and invoiced). EOS runs in parallel as the operational cadence layer.
These are the foundation that makes every module work together. They are as important as the modules themselves.
Remaining systems (BambooHR, Jira, NetSuite, Lattice, Workable, Confluence, DEEL) are future phases, not currently scoped. They will be addressed after the core four modules ship.
The single most valuable capability ZOS can produce — and the one that's impossible with the current stack. It requires connected data across CRM, Estimator, PSA, and Finance.
Today, sold-as lives in Blueprint, staff lives in Mavenlink resource plans, and delivered lives in Mavenlink time entries — three systems, no connection. In ZOS, sold-as margin is born on the Deal (via Estimate), then carried forward to the Project when the Deal is won. Staff and delivered margin live on the Project. See the Data Model tab for the field-level mapping.
Each principle grounded in what Evan and the team said. Runpoint recommendations labeled separately.
This is a living document. Updated as assessments complete, modules ship, and scope refines.
How ZOS connects the data that runs the business. Six scenarios show how information flows through the platform — from deals to delivery to the Monday morning L10. Below the scenarios: the entity model, the three-stage margin calculation, and open questions for validation.
Updated March 30, 2026. CEO feedback applied. Deal/Opportunity split from Project. Resource Request/Allocation split. Role/Level reference data added. 12-week parallel timeline: EOS + CRM + Estimator.
Convention: All entities include id, created_on, and modified_on as standard fields. These are omitted from individual field tables below.
Each scenario starts with a situation you'd recognize, shows what ZOS does at each step, and ends with what changes. If you can say "yes, that's how it happens" at each step, the model is right.
A new ServiceNow implementation deal comes in.
Today: Sales creates a deal in HubSpot. It moves through S1-S6 manually. At S7-Won, someone Slacks delivery. An SA opens Blueprint (Google Sheets), retypes the deal ID, builds scope, picks resources from a dropdown. Someone else goes into Mavenlink and retypes the client name to create a project. At no point can anyone compare delivered margin to what was sold.
In ZOS:
What you get: Deal and Project are separate entities with clear lifecycle boundaries. Three-stage margin calculated automatically. "How does our estimating accuracy compare to delivery?" becomes answerable across the entire portfolio.
Entities: Deal, Project, Organization, Person, Contact, Estimate, Scope Line Item, Resource Request, Resource Allocation, Rate Card, Time Entry, Task, Financial Transaction, Pipeline Stage
It's 9:00 AM Monday. The Leadership Team runs their L10 meeting.
Today: Someone spends Sunday night pulling numbers from HubSpot, Mavenlink, and spreadsheets, then manually types them into 90.io measurables. If they're late or wrong, the scorecard has stale data. 90.io has no connection to anything — when a number is off-track, there's no way to drill into why.
In ZOS:
What you get: No more Sunday night data entry. When a measurable is off-track, drill from the scorecard into the actual deals, projects, or people driving the number.
Entities: Measurable, Rock, Issue, Meeting, VTO, Person, Project, Time Entry, Financial Transaction, Organization
A backend engineer joins the Eastern Europe team.
Today: HR creates a record in BambooHR. Somebody creates a login in Mavenlink. Somebody adds them to 90.io. Their cost rate gets typed into Blueprint and maybe Mavenlink — and the two might not match. No single view of this person exists. "Bamboo has the people record. PSA has a people record. There's records all over the place."
In ZOS:
What you get: One person, one record, everywhere. HR data isolated from client-facing data by design. Staffing decisions show cost impact before you commit.
Entities: Person, Employee Record, Organization, Geography, Skill, Rate Card, Resource Allocation, Project, Measurable, Rock
A project's margin is slipping and nobody knows it.
Today: The Acme Corp project was sold at 50% margin. During delivery, an EE backend developer was replaced by a senior NA resource at 4x the cost rate. Delivered margin is now 31%. Nobody catches it until the quarterly P&L reconciliation. By then, $120K in margin has evaporated.
In ZOS:
What you get: Real-time margin monitoring instead of quarterly surprises. Instant diagnosis — sold-as: 50% (estimation fine), staff: 38% (staffing killed it), delivered: 31% (delivery ran over too).
Entities: Project, Resource Request, Resource Allocation, Person, Rate Card, Measurable, Issue, Time Entry
Start of Q2. The leadership team reviews Q1 rocks and sets Q2 rocks.
Today: The team opens 90.io. Each rock owner says "on track" or "not on track." When a rock says "Launch ServiceNow practice," someone has to manually check HubSpot for pipeline, Mavenlink for projects, and a spreadsheet for revenue. The "on track" assessment is vibes.
In ZOS:
What you get: Rocks connected to real data. "On track" backed by pipeline, projects, people, and margins — not gut feel. The 90.io-to-everything-else gap is closed.
Entities: Rock, Measurable, VTO, Project, Person, Organization, Pipeline Stage
Evan wants to see all activity for ServiceNow.
Today: Someone goes to HubSpot for deals, Mavenlink for projects, then stitches together pipeline, delivery, and revenue data in a spreadsheet. It takes a day. It's stale by the time it arrives. If Evan wants a different slice — "just Q4" or "ServiceNow vs. Shopify margins" — it's another day.
In ZOS:
What you get: Partner reporting in minutes instead of days. Walk into a QBR with: 18 delivered projects, margin by engagement type, 6 in pipeline, 12 certified people ready to deploy. That's a different conversation.
Entities: Organization, Project, Contact, Person, Skill, Resource Allocation, Financial Transaction, Measurable, Rock
Every entity below appeared in the scenarios above. Four layers: People & Org, Business Lifecycle, Operational, and Reference Data.
People & Organization
| Entity | What It Is | Scenarios | Status | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Person | Lightweight core identity. Every module references this. Intentionally thin — detailed data lives in Employee Record or Contact.Fields
| 1-6 | Draft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Employee Record | Restricted sensitive data for employees/contractors. Linked 1:1 to Person. Only HR sees this — never leaks into CRM views. Primary source: BambooHR. Employee documents (NDAs, contracts) are Files attached to this entity. Note: cost_rate is employee-specific (derived from salary). Bill rate comes from the Rate Card, not the employee record.Fields
| 3, 4 | Draft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Contact | External relationship data. Client contacts, partner reps, prospects. Enrichment target — auto-populates from LinkedIn, public data.Fields
| 1, 6 | Draft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Organization | Hierarchical. Clients, channel partners, departments, teams, practices. Tree structure with parent/child.Fields
| 1-6 | Draft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Geography | 25+ countries across 3 rate regions (NA, EE, WE). Drives rate cards, payroll compliance, calendars.Fields
| 3, 4 | Draft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Skill | Standalone lookup table for skills and certifications. Skills exist as both person attributes (via PersonSkill) AND project/estimate requirements. "This project requires ServiceNow skills" is a valid use case independent of who's assigned.Fields
PersonSkill (junction)
SkillRequirement (junction)
| 1, 3, 6 | Draft |
Business Lifecycle
| Entity | What It Is | Scenarios | Status | |||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Deal / Opportunity | The pre-sale pipeline entity. Deals exist independently before a Project is created. When a deal reaches S7-Won, it converts to a Project. All estimates are linked to Deals, not Projects.Fields
| 1, 6 | Draft | |||||||||||||||||||||||||||||||||||||||
| Source: HubSpot (deal, 1,447 records, $598M pipeline) | ||||||||||||||||||||||||||||||||||||||||||
| Project | The post-sale delivery entity. Created when a Deal reaches S7-Won. Carries delivery, staffing, time tracking, invoicing, and the three margins.Fields
| 1-6 | Draft | |||||||||||||||||||||||||||||||||||||||
| Estimate | Approach variant for a deal. Estimates are created before a project exists — they link to Deals. When a deal converts to a project, the winning estimate links to the new project. Supports multiple versions over the deal lifecycle.Fields
| 1 | Draft | |||||||||||||||||||||||||||||||||||||||
| Scope Line Item | A deliverable within an estimate. Hours by discipline. SOW-ready descriptions.Fields
| 1 | Draft | |||||||||||||||||||||||||||||||||||||||
| Resource Request | The operational need — “we need a Senior Backend Engineer for 12 weeks.” Created during estimation or staffing. Carries skill requirements.Fields
| 1, 3, 4, 6 | Draft | |||||||||||||||||||||||||||||||||||||||
| Resource Allocation | The fulfillment — “Jane Smith is assigned.” Links a real person to a resource request with specific rates.Fields
| 1, 3, 4, 6 | Draft | |||||||||||||||||||||||||||||||||||||||
| Financial Transaction | Money in and out. Quotes, invoices, payments, revenue recognition. Fixed Fee projects: milestone invoicing is separate from rev rec (rev rec is by percent complete, not milestones).Fields
| 1, 2, 6 | Not Started | |||||||||||||||||||||||||||||||||||||||
Operational
| Entity | What It Is | Scenarios | Status | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Time Entry | Universal work record. 260K entries, 324 users. Highest-traffic entity.Fields
| 1, 2, 3, 4 | Draft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Task | Work items across modules. Polymorphic: project tasks, EOS to-dos, rocks, workflow steps.Fields
| 1, 2, 5 | Draft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Measurable | Weekly/monthly/quarterly KPI tracked on the scorecard. 454 measurables across 18 teams. Phase 1 all manual entry; designed for future auto-calculation from CRM/PSA/Finance.Fields
| 2, 5 | Draft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Rock | Quarterly goal with milestones and status tracking. Supports L1→L2→L3 hierarchy: L1 = company rocks, L2 = department, L3 = team. Allows tracing rock hierarchy across levels.Fields
| 2, 5 | Draft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Issue | Short-term and long-term issues tracked through the Identify-Discuss-Solve process. 13 strategic issues actively tracked by Leadership Team.Fields
| 2, 4 | Draft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Meeting | L10, quarterly, and annual meetings with structured agendas. 165+ meetings for Leadership Team. AI-generated summaries.Fields
| 2, 5 | Draft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| VTO | Vision/Traction Organizer. Strategic planning document with core values, core focus, 10-year target, and annual plan. One per team/company level.Fields
| 2, 5 | Draft | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Document | Generated artifacts: SOWs, proposals, contracts, change orders. Versioned.Fields
| 1 | Not Started | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Forecast | Revenue, capacity, demand, cash flow projections. Currently in spreadsheets.Fields
| 2 | Not Started | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Approval Request | Workflow and approval tracking. Replaces 10+ Jira business workflows.Fields
ApprovalChain
MarginThreshold (reference)
Default thresholds: >72.5% auto-approve, 65–72.5% COO approves, <65% CEO approves ApprovalStep
| 1 | Draft |
Platform Content (Horizontal)
These attach to any entity across the platform. Not owned by any single module.
| Entity | What It Is | Scenarios | Status | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Note | Comments, observations, context. Attaches to any entity.Fields
| All | Not Started | ||||||||||||||||||||||||||||||
| File | Documents, images, PDFs attached to any entity. Supports both direct uploads and external references (Google Docs, Google Sheets, etc.). Versioned. Employee documents (NDAs, contracts) are Files attached to Employee Record.Fields
| 1, 3 | Not Started | ||||||||||||||||||||||||||||||
| Recording | Audio/video with derived transcripts. Meetings, deals, contacts.Fields
| 2 | Not Started | ||||||||||||||||||||||||||||||
| Activity | System-generated audit log on every entity. Automatic.Fields
| All | Not Started |
Reference Data
| Entity | What It Is | Scenarios | Status | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Role/Level | Shared lookup for roles and seniority levels. Referenced by Employee Record (what someone IS) and Resource Request (what’s NEEDED). Ensures consistency across staffing and HR.Fields
| 1, 3, 4 | Draft | ||||||||||||||||||
| Rate Card | Versioned billing and cost rates. 52 entries per version. Old projects keep their original card.Fields
| 1, 3, 4 | Draft | ||||||||||||||||||
| Pipeline Stage | Admin-configurable deal stages. Editable without code changes.Fields
| 1, 5, 6 | Draft |
Key Entity Relationships
| From | To | Cardinality | Notes |
|---|---|---|---|
| Deal | Estimate | 1:N | Multiple estimate variants per deal |
| Deal | Project | 1:1 | On conversion at S7-Won |
| Deal | Contact | N:N | Multiple contacts per deal |
| Deal | Organization | N:1 | Client and channel partner |
| Deal | Pipeline Stage | N:1 | Current deal stage |
| Estimate | Scope Line Item | 1:N | Deliverables within estimate |
| Project | Time Entry | 1:N | |
| Project | Financial Transaction | 1:N | |
| Resource Request | Resource Allocation | 1:N | One request, multiple fulfillments |
| Resource Request | Skill | N:N | Required skills for the request |
| Resource Allocation | Person | N:1 | Assigned person |
| Employee Record | Role/Level | N:1 | What role/level someone IS |
| Resource Request | Role/Level | N:1 | What role/level is NEEDED |
| Person | Employee Record | 1:1 | Restricted HR data |
| Person | Contact | 1:1 | External relationship data |
| Person | Organization | N:1 | Team/department membership |
| Rock | Project | N:1 | Optional bridge to PSA |
| Meeting | Organization | N:1 | Team meetings |
| Measurable | Person | N:1 | Owner |
The core value proposition. Today this data spans 4 systems with no linkage. In ZOS, it's one calculation on the Project entity.
| Stage | When | Revenue | Cost | Source Today |
|---|---|---|---|---|
| Sold-as Margin | Deal closes, estimate selected | Estimate.net_fees | Estimate.total_cost (generic role rates) | Blueprint |
| Staff Margin | Real people assigned | SUM(allocation.bill) - discount | SUM(allocation.cost) at actual person rates | Blueprint → Mavenlink |
| Delivered Margin | Work complete | SUM(time.hours * time.bill_rate) - discount | SUM(time.hours * time.cost_rate) | Mavenlink |
Questions resolved across two feedback sessions with Evan Klein (March 26-27). Responses captured and applied to the data model.
Remaining open items after three feedback sessions.
Architecture & Data Model
Data & Migration
This is the implementation-gap list for turning the current tracker and data model into a buildable technical specification. These items are intentionally listed as unresolved checklist items so the team can validate them explicitly before schema, workflow, and migration work hardens.
Lifecycle & Cardinality
Financial Model
Reference Data & Normalization
Workflow & Platform Patterns
Security & Migration
Where each entity's data lives today across existing systems. Blank cells represent gaps — data that doesn't exist in that system.
| ZOS Entity / Field | 90.io | HubSpot | Blueprint | Mavenlink | BambooHR | Lattice | NetSuite |
|---|---|---|---|---|---|---|---|
| Person (core identity) | |||||||
| Name | user.name | contact.name | Resource (named) | user.full_name | employee.displayName | user.name | entity.name |
| user.email | contact.email | — | user.email_address | employee.workEmail | user.email | — | |
| Type | — | contact.lifecyclestage | — | user.account_membership | — | — | — |
| Role / Title | user.seat | — | Role (dropdown) | user.role | employee.jobTitle | — | — |
| Employee Record (restricted) — primary source: BambooHR | |||||||
| Manager | — | — | — | — | employee.supervisorId | user.manager | — |
| Role (FK → Role/Level) | — | — | Role (dropdown) | user.role | employee.jobTitle | — | — |
| Level (FK → Role/Level) | — | — | — | — | — | — | — |
| Status | user.status | — | — | user.account_membership | employee.status | user.status | — |
| Cost Rate | — | — | Values.Cost | user.cost_rate | — | — | — |
| Salary | — | — | — | — | employee.payRate | — | — |
| Address | — | — | — | — | employee.address | — | — |
| Tax ID / SSN | — | — | — | — | employee.ssn | — | — |
| Employment Type | — | — | — | — | employee.employeeType | — | — |
| Start/End Date | — | — | — | — | employee.hireDate | — | — |
| Employee ID | — | — | — | — | employee.id | — | — |
| Salary History | — | — | — | — | employee.compensation | — | — |
| Emergency Contact | — | — | — | — | employee.emergencyContact | — | — |
| Documents (NDA, contracts) | — | — | — | — | employee.files | — | — |
| Contact (external) | |||||||
| Title at Company | — | contact.jobtitle | — | — | — | — | — |
| Company | — | contact.company | — | — | — | — | — |
| Deal Associations | — | association.deal | — | — | — | — | — |
| Lifecycle Stage | — | contact.lifecyclestage | — | — | — | — | — |
| Organization (hierarchy) | |||||||
| Client | — | company (427) | Company | account | — | — | customer |
| Channel Partner | — | company (partner type) | — | — | — | — | — |
| Department | A-Chart nodes | — | — | organization (dept tree) | employee.department | — | department |
| Team | team (18 teams) | — | — | — | — | — | — |
| Deal / Opportunity (pre-sale) | |||||||
| Deal | — | deal (1,447 records, $598M pipeline) | — | — | — | — | — |
| Pipeline (configurable) | — | deal.pipeline_stage | — | — | — | — | — |
| Contacts | — | association.contact | — | — | — | — | — |
| Project Lifecycle (post-sale) | |||||||
| Delivery | — | — | — | workspace (296) | — | — | — |
| Estimation | — | — | Approach Variant | estimate | — | — | — |
| Scope | — | — | Scope Line Items | — | — | — | — |
| Resource Request | — | — | Resource Allocation | — | — | — | — |
| Resource Allocation | — | — | — | workspace_resource | — | — | — |
| Invoicing | — | — | — | invoice (2,922) | — | — | transaction |
| Rate Card | |||||||
| Version | — | — | "2025 Rate Card" | rate_card_set | — | — | — |
| Role + Region key | — | — | Combined (lookup) | role | — | — | — |
| Cost / Bill rates | — | — | Values sheet | cost_rate / bill_rate | — | — | — |
| EOS | |||||||
| Measurable | measurable (454) | — | — | — | — | — | — |
| Rock | rock | — | — | — | — | — | — |
| Issue | issue | — | — | — | — | — | — |
| Meeting (L10) | meeting (165+) | — | — | — | — | — | — |
| V/TO | vto | — | — | — | — | — | — |
The current prototype (in zos/) is a 90.io clone. It replicated 126 features with a 97% scorecard feature match. That demonstrated engineering feasibility, but it missed the point.
Evan didn't hire us to rebuild 90.io. He hired us because 90.io is a data-entry form that can't connect to anything, can't surface intelligence, and forces manual input for every metric. The prototype scores well on feature parity. It scores zero on connected data, AI intelligence, and MCP access — the things that actually matter.
The prototype is a reference for how 90.io works, not the starting point for the real build. We will likely start fresh. The real build needs to deliver connected data, AI intelligence, and MCP access from day one.
The EOS module rebuilt around what Zaelab actually needs: auto-populated data from other ZOS modules, AI-generated intelligence, and MCP access for programmatic interaction. Each component replaces the equivalent 90.io feature with a fundamentally better approach. EOS is part of the broader 12-week build covering EOS + CRM + Estimator (see Build Timeline below).
Status reflects the new build plan. The prototype's 126-feature count does not carry over.
Weekly KPI tracking grid with period tabs, color-coded goals, inline editing, and grouping. The heartbeat of the EOS cadence — 454 measurables updated weekly across 18 teams.
Structured L10 meeting format with configurable agenda sections (Segue, Data, Rock Review, To-Do List, IDS, Conclude). Scheduling, attendance tracking, and meeting ratings. 165+ meetings for Leadership Team alone.
Quarterly goal tracking with milestones, status (On Track / Off Track / Complete), kanban planning board, and V/TO goal linkage. 5 Company Rocks at the leadership level, individual rocks per person.
Task list with title, due date, owner, completion toggle, and overdue indicators. Private and team to-dos. 17 active to-dos on Leadership Team with real operational items.
Short-term and long-term issue lists with priority, owner, cross-team sharing, and archive. 13 strategic issues actively tracked by the Leadership Team through the Identify-Discuss-Solve process.
Strategic planning document with Core Values, Core Focus, 10-Year Target, 3-Year Picture, 1-Year Plan, 90-Day Plan, and SWOT analysis. Fully populated for Zaelab with revenue, EBITDA, and gross margin targets.
Hierarchical org chart with role titles, person assignments, photos, and accountability bullet points. Expand/collapse navigation, search, and draft charts. 7+ departments from Visionary through all teams.
These 90.io features have zero or near-zero usage at Zaelab. They are descoped permanently — the effort goes into connected data and AI features instead.
0 headlines, 0 cascading messages. Not adopted — announcements happen in Slack.
Default content only, no custom content. Confluence handles this. Separate ZOS Wiki module if ever needed.
0% mastery across all 22 EOS tools. EOS learning content is not our business to replicate.
1 assessment attempted in Q1 2025, never repeated. One-time experiment that did not stick.
Set up but not actively used. Lattice and BambooHR handle performance management. Will be part of the HRIS module.
Platform capabilities that must exist before the EOS module build starts. The EOS module references these foundations — building without them creates the same isolated data problem 90.io has.
Canonical identity record with lightweight base + Employee Record + Contact split. Scorecard owners, rock owners, to-do assignees, meeting attendees, issue owners — everything references a Person. Must be the single golden record, not an EOS-specific user table.
Hierarchical tree structure supporting departments, teams, and companies. Every EOS artifact belongs to a team (18 teams). The Accountability Chart requires parent/child org hierarchy. Must be canonical across all ZOS modules.
64 licensed seats need role-based access scoped to EOS: who can edit the V/TO, create company rocks, or view another team's scorecard. Basic auth exists but needs per-module, per-entity permission scoping.
Evan's day-one requirement. Programmatic read/write access to all EOS data: scorecard values, rock status, meeting history, issue lists, V/TO content. Enables Slack bots, CLI tools, and agent workflows. Build alongside the web UI, not after.
Overdue to-do alerts, off-track measurable warnings, upcoming meeting reminders, issue assignments. Push to web, email, and MCP channels (Slack). Basic infrastructure exists but needs EOS-specific event triggers.
Aggressive but aligned timeline matching Evan's expectation: EOS + CRM + Estimator within 12 weeks, with PSA foundation as a stretch goal. Tracks overlap intentionally — the shared data model (Person, Organization, Project) enables parallel work. June HubSpot deadline drives the CRM track.
Foundation + EOS Track
Canonical Person and Organization entities. Auth and role-based permissions. MCP server framework. Scorecard with 454 measurables. Rocks with L1→L2→L3 hierarchy. To-Dos. Issues with IDS tracking. V/TO. Meetings with L10 format. Accountability Chart built on canonical entities.
Exit: Full EOS workflow live. 90.io can be sunset. Foundation entities (Person, Organization) ready for CRM and Estimator.
CRM Track — overlaps with EOS tail
Pipeline with S1–S7 stages. Contacts and Companies built on Person + Organization entities. Deal stages, deal scoring, and pipeline board. Basic reporting and dashboards. June HubSpot deadline drives this track.
Exit: Deals pipeline operational. HubSpot CRM replacement live for sales team. Pipeline data flows to EOS Scorecard measurables.
Estimator Track — overlaps with CRM tail
Scope templates with SOW-ready descriptions. Rate cards with region/discipline pricing. Resource planning with skill requirements. SOW generation. Sold-as margin calculation. Margin threshold approvals (>72.5% auto-approve, 65–72.5% COO, <65% CEO).
Exit: Blueprint replaced. Deal→Estimate→SOW flow operational. Sold-as margin visible on every project.
PSA Track — stretch goal, scope TBD
Time tracking setup. Project creation from won deals. Basic invoicing and milestone management. Staff margin calculation from real person assignments. Active Mavenlink project migration (historical TBD).
Exit: Time tracking operational for new projects. Staff margin visible. Full Mavenlink replacement continues into Phase 2.