Logos are loaded from the same folder as this HTML file. Place your files there and enter the filename below.
Customize the app color scheme. Changes apply when you save settings.
Getting started
Import Excel (.xlsx, .xls) or CSV files exported from IPB or EAS. The source system is auto-detected from column headers. Column names must match the mappings in Settings.
The app is designed for one calendar year at a time. The activity heatmap uses ISO week numbers 1–53. Import a fresh dataset at the start of each new year — do not load data spanning two years.
When you save Settings, any loaded data is automatically re-processed with the new values. The report area is cleared — regenerate your report to see updated results.
Data model
Budget estimates come from IPB source files only. EAS imports have no estimate data — all budget columns and indicators are hidden for EAS. Estimates are stored per task (not accumulated across rows). Project estimate = sum of unique task estimates.
Click IMPORT LOG in the status bar to see all issues grouped by type and customer, with row/ID references.
Missing project or task fields are filled with the defaults set in Settings. Enable "Split Partner" to convert sub-projects of a named partner into individual customers.
Customer report
Every customer report uses two layers. Layer 1 — Progress is always shown: all tasks with Fakt. timer, invoiced vs. pending split, monthly breakdown. No estimates involved. Layer 2 — Budget Status appears automatically if at least one task has an estimate — shown as a separate table below Progress Report.
Hours are split per project: Invoiced (grouped by invoice month) and Pending (not yet invoiced). Both show Fakt. timer.
Shows all tasks. Where "Show budget" is enabled and estimates exist, budget columns (Estimate, Remaining, Calc. end) are shown. Tasks without estimate show — in those columns — they are never included in budget calculations. The Total row sums all Fakt. timer, but budget columns in the total row only include est-covered tasks.
A supplementary table shown only when at least one task has an estimate. Displays all tasks — estimated tasks with full budget detail, non-estimated tasks with — and a "no estimate" badge. The Budget total row sums only estimated tasks vs. their estimates.
Arrow thresholds are set under Thresholds — Budget in Settings. Only available for IPB source files.
Calculated from actual delivery tempo: remaining hrs ÷ avg weekly hrs (last 8 weeks). Shows as "~3 weeks (~15 days) @ 6.5h/wk". Falls back to Delivery Factor from Settings if insufficient recent activity (shown as "(est.)"). Over-budget projects show "Over budget — X hrs exceeded".
A project where some tasks have estimates and others do not. Budget calculations always use only the est-covered tasks' Fakt. — never the total. A ⚠ indicator marks mixed projects throughout the app.
Click any project name in the Activity heatmap to open a per-task breakdown. Projects with estimates show budget info; projects without estimates show a "Last activity" column per task (days since last registration).
Manager Overview
Split into Projects — with estimate and Projects — time & materials. The first table shows Est./Fakt./Rest columns (IPB only). For mixed projects, Rest is calculated against est-covered tasks only and marked ⚠. The second table shows activity only — no budget columns.
Battery icons show current speed:
Monthly Fakt. timer per project, oldest to newest. A Pending column (dashed line) shows hours not yet invoiced. Click a legend item to isolate it; Shift+click to hide.
Bubble chart with four equal quadrants. X-axis = activity speed, Y-axis = budget consumption. Bubble size = total hours delivered.
Mixed projects use est-covered Fakt. for Y-axis (marked ⚠ in tooltip). Projects without estimate plotted at Y=50% (midpoint), marked ⊘.
Budget Risk uses est-covered Fakt. for mixed projects. Mixed projects are marked ⚠. Thresholds configurable in Settings.
Settings
Set your name and company for report headers. Add logos by entering filenames (e.g. logo1.png) — files must be in the same folder as this HTML file. Choose Owner logo, Partner logo, or both. Logos appear above the report cover, right-aligned.
Adjust the six core app colors using the color pickers. Changes apply on save. "Reset to defaults" restores original colors.
Controls battery icon behavior and heatmap cell coloring: Delivery Factor, Low Activity days, Stopped days, High/Low workload %, and Default weekly hours.
Sets the arrow indicator thresholds: Good margin above X%, Low margin above 0%, below 0% = Over budget (automatic).
Map your source file column names to the app's internal fields. The Unique ID field identifies rows in the Import Log — it does not affect data processing.
Export & traceability
Exports a self-contained HTML file. Charts are converted to static images so they display correctly when opened standalone. The filename includes the customer name and date.
Uses the browser's print function. For best results use Chrome with margins set to "None".
Every report cover shows the source filename and a timestamp of when data was imported. The status bar also shows the import time.
Drag and drop Excel here, or click to select