Symphony · Finance

Guide

100%

The Pricing Tool replaces the shared Excel workbook. You log in, open New Deal, build the project plan, and the app computes revenue and gross margin live — pulling salaries and rates straight from the central salary sheet, so the numbers are always current. When you’re happy, you close the deal — approval then happens in HubSpot, and the app imports the result automatically.

Example · Acme Robotics — “Platform Rebuild”
We’ll follow one deal throughout: a 6-month Time & Materials engagement in EUR, with two engineers and a solution architect. You’ll see it go from a blank draft to an approved, frozen deal.

Newest in the app

The newest thing in the app. Everything else that changed recently was a specific piece of work for a specific deal or client, so it is described where it belongs rather than announced here — use the search above if you are looking for something particular.

New section
Compare deals side by side
A new Compare section in the sidebar: pick up to twelve deals and every key figure lines up in one grid — revenue, GM2, cost, average rate, discount off SRC 2026, average monthly revenue, average salary per FTE, hours, FTE, duration — plus the team role by role. Tick two for a head-to-head with the gaps worked out in money and per cent. Save a selection under a name to come back to it, or share it with everyone.

What's new — and why it helps

What this app does that the pricing sheet we used before could not. If you priced deals the old way, these are the differences worth knowing.

Contingencies
Suggested automatically
Geography, staff seniority and the AI cost placeholder now propose a value from the standard rules and your plan — and update as the plan changes. Always check and confirm them; your own number always wins.
AI
Bill AI usage to the client
Answer one question in Deal Attributes and a block opens where you charge AI usage as a % of revenue or a flat fee — it adds to revenue and the client fee, separate from the internal AI cost line.
Planning
Dates drive the plan
The hours grid spans your estimated start → end. Move the start and the whole engagement shifts with it; allocation and billability never move because of a date change.
Planning
Copy hours across the row
Overrule a suggested figure — 160 h instead of 151, or 40 h in a week — and one click copies it into the remaining periods.
Sharing
Type a name, or request the person
Search the directory by typing instead of scrolling. If they're not in the app yet, request them — an admin approves once and the account is created and the deal shared in the same step.
Pipeline
Reopened deals
An admin can unlock an approved or won deal so the creator and edit-level shares can change it. It comes back as 🔓 Reopened — not Draft — so approved work being reworked is never mistaken for a new deal, and it has to go through approval again. Others can ask for the unlock with Request reopen.
Pipeline
Won & Lost statuses
Closed Won and Closed Lost in HubSpot now override 'Approved & locked', so won and lost business is tracked on its own — with filter tabs on the Pricings list.
Independence
Price it yourself
Build a complete pricing sheet on your own — no dependency on Finance. The tool gives you the rates, margins and approval path end-to-end.
HubSpot
HubSpot deal picker
The Opportunity field searches HubSpot directly — pick a deal and the opportunity name and HubSpot ID fill in automatically.
Clients
Managed client list
Pick the client from an approved list; request a new one and an admin validates it. Keeps client names consistent everywhere.
Stay signed in
No more login bounces
The app refreshes your session silently, so you're not kicked to the login screen while you work.
Never lose work
Draft recovery
If your session times out mid-edit, your changes are saved and offered back the moment you log in again.
Faster
Quicker save & open
Salary data is fetched in one batched read and cached, so saving and opening deals is noticeably snappier.
Approvals
Approval via HubSpot
Send a deal to approval, copy the figures + link into HubSpot, and approval imports back automatically — no in-app approving.
Approvals
Auto-sync of approvals
A scheduled job checks closed deals against HubSpot twice a day and locks the ones that reached the approved stage.
Approvals
@mention by email
Tag a colleague in a comment and they get an email with your note and a direct link back to the deal.
Clarity
Margin rating
Every GM carries a plain-language grade so health reads at a glance.

Pending upgrades — coming soon

A few connections are in the works that will make the tool even more useful:

Planned
Actual P&L per client
A live connection to actuals so each client's forecast can be matched against real P&L — see plan vs. actual side by side.
Planned
CoreTool connection
Sync deals and resourcing with CoreTool so the plan and the delivery system stay aligned.
Planned
Smarter Plan Assistant
The Plan Assistant is an evolving tool — it will keep getting better at understanding roles, seniority and building the plan for you.
Planned
A real AI cost model
The 5% AI cost contingency is a deliberate placeholder. It will be replaced by a model based on actual AI spend per engagement type.
Planned
Contingencies from past performance
The current suggestions come from standard rules; the next step is tuning them against how comparable deals actually performed.

