| 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 | — | — | — | — | |
Source module assessments, architecture planning, data model design
In progress — 3 of 11 systems assessed
Canonical data model review and sign-off with Zaelab leadership
Gate — must be approved before build begins
Unified person record, authentication, role-based access, permissions
Foundation for every module downstream
Strategic planning — replaces 90.io
In progress — v1 built (126/126 features), integration and polish remaining
Pipeline & contacts — replaces HubSpot
June 2026 deadline — scoped to deals pipeline (S1-S7), contacts, companies
SOW generation — replaces Blueprint
Bridges sales to delivery; enables sold-as margin tracking
Projects, time tracking, invoicing — replaces Mavenlink
Mission critical — 324 users, NetSuite integration required
HRIS (BambooHR), ATS (Workable), Wiki (Confluence), ITSM (Jira), LMS (Lattice), Client Portal, Finance (NetSuite)
Not yet planned — sequenced after core modules ship
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: CRM (where deals start) → Estimator (where scope is priced) → PSA (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, it's one calculation across the Project lifecycle. 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 26, 2026. Person/HR Profile/Contact three-table split finalized.
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: One entity tracks the full lifecycle. Three-stage margin calculated automatically. "How does our estimating accuracy compare to delivery?" becomes answerable across the entire portfolio.
Entities: Project, Organization, Person, Contact, Estimate, Scope Line Item, 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: EOS Record, 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, HR Profile, Organization, Geography, Skill, Rate Card, Resource Allocation, Project, EOS Record
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 Allocation, Person, Rate Card, EOS Record, 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: EOS Record, 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, EOS Record
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. Name, email, type (internal/external/candidate), auth role, manager. Every module references this. Intentionally thin — detailed data lives in HR Profile or Contact. | 1, 2, 3, 4, 5, 6 | Draft |
| HR Profile | Restricted sensitive data for employees and contractors. Linked 1:1 to Person. Salary, SSN, address, cost rate, employment type, DEEL status. Only HR sees this — never leaks into CRM or client-facing views. | 3, 4 | Draft |
| Contact | External relationship data. Client contacts, partner reps, prospects. Linked to Person + Organization. Title, company, deal associations, communication preferences. CRM and partner modules work with this. Enrichment target — the platform can pull public data (LinkedIn profiles, company info, industry, tech stack) to auto-populate Contact and Organization records from external sources. | 1, 6 | Draft |
| Organization | Hierarchical. Clients, channel partners, departments, teams, practices. Tree structure with parent/child. ServiceNow is an Organization. So is the Technology department. | 1, 2, 3, 5, 6 | Draft |
| Geography | 25+ countries across 3 rate regions (NA, EE, WE). Drives rate cards, payroll compliance (DEEL), work calendars, and time zones. | 3, 4 | Draft |
| Skill | Skills, certifications, and proficiency levels linked to Person. Drives resource matching: "Who has ServiceNow experience and is available next month?" | 3, 6 | Not Started |
Business Lifecycle
| Entity | What It Is | Scenarios | Status |
|---|---|---|---|
| Project | The hub. Starts as a deal, gets estimated, staffed, delivered, invoiced, closed. One entity across the entire lifecycle. Carries all three margins: sold-as, staff, delivered. | 1, 2, 3, 4, 5, 6 | Draft |
| Estimate | An approach variant for a project. Up to 7 variants per project. Each has scope, team composition, discount, and margin. The winning variant becomes the sold-as baseline. | 1 | Draft |
| Scope Line Item | A deliverable within an estimate. "Checkout flow — 40hrs Frontend, 60hrs Backend." Includes SOW-ready descriptions. Can be pulled from a reusable template library. | 1 | Draft |
| Resource Allocation | A person assigned to a project with specific rates and weekly hours. This is where sold-as margin turns into staff margin — generic roles become real people with real cost rates. | 1, 3, 4, 6 | Draft |
| Financial Transaction | Money in and out. Quotes, invoices, payments, revenue recognition. Includes $15.5M AR outstanding. Flows to/from NetSuite. | 1, 2, 6 | Not Started |
Operational
| Entity | What It Is | Scenarios | Status |
|---|---|---|---|
| Time Entry | The universal work record. 260K entries, 324 users. Feeds project costing, utilization, invoicing, and delivered margin. Highest-traffic entity in the system. | 1, 2, 3, 4 | Draft |
| Task | Work items across all modules. Project tasks, EOS to-dos, rocks, workflow steps. Different types share a common base with type-specific fields. | 1, 2, 5 | Draft |
| EOS Record | The EOS operating system: Measurables (454 KPIs), Rocks (quarterly goals), Issues (IDS), Meetings (L10), V/TO. Already built in ZOS v1. | 2, 4, 5, 6 | Draft |
| Document | Generated artifacts: SOWs, proposals, contracts, change orders. Generated from entity data and versioned. | 1 | Not Started |
| Forecast | Revenue, capacity, demand, cash flow projections. Gives forecasting a home connected to real pipeline and delivery data. | 2 | Not Started |
| Approval Request | Workflow and approval tracking. Contract approvals, estimate reviews, SOW approvals, time-off requests. Replaces 10+ Jira business workflows. | 1 | Draft |
Platform Content (Horizontal)
These attach to any entity across the platform. A Note can live on a Deal, a Project, a Person, or a Meeting. A File can be on an Estimate, a Contract, or a Person record. They are not owned by any single module.
| Entity | What It Is | Scenarios | Status |
|---|---|---|---|
| Note | Free-text comments, observations, context. Polymorphic — attaches to any entity via entity_type + entity_id. The running commentary layer across the entire platform. Replaces scattered Slack threads, email chains, and sticky notes. | All | Not Started |
| File | Uploaded documents, images, spreadsheets, PDFs. Attached to any entity. A SOW PDF on a Project, a resume on a Person, a screenshot on an Issue. Versioned — uploading a new version keeps the history. | 1 | Not Started |
| Recording | Audio/video recordings and their transcripts. Meeting recordings attach to Meeting records. Client call recordings attach to Deals or Contacts. Transcripts are derived content — generated from the recording and searchable across the platform. | 2 | Not Started |
| Activity | System-generated audit log. Every create, update, delete, assign, approve action across every entity. "Sam changed deal stage from S3 to S4 on March 15." Automatic — not user-created. Powers the audit trail and the activity feed on any record. | All | Not Started |
Reference Data
| Entity | What It Is | Scenarios | Status |
|---|---|---|---|
| Rate Card | Versioned billing and cost rates by role, discipline, and region. 52 entries per version. Old projects keep their original card; new projects use the current version. | 1, 3, 4 | Draft |
| Pipeline Stage | Admin-configurable deal stages. Defaults to S1-S7 from HubSpot but editable without code changes. Add, rename, reorder stages as the sales process evolves. | 1, 5, 6 | Draft |
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 |
Things that came up while writing the scenarios. Each one could change the model if the answer is different than what we assumed. Agenda items for the next working session with Evan.
Margin Model
Staffing & Resources
EOS Integration
Channel Partners
Data & Migration
Unassessed Systems
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 | — | — |
| Manager | — | — | — | — | employee.supervisorId | user.manager | — |
| HR Profile (restricted) | |||||||
| 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 | — | — |
| 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) | — | — | — | — | — | — |
| Project Lifecycle | |||||||
| Pipeline (configurable) | — | deal | — | — | — | — | — |
| Won | — | deal | Project ID | — | — | — | — |
| Estimation | — | — | Approach Variant | estimate | — | — | — |
| Scope | — | — | Scope Line Items | — | — | — | — |
| Resource Plan | — | — | Resource Allocation | workspace_resource | — | — | — |
| Delivery | — | — | — | workspace (296) | — | — | — |
| 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.
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 + HR Profile + 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.
Ordered by value delivery and dependency chain. Each phase is usable on its own — the team can start using ZOS EOS at any phase boundary. The weekly EOS cadence (Scorecard + To-Dos) ships first; meetings and intelligence ship last because they require data accumulation.
Weeks 1–3
Canonical Person and Organization entities. MCP server framework with first endpoints. Scorecard module with period tabs, grid, inline editing, color coding, goals, and grouping. Data source binding for measurables (plumbing for auto-population even before CRM/PSA exist). To-Do module with CRUD, completion toggle, private/team, overdue indicators, and meeting linkage fields. Data quality grading for scorecard.
Usable at end of phase: Team can enter and track scorecard measurables. To-dos can be managed. MCP can read/write both.
Weeks 4–6
V/TO module with Vision, Traction, SWOT, and goal-to-rock linkage. Rocks module with CRUD, milestones, status, planning board, and V/TO goal linking. Issues module with CRUD, IDS phase tracking, cross-team sharing, and auto-generation rules. Predictive rock completion based on milestone velocity. Data quality grading for all new entities. MCP endpoints for all new entities.
Usable at end of phase: Full EOS workflow minus meetings. Teams can track quarterly goals, manage issues, and maintain the strategic plan.
Weeks 7–9
Meeting module with L10 agenda, structured sections, scheduling, and attendees. Meeting-to-artifact linking (scorecard snapshot, rocks reviewed, to-dos created, issues discussed). AI meeting summaries (Tier 1). Pre-meeting briefings (Tier 1). Accountability Chart with hierarchy, seats, drag-and-drop editing, and drafts. Accountability Chart uses canonical Person + Organization entities. MCP endpoints for meetings and accountability chart.
Usable at end of phase: Full EOS workflow. Teams can run their weekly L10 through ZOS. The manual 90.io instance can be sunset.
Weeks 10–12
Executive briefing (AI-generated summary of business health). Anomaly detection on scorecard trends. Issue clustering. Meeting effectiveness analysis. Personal dashboard (My ZOS — replaces My 90). Cross-module insights (prep for CRM integration). Trend prediction on measurables.
Usable at end of phase: The "better than 90.io" experience. Not just feature parity — genuinely smarter. This is where connected data and AI intelligence deliver visible value.