VERA Roadmap — Financial Intelligence & Operational Visibility
2026-03-19
Strategic Assessment
VERA is already strong on input (time logging, project setup, allocations) and monitoring (morning summaries, proactive alerts, retainer burn tracking). Where it's thin is the output side — turning accumulated data into the financial intelligence that justifies the product's name (Visible Efficiency Ratio Analytics).
Every agency owner asks the same five questions, roughly in this order:
- "Are we profitable?" — by client, by project, by person
- "Who's busy and who's not?" — utilization, not just allocation
- "What will revenue look like next month?" — forward projection
- "Can I bill from this?" — invoice-ready grouped exports
- "What changed this week?" — trends, not just today's snapshot
VERA has the data to answer all five. None require schema changes — just new read endpoints and one cron job.
Recommended Build Order
1. Utilization Report — get_utilization_report
Why first: Utilization is the single most important metric in professional services. VERA already tracks get_team_availability (allocation-based capacity) but has no view of actual utilization: billable hours logged ÷ total available hours per person. Every agency owner, every PM, every week.
What it does:
- Period input (this week, this month, custom range)
- Per-person: total hours logged, billable hours, non-billable hours, available hours (workdays × hours/day − holidays − PTO), utilization % (billable ÷ available), effective rate if owner
- Team aggregate: average utilization, billable ratio, bench count (people under 50%)
- Role-based: owners see dollars and rates, managers see percentages for their team, users see own row only
Data sources: 01. Time Entries, 02. Projects (is_billable), 03. Users, 12. Company_Calendar, 13. Rate_History (for effective rate). All already read by existing endpoints.
Effort: Medium. Pure read logic — no writes, no new sheets, no schema changes.
2. Client Profitability — get_client_profitability
Why second: After "who's busy," the next question is always "which clients make us money." VERA tracks revenue (contract values, billing rates) and cost (rate history, liabilities) per project, but has no client-level rollup.
What it does:
- Per-client: total revenue (varies by project type), total cost (hours × effective rate, or liability amount for vendors), margin ($), margin (%)
- Project breakdown within each client
- Revenue calculation follows existing rules per type: T&M = hours × billing rate, Fixed Price = completion % × contract value, Retainer = per-period accrual, Pro Bono = $0, Agile = sprint accrual
- Cost calculation uses the existing P&L cost rule (liability overrides rate × hours)
- Flags clients below a configurable margin threshold
Permission: Owner only (dollar amounts). Managers could see a ranked list without dollar values — "Client A is your most profitable, Client D is underwater."
Data sources: 02. Projects, 04. Clients, 01. Time Entries, 13. Rate_History, 14. Liabilities. All existing.
Effort: Medium-high. The revenue recognition logic already exists in generate_monthly_report and get_agile_summary — needs extraction into a shared helper then aggregation at client level.
3. Real-Time Budget Threshold Alerts
Why third: The morning summary catches overruns after the fact. A same-day alert when log_time pushes a project past its alert_threshold (default 80%) prevents the damage rather than reporting it.
What it does:
- After
log_timesucceeds, check total hours against project budget - If the entry crossed the threshold: include a
threshold_alertin the response and a notification to the PM - The bot surfaces it inline: "Logged 4h on Nike Campaign. ⚠️ This project is now at 83% of its hour budget — Tom (PM) has been notified."
- No new endpoint needed — it's a post-write check inside the existing
log_timehandler
Why not first: Because it's a write-path change (higher risk, needs careful testing) vs. the two read-only endpoints above.
Effort: Low-medium. ~50 lines in log_time handler + notification dispatch.
4. Invoice-Ready Export — enhance get_export_data
Why fourth: The current export is flat (one row per entry). Agencies need grouped output: Client → Project → Task → date range, with subtotals, optionally with rates. This is the bridge between "time tracked" and "invoice sent."
What it does:
- Add
group_byparam:client,project,task(hierarchical) - Add
date_from/date_tofilter - Add
include_rates(owner only) — shows billing rate and line total - Subtotals at each grouping level
- CSV and JSON output
Data sources: Same as current export + 02. Projects (billing_rate) + 04. Clients.
Effort: Low-medium. Extends existing endpoint.
5. Weekly Digest — Friday 4pm cron
Why fifth: Mornings are tactical ("what do I need to do today"). A weekly digest is strategic: week-over-week trends, utilization change, revenue pipeline, compliance gaps. This is the "executive briefing" that makes an owner feel the tool is watching the business.
What it does:
- Fires Friday 4pm (tenant timezone) for owners and managers
- Utilization delta: team average this week vs last week, who improved, who dropped
- Budget movers: projects that crossed 50%, 80%, or 100% this week
- Timesheet compliance: who logged <35h this week (configurable threshold)
- Revenue summary: total recognized revenue this week by project type (owner only)
- Retainer pulse: periods expiring in the next 7 days without a successor
Data sources: All existing. Compares hours_this_week against same query for previous week (requires a week_start parameter on hours_this_week or a get_time_entries date range query, both of which exist).
Effort: Medium. New function in reminders.js, new cron schedule, reuses existing MCP endpoints.
6. Revenue Forecast — get_revenue_forecast
Why last in this phase: Depends on utilization and client profitability logic being solid. Forecasting is only as good as the calculation it projects forward.
What it does:
- Input: months ahead (1–6, default 3)
- Per-project forward projection based on type:
- Retainer: contract_value × remaining periods in forecast window
- T&M: trailing 4-week average hours × billing rate × weeks remaining
- Fixed Price: remaining contract value × projected completion rate
- Agile: planned sprint values for upcoming sprints
- Pro Bono: $0
- Aggregated by client, by month, by project type
- Confidence indicator: "firm" (contracted retainer) vs "projected" (T&M trend-based)
- Owner only
Effort: Medium-high. Needs the revenue recognition helpers from #2, plus trend calculation from time entries.
What This Unlocks
After these six additions, VERA answers every question in the owner's weekly rhythm:
| When | Question | Feature |
|---|---|---|
| Monday morning | "How utilized was my team last week?" | get_utilization_report |
| Any time | "Are we making money on Client X?" | get_client_profitability |
| After logging | "Did we blow the budget?" | Threshold alert (real-time) |
| End of month | "Give me something I can invoice from" | Enhanced get_export_data |
| Friday afternoon | "What should I worry about?" | Weekly digest |
| Board meeting | "What does next quarter look like?" | get_revenue_forecast |
No new database tabs. No schema changes. All read-only except the threshold alert (which piggybacks on existing log_time). Every feature uses data that's already being written today.