Getting started

Log in with your Symphony email (first time in, set a password from the invite link). The left sidebar is your map: Guide (this page), Overview for headline numbers, New Deal to price, Pricings for everything you can see, Compare to line several deals up side by side, and Rate Card for the current rates.

💡Signed out unexpectedly while editing? Just log back in and open the deal — you’ll be offered your unsaved changes to Restore.

Create a deal

Click New Deal and fill the attributes at the top — they identify the deal and drive the currency maths:

  • Client and Opportunity name — the client and the HubSpot deal name.
  • HubSpot ID — ties the deal to your CRM (it appears in the approval email too).
  • Quote typeTime & Materials or Fixed price.
  • Estimated start and end — these drive the plan: the hours grid spans exactly that window. Set them before building the plan.
  • Deal currency (USD or EUR) and the FX rate — auto-filled daily from the ECB rate, overridable per deal.
  • Management fee (3% by default) and Discount on fee — both applied on top of the plan revenue.
  • Bill AI usage to the client? — answer Yes and a block appears under the Plan assistant where you charge either a % of revenue or a flat amount. It adds to revenue and to the client fee.
↕️Every discount field takes a minus value as an uplift. Enter −10 on a resource line and it bills 10% above the SRC 2026 rate card (the field turns green and says so); enter −5 in Discount / uplift on fee and the whole deal is billed 5% above the plan revenue. The executive summary and the Close-deal figures then read Uplift instead of Discount.
📐On a Fixed price deal the management fee, discount on fee and AI billing disappear — a fixed fee is the net agreed price, so all of that belongs inside the fee itself. Contingencies still run against it, so GM stays honest.
Example · Acme Robotics — “Platform Rebuild”
Client Acme Robotics, Opportunity Platform Rebuild, HubSpot ID HS-48213, Quote type Time & Materials, Currency EUR. The deal starts as a draft — yours to edit freely.

Choosing the client

The Client field is a picker — start typing and choose from the approved client list, so names stay consistent across deals and reports.

If the client you need isn’t there yet, type it and choose “+ Request … as a new client”. That does three things: emails the admins to validate it, lets you carry on and save the deal, and shows an orange note that the client is waiting for validation. Once an admin approves it, the note clears and the name joins the list for everyone.

🏢Admins manage the list under Clients (in the sidebar) — validating requests, adding, or removing clients.

Build the project plan

Add a resource row per person or role, then allocate hours across the months. The app fills in the numbers as you go — rates from the rate card, cost from the salary sheet, totals and per-line GM1 live.

Let the Plan Assistant build the rows for you

Instead of adding rows by hand, you can describe the team in plain English and the Plan Assistant (the input box above the plan) creates the rows for you. It works out the role and seniority, sets the duration, and prefills the monthly hours (about 151 h per fully-allocated month, edge months pro-rated) — always showing a confirmation note so you can check it.

  • Say the role, a seniority (junior / medior / senior / principal), and a duration (“for 6 months”). You can add a discount — or an uplift (“with 10% uplift”) to bill above the rate card.
  • List several people in one go, separated by commas.
  • Made a mistake? Each request can be undone — it removes exactly the rows it added.
Example · Acme Robotics — “Platform Rebuild”
Type “2 software engineers senior for 6 months, 1 solution architect senior for 6 months with 5% discount” and the Assistant adds all three rows, prefilled and ready — then you fine-tune the hours if needed.

How a row’s effort works

Each row is driven by three fields, and it’s worth knowing which does what:

  • Months (or weeks) allocated — how long the person is on the project. Fill this first; it prefills the hours.
  • Allocation % — how much of their time per period. This drives the cost.
  • Billability % — how much of that allocated time is billed. This drives the hours and revenue. It defaults to the allocation; lower it when not everything is billable.
Allocation vs billability — worked through on an 8-hour day
What you wantAllocationBillability
Bill 8 h a day — full time on the project, all of it charged100%100%
Bill 4 h a day — half their day on the project, all of it charged50%100%
Bill 4 h a day, the other 4 h are a Symphony investment100%50%
Bill 2 h a day, another 2 h investment — half their day on the project50%50%
Investment hours stay in the cost but are not billed — so they lower billability, not allocation.

Hours fill at 151 h per fully-allocated month (158 h for Colombia-based resources), starting at the estimated start date — a mid-month start is pro-rated. Switch the row between Monthly and Weekly at any time; the hours you already entered convert across.

Changing the dates later

