Inspiration

Support teams often have to defend SLA credits from a feed full of overlapping tickets, duplicate rows, inconsistent severity labels, and incidents that cross billing boundaries. I built BreachBrief so that the calculation and the customer memo come from the same evidence.

What it does

BreachBrief turns raw incident tickets into a one-page SLA credit memo with the calculation and source trail attached.

How we built it

The Python agent normalizes severity, clips incidents to the billing period, merges overlapping windows, drops out-of-contract rows, calculates availability and credit tiers, and preserves an audit trail to each source ticket. It then flattens the checked result into a small, predictable data contract for the document template.

Doctavian binds those reconciled facts to the DOCX template, generates the PDF, stores it, and returns the finished memo. That turns the agent's audit into a document an operator can review, instead of leaving the answer in terminal output.

Challenges we ran into

The hardest part was preventing double counting without losing traceability. An incident can overlap another ticket, cross the billing boundary, carry the wrong severity label, or repeat a source row. Each case must change the total only once while remaining explainable.

Accomplishments that we're proud of

The messy fixture resolves to three breached services, five reconciled outages, two exclusions, 29,833 minutes of downtime, and a $29,400 credit. The repository has 34 tests for overlap, boundaries, duplicates, severity, the API contract, privacy, and template reproducibility.

What we learned

Document automation is only trustworthy when the calculation, template contract, and generated file are tested together. A correct console total is not enough if the final memo cannot be tied back to its source tickets.

What's next for BreachBrief

The next useful additions are more SLA calendars and customer-specific memo templates, without changing the current evidence trail.

Built With

  • doctavian-api
Share this project:

Updates