Case study 03 / 19
RASCI STK Process Governance & Document Generator
Internal platform, branded PRISMA, that turns RASCI process hierarchies into controlled STK documents, with revisioned content, DOCX and PDF generation from corporate templates, and an AI module that drafts sections and draws cross-functional flow diagrams.
- Stack
- .NET 8 · Blazor WebAssembly · ASP.NET Core · MudBlazor · EF Core · Dapper · SQL Server · Syncfusion DocIO · LLM Integration · xUnit · Playwright · Docker
The problem
Nusantara Regas documents its business processes as RASCI matrices and a hierarchy of STK documents: Pedoman, TKO, TKI and TKPA. The matrices lived in spreadsheets, the documents were written by hand in Word from a controlled template, and nobody could see at a glance which process still lacked a document, which roles overlapped, or which revision was current. Writing the first draft of a procedure was the slowest step of all.
What I built
I led the team that built RASCI STK, a hosted Blazor WebAssembly application on .NET 8, and took three parts of it hands-on. I reworked the UI/UX: design tokens, shared grid components, a stepper-based STK generator with a sticky document header, and an inbox where a row click runs the document's next action. I owned the reliability work: JWT validation with key rotation and clean expiry handling, revision-scoped content and attachments, nvarchar migrations so non-Latin text survives, and test layers from xUnit and bUnit to database procedure checks and a Playwright browser run. And I built the AI module end to end: an LLM client against an OpenAI-compatible gateway, a service that drafts every section of a document as a placeholder template, writes a single section using the rest of the revision as context, and generates cross-functional flow diagrams as validated JSON rendered to SVG and attached as images.
In use
Architecture
A hosted Blazor WebAssembly client on an ASP.NET Core API, EF Core and Dapper on SQL Server, DocIO for document generation, and an AI module that talks to an OpenAI-compatible gateway from the server only. The highlighted parts, the client UI/UX, the AI module and the reliability work, are the ones I built myself while leading the team.
Open the image for full size
Proof
- 01 Hosted Blazor WebAssembly on .NET 8: a WASM client, an ASP.NET Core API that hosts it, shared DTOs, EF Core for entity CRUD, and Dapper with stored procedures for the RASCI hierarchy, pivots and dashboards.
- 02 Document generation merges revision-scoped content, custom sub-sections and attachments into the corporate Word templates with Syncfusion DocIO and converts to PDF; tests inspect the output for header values, section openings and leftover placeholders.
- 03 AI features stay inside the server layer: the client never talks to the model. The server loads the document context, forbids inventing facts the context lacks, sanitises replies to an allowed XHTML subset, retries a malformed reply once, and only replaces editor text until the author saves.
- 04 Flow diagrams are produced as structured JSON (roles, steps, boxes, arrows), validated, drawn by a deterministic SVG renderer and exported to JPG, so the diagram template is changed in the renderer rather than in the prompt.
- 05 Authentication tries the corporate endpoint first and falls back to local accounts hashed with ASP.NET Identity; every API action validates the token inline, and permission rows gate both sidebar entries and per-page buttons.
- 06 Reliability improvements I owned: expired tokens answer 401 and return to login, historical-key fallback for JWT rotation, idempotent add-on migration scripts for production, and conversion of legacy text columns to nvarchar(max).
Result
Process owners now browse the RASCI hierarchy, run gap and overlap analysis, and start a controlled document from the process node itself. Authors get a first draft in minutes instead of a blank template, and every generated Pedoman, TKO, TKI and TKPA leaves the system as a template-faithful PDF with its revision history intact.