The dates stay in charge of the plan, at any point while the deal is a draft:

  • Move the start and the whole engagement moves with it — the end date and every row’s hours shift by the same offset, keeping each row’s effort and shape.
  • Move the end and the grid follows: extending lengthens the plan, shortening drops the hours past the new end.
  • Allocation % and billability % never change because of a date change — dates set the duration, nothing else.
Overruling a suggested figure — say 160 h instead of 151, or 40 h instead of 34.8 in a week — pops up a “copy to the remaining periods” button, so you set it once and fill the rest of the row with one click.
🔒Costs and salaries are only visible to people whose access allows it — see Who sees what below. Everyone else works from margin and revenue.

Add contingencies

Contingencies are buffers applied on top of the raw plan — FX, staffing (salary increase, geography, seniority), effort, cost items (travel, hardware, licences), and service/referral fees. Each is a percentage or an absolute amount.

Some are filled in for you — all of them still need your confirmation

Three lines now propose a value from the standard rules and your project plan, updating as the plan changes:

  • Geography cost factor — a location reservation based on how many resources are still unnamed: 1–3 → 2%, 4–6 → 3%, more than 6 → 4%. It clears once everyone is named.
  • Staff seniority adjustment — 1% while the plan has no Senior / Staff / Director / Principal role; 0% as soon as one is planned.
  • AI cost contingency — 5% pre-added on every deal so AI cost isn’t forgotten. It’s a placeholder that will be updated once the AI cost model is final. It’s measured on revenue but booked as a cost, because it’s money we pay out.
  • FX contingency — set automatically on USD deals as a rate buffer, deducted from the EUR revenue.

The moment you type your own number in one of those rows, it stops following the rules and your value stands. Deals saved before a rule existed are never rewritten.

⚠️These are suggestions, not decisions — the amber box at the top of the tab says so. Check each line against your specific deal; whatever is left there is what the deal is priced and approved on.

Billing AI to the client is the other side of the coin and lives in its own block near the top of the deal, not here — this row is our internal cost.

Example · Acme Robotics — “Platform Rebuild”
A 3% staffing contingency (salary drift over the 6 months) and a fixed €2,000 travel line, alongside the auto-filled geography and AI lines. The summary folds these into the final revenue and GM automatically.
Fat-finger protection: percentages are capped at a sane range, so a stray “5000%” is rejected rather than silently wrecking the margin.

Read the margin

The app is the source of truth. As you edit it shows Revenue (EUR), GM1 (before contingencies & overheads), and GM2 (the headline margin after everything). Every GM2 carries a rating so you don’t have to memorize thresholds:

Excellent · 60%+On target · 55–60%Attention · 50–55%Below target · under 50%
Example · Acme Robotics — “Platform Rebuild”
Acme lands at GM2 57.4%On target. Good enough to send up for approval.

Comparing several deals

The Compare section lines deals up against each other — for a client conversation, a portfolio review, or to see whether a new deal is priced like the ones before it.

  1. Choose the deals. Search by client or opportunity and tick up to twelve. The list is the same one the Pricings page shows you, so you can only compare what you can already open.
  2. Read the grid. One row per figure, one column per deal: revenue, total fee, GM2, cost, indirect costs, average monthly revenue, average salary per FTE, average rate, discount off SRC 2026, management fee, hours, people, FTE, duration, Support Factory. A green tick marks the better figure on the rows where better means something — higher revenue, GM2, rate and hours; lower cost and discount. Team size, FTE and duration carry no tick: they are the shape of a deal, not a contest.
  3. Open the team. Show team structure at the foot of the grid opens a row per role with headcount and billed hours, and a dash where a deal has nobody in that role — often the difference the money hides. It starts closed because it is a long read.
  4. Go head to head. Tick compare above two of the deal names and the panel above the grid becomes a direct comparison: both values, the gap in money, the gap as a percentage, and a plus or minus read from the first deal you ticked. Below it, Comments puts the same thing in words.
  5. Save it. Name the selection and Save view. Tick Share with everyoneand the team can open the same set; only you (or an admin) can change or delete a view you saved.
