Projects and tasks
Estimates against actuals on every task, so overrun is visible on the day it happens rather than at invoicing.
Projects, hours, resourcing, retainers, invoices and client reports in a single place — so the number a client sees, the number in the report and the number in your P&L are the same number.
English, Ukrainian, Russian and Polish. Your data stays in your own tenant.
Every agency ends up with the same stack, and every month somebody reconciles it by hand. The reconciliation is the product.
From the brief to the invoice, without exporting anything to a spreadsheet in between.
Estimates against actuals on every task, so overrun is visible on the day it happens rather than at invoicing.
A running timer or a manual entry, then approval — approved months lock, so a report you sent cannot quietly change.
Capacity per person against what is actually booked, so the answer to "can we take this" is a number.
Build a report once and schedule it. The client gets the same figures you see, on time, without a manual export.
Rate cards, retainer banks, expenses, overhead and invoices — profitability per project and per client falls out of the same data.
Clients see their own projects, reports and approvals, and sign off in place. No seat required, no shared login.
Spend and performance pulled in next to the hours you billed against them, so margin on a paid retainer is one view.
Alert sweeps, scheduled report delivery and webhooks — the recurring nagging stops being somebody's calendar reminder.
Process docs and brand assets where the work is, with per-role visibility instead of a shared drive nobody prunes.
The finance engine is the part of this product that is allowed to be boring. It is pure, separately tested, and it does not improvise.
A client opens their own portal, sees only their own work, and signs off against the record. The approval is attached to the thing approved.
Multi-tenancy that depends on every query remembering a filter is multi-tenancy that leaks the first time somebody forgets. This one is enforced a layer lower.
PostgreSQL RLS is forced on the role the application uses. A query that loses its tenant scope returns nothing — not somebody else's rows.
Ad-platform tokens and stored credentials are encrypted at field level, and every reveal is written to an access log.
On Enterprise, an agency can require SSO outright — the password field disappears for a domain that mandates it.
One monthly price with a block of seats in it. Go past the block and each extra seat is priced per plan.
Prices in USD per month, excluding tax.
A multi-tenant platform for marketing agencies covering projects, time, resourcing, retainers, profitability, invoicing, ad data and a client portal — in place of a tracker, an hours spreadsheet, a budget sheet and hand-assembled reports.
By PostgreSQL row-level security, forced on the role the app connects as. Each request runs in a transaction scoped to one agency, so a query missing its tenant filter returns nothing rather than someone else's data.
English, Ukrainian, Russian and Polish. Each person picks their own, or follows their operating system — and a client report goes out in the client's language.
No. The client portal gives a client scoped access to their own projects, reports and approvals without consuming a seat from your plan.
As integer minor units — cents — end to end, never floating point, with an explicit tax treatment on each invoice. Timestamps are UTC underneath and local on screen.
Yes. Reports export, and the Agency and Enterprise plans include a public API, so the numbers are not trapped behind the interface.
Hours, retainers, invoices and the client report reconciled from the same records — because they are the same records.
Open the app