Skip to content
Agencies, consultancies, accounting firms

The CRM for firms that sell their time

Enquiry, proposal, delivery and billing on one record, with the hours you bill for landing on the invoice rather than in a spreadsheet. Installing the professional services app puts your own words on the navigation and adds the three fields your billing turns on.

No per-consultant fee, unlimited users, self-hosted. The app installs from Settings, Apps, in a click.

The engagement, end to end

From enquiry to paid, without re-keying it.

The number you quoted is the number on the invoice, because it is the same set of line items moved forward rather than a second document somebody types out again.

  1. Enquiry

    A referral, a call, or the form you embed on your own site lands as an enquiry with its source recorded against it, and the list filters by that source.

  2. Qualify

    Set the expected value, pick the service line and whether it is fixed-scope, a retainer or time and materials, and hand it to an owner.

  3. Proposal

    Send a line-item estimate with a short introduction and, if you want one, a deposit. The client opens a private link and accepts it without an account. Acceptance records who accepted and when, starts the project and drafts the deposit invoice for you to check and send.

  4. Won

    Convert the accepted estimate and the invoice comes out the other side with the same lines, the same client and nothing retyped.

  5. Deliver

    A won engagement becomes a project. Its tasks, time and files sit on it, its budget burns down as hours are logged, and client questions become tickets with a response clock.

  6. Bill

    Bill a project's unbilled hours up to a date onto a draft invoice, or bill part of a fixed fee, record part payments as they land, and put the retainer on a schedule that raises itself overnight.

What the app sets up

Configured for billable work, in one click.

The professional services app is a file in the repository, so this list is exactly what you get. Every item is an ordinary record you can rename, reprice or delete afterwards.

Three fields on every enquiry

  • Service line
  • Engagement type
  • Estimated start

Engagement type is a dropdown of fixed-scope project, retainer, and time and materials, which is the distinction the rest of your billing hangs on.

Four tags to sort work by

  • Retainer
  • Inbound
  • Referral
  • Rebid

Enough to separate a referral from a cold enquiry and a renewal from a rebid, without inventing a taxonomy in week one.

Eight billable lines, priced

  • Discovery workshop
  • Brand strategy sprint
  • Website design & build
  • Monthly retainer, Growth
  • Bookkeeping retainer
  • Tax advisory (hourly)
  • Audit support (hourly)
  • Interim CFO (day rate)

Fixed-fee engagements, monthly retainers, hourly advisory and a day rate, ready to drop onto an estimate. Change the prices to yours before you send one.

Optionally the app also seeds sample clients, engagements and tickets so you can see the shape of it. Every seeded row is tagged, so you can delete the lot in one action when you are done.

What a services firm runs on

Twelve things that work today.

Each one is checked against the source rather than written from a feature list, and where a capability is on one client and not the other, it says so. The next section is the other half of that promise.

A Lead is an Enquiry and a Deal is an Engagement

Your navigation reads Enquiries and Engagements on the web app, and the Enquiries pages carry the word throughout. Other page headings keep the stock label and the phone app does not read the map at all, so it still says Leads. The record underneath is unchanged either way.

Three fields that decide how you bill

Service line, engagement type (fixed-scope, retainer, or time and materials) and estimated start, on every enquiry. They render on both clients, filter in list views, and come back through the API.

Estimates the client accepts on a private link

An itemised proposal with an introduction above the lines, opened through a tokenised URL with no login. Acceptance stores the name, the email and the time, starts the project if you asked for one, drafts the deposit invoice if the estimate has a deposit, and tells you.

Accepted estimate becomes the invoice

One action converts it. Same line items, same client, and the estimate keeps a link to the invoice it produced, so nothing gets quoted twice.

Billable hours that turn into invoice lines

Log time against a project or a client ticket, and the rate fills itself from the person's rate on the project, else the project's. An admin bills everything unbilled up to a date onto a draft invoice, as one line or a line per person, task or entry. Billed time stays locked until its invoice is cancelled.

Retainers that raise themselves