🔄A saved view keeps the deals, never their numbers. Every time you open it, each deal is re-read and its figures recomputed from the current rates, salaries and client rate card — so a change someone makes to a deal shows up here the next time the view is opened. The foot of the grid says what time the figures were read, with a Refresh figures button if you want to re-read them while the page is open.
🔒Everyone can open Compare, but only for the deals they can already see: the picker lists exactly what the Pricings page lists for you — your own deals and the ones shared with you, or everything if you are admin, finance, an approver or WFM. Each deal is then read with your access, so if you cannot see costs on it, the cost, salary-per-FTE, indirect and GM rows read as a dash here too. A shared view names deals, it does not grant them: if someone shares a view containing a deal you cannot open, the page says so and compares the rest.
⚖️Two warnings the comments raise for you, because the numbers hide them: comparing deals in different currencies (revenue, cost and the average rate are in EUR and comparable — the total fee is not), and comparing a T&M deal with a fixed-price one, where the rate and discount rows stop meaning the same thing.

The four views

Inside any deal you can switch between four tabs without leaving the page:

DealThe full editor — attributes, project plan, contingencies. Where you build.
Executive SummaryThe clean, presentation-ready view of revenue, margin, and key figures. Approval emails land here.
ComparePut this deal side-by-side with another and see the key differences called out.
HistoryEvery save, showing how GM, revenue (EUR), discount, billing rate, and headcount moved over time.

Close a deal & send it to HubSpot

This is the part that changed most — the whole loop is designed to happen over email and land you exactly where you need to act.

  1. 1
    Close deal
    When the pricing is ready, click Close deal. A pop-up gives you the figures to copy into HubSpot — Revenue (EUR), Total fee, GM2, avg rate (€/h), discount — plus a link to the executive summary, with Copy all, Done, and Cancel (which reopens the deal as a draft). The approval itself still happens in HubSpot. Status becomes Closed — approval in HubSpot, and the deal stays editable.
  2. 2
    Paste into HubSpot
    Paste the link and figures onto the HubSpot deal. Approval happens in HubSpot — nobody approves inside the Pricing Tool. Anyone with the link (e.g. the approver) can open the executive summary to review it.
  3. 3
    Approval imports automatically
    When the HubSpot deal reaches the approved stage, the app imports it — the deal becomes Approved & locked and its numbers freeze. This runs automatically twice a day; to check right away, click Check HubSpot approval on the deal or from the Pricings list.
  4. 4
    Questions? Comment & @mention
    Use the comment thread and @mention a colleague (who can see the deal) to ask something — they get an email with a link back to the same spot.
  5. 5
    Iterate with Clone
    An approved deal is read-only. Need a variant? Clone makes a fresh draft; the original stays as the record.
🔐Approval always happens inside the app (you must be logged in) — the email is a fast way in, never a one-click approve that could be forwarded.

Share a deal — and get someone added

A deal is visible to you, to Finance and Admins, and to anyone you explicitly share it with. Open a deal and click Share.

  • Type a name in the search box instead of scrolling the list, tick the person, and pick their level — view, comment or edit.
  • Unticking someone revokes their access. Everyone the deal is already shared with is listed at the top.
  • They get an in-app notification and an email with a link to the deal.

The person isn’t in the app yet?

Type their name anyway. When nobody matches, a “Request add & share” button appears — pick the access level and send it. Admins get an email and an in-app notification.

For the admin it’s a single click: the deal shows an amber box at the top naming who is waiting, with Approve right there. Approving creates the account, emails that person their invite, and shares the deal — all in one step. No more “add the user first, then share”.

🔐Sharing never lifts someone above their own access level — a person on Average or Project-GM sees the deal at that level however it’s shared.

The Pricings list

The list shows every deal you can see. Click a column header to sort (client, opportunity, revenue, GM2, who made it, last updated), and use the filter boxes under Client, Opportunity and By to narrow it by typing. The tabs across the top jump straight to a status: Draft, Sent to approval, Approved, Won, Lost, Test.

🏆A deal that reaches Closed Won or Closed Lost in HubSpot takes that status here too — it overrides “Approved & locked”, so won and lost business is easy to track separately.

Comments & @mentions

Every deal has a comment thread at the bottom. Type @ and pick a colleague from the list to tag them — that attaches their name so they’re actually notified. Mentioned people get both an in-app notification and an email with your comment and a direct link to the deal’s summary and thread.

📌Pick the name from the @ dropdown — don’t just type it — that’s what links a real person so the email fires.

Who sees what

Salary and cost detail is sensitive, so each person sees a deal at their own access level. Admins and Finance always see everything; others see one of these:

Full
Admin · Finance · full-access users
  • All costs, salaries, per-line margins
  • Nothing hidden
Average only
Assigned per user
  • No individual names
  • Cost shown as the role average, not the person's salary
Project GM only
Assigned per user
  • No per-line cost or GM
  • Only the overall project margin, and only when the team is large enough to stay anonymous

