Daily Entry
Fill your numbers for the day. Everyone fills their own section.
Select your name above to begin.
WhatsApp Report
Consolidated numbers ready to copy and paste.
Period
Loading…
For your reference β€” not copied

Only the top section copies. Utilisation & deal data is reference-only.

Team Dashboard
Who did what, how much time, on which project.
Auto Insights
What's working, what's at risk, where time is going.
Projects & POs
Set up projects, assign owners, PO details, timelines and planned billing schedules.
Invoices
Actual invoices raised. Deviation = planned date vs actual raise date.
Billing Tracker
Planned vs actual billing per project per month. Deviation with reasons.
Settings
Manage team members.
Team members
Data
Help & Guide
Everything you need to understand how this tool works β€” workflow, sync, calculations, and role visibility.
1. What this tool is and how it's structured 2. Roles and who sees what 3. Sync, storage and the shared cloud β€” your biggest concern 4. Daily workflow β€” step by step 5. All calculation logic explained 6. Projects, POs and billing schedules 7. Invoices and deviation tracking 8. How auto-insights are generated 9. How to think about future changes 10. Common questions

πŸ“‹ 1. What this tool is and how it's structured

This is a shared cloud-based operations hub for your client services team. It has two distinct purposes that deliberately live in the same place:

The tool has 8 modules:

πŸ‘₯ 2. Roles and who sees what

There are three roles. Everyone opens the same tool β€” there is no separate login or separate link. Role differences are about intent and responsibility, not technical access restriction.

Manager (you)
  • Fill daily entry
  • View all tabs
  • Set up projects & POs
  • View team dashboard
  • Read all insights
  • Manage billing tracker
  • Add/remove team members
Project Coordinator
  • Fill daily entry
  • View projects (read)
  • Add invoices
  • View billing tracker
  • Cannot edit team members
  • Cannot edit projects
Team Member
  • Fill daily entry only
  • Select own name
  • Log tasks + hours
  • Tag tasks to projects
  • Cannot view others' data directly
⚠️ Important: The tool does not enforce role restrictions technically β€” anyone who opens it can navigate to any tab. Role definitions above are the intended usage. If you want stricter separation, a future version could add PIN-based role locking.

Visibility matrix

TabManagerCoordinatorTeam memberNotes
Daily EntryFullFullOwn entry onlyEach person selects their name β€” they can technically select anyone's name
WhatsApp ReportFullReadNot neededOnly Manisha copies and sends this
Team DashboardFullReadNot neededShows everyone's data consolidated
InsightsFullReadNot neededAuto-generated, no input needed
Projects & POsEditRead + add invoiceNot neededOnly manager and coordinator should set up projects
InvoicesFullFullNot neededCoordinator manages invoices day-to-day
Billing TrackerFullReadNot neededRead-only view, data comes from invoices
SettingsFullAvoidAvoidOnly manager should add/remove members

πŸ”„ 3. Sync, storage and the shared cloud β€” your biggest concern

This tool uses Cloudflare KV (Key-Value store) as its database, accessed via a Cloudflare Pages Function at /api/storage. Every save writes to KV β€” anyone who opens the tool reads from and writes to the same store.

How data is stored

There are 4 KV keys β€” think of them as 4 tables:

ops_v5_shared β€” all daily entries, keyed by date β†’ member name
ops_v5_members β€” team member list with names and roles
ops_v5_projects β€” all projects with PO details and billing schedules
ops_v5_invoices β€” all invoices raised

What happens when two people save at the same time

This is the most important thing to understand. The storage system uses last-write-wins. Here's what that means in practice:

⚠️ To avoid data loss: Each person should open the tool, fill their entry, and save promptly β€” ideally within a few minutes. Don't open the tool early in the morning and leave it open all day before saving in the evening. If someone forgets to save, their data is not in the cloud yet.

How to recover if data is overwritten

How refresh works β€” background sync

The tool now syncs automatically in the background every 90 seconds. You can see the sync status in the bottom of the sidebar β€” it shows either "⟳ Syncing…", "βœ“ Synced HH:MM", or "⚠ Sync failed".

Here is exactly what happens on each background sync cycle:

βœ“ This means: if Person A updates their name in Settings and saves, Person B will see the updated name within 90 seconds β€” without having to do anything.
ℹ️ What background sync does NOT do: It does not save your in-progress entry. If you are mid-way through filling your daily entry and a sync fires, your unsaved inputs are untouched. Sync only reads from the cloud β€” it never writes unless you explicitly click Save.

