VectoDesign system

Vecto design system · Prototype

The interface language for a 50-day operating system

Vecto runs real ventures on a fixed methodology: six operational stages, human gates, and a queue of action items that tells each person what to do next. This page is the reference for the components that carry that work — the same ones used by the dashboard, the roadmap and the company-facing views.

What this is
A live reference. Every specimen renders the real component from src/components with realistic data, so what you see is what ships.
How to use it
Take the component, not the markup. If a pattern you need is missing, add it to src/components and document it here in the same change.
What is fixed
Tokens. Colour, spacing, radius, elevation and motion are CSS variables in globals.css. A literal colour in a component is a bug.

Principles and direction

Vecto is an operating system for building businesses on a 50-day cycle. These six principles decide every judgement call in the rest of this document.

Show the next action, not the whole system

Every surface answers “what should I do next, and why me?” before it offers navigation. Detail is available, never mandatory.

State is never implied

Health, blockers and gate decisions carry their reason with them. A user should never have to reconstruct why something is amber.

The tenancy boundary is visible

Vecto-internal and company-shared content look different everywhere. Nobody should have to remember who can see what.

Dense, not cramped

Operators live here all day. Density comes from rhythm and alignment, not from shrinking type or removing labels.

Quiet by default

One typeface, one accent, and hairlines only where structure genuinely changes. Nothing is emphasised unless it needs a decision.

Colour is a second signal

Every status carries a shape or a glyph as well as a hue, so the system survives greyscale, projection and colour vision deficiency.

Brand direction

A near-white paper substrate, warm grey ink, and one desaturated blue that means “Vecto” and nothing else. The palette is deliberately quiet so the status scale can be the loudest thing on the page.

Rule. The brand blue is structural only — identity, focus, current position, selection. It never encodes health, so it can never be mistaken for the RAG scale.

Paper

The working surface. Almost white, warm rather than blue, and comfortable for a full day of operational reading.

Fill

The same ink as the text at four per cent. Every quiet surface in the product is this, so tints never clash.

Signal

Where you are and what is selected. Used sparingly enough that it always means something.

Colour and tone

Three layers: a raw palette nothing references directly, semantic roles that components consume, and a Tailwind theme mapping. Components never write a literal colour.

Surfaces

Every neutral surface and every line is the text colour at a low alpha, so nothing in the interface is a separate grey that has to be kept in tune.

Background--backgroundThe page itself.
Canvas--canvasRecessed areas: rails, specimens, inset panels.
Card--cardWorking surfaces that carry a hairline.
Muted--mutedTable headers and inset notes.
Accent--accentHover and selected fills.
Brand surface--brand-surfaceCurrent position and selection.

Lines and focus

Three weights of hairline, used deliberately. Most surfaces need none at all — space separates them.

Rule. Reach for the lightest line that works. A border is for a real structural boundary, not for outlining every element.

Border subtle--border-subtleRepeated dividers inside one container.
Border--borderThe default hairline between things.
Border strong--border-strongOnly where a line must survive a busy background.
Ring--ringFocus, and only focus.

Semantic tones

Seven tones cover every state in the product. Blocked is violet rather than red so “someone must unblock this” never reads as “this failed”.

Rule. A component picks a tone from the domain and looks its classes up in ui/tone.ts. No status colour is written inline anywhere.

Brand--brandIdentity, current position, selection.
Success--successComplete, approved, on track.
Warning--warningAt risk, in review, due today.
Destructive--destructiveOverdue, rejected, off track.
Info--infoIn progress, informational.
Blocked--blockedDependency stopped, overridden.
Neutral--neutralNot started, waiting, no signal.
neutralbrandsuccesswarningdestructiveinfoblocked

Token reference

Each role has a paired foreground that is contrast-safe on its own tinted surface in both themes.