The same protection applies everywhere — the deal list, dashboard totals, and exports — so numbers never leak through a side door. Sharing a deal shows it to someone at their own level, never above it.

🔒 Confidential data — your responsibility

The salaries, per-resource costs, margins and rates you can see in this tool are strictly confidential Symphony data. Access is granted to you personally, for your work only.

  • Do not share, screenshot, copy, export or forward this data — to anyone, inside or outside Symphony.
  • Do not discuss or comment on individual salaries, costs or margins — not in the deal comments, chat, email, or in person.
  • Never show your screen or share your login. What you see is scoped to your role; others may not be entitled to it.
  • If a deal shows you numbers you believe you shouldn’t see, don’t act on them — report it to Finance or an admin immediately.
Handling this data responsibly is a condition of your access. Misuse may result in access being revoked and further action.

Handy to know

Where do the rates and salaries come from?

Live from the central salary Google Sheet, read only when the app calculates. Use Refresh on the Rate Card page for the latest. Once a deal is approved, its numbers are frozen — a later rate change won’t move an approved deal.

A client has its own agreed rates — where do I see and change them?

Settings → Clients, under Client rate cards (admins only). Click a client to open its card: every project position with its USD and EUR rate, editable in place — correct a rate, add a position, or remove one, then Save rate card. You no longer need to re-upload a spreadsheet to change one number. On that client’s deals, a resource line mapped to a position bills at this rate and its discount off SRC 2026 is derived from it; roles the card doesn’t list fall back to SRC 2026. Removing every position clears the card.

How do I compare several deals?

Open Compare in the sidebar — see Comparing several deals above for the walk-through. In short: tick the deals, read the grid, tick compare above two of them for a head-to-head, and Save view to keep the selection. A saved view re-reads every deal each time you open it, so it always shows current figures.

Someone isn’t in the salary base — a contractor, or a person we’d hire for this deal?

Type the name on the resource line, then tick which one — the cost field that opens depends on it, because the two are costed differently. A contractor is paid by the hour, so you enter an hourly cost and the line costs rate × billed hours. A potential employee is a hire you would make for the deal, so you enter a monthly Gross 2 salaryand the line costs salary × person-months — exactly how an employee’s salary from the salary sheet is applied. Either way the figure stays with the deal, and the cost follows the plan: change the hours, the allocation or the months and it is recalculated on the right basis. You can also ask an admin to add the person to the salary base with Request this resource.

Can I give one person a further discount on a client rate card?

Yes. On a deal for a client with a dedicated card, each resource line shows the card’s own discount and, next to it, an extra field for what was agreed for that person — a minus value is an uplift. Both are measured against the SRC 2026 rate, so they add up, and the line shows the total discountas one figure: that is what this person bills against the standard rate. The card’s share is fixed by the agreed rate and can’t be typed over; the extra is yours. Leave it at 0 and the line bills exactly the card rate.

A client’s card is priced per month, not per hour — what then?

Some clients (Dyno Nobel) agree a monthly rate per role, split by team: Core Team or Additional Headcount. On such a deal each resource line asks for the team first, then the project position — the same role can be priced differently in each team. You then set only allocation % and billability %: there is no hourly rate to negotiate, and the hours are filled in at 151 h per fully-billed month. Revenue per line is monthly rate × billability × months. The discount shown against the SRC 2026 rate is derived from the monthly rate ÷ 151 h — the hourly equivalent — which is also what the line bills at. The Symphony rate-card role still comes from the GJF role, exactly as on any other deal: the project position sets the billing rate and never changes the Symphony mapping. Mark a card monthly in Settings → Clients → Client rate cards(or put “monthly” in the rate column header when uploading), and add a Team column for the tiers.

Can I reopen or edit a deal after sending it?

A Closed — approval in HubSpot deal stays editable, and you can also reopen it to a draft. Once Approved & locked, it’s frozen — use Clone to make a new version.

What do Won and Lost mean?

They come from HubSpot. When the deal reaches Closed Won or Closed Lost there, the app imports it and that becomes the status here — overriding Approved & locked, so closed business is tracked on its own. A won deal is frozen to its numbers just like an approved one.

Can I delete a deal?

Only drafts can be deleted (from the Pricings list, by the creator or an admin). Once a deal is Closed — approval in HubSpot or Approved, it can’t be deleted — it stays as a record.

I don’t see costs on a deal — is something broken?

No — that’s your access level (Average or Project-GM). You’ll still see revenue and margin. Ask an admin if your role needs changing.