People & Budget
In short
Two views answer two questions that come up in every project, every week: who is involved, and how
much money is left. In People you keep everyone who matters, with role, organization, contact
details and influence. In Budget you set what the project may cost, split that amount into
buckets, and compare planned amounts against actual ones.
Both views are part of the project context. The project agent reads them. Who owns a task, which bucket is already overspent, who needs to be consulted before a decision: the AI can only take that into account if it is recorded here.
When you need this
- You want to know who to inform when a date moves.
- An invoice arrives and you want to see whether the matching bucket still has room.
- The client asks about the cost position and you do not want to open three spreadsheets first.
- A variation order is on the table and you want to see its effect before you commit.
- You are preparing a status meeting and need a list of participants with roles.
- You want the project agent to address drafts to the right people.
The People view
Open it through the People tab in the left sidebar. The view shows one card per person. At the top
you find the search field, the Filter & Sort button, the Export button, and the Person button
for adding someone.

What TensorPM stores about a person
The form has two blocks. Under Basic Information:
Name *andOrganization *. Both are required. The organization matters more than it looks: it separates your own company from the design office, the client, and the subcontractors.Email. Without an address TensorPM can neither address a message nor link the person to a TensorPM account.Phone. The placeholder reads+49 123 456789. The number unlocks the phone and messenger entries in the context menu.Profile Picture.
Under Roles and Influence:
Role Groups *. A fixed list, so that filtering works.Custom Roles. Free text, one entry per line, confirmed with Enter. This is where project-specific titles belong, for example "Site manager structural works" or "Health and safety coordinator".Influence Level *. High, Medium or Low.Labels. Free keywords, also confirmed with Enter. Labels are the most flexible field and the most useful one, because you can filter by them.
Every person also carries two entries TensorPM maintains itself: when the record was last changed and by whom. Both appear in the CSV export.
Role groups, custom roles and influence
The list under Role Groups * is deliberately short: Executive, Manager, Team Member,
External, Supplier, Customer, Sponsor, Client, Other. A person can belong to several
groups.
The role group is the coarse drawer, the custom role is the precise title. An electrical designer
gets the role group External and the custom role "Electrical designer". That way you can filter
all externals at once and still read the exact function.
Influence Level * does not describe hierarchy, it describes effect on the project. The clerk in
the building authority who signs a permit has high influence, even though no org chart puts him
above you. The project agent uses this rating when it suggests who to involve in a change.
Profile picture
Under Profile Picture you upload an image and crop it. The Remove Avatar button clears it.
Pictures of external people are stored as a file next to the project database on your device. If
the person is linked to a TensorPM account, the picture is additionally stored with that account so
it shows up on your other devices too.
Without a picture the card shows initials. That is not a defect, it is perfectly sufficient for most projects.
Responsibility: action items and work packages
People is a directory, not an assignment. Who does what is decided in three other places:
- In
Action Itemsthrough theAssigned tocolumn. One item can have several assignees, mixing people and local coding agents. - In a work package through the
Responsible (internal)field. That is the person in your own organization who answers for the package. - In a work package through the
Executing companyfield. Here too you pick an entry fromPeople, usually the contact at the executing firm.
All three pickers read from the same list of people. Whoever is missing there appears in no picker. That is the most common reason an assignment "does not work".
Communication tools in the context menu
Right-clicking a person card opens a menu with Edit, Send Email, Invite to Workspace and
Delete. You can unlock four messengers under Settings -> General -> Communication Tools:
| Toggle | New menu entry | Requirement on the person |
|---|---|---|
Microsoft Teams |
Teams Chat and Teams Call |
email address |
Slack |
Slack DM |
email address |
WhatsApp |
WhatsApp |
phone number |
Signal |
Signal |
phone number |
If a phone number is stored, Phone Call appears as well. These entries open the respective service
outside TensorPM. TensorPM does not sign in to Teams or Slack and reads nothing there.
Spotting and inviting TensorPM users
If a person's email address belongs to a TensorPM account, the card shows a badge. For accounts
already linked it reads TensorPM User, together with the plan (Trial, Pro, Business or
Seat) and the workspace role. If the person is registered but not yet in your workspace, a badge
points out that you can invite them. The Invite to Workspace entry sends the invitation to the
stored address.
This only works in a cloud workspace. See Workspaces and Cloud sync.
Search, filter, sort, export
The search field at the top filters the cards immediately. Filter & Sort opens a panel with:
Sort By:Name,Organization,Role,InfluenceRole: multiple selection across the role groupsInfluence Level:High,Medium,LowLabels: multiple selection across all labels used in the projectClear All
Export produces a CSV file with the columns Name, Organization, Email, Phone, Role Groups, Custom
Roles, Influence, Labels, Last Modified and Last Modified By. It exports exactly what is currently
visible. Filter to External first and you get a subcontractor list rather than the whole
directory.
How people arise from incoming signals
You do not have to type every participant by hand. People appear in four ways:
- At project start, from documents. If you create a project from existing paperwork, TensorPM
reads names, organizations, roles and addresses out of the contract, the minutes or the
distribution list and proposes people from them. If a role group is missing it uses
Team Member, if influence is missing it usesMedium. You can correct both afterwards. - From incoming signals through the Distiller. When an email arrives from an unknown sender,
the Distiller can offer a new person as a proposal card. The card carries the name as its
headline and details such as organization or role as small chips below. You decide with
ApproveorSkip. Nothing is stored without you. - In chat. You can ask the project agent to add or update a person.
- By hand, through the
Personbutton.
Because route two runs through the Distiller, the same rules apply as for any other context change. The details are in Connectors & approvals.
Why this is worth maintaining even if nobody else uses the app
This is the most common objection: why maintain people if I am the only one working in TensorPM? Four reasons:
- The project agent addresses correctly. An email draft needs an address and a salutation. Both
come from
People. - Incoming mail gets placed. If TensorPM knows the sender, it can read the message in the light of their role and organization instead of treating it as anonymous text.
- Analysis and Guidance become concrete. "Clarify the approval" is a weak recommendation. "Clarify the approval with the building authority, the contact is on file" is a usable one.
- It is your handover. If you drop out or the project lead changes, a maintained list of people with roles and influence is the first thing anyone needs. It exports as CSV and can be passed on.
The effort is modest. For a mid-sized construction project, client, project control, architect, the three or four key designers and one contact per trade are enough to start. Everything else grows in by itself through incoming signals.
What the People view cannot do
TensorPM does not run availability or capacity planning per person. There is no field for weekly hours, no holiday calendar, no utilization curve. Who has how much time when is not a property of the person in TensorPM.
You plan capacity on the work side instead: every action item has Planned Effort and
Actual Effort in hours, and every work package rolls those up into Effort (plan) and
Effort (actual). Through the assignment you can see how many hours sit with one person. Rough
availability, for example "on site Tuesdays and Thursdays only", belongs on the person as a label or
in the project context under Context -> Resources.
The Budget view
Open it through the Budget tab in the left sidebar. The view title reads Budget & Material,
because the view has two tabs: Budget and Material. This article covers Budget only.
Everything about Material, suppliers and procurement status is in
Materials & procurement.