The concurrent save risk β€” still relevant

Background sync reduces the window of risk significantly but does not fully eliminate the concurrent save problem. Here's the updated picture:

What is and isn't saved automatically

Saved only when you click Save: Daily entries, Projects, Invoices, Team members
Never saved (computed live each time): Report text, Team dashboard view, Insights, Billing tracker view
Persists across sessions: Everything in the 4 storage keys above

πŸ“… 4. Daily workflow β€” step by step

Morning routine (team members + coordinator)

1
Open the tool β†’ Daily Entry tab

Select your name from the dropdown. Pick today's date (it defaults to today).

2
Fill your numbers

Utilisation (hours worked), demos, calls/meetings/proposals, renewal activity, new business activity.

3
Log your tasks

Add each task you worked on. For each: description, which project it belongs to (or "No project"), category (active delivery / revenue hunting / etc.), and status (on track / at risk / delayed / done).

4
Click Save β€” done

Your entry is written to shared cloud storage immediately. This takes 1–2 seconds.

End of day routine (Manisha)

1
Team Dashboard β†’ click Refresh

Pulls the latest entries from all team members. Check who has and hasn't submitted.

2
WhatsApp Report tab

Verify the numbers look correct. The "Today" view auto-calculates consolidated totals. The reference section (not copied) shows utilisation and deal closures for your eyes only.

3
Click Copy β†’ paste into WhatsApp

Only the top section (demos + proposals) is copied. Utilisation and deal data stays on screen.

4
Check Insights tab

Review any flags β€” delayed tasks, billing shortfalls, utilisation dips, approaching deadlines.

Project / billing routine (Manisha + Coordinator)

1
New project β†’ Projects & POs tab

Add project name, client, PO number, PO value, start/end dates, owner, and the planned monthly billing schedule row by row.

2
When an invoice is raised β†’ Invoices tab

Add invoice number, value, actual date, planned date, deviation reason (if late/early), and notes. This feeds directly into the Billing Tracker.

3
Monthly review β†’ Billing Tracker tab

Filter by project or view all. Each month shows planned vs actual with deviation and reasons. The year-level total deviation is shown at the top of each project card.

πŸ”’ 5. All calculation logic explained

Utilisation

Per person per day: hours worked Γ· 8.5 Γ— 100 = utilisation %
Team utilisation for a date range: sum of all hours logged Γ· (8.5 Γ— number of members Γ— number of days with entries) Γ— 100
Colour coding: β‰₯85% = green, β‰₯60% = amber, below 60% = red
Note: Days where no entry is submitted are not counted in the denominator β€” so if someone doesn't submit, it doesn't drag the team average down (but Insights will flag the missing entry separately)

MTD / QTD / YTD

MTD: All dates in the current calendar month up to and including the selected date
QTD: All dates from the start of the current quarter (Q1=Jan, Q2=Apr, Q3=Jul, Q4=Oct) to selected date
YTD: All dates from Jan 1 of the current year to selected date
Source: Only dates that have at least one saved entry are included β€” empty days are ignored

WhatsApp report β€” what's included vs reference-only

Copied to WhatsApp: Physical demos, virtual demos, MTD demo totals, proposals sent today, MTD proposals, MTD proposal value
Reference only (visible but not copied): Utilisation %, team hours, renewals closed, new biz closed, total closed value

Invoice date deviation

deviation (days) = actual raise date βˆ’ planned raise date
Positive = raised later than planned (shown in red)
Negative = raised earlier than planned (shown in green)
Zero = on time

Monthly billing deviation

deviation = actual invoiced in month βˆ’ planned for month
Positive = billed more than planned (shown in green β€” ahead)
Negative = billed less than planned (shown in red β€” shortfall)
Actual invoiced = sum of all invoice values where the invoice date falls in that month
Planned = the amount entered in the billing schedule for that month

PO utilisation

PO utilisation % = total invoiced across all invoices for the project Γ· PO value Γ— 100
Shown in Billing Tracker. Colour: β‰₯90% red (approaching ceiling), β‰₯60% amber, below 60% green

Project timeline deviation

If actual end date is set: deviation = actual end date βˆ’ estimated end date (in days)
If no actual end and project is Active: overdue by = today βˆ’ estimated end date
If project is Active and within 14 days of estimated end: flagged as approaching deadline in Insights

πŸ“ 6. Projects, POs and billing schedules