Semantic colour token reference
RoleFill tokenText tokenUsed for
Brand--brand--brand-foregroundIdentity, current position, selection.
Success--success--success-foregroundComplete, approved, on track.
Warning--warning--warning-foregroundAt risk, in review, due today.
Destructive--destructive--destructive-foregroundOverdue, rejected, off track.
Info--info--info-foregroundIn progress, informational.
Blocked--blocked--blocked-foregroundDependency stopped, overridden.
Neutral--neutral--neutral-foregroundNot started, waiting, no signal.

Typography

One typeface. Inter carries the entire interface, and hierarchy comes from size, weight and colour rather than a change of voice. A system monospace appears only where a person might quote a string back to us.

Hierarchy

Page title · text-3xl · semibold

Northwind Freight

Section · text-xl · semibold

Gates awaiting your decision

Item title · text-base · semibold

Approve the Northwind pricing model before the build stage opens

Body · text-sm

Gate G3 cannot open until a named approver signs the pricing model. Two build tasks are already sequenced behind it.

Metadata · text-xs · muted

Stage gate · Northwind Freight · O3 · Commercial model

Figure · text-2xl · tabular

31 / 50

Rules

Numbers are tabular everywhere by default, so a column of figures is always comparable without extra classes.

Rule. Metadata is sentence case at text-xs in the muted colour. No tracked uppercase labels — they shout, and almost nothing in an operating system needs to shout.

Typography roles
RoleSizeWeightWhere
Page titletext-3xl / 4xlSemiboldRoute and venture titles
Sectiontext-xl / 2xlSemiboldSection and dialog titles
Item titletext-baseSemiboldAction items, cards, rows
Bodytext-smRegularExplanations and descriptions
Metadatatext-xsRegular, mutedProvenance: source, venture, stage
Referencetext-xsfont-monoTask refs and capability grants

Space, radius, elevation, icons and motion

The physical rules: how far apart things sit, how sharp their corners are, how far off the page they lift, and how fast they move.

Spacing and density

A 4px base grid. Density switches the padding inside information-dense patterns via CSS variables, and never changes type size.

1
2
3
4
6
8
12
Density tokens
TokenComfortableCompactApplies to
--density-row-py0.6875rem0.4375remList rows
--density-card-p1.25rem0.875remCard padding
--density-cell-py0.6875rem0.4375remTable cells
--density-gap0.75rem0.5remGrid gaps

Radius

Small and even. Corners should be felt rather than noticed, and nothing in the system is a pill except a progress track.

sm · 0.1875remMarks
md · 0.25remChips
lg · 0.375remControls
xl · 0.5remCards
2xl · 0.625remSheets

Elevation

Three levels, and the first two are barely there. Height in this product means “temporarily on top of your work”, so real shadow is reserved for things you dismiss.

Flat--elevation-flatA hairline expressed as a ring. The default for anything resting on the page.
Raised--elevation-raisedOne pixel of separation. Used only where a surface must lift off a tint.
Overlay--elevation-overlayDialogs, popovers, sheets and toasts — things you dismiss.

Icons

Lucide, 1.5px stroke, sized to the line box. Icons clarify a label; they never replace one except in a control with an accessible name.

Rule. No icon-only button without an aria-label. No status communicated by icon colour alone.

3.5 — inline with text4 — controls and badges5 — section affordances

Motion

Motion confirms a change; it never announces one. Everything is suppressed under prefers-reduced-motion, which the global stylesheet handles once for the whole system.

Motion tokens
TokenDurationUsed for
--motion-fast100msHover and press feedback
--motion-base160msColour and border transitions
--motion-slow260msProgress and meter fills
--motion-easecubic-bezier(.32,.72,0,1)Every transition in the system

Buttons and actions

Coss buttons, unchanged apart from the Vecto radius and colour roles. What matters here is not the variants but the discipline about which one appears where.

Variants

Rule. One filled button per surface. If a card offers two things, the second is ghost or outline — the reader must never have to choose between two equal-weight actions.