Setting the project budget
The project budget is a single number on the project, not on a bucket. You set or change it under
Context -> Resources in the budget field. The project creation wizard asks for it as well.
If no project budget is set, the overview shows Project Budget: followed by Not set. Buckets and
expenses still work, but you get no statement about whether you are within the frame. Set the number
early, even if it is still rough.
Creating budget buckets
A budget bucket is a cost group. The New Bucket button opens the form with Bucket Name and
Description, and Save stores it.
Sensible buckets in construction are trades or cost groups: Structural works, Fit-out,
Building services, Ancillary costs, Contingency. In an IT project rather
External services, Licenses, Hardware, Contingency.
Keep the number small. Five to ten buckets can be held in your head, forty cannot. For finer structure use the action items and expenses inside a bucket.
Every bucket card carries Edit Bucket and Delete Bucket at the top right. A deletion has to be
confirmed with Confirm Delete.
Assigning action items to a bucket
An action item can carry cost. In Action Items there are the Planned Budget and Actual Budget
columns for this. To make those amounts show up in a bucket, assign the item to the bucket.
- On the bucket card, click
Assign. Assign Action Items to "<bucket name>"opens with two columns:Available (<count>)on the left,To Assign (<count>)on the right.- Search in the field at the top, click items on the left to move them to the right.
- Confirm with
Assign Selected (<count>).
The Action Items area of the bucket card then shows one line per item with Plan: and Actual:.
Unassign Action Item from this Bucket releases the link again without deleting the item.
Recording simple expenses
Not every expense has an action item. A crane rental, a fee, a material invoice: that is what
Direct Expenses are for. The Add button on the bucket card opens New Expense Item with:
Expense Name, placeholdere.g., Office SuppliesDescription, optionalDatePlanned:andActual:as two separate amountsAttached Files
Save Expense stores it. You change an existing entry through Edit Expense and remove it through
Delete Expense.
The trick is in the two amounts. An expense you expect but have not paid yet goes in under
Planned: with Actual: left at zero. When the invoice arrives you enter the real amount under
Actual:. That way you always see the difference between what you expect and what has already
gone out.
Attaching receipts to an expense
Every expense can carry files. In the Attached Files area you have two routes:
Uploadtakes a file from your disk into the project folder.Search existing filessearches the files already in the project, for example an invoice that arrived by email.
The second route is the important one. When an invoice arrives as an email attachment and lands in
the project through a connector, you do not have to upload it again: you search for it and attach
it to the expense. The entry then shows how many files are attached. Remove file releases a link
again.
That puts the receipt where the number is. It is not bookkeeping, but it answers the question "where does this amount come from?" without a hunt through the mailbox.
Planned against actual
The comparison runs through every level and works the same way everywhere.
| Level | Plan | Actual |
|---|---|---|
| Action item | Planned Budget |
Actual Budget |
| Direct expense | Planned: |
Actual: |
| Bucket | sum of all planned amounts in the bucket | sum of all actual amounts in the bucket |
| Project | sum of all buckets under Planned: |
sum of all buckets under Spent: |
Important: a bucket total is always a calculation, never an input field. You cannot give a bucket a cap. What a bucket should cost follows from the planned amounts of the items and expenses inside it. If you want to represent a reserve, create a dedicated bucket with a planned expense in it.
The same logic exists for time in parallel: Planned Effort and Actual Effort in hours per action
item. Those values do not feed the budget view; they feed the Effort (plan) and Effort (actual)
columns of the work packages.
Reading the budget overview
At the very top sits the Budget Overview card with four fields:
Project Budget:the number fromContext->ResourcesPlanned:the sum of all planned amounts across all buckets. It changes color as soon as it exceeds the project budget.Spent:the sum of all actual amounts across all buckets. It turns red as soon as it exceeds the project budget.- A badge with the remaining position.
The badge has three states, evaluated in this order:
OVERSPENT, when more has already been spent than budgeted. The overrun is shown next to it.OVERPLANNED, when nothing has been overspent yet but too much has already been planned.AVAILABLE, when planning room is left. The remainder is shown next to it.
Important: These three badges appear in English in the German interface as well. That is a known leftover in the program, not a problem with your settings.
OVERPLANNED is the genuinely useful signal. It appears before money has moved, at a point where
you can still act.
The ring on every bucket card
Every bucket card shows a ring. It compares actual against plan inside that bucket and has three
segments: Used, Available and, when actual exceeds plan, Overspend. Below the ring you find
Available: or Overspend: with the amount.
Summary and Details switch between the compact and a more detailed rendering. The detailed one
also shows how many expenses feed the number.
Filter and sort
The Filter & Sort button opens the Filter & Sort Budget panel. You can filter by:
Filter by Bucket Names: type a name and press Enter to add it as a chipExpense NameDate RangewithStart dateandEnd date, based on the expense datePlanned Budget RangeandActual Budget Range, each withMinandMaxHas Action ItemsandHas Expenses, eachYes,NoorAny
You can sort by Bucket Name, Planned Total, Actual Total, Item Count, Expense Name,
Expense Date, Planned Budget and Actual Budget. Clear All resets everything.
Filters and sorting are stored per project. When a view looks empty on the next visit, a filter is almost always still active.
The budget trend over time
The budget view shows a position, not a trend. For the trend go to Context -> Info, to the
Project Insights card, and open the Budget tab there. The chart shows:
Daily Actualas barsTotal Actualas a rising lineProject Budgetas a horizontal reference line
30 days, 90 days and All time switch the range. The interesting moment is when the
Total Actual line approaches the Project Budget line while months of the schedule are still open.
The values come from a daily roll-forward. A project that has been in TensorPM for two days has
correspondingly little to show. Without action items carrying budget figures you see the
No Budget Data notice.
Currency and exchange rates
TensorPM distinguishes two currencies.
The display currency decides which currency amounts appear in on screen. It applies per project
and lives under Settings -> General -> Currency -> Display Currency. Available are EUR, USD,
GBP, JPY, CHF, CAD and AUD. The Show Currency Symbols toggle switches between the code and the
symbol.
The storage currency is the currency TensorPM calculates and stores in internally. It applies to
the whole application, knows only EUR and USD, and sits behind the
Advanced Currency Settings button.
Important: Changing the
Storage Currencyconverts all existing data. The app warns that this converts everything already recorded. Create a backup first underSettings->General->Database Backup->Create Backup.
The Update Exchange Rates Automatically toggle is off by default. Turn it on and TensorPM fetches
daily central-bank reference rates when needed, through the free Frankfurter service. No account and
no key are required, only currency codes are sent, and the rates are then cached locally for 24
hours. The Refresh Exchange Rates button forces a fetch, but it only works while the toggle is on.
Without rate fetching TensorPM keeps working with built-in conversion factors. Amounts stay visible, just not converted at today's rate. For invoices and settlement the rate used by your accounting applies anyway, not the one in TensorPM.
A worked example from a construction project
The starting position
A four-storey office building, refurbishment of an existing structure. Under Context ->
Resources the project budget is set to EUR 2,400,000. Display currency and storage currency are
both EUR.
The four buckets
| Bucket | Planned | Actual |
|---|---|---|
Structural works |
1,200,000 | 1,004,300 |
Fit-out |
700,000 | 210,000 |
Building services |
350,000 | 96,000 |
Ancillary costs |
90,000 | 141,500 |
| Total | 2,340,000 | 1,451,800 |
Something is already visible here: Ancillary costs is at EUR 141,500 against a plan of EUR 90,000.
That bucket's card therefore reads Overspend: EUR 51,500, and its ring shows a red Overspend
segment.
The Structural works bucket in detail
The bucket holds three action items and two direct expenses.
| Entry | Type | Plan | Actual |
|---|---|---|---|
| Pour the base slab | action item | 180,000 | 186,500 |
| Build basement walls | action item | 240,000 | 240,000 |
| Slabs, ground to third floor | action item | 620,000 | 415,000 |
| Site setup | expense | 138,000 | 138,000 |
| Crane rental May to July | expense | 22,000 | 24,800 |
| Bucket total | 1,200,000 | 1,004,300 |
The "Slabs, ground to third floor" line is not finished: EUR 620,000 planned, EUR 415,000 invoiced
so far. For the whole bucket the card reads Available: EUR 195,700. That is not a saving, it is
simply the part that has not been invoiced yet.
The crane rental sits at EUR 24,800 against a plan of EUR 22,000, because it was rented a week
longer. The rental company's invoice hangs on that expense; it came into the project through the
email connector and was attached with Search existing files.
What the budget overview makes of it
Project Budget:EUR 2,400,000Planned:EUR 2,340,000, the sum of the four bucketsSpent:EUR 1,451,800- Badge:
AVAILABLEwith EUR 60,000
The EUR 60,000 are the difference between the project budget and the sum of the planned amounts. So it is not what is left in the bank, it is what you may still commit without breaking the frame.
A variation order arrives
The structural contractor files a variation: the ground under the base slab has to be replaced over
400 square metres, claim EUR 85,000. You create a direct expense in the Structural works bucket:
Expense Name: Variation V-014 ground replacementDate: the date of the variation letterPlanned:85,000,Actual:0Attached Files: the variation letter as a PDF
The arithmetic changes immediately:
| Value | Before | After |
|---|---|---|
Structural works, planned |
1,200,000 | 1,285,000 |
Planned: total |
2,340,000 | 2,425,000 |
| Badge | AVAILABLE 60,000 |
OVERPLANNED +25,000 |
The badge jumps to OVERPLANNED although not a single euro has moved. That is exactly the point:
you see the overrun before the commitment, not after the invoice.
Two weeks later the variation is negotiated down to EUR 71,000 and awarded. You change Planned: to
71,000. Total planning then stands at EUR 2,411,000, still EUR 11,000 above the frame. When the
invoice arrives later you enter it under Actual:, and the actual of Structural works rises to
EUR 1,075,300.
What this example shows
- Every number in the overview is a sum of lines you can trace individually.
- No bucket has a cap of its own. The cap is the project budget.
- One overspent bucket does not automatically put the project in deficit, as long as other buckets have room. Conversely the project can be at risk even though every single bucket looks fine.
- Planned amounts are the early warning system, actual amounts are the documentation.
What TensorPM is not
TensorPM is not accounting software. There are no accounts, no journal entries, no VAT, no chart of accounts, no year-end close and no audit-proof receipt archive. The expenses in a bucket are project control figures, not bookings.
TensorPM also does not replace cost accounting in your ERP. Cost centres, cost objects, order settlement, payment runs, dunning, fixed-asset accounting and accruals stay where they belong. What sits in TensorPM is the project's view of its cost, at the precision that steering requires.
In practice that means:
- The truth about paid amounts lives in accounting. Where TensorPM differs, accounting is right.
- Enter net amounts in TensorPM, unless your project has deliberately agreed otherwise. TensorPM does not separate tax.
- Do not expect an automatic reconciliation with the ERP. Where a link to an upstream system exists, it runs over the usual routes, see Connectors & approvals and Agent integrations.
- Use the precision that fits the decision. Whether a line costs EUR 24,800 or EUR 24,812.47 changes no project decision.
That is not a limitation, it is a division of labour. Accounting tells you what happened. TensorPM tells you what follows from it for the rest of the project.
Step by step: the first setup
- Open
Context->Resourcesand enter the project budget. A rough figure is fine. - Open
Peopleand create the five to ten most important participants. Mind email and organization. You know it worked when a card appears for each person. - Open
Settings->General->Communication Toolsand enable the messengers you actually use. Then right-click a person card and check that the entries appear. - Open
Budgetand create your cost groups throughNew Bucket. Five to ten are enough. - Use
Assignto attach the action items that carry cost. - Use
Addto record the expenses that have no action item, and attach the receipts. - Check the
Budget Overviewcard. If it shows a badge and a plausible total, the setup is done.
After that a short weekly round is enough: enter new invoices as actual, new claims as planned, check the badge.
What happens behind the scenes
All amounts are stored in the storage currency and only converted into the display currency when they are shown. That is why changing the display currency changes nothing about the data, while changing the storage currency changes everything.
Bucket totals are stored nowhere. TensorPM recalculates them on every open from the assigned action items and the expenses in the bucket. That is why a total is never stale, and why there is no field into which you could type a total directly.
The planned and actual amounts of an action item are kept separately from the item itself. Delete the item and its amounts go with it. Merely remove it from a bucket and both item and amounts survive, they just stop counting in that bucket.
People and budget data belong to the project and are synchronized in a cloud workspace, end-to-end encrypted along the way. Profile pictures of external people stay as files on the device. See Encryption.
Frequently asked questions
Can I give a bucket its own limit? No. A bucket has no cap of its own. Its plan is the sum of the planned amounts inside it. If you want to represent a limit, create a planned expense of that size and book the real cost against it.
Why does the overview say OVERSPENT instead of a translated word?
These three badges are hard-coded in English in the program. They mean: spent more than budgeted,
planned more than budgeted, room still available.
Can one action item sit in two buckets? Assign every item to exactly one bucket. A double assignment would count the same amount twice in the overall total.
I cannot find the Currency group in the settings.
The group only appears while a project is open, because the display currency applies per project.
Can the project agent create buckets and expenses itself?
Yes, it can create, rename and delete buckets and record expenses. What it did is visible afterwards
under Trail -> Changes.
Are expenses created automatically from invoices? No. Incoming invoices land as a signal and as a file in the project, and the Distiller can propose a change from them. The amount is never booked unasked.
What is the difference between Budget and Material?
Budget manages money in buckets. Material manages line items with supplier and procurement
status. See Materials & procurement.
Can I import people from a file? There is an export, but no CSV import. The fastest route to many people is project creation from documents, or the chat.
What happens to a person who leaves the project? Do not delete them while they still appear in assignments or in the history. Give them a label such as "left the project" instead, and filter on it.
When something does not work
A participant does not appear in the Assigned to picker.
The picker only knows people who exist in People. Create the person and reopen the item.
Teams Chat or WhatsApp are missing from the context menu.
Two causes. Either the toggle under Settings -> General -> Communication Tools is off, or the
person has no email address respectively no phone number. Teams and Slack need the address, WhatsApp
and Signal need the number.
Invite to Workspace does nothing.
The entry needs a cloud workspace and an email address on the person. In a local workspace there is
nobody to invite.
The list is empty although people exist.
A filter is active. Open Filter & Sort and choose Clear All. Check the search field too.
The budget overview shows Not set.
No project budget is stored. Enter it under Context -> Resources.
A bucket shows no total although action items are assigned.
The items have no Planned Budget and no Actual Budget. The assignment alone carries no number.
Add the amounts in Action Items.
The amounts look wrong after a settings change.
First check whether only the Display Currency was switched. Then the numbers are correct, just
shown in a different currency. If the Storage Currency was switched, all data was converted. Only
a backup brings that back, see Settings & backups.
Refresh Exchange Rates is greyed out.
The button only works once Update Exchange Rates Automatically is on. The app says so in a hint.
The rate fetch fails. TensorPM reports that exchange rates could not be refreshed and that the existing ones were kept. No data is lost. Check the internet connection and try again later.
The Budget tab under Project Insights shows nothing.
There are no action items with budget figures, or the project is too young for a trend. The notice
reads No Budget Data.
Next steps
- Assign work and maintain amounts per item: Action Items
- Roll cost and effort up to package level: Work Packages
- Line items with supplier and procurement status: Materials & procurement
- Bring invoices and receipts into the project: Connectors & approvals
- Find receipts again and trace changes: Files, incoming signals & Trail
- Configure currency, communication tools and backups: Settings & backups
- Bring participants into a shared workspace: Workspaces