A project billed as a retainer has a monthly fee, the hours it includes, a rate for hours beyond them and, if you want, unused hours rolling into next month. When a month ends its invoice is drafted for you: the fee, plus any hours over, with that month's time marked billed. Fixed charges can also go on a recurring invoice, monthly or quarterly, until its end date.

Part payments against one document

Record money as it arrives, several times against the same invoice, and the balance follows. Overdue is marked by a scheduled check rather than by eye.

Two SLA clocks that know your working week

A first-response target and a resolution target on every client ticket, counted against your business calendar and holidays, and paused while you are waiting on the client rather than punishing you for their delay.

A project between the won engagement and the invoice

Start one from a won engagement, with a budget in hours or money and a rate per person that only admins set. Tasks, time, files and comments sit on it, the budget shows how much is used, and the team hears at 80% and at 100%.

Targets per consultant, with a leaderboard

Revenue goals by period for a person or a team, ranked, with a notification at half, at ninety percent and at the line. On the web app and the phone.

Client-confidential work on your own server

Django and PostgreSQL, deployed where you choose, with tenant isolation enforced by row-level security in the database rather than by application code. The data never has to leave your infrastructure.

No per-consultant licence

Add associates, subcontractors and account managers without a seat fee. In a trade where headcount moves with the pipeline, a per-user price charges you for the peak.

Not here

Three things a firm will ask for and not find.

Several of these are the ones a professional services CRM is usually sold on. If your week turns on one of them, this is the wrong tool today, and knowing that now is worth more than a demo that steers around the subject.

Profitability and expenses

The time report shows each person's billable share of the hours they log, but cost against revenue per project is absent, and project expenses do not pass through to the client invoice. The one report that ships beyond time is accounts-receivable aging, in buckets.

Enquiry scoring

Nothing rates or ranks an enquiry for you. You set an expected value, a service line and an owner, and deciding what is worth chasing stays a judgement somebody makes.

Conditional or multi-step enquiry forms

The website form you build in Settings is a flat list of questions. Showing one only when another was answered a certain way, or splitting a long enquiry across pages, is not built.

Questions

The ones partners ask

Check any of it

The estimate model, the time-entry billing helper and the professional services app are all in the open repository.

What does BottleCRM cost?

There is a free plan on the hosted app with unlimited users, and the core CRM is open source and free to self-host. Either way there is no per-user fee and no seat cap. Self-hosting means the bill is your own infrastructure.

Can we host it on our own infrastructure?

Yes. It is a Django and PostgreSQL application you deploy yourself, which is the reason firms handling client-confidential work pick it over a hosted product. Tenant isolation is enforced by row-level security in the database.

Can it handle both retainers and one-off projects?

Yes. A fixed-fee project bills its fee whole or in parts, a time-and-materials project bills its hours, and a retainer project drafts its invoice when each month ends: the monthly fee, plus any hours over the allowance at your overage rate.

Can clients approve proposals without an account?

Yes. An estimate can be shared as a private tokenised link the client opens and accepts with no signup. The acceptance records who accepted it and when, so the agreement has a trail. If the estimate asks for a deposit or a project, accepting drafts the deposit invoice and starts the project, and you are notified.

Can we track billable hours and put them on an invoice?

Yes. Log time against a project or a client ticket; billable entries take the person's rate on the project, else the project's, and an admin bills everything unbilled up to a date onto a draft invoice. The project shows its budget used as you go, and billed time stays locked until its invoice is cancelled.

Can we set our own engagement stages?

Yes. An admin defines deal pipelines and their stages in Settings, on the web or the phone, marking each stage open, won or lost and, if you like, how many days an engagement may sit in it before it is flagged. The app's new-business pipeline for enquiries is drawn as a board too, and existing client contacts can be imported from a CSV.

Do we own our data?

Yes. Self-hosted means the database is yours, there is no export fee and no lock-in. Enquiries, contacts, accounts, engagements, tickets and invoices each export to CSV from their list, and the API is documented with the schema in the open repository, so getting your data back out is a download or a query rather than a support request.

Quote it, deliver it, bill it, in one place.

Install the professional services app, put the whole firm on it, and pay nothing per head. Self-host it and your clients' work never leaves your server.

No credit card · No per-consultant fee · MIT licensed