Primary and secondary
Destructive
Sizes
With icons and state

Focus

Focus is a single global treatment: a two-pixel ring in the brand colour with a two-pixel offset, applied by :focus-visible in the base layer rather than per component.

Keyboard focus is always visible; pointer focus never draws a ring.

Forms and inputs

Every control is wrapped in a Field so the label, description and error are associated programmatically rather than by proximity.

Text inputs

Rule. No placeholder-as-label. A field that can be filled in has a visible label, and the description explains the consequence, not the format.

Shown to the company everywhere in their portal.

Matches task references such as NW-114.

Recorded permanently in the venture audit history.

That date does not exist. Use a working day.

Set by the methodology; not editable directly.

Select and combobox

Select for a short, known list. Combobox once the list is long enough that a person would rather type than scan.

Critical means the 50-day target moves if this slips.

Determines which Vecto specialist is suggested as owner.

Choice and range

Choice controls carry the consequence in their description. Switches apply immediately; checkboxes and radios are part of a form that is submitted.

Company Members will see it in their roadmap.

Tomas Lindqvist is notified immediately.

Who owns this action?

48

A gate older than this is escalated to the Portfolio Director.

Overlays and feedback

Anything that covers the work has to earn it. Tooltips explain, popovers hold a small decision, dialogs demand one, sheets hold a record, and toasts confirm what already happened.

Tooltip and popover

Rule. A tooltip may never carry information that is not available elsewhere, because it does not exist on touch.

Dialog and sheet

A dialog for a decision with a small amount of context; a sheet when the reader needs the underlying record while they decide.

Toasts

Rule. A toast confirms something that already happened. It never carries the only copy of a decision, and never asks a question.

The status system

Vecto has more states than a typical product, and people read them under time pressure. Every state is defined once in a registry — label, tone, shape, icon and the sentence explaining what it means — and every surface reads from it.

Shapes

Rule. Colour is never the only carrier. Each state also has a shape, and health additionally carries its RAG letter, so the system survives greyscale printing and colour-vision deficiency.

dotSteady stateringWaiting on someone elsesquareHeld or under reviewdiamondNeeds a decision nowbarStopped by a dependency

Action status

What an action item is currently asking of the signed-in person. Distinct from the underlying task status, which describes the work.

Action item statuses
StatusMeaningTone
ReadyNothing is in the way. The owner can start immediately.brand
In progressWork has started and the owner still holds it.info
WaitingOwned by this user but progress depends on someone else.neutral
In reviewSubmitted and awaiting a named human decision.warning
BlockedA dependency or decision is preventing any progress.blocked
CompletedClosed with evidence. Retained briefly for confirmation.success

Urgency and priority

Urgency is derived from the due date at read time, never stored. It outranks status when deciding how loud an item should be.

Urgency
OverdueDue todayDue soonScheduled
Priority
CriticalHighNormalLow
Urgency and priority meanings
ValueKindMeaning
OverdueUrgency (derived)Past its due date. Always sorted to the top of the queue.
Due todayUrgency (derived)Must be closed before the end of the working day.
Due soonUrgency (derived)Falls inside the next three working days.
ScheduledUrgency (derived)Sequenced by the methodology; no attention needed yet.
CriticalPriority (assigned)Threatens the 50-day launch target if it slips again.
HighPriority (assigned)On the critical path for the current stage.
NormalPriority (assigned)Methodology default.
LowPriority (assigned)Can move without downstream consequence.

Dates

Every task and action deadline is rendered by DueDate, on every surface — cards, rows, lists, tables, roadmap milestones and the work panel. What varies is loudness, not the component: work that is late or lands today carries a badge on the date, and everything else is quiet metadata, because a list where every date is coloured has no urgent dates in it.

Rule. A task or action due date is always a DueDate. Show the urgency once: where the badge appears, the text beside it carries only what the badge has not already said.