What each field means

πŸ’‘ Tip: Set up the billing schedule at project start. Even if months change later, having the original plan lets you accurately track deviation over time.

How tasks connect to projects

When a team member logs a task in Daily Entry, they can tag it to a project from the dropdown. This project dropdown is populated from whatever projects exist in the Projects & POs tab. If a project isn't set up yet, tasks will show as "No project" in the team dashboard.

⚠️ Set up your projects first before the team starts logging tasks β€” otherwise tasks can't be linked and you lose the project-level visibility.

🧾 7. Invoices and deviation tracking

Invoice fields

How deviation reasons flow to the Billing Tracker

The Billing Tracker groups invoices by the month of their actual raise date. For each month, it collects all unique deviation reasons from invoices in that month and displays them in the Reason column. So if two invoices in March both had "Client delay", it shows "Client delay" once.

⚑ 8. How auto-insights are generated

Insights are computed fresh every time you open the Insights tab or change the date range. They are not stored β€” they're generated from the live data. Here is every rule the system checks:

Utilisation flags

πŸ”΄ Critical underutilisation: person's utilisation below 50% in the period
🟑 Below target: utilisation between 50–70%
🟑 Possibly overloaded: utilisation above 110%
🟑 No entries: member has zero entries in the selected period

Time drain flags

🟑 High admin ratio: more than 40% of a person's tasks are tagged "Internal/admin"
ℹ️ Fully in delivery mode: all tasks are Active project delivery, zero revenue-hunting
ℹ️ Fully in revenue-hunting mode: all tasks are revenue-facing, zero delivery β€” check if projects are being managed

Project health flags

πŸ”΄ Project overdue: project is Active, today is past estimated end date, no actual end recorded
πŸ”΄ Project ended late: actual end date is after estimated end date
🟑 Deadline approaching: 14 days or fewer to estimated end, project still Active
🟒 Delivered early: actual end date is before estimated end date

Billing flags

🟑 Monthly billing shortfall: for any past month in a project's schedule, actual invoiced is less than 80% of planned amount

Task flags

πŸ”΄ Delayed tasks: any task with status "Delayed" in the period β€” count shown
🟑 At-risk tasks: any task with status "At risk" in the period β€” count shown

Positive signals

🟒 Revenue closed: if total closed value (renewals + new biz) is greater than zero, shown as a positive signal

πŸ›  9. How to think about future changes

When you want to modify how the tool works, here are the key things to think about:

Adding a new field to daily entry

Changing the utilisation target (currently 8.5h)

Adding a new deviation reason category

Changing what's copied to WhatsApp vs reference-only

Fixing the concurrent save conflict (most important future improvement)

Currently all daily entries are stored in one shared object. The safest fix is to change the storage key to be per-person per-day, e.g. daily_2026-05-29_Manisha. This means each person's save is completely independent and cannot overwrite anyone else's. The trade-off is slightly more storage reads when consolidating β€” but fully eliminates conflicts.

Adding a new project category

❓ 10. Common questions

Someone forgot to submit today β€” can I fill it for them?

Yes. Go to Daily Entry, select their name from the dropdown, pick the date, fill in their numbers and save. The data will be stored under their name for that date.

Can someone edit a past day's entry?

Yes. Go to Daily Entry, select their name, change the date to the past date, make edits, and save. It will overwrite whatever was previously saved for that person on that date.

Can a team member see what their colleagues entered?

Not directly from their own entry form β€” they only see their own fields. But if they navigate to the Team Dashboard tab, they can see everyone's data. There is no technical restriction preventing this.

What happens if I rename a team member in Settings?

Their past daily entries will be orphaned β€” the entries are stored under the old name and won't link to the new name. Do not rename members once they've started submitting data. If a name is misspelled, fix it before the first entry is saved.

The Billing Tracker shows zero for a month even though I raised an invoice

Check that the invoice's project is correctly set, and that the invoice date falls in the month you're expecting. The tracker uses the actual raise date (not the planned date) to determine which month an invoice belongs to.

Insights are blank / not showing anything

Insights are generated from the date range set at the top of the Insights tab. If the range has no daily entries, no insights will generate. Make sure the date range covers days where entries have been saved.

How do I export all data for backup?

Go to Settings β†’ click "Export all data (JSON)". This downloads a JSON file with all four data stores. Keep this as a backup β€” if the cloud storage is ever cleared, this file can be used to restore data (requires manual re-import currently).