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. Applying the professional services pack 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 pack applies from Settings 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. The client opens a private link and accepts it without an account, and the acceptance records who accepted and when.

  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

    The work becomes tasks against the engagement, in a list, on a board or on a calendar. Client questions become tickets with a response clock.

  6. Bill

    Push billable hours onto a draft invoice, record part payments as they land, and put the retainer on a schedule that raises itself overnight.

What the pack sets up

Configured for billable work, in one click.

The professional services pack 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 pack 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 opened through a tokenised URL with no login. Acceptance stores the name, the email and the time, so an agreed number has a record behind it.

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

Start a timer, mark the entry billable at a rate snapshotted on the day, then push the unbilled ones onto a draft invoice. Minutes become hours to two decimals and the rate rides along. The timer runs on both clients; the invoice step is on the web app.

Retainers that raise themselves

A monthly or quarterly schedule with an end date, generating its invoice on a nightly job rather than when somebody remembers. Stop it by switching the schedule off.

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.

Delivery work on the engagement itself

A task hangs off an account, an engagement or a ticket, with an owner and a due date, in a list, a board or a calendar. It is the same task in all three.

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

Eight 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.

Time against a project or an engagement

A timer starts on a ticket and only on a ticket. The billing chain after that is complete, so firms bill hours by opening a ticket for the piece of work. If you want hours to roll up per engagement without that step, it is not here.

Utilisation, profitability and expenses

The three numbers a practice-management tool is bought for are all absent: no billable utilisation per person, no cost versus revenue per engagement, and no project expenses passing through to the client invoice. The one report that ships is accounts-receivable aging, in buckets. A cost you want to recharge is a line you add by hand.

Custom engagement stages

Engagements move through six fixed stages: Prospecting, Qualification, Proposal, Negotiation, Closed Won and Closed Lost. You cannot rename them or add your own.

A stage board for enquiries

The pack defines a six-stage new-business pipeline, from New enquiry through Proposal sent to Won. Those rows are really created and the API serves them, and neither client has a screen that draws them, so an enquiry carries a status rather than sitting in a column.

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.

Files and a thread on the engagement record

Files attach to enquiries, contacts, tasks and tickets. The phone shows files and comments on an engagement too; the web app does not, where the engagement page carries the money, the stage and the people and nothing else.

Bulk import of your client list

The importer is written and tested on the backend, with per-row error reporting, and neither client can reach it. Moving an existing book of clients in means the API, not a file upload in the interface.

Questions

The ones partners ask

Check any of it

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

Is BottleCRM really free?

The core CRM is open source and free to self-host, with no per-user fee and no seat cap. You run it on your own server and the bill is your 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, and the pack has a field for it. A fixed-scope project is an ordinary invoice; a retainer goes on a recurring schedule that raises its own invoice monthly or quarterly until you stop it or its end date passes.

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.

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

Yes, with one constraint worth knowing before you commit. Time is logged against a support ticket, billable entries carry the rate they were logged at, and unbilled ones can be pushed onto a draft invoice from the web app. What does not exist is logging time directly against an engagement, so hours for a project get recorded on a ticket raised for that work.

Do we own our data?

Yes. Self-hosted means the database is yours, there is no export fee and no lock-in. The API is documented and the schema is in the open repository, so getting your data back out is a query rather than a support request.

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

Apply the professional services pack, 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