Overdue
Overdue
Due today
Due today
Upcoming
Completed
Due date treatments
StateBadgeText beside it
OverdueDestructiveWhat is left of the phrase — “by 2 days”
Due todayWarningThe time — “17:00”
Due soon, scheduledNoneThe whole phrase — “Due Thursday”, “5 Aug”
CompletedNoneWhen it closed — “Completed 21 July”

Size xs in rows, tables and roadmap milestones, sm in cards and the work panel. Two other date patterns exist and are not this one: a roadmap phase carries a neutral range badge, because a span is not a deadline, and calendar entries and timestamps are read as data.

Task, gate and health

Task status describes the work itself. Gate state describes a human decision. Health describes a venture. They are deliberately drawn differently so they are never confused at a glance.

Task status
Not startedIn progressOn holdBlockedDone
Gate state
Not readyReady for reviewIn reviewApprovedRejectedOverridden
Venture health
On trackAt riskOff track
Visibility
Vecto internalShared with company
Task, gate, health and visibility meanings
ValueFamilyMeaning
Not startedTask statusInstantiated from the methodology, not yet picked up.
In progressTask statusActively being worked by its owner.
On holdTask statusDeliberately paused by the venture lead.
BlockedTask statusA predecessor or external input is unresolved.
DoneTask statusComplete with the evidence its definition of done requires.
Not readyGate stateRequired predecessors or evidence are still outstanding.
Ready for reviewGate stateAll entry criteria met and awaiting an eligible reviewer.
In reviewGate stateA named reviewer has picked the gate up.
ApprovedGate stateSigned off. Recorded append-only with approver and time.
RejectedGate stateReturned with required feedback; venture marked at risk.
OverriddenGate stateBypassed by an authorised user with a mandatory reason.
G · On trackVenture healthNo overdue critical work and no blocked gates.
A · At riskVenture healthSlipping against the 50-day target or awaiting a decision.
R · Off trackVenture healthA failed gate or a blocker on the critical path.
Vecto internalVisibilityNever rendered for Company Members.
Shared with companyVisibilityVisible to the company, using company-facing wording.

Sources

Action items are projected from many places in the system. The source icon tells the reader what kind of object they are about to open before they open it.

Roadmap taskInformation requestStage gateAI output reviewDocument approvalBlocker decisionMentionMethodology

The base chip

StatusBadge is the base chip. Everything above is a thin wrapper around it bound to one registry, which is why a new state can never be introduced without a label, a shape and a definition.

ReadyReadyReadyBlockedIn review

Action items

The unit the whole product is built around. An action item is a read model: it is projected from a task, a gate, an AI output or a request, and it exists to tell one person what to do next and why.

Anatomy

Rule. Every card answers four questions in a fixed order — what is being asked, why it is being asked, what it is holding up, and the single next action. The primary action is always the filled button, and there is only ever one.

Stage gateNorthwind FreightO3Commercial model

Approve the Northwind pricing model before the build stage opens

Gate G3 cannot open until a named approver signs the pricing model. Two build tasks are already sequenced behind it.

In reviewShared with companyBlocking 6 tasks

Done when: Model approved or returned with written feedback, and the decision recorded against G3.

PRPriya RaghunathanOverdue

Requested by Sofia Marchetti

AI output reviewNorthwind FreightO4Product design

Check the AI-drafted onboarding flow against the brand guidelines

Generated from the approved product spec. Nothing is in the way — this is the next task in your queue.

ReadyVecto internal

Done when: Every screen either accepted or annotated with a specific correction.

RKRuth Kavanagh

Every state

The status marker carries the loudest fact about the item. Urgency outranks status: an overdue item in review reads as overdue, because that is what the reader has to act on.

Stage gateNorthwind FreightO3Commercial model

Approve the Northwind pricing model before the build stage opens

Gate G3 cannot open until a named approver signs the pricing model. Two build tasks are already sequenced behind it.

