// CASE STUDY
Notitia — Observability & Reporting
An internal observability and PDF reporting platform that replaced ad-hoc spreadsheets with structured, automated reports.
- C#
- .NET 8
- ASP.NET Core
- PostgreSQL
- Dapper
- QuestPDF
- SMTP
- Background Workers
// THE PROBLEM
The problem
Operations teams were manually compiling periodic reports from multiple data sources. The process was slow, error-prone, and produced inconsistently formatted outputs that were hard to audit.
// APPROACH & KEY DECISIONS
Approach & key decisions
Designed a report-definition schema allowing non-engineers to configure data sources, transformations, and layouts via a simple configuration format.
Built a scheduled report runner (C# background service) that queries PostgreSQL, applies computed metrics, and renders PDFs via QuestPDF.
Implemented a delivery pipeline supporting email and in-app delivery with delivery-receipt tracking.
Added a live dashboard view for key metrics using server-sent events for near-real-time updates.
// ARCHITECTURE
System architecture
// STACK
Technology stack
Core
- C#
- .NET 8
- ASP.NET Core
Data
- PostgreSQL
- Dapper
Reporting
- QuestPDF
Delivery
- SMTP
- Background Workers
// METRICS
Key metrics
- Report templates—sample
- Reports generated/month—sample
- Time saved vs manual—sample
// GET IN TOUCH
Have a similar problem?
If your system needs the same kind of thinking — architecture, integrations, scale — I'd like to hear about it.
Open a ticket →