Skip to content
Next drop: Friday, October 9

Report · REP-025 · v1.0

Bellatrix · Project profitability for service firms

Which project makes money, which one loses and why, with each contract's margin at completion and your team's real utilization.

PremiumGlobal standardStandard 2026.10Controls 6/6MonthlyXLSXDOCXPPTX
Meridian Coffee Co. (Demo) · Project profitability for service firms · October 2026REP-025 · p. 1/1
FICTITIOUS DATA · USD thousands · RS2026.10Repporti checks 6/6 · REP-025 v1.0
FICTITIOUS DATA · Meridian Coffee Co. (Demo)Checks 6/6
REP-025 · Project profitability for service firms · October 2026 · illustrative example with fictitious data
  • Word (.docx), 5 A4 pages, ready to export to PDF
  • Excel (.xlsx) with Data, Hours, Calculation by project, Contracts, Capacity, Control and Charts sheets, with live formulas
  • Optional PowerPoint (.pptx) with one page per project at risk

For consultancies, agencies, accounting and law firms, engineering firms and any business that sells hours or projects. It matches the month's hours with each role's cost and rate, direct expenses and billing, and calculates each project's margin according to its contract: time and materials, retainer or fixed price.

For fixed-price contracts it measures progress by cost incurred, compares the estimated margin at completion with the budgeted one and recognizes now the expected loss on contracts that will not cover their cost. It separates the contract asset (work done, not yet billed) from the contract liability (billed in advance) and measures utilization against available hours, not recorded ones.

Figures come from a table the AI builds by code and validates with cuadre.py; the Control sheet reconciles hours, capacity cost, progress and billing. If someone records more hours than available or a contract has no cost to complete, it stops and asks. People appear only by code and role.

What it includes

5 sections, in this order

  1. 01In 30 seconds: project margin, unit margin, utilization and net contract position
  2. 02Project portfolio: revenue, cost, margin, realization and margin at completion against budget
  3. 03Projects at risk: progress, estimate at completion, change in estimate and expected loss
  4. 04People and capacity: utilization by role, internal hours, unrecorded hours and retainer overruns
  5. 05Decisions (change orders, reassignments, rates and losses), assumptions, controls and glossary

Controls 6/6

What it checks before writing a single figure

  • C1Complete data: headers, numeric figures, no duplicate lines and valid units (cuadre.py).

  • C2Pre-check stop: nobody records more hours than available, all hours go to an existing project and every fixed-price contract has its cost to complete.

  • C3Hours and capacity reconcile: project + internal + unrecorded hours = available hours, in hours and in cost (Control sheet = 0).

  • C4Fixed-price contracts: cumulative revenue = progress × contract value and estimate at completion = cumulative cost + cost to complete (Control sheet = 0).

  • C5Billing and margin: cumulative billing = prior + month, and total margin = revenue − direct costs − provisions (Control sheet = 0).

  • C6Traceable figures: every figure in the Word file exists in calculo.json with the same rounding (cuadre.py verificar).

If the script ran

Repporti controls 6/6 · REP-025 v1.0 · RS2026.10 · {fecha} · fingerprint {hash}

If it did not run

NOT VERIFIED — controls not executed by code. Review the Control sheet of the XLSX.

If a control fails, the AI stops, shows the difference and asks how to proceed. It never forces the numbers to reconcile.

Prompt outline

What the prompt contains, block by block

  1. 0Before you paste your filesFixed618
  2. 1Role, audience and business context839
  3. 2Parameters614
  4. 3Repporti standard405
  5. 4Data contract1,255
  6. 5Questions first420
  7. 6Validation with a hard stop1,814
  8. 7Calculation by code213
  9. 7-bisNo-code modeFixed455
  10. 8Formulas1,727
  11. 9Structure1,321
  12. 10Writing without «AI slop» and without invention908
  13. 11Theme and notation951
  14. 12QA, traceability and seal1,074
The text is delivered when you copy, with your license. It is never on this page.≈ 32,924 characters + cuadre.py (919 lines)

Core available in: Spanish · English

Repporti Standard

It comes out adapted to your report profile

Compatible with every country and framework in the Standard: when you copy, it is composed with your profile (country, accounting framework, report language, currency, unit and year-end). Terminology, number format and statement names come from the Standard, not from the prompt.

Revenue recognition by progress and the expected-loss provision follow your profile's framework and your accounting policy; if they use another method, the AI asks before calculating.

See the Repporti Standard

How to use it

From the trial balance to the report in three steps

  1. 01Configure and copyCheck your report profile (country, framework, language, currency) and the period. The prompt is assembled in your browser.
  2. 02Paste into your AIOpen ChatGPT or Claude, attach your anonymized files and paste the prompt.
  3. 03Review and deliverReview the controls table and the seal. If something does not reconcile, the AI stops and asks.

Anonymize before pasting

  • Company name → an alias (“Client 07”); tax ID → “ID-XX”.
  • Customers, suppliers and employees → codes (C001, P001, E001). The mapping table stays on your computer.
  • Use an AI that does not train on your data: business plan, API or training turned off.

Repporti neither receives nor stores your files or your figures: the prompt is assembled in your browser and your files go straight to your AI.

Who it is for

Made for whoever delivers the report

Finance manager / CFOAccountant / firmAgency
Area
Profitability and costs
Frequency
Monthly
Industry
Services, Agencies, Consulting

Compatibility

Which AI it works with

LevelAI
With code executionChatGPT · ClaudeDesigned for plans with data analysis (ChatGPT) or code execution (Claude): cuadre.py runs inside the AI.
No-code modeCopilot · GeminiGenerates the Excel file with formulas and a Control sheet. The footer says “NOT VERIFIED” unless you run cuadre.py on your computer.

Questions

About this report

Does it work if I don't track hours by project?

Not fully: without hours there is no cost by project. If you only have hours by person and week, the AI asks you to split them by project and states it as an assumption; the report flags that margin as estimated.

How is revenue recognized on a fixed-price contract?

By default, over time by progress measured as cost incurred over total estimated cost. If your accounting policy or framework uses another method (milestones, hours), the AI asks before calculating.

Why does a project show a negative margin for the month if the contract still makes money?

Because the project manager raised the estimated cost to complete, and the catch-up on everything recognized so far is booked in the month. The report separates that effect from the month's work.

Do individual salaries show up?

No. Cost goes by role (loaded hourly cost) and people only by code. Low utilization is presented as available capacity, not as performance.

Profitability and costs

More reports in this area

See the whole area