In reviewShared with companyBlocking 6 tasks

Done when: Model approved or returned with written feedback, and the decision recorded against G3.

PRPriya RaghunathanOverdue

Requested by Sofia Marchetti

Information requestHalcyon CareS4Customer discovery

Send the customer interview transcripts for the discovery pack

Requested from Halcyon on day 6. Discovery synthesis is scheduled to start tomorrow and needs at least five transcripts.

WaitingShared with companyBlocking 3 tasks

Done when: Five or more transcripts uploaded to the request.

EVElena VasquezDue today

Requested by Daniel Osei

AI output reviewNorthwind FreightO4Product design

Check the AI-drafted onboarding flow against the brand guidelines

Generated from the approved product spec. Nothing is in the way — this is the next task in your queue.

ReadyVecto internal

Done when: Every screen either accepted or annotated with a specific correction.

RKRuth Kavanagh

Blocker decisionNorthwind FreightO4Payments

Resolve the payment provider decision holding up integration work

Neither provider has been signed off. Integration cannot begin, and the launch date moves by a day for each day this stays open.

BlockedVecto internalBlocking 9 tasks

Done when: A provider chosen and the decision recorded with its rationale.

TLTomas LindqvistOverdue

Requested by Marcus Deane

Roadmap taskHalcyon CareS8Investment

Draft the investor update for the end of the current cycle

Sequenced by the methodology for day 42. Metrics are already available in the venture dashboard.

In progressVecto internal
SMSofia Marchetti

Roadmap taskHalcyon CareS2Brand

Confirm the trading name and register the domain

Closed on day 9 with the registrar confirmation attached.

CompletedShared with company
RKRuth Kavanagh

Row variant

The dense variant for grouped lists, where cards would cost too much vertical space. Same information priority, same status marker, no loss of state.

Approve the Northwind pricing model before the build stage opensNorthwind Freight · O3 · Commercial model
PR
Send the customer interview transcripts for the discovery packHalcyon Care · S4 · Customer discovery
EV
Check the AI-drafted onboarding flow against the brand guidelinesNorthwind Freight · O4 · Product design
RK
Resolve the payment provider decision holding up integration workNorthwind Freight · O4 · Payments
TL
Draft the investor update for the end of the current cycleHalcyon Care · S8 · Investment
SM
Confirm the trading name and register the domainHalcyon Care · S2 · Brand
RK

The tenancy boundary

Rule. Anything marked Vecto internal must be visually distinguishable at a glance and must never be rendered in a company-facing view. The badge is a reminder, not the enforcement — that lives in the query.

Vecto internal view

Blocker decisionNorthwind FreightO4Payments

Resolve the payment provider decision holding up integration work

Neither provider has been signed off. Integration cannot begin, and the launch date moves by a day for each day this stays open.

BlockedVecto internalBlocking 9 tasks

Done when: A provider chosen and the decision recorded with its rationale.

TLTomas LindqvistOverdue

Requested by Marcus Deane

Shared with the company

Information requestS4Customer discovery

Send the customer interview transcripts for the discovery pack

Requested from Halcyon on day 6. Discovery synthesis is scheduled to start tomorrow and needs at least five transcripts.

WaitingShared with companyBlocking 3 tasks

Done when: Five or more transcripts uploaded to the request.

EVElena VasquezDue today

Requested by Daniel Osei

Roadmap and the 50-day cycle

A venture runs a 50-day Builder cycle through six operational stages, with strategy sub-stages running alongside. The roadmap components exist so a person can find their position in the methodology in under a second.

Stage markers

Stage markers carry the code, not just a colour, so O4 is identifiable in a dense list and in a sentence.

States
O4CompleteCompleteO4CurrentCurrentO4At riskAt riskO4BlockedBlockedO4UpcomingUpcoming
Sizes
O2CompleteO4CurrentS4Current

Stage track

