Core concepts

How a workspace, its users, clients, projects, tickets, comments, time entries, periods, and billing relate to each other in SAQ.

Written for
user, admin
Roles
Requires
Feature
docs

Everything in SAQ lives inside one workspace. Clients, projects, tickets, time, and billing hang off it in a fixed hierarchy. This page walks through that hierarchy once; each term links to its own concept page for the rules.

The hierarchy

Organization  (the subscription and its plan)
└── Workspace  acme
    ├── Workspace users        Owner, Admin, Member; agent accounts
    ├── Workflow               kinds, states, priorities, labels
    ├── Clients
    │   ├── Client users       regular or elevated; billing contact flag
    │   ├── Contacts           email identities without a login
    │   ├── Billing recipients addresses that receive the timesheet
    │   ├── Rate card, billing policies, time banks
    │   └── Client timesheets  documents produced by billing runs
    ├── Projects
    │   ├── Billing client     or internal work (no client)
    │   ├── Collaborating clients
    │   ├── Project members    Member or Project manager
    │   └── Tickets  ACME-184
    │       ├── Comments       Shared, Internal, Staff
    │       ├── Viewers        explicit access grants
    │       ├── Attachments, links, parent and children
    │       └── Time entries   date + duration, per workspace user
    ├── Inbox and Review       email waiting for triage
    ├── Periods                open, then closed in order
    └── Billing runs           one client, one closed period

Organization and workspace

The organization is the billing customer: it holds the plan, the subscription, and the seat count. The workspace is where the work happens. It has a fixed address (the slug, acme in https://saq.no/w/acme), a ticket prefix, a time zone, a default language and currency, and a period length. One person can belong to several workspaces with the same login.

People

A workspace user is a member of the workspace with the role Owner, Admin, or Member. Workspace users log time, see internal comments, and use the Inbox. An agent account is a token-only workspace user for an AI assistant or integration.

A client is a customer account. Its client users log in and see tickets; a client user belongs to exactly one client. A regular client user sees only the tickets they started or were added to as a viewer. An elevated client user has been added to a project and works there like a member, within their own client's tickets. The billing contact flag lets a client user download the client's timesheets. A contact is an email address without a login; it can correspond on tickets by email but cannot log in.

A person is either a workspace user or a client user in a given workspace, never both.

Projects

A project is the collaboration boundary. It has a billing client (or none, for internal work), optional collaborating clients whose users can be elevated and whose tickets can be billed to them, and members with a project role of Member or Project manager. Workspace users see tickets on the projects they belong to; Owners and Admins see every project.

Tickets

A ticket has an id such as ACME-184, a title, a description, a kind, a state, a priority, labels, one assignee, a reporter, dates, and an estimate. Tickets can be linked (blocks, relates to, duplicates) and nested under a parent; see ticket links.

Every comment has a comment audience: Shared is read by everyone who can see the ticket, including client users and email correspondents; Internal by workspace users and elevated client users on that project; Staff by workspace users only. A viewer is an explicit access grant on one ticket; mentioning someone in a comment makes them a viewer. The reporter is always a viewer.

Tickets that arrive by email without a project sit in the Inbox until a workspace user routes them.

Time and periods

A time entry is a date, a duration, and an optional start time, logged by a workspace user on a ticket that is in a project. There is no timer. Entries fall into a period, a calendar month or a week. Closing a period freezes its work facts permanently; later changes are made as a correction in an open period.

Billing

Pricing is configured per client. Each workspace user has a default consultant category, and each time entry snapshots the category when it is logged. The client's rate card gives an hourly rate per category and date. A billing policy says per kind whether time is paid, free, or drawn from a time bank. The billing mode decides whether a ticket's time is billed per period or when the ticket closes.

A billing run takes one client and one closed period, prices every entry, applies policies and banks, rounds up, and produces the client timesheet: a numbered, immutable document in HTML, PDF, and CSV, delivered by email to the client's billing recipients. What the client reads on it is the ticket's billing description, never the title or the notes.

Reading on

The terminology page lists every term on one line. Documentation by role turns the hierarchy into permissions.