Position and health are separate properties. Northwind sits on O4 and O4 is blocked, so the card is branded and the marker is not.

Rule. The current stage is the only element on the track that uses the brand colour. Brand marks position, never health.

The 50-day cycle

Progress is shown against the plan, not in isolation. The tick is where the methodology says the venture should be today, and the variance is stated in words as well as in position.

Northwind FreightLaunch target 12 September
Day 31 of 504 working days behind plan
Halcyon CareLaunch target 3 October
Day 14 of 501 working day behind plan
Tessellate StudioLaunch target 28 October
Day 8 of 502 working days ahead

Pillars

Pillars group work above the stage level. They are a label, not a status, so they are drawn quietly.

StrategyOperationsInvestmentOperationsPaymentsInvestmentSeries A pack

Gates and human review

Gates are where a human takes responsibility. They are the one place in Vecto where the interface deliberately slows down, states the entry criteria, and refuses to let a decision be made without a written record.

Standard review

Rule. A gate never opens itself. Entry criteria are shown before the decision, unmet criteria are stated plainly, and every decision — including an override — demands a note that is kept.

Stage gate G3 · Northwind Freight

Commercial model approved

Submitted by Sofia Marchetti · Submitted 2 days ago

In review

Entry criteria

  • Unit economics model signed off — metNW-103 closed by Sofia Marchetti on 18 July.
  • Pricing validated with three prospects — metThree recorded calls attached to the gate.
  • Payment provider selected — outstandingNW-114 is blocked and has been open for 4 days.

Required sign-off

PRPriya RaghunathanPortfolio DirectorMDMarcus DeaneFounder, Northwind Freight

1 criterion outstanding. Approval is disabled until they are met, or until the gate is overridden with a recorded reason.

With override permission

Override is granted per venture, never as a global role. When it is present the control is visible but weighted below the ordinary decisions, and it requires a reason.

Stage gate G3 · Northwind Freight

Commercial model approved

Submitted by Sofia Marchetti · Submitted 2 days ago

In review

Entry criteria

  • Unit economics model signed off — metNW-103 closed by Sofia Marchetti on 18 July.
  • Pricing validated with three prospects — metThree recorded calls attached to the gate.
  • Payment provider selected — outstandingNW-114 is blocked and has been open for 4 days.

Required sign-off

PRPriya RaghunathanPortfolio DirectorMDMarcus DeaneFounder, Northwind Freight

1 criterion outstanding. Approval is disabled until they are met, or until the gate is overridden with a recorded reason.

People and tenancy

Vecto is a two-sided system: Vecto staff and the company's own people work in the same venture. Who someone is — and which side they sit on — has to be readable without opening a profile.

Avatars

Rule. An avatar always encodes the person's kind. Vecto Admins are ink, Vecto Team Members carry the brand surface, and company people are neutral. Nobody should have to hover to find out whether they are talking to the client.

Kinds
PRTLMD
Sizes
SMSMSMSM
Over capacity
TLTomas is over his allocated capacity — flagged on the avatar so reassignment decisions are informed.

Chips and stacks

Chips name the person and, where it matters, their relationship to the item — owner, requester, approver.

Chips
PRPriya RaghunathanPortfolio DirectorDOOwnerDaniel OseiEVRequested byElena VasquezRKRuth Kavanagh
Stacks
Venture team: Priya Raghunathan, Tomas Lindqvist, Sofia Marchetti, Daniel Osei, Ruth Kavanagh, Marcus Deane, Elena VasquezApprovers: Priya Raghunathan, Marcus Deane, Elena Vasquez

Roles

The roles the prototype models. Capability is always scoped to a venture; there is no global superuser in the interface.

Vecto roles
RoleSeesCan decide
PRPriya RaghunathanPortfolio DirectorEvery venture, internal and sharedApprove, reject and override gates
TLTomas LindqvistOperations ArchitectAssigned ventures, internal and sharedApprove and reject gates on their ventures
MDMarcus DeaneFounder, Northwind FreightTheir own venture, shared items onlyApprove gates assigned to the company

Metrics, ventures and tables

Numbers in Vecto are operational, not decorative. A figure is only useful next to the thing it is measured against, so metrics carry their context and health always carries its reason.

Metrics

Rule. A metric never appears without the sentence that makes it actionable. Direction is coloured by whether the movement is good, not by whether it is up.

Ventures underway

12+2

Across three Vecto pods. Two entered O1 this week.

Median days to launch

47days+3

Against the 50-day target. Trailing six completed cycles.

Gates awaiting review

5-1

Two have been open longer than the 48-hour review window.

Action items overdue

180

9 sit with Vecto, 9 with company owners.

Venture cards

The portfolio unit. Health is stated with the reason that produced it, the position in the 50-day cycle, and the people accountable.

Northwind Freight

Logistics · O4 Build the product

Off track

The payment provider decision has been open for 4 days and is blocking 9 build tasks on the critical path.

50-day Builder cycleLaunch target 12 September
Day 31 of 504 working days behind plan
TLLeadTomas LindqvistVenture team: Tomas Lindqvist, Ruth Kavanagh, Sofia Marchetti, Daniel Osei, Priya Raghunathan, Marcus Deane
2 open blockers1 pending gate

Halcyon Care

Health services · S4 Customer discovery

At risk

Waiting on customer interview transcripts from Halcyon. Discovery synthesis slips a day for each day they are late.

50-day Builder cycleLaunch target 3 October
Day 14 of 501 working day behind plan
DOLeadDaniel OseiVenture team: Daniel Osei, Ruth Kavanagh, Elena Vasquez
0 open blockers1 pending gate

Tessellate Studio

Creative services · O2 Define the operating model

On track

Ahead of the methodology position with no overdue critical work and no gates outstanding.

50-day Builder cycleLaunch target 28 October
Day 8 of 502 working days ahead
SMLeadSofia MarchettiVenture team: Sofia Marchetti, Ruth Kavanagh
0 open blockers0 pending gates

Task table

Rule. Numerals are tabular everywhere so columns of figures align. Columns drop from the right as the viewport narrows; the reference, the task and its status always survive.

Open tasks — Northwind Freight
RefTaskStatus
NW-114
Select the payment providerNW-109
Blocked
NW-118
Build the shipment tracking screen
In progress
NW-121
Publish the carrier onboarding guide
Not started
NW-103
Sign off the unit economics model
Done
NW-126
Draft the pricing page copy
On hold

Company-facing variant

The same table rendered for a Company Member. The internal/shared column is gone, because the distinction is meaningless to them and the internal rows never reach the client.

Shared tasks — Northwind Freight
RefTaskStatus
NW-121
Publish the carrier onboarding guide
Not started
NW-103
Sign off the unit economics model
Done

Empty, loading, error and restricted

Every data-backed surface models five outcomes from the start. Designing the other four late is how products end up with a spinner where an explanation should be.

Empty

Rule. An empty queue is good news and should look like it. An empty list that has never been filled is neutral. They are different states and they get different copy.

Your queue is clear
Nothing is waiting on you across your four ventures. The next scheduled item opens on Monday.
No ventures yet
Ventures appear here once they have been onboarded and their 50-day cycle has started.

Loading

Skeletons mirror the shape of the content that will replace them, so the layout does not jump. They are announced politely rather than silently.

Loading action items

Error

Rule. An error says what failed, what the reader can do, and carries a reference they can quote. It never blames the reader and never shows a stack trace.

Restricted

Rule. Restricted is not an error. It explains the boundary and names the capability, without leaking what sits behind it.

You do not have access to this view

This venture's internal working notes are visible to the Vecto team only. Ask your Vecto lead if you need something from them.

Requires venture.internal.read