slack.views.publish()graph.workbook.range()modal.open(fields)excel.appendRow()slack.chat.postMessage()payload.parse(region)
← Back to projects
Case study

Slack-based internal tool · Multi-region · Excel backend

Region
Routing logic
7
Action types
Slack
Full interface
Live
Report generation
n8nSlack App HomeSlack ModalsMicrosoft GraphMicrosoft ExcelJavaScript
Jump to proof of work

Overview

I designed and built a Slack-based reclamation management system that turns Slack into an internal operations interface for handling reclamation cases across multiple regions.

The system combines Slack App Home, Slack modals, n8n, Microsoft Graph, and Excel into one workflow-driven case management tool.

Instead of manually opening Excel files for every action, users can create new reclamation cases, search existing cases, update records, generate reports, and receive confirmation messages directly inside Slack.

The workflow uses Slack App Home as the user interface, n8n as the automation backend, and Excel as the operational data layer.

01 / Problem

The challenge

Reclamation cases had to be tracked across multiple operational locations, with different statuses, priorities, responsible people, customer details, financial values, risk levels, and follow-up notes.

The challenge was to create a simple internal interface that allowed the team to manage reclamations directly from Slack without manually navigating region-specific Excel sheets for every action.

The system needed to support creating new cases, searching existing cases, updating case information, generating region-based reports, and giving users immediate feedback after their actions.

02 / Role

What I did

I designed, built, tested, and maintained the automation layer that turns Slack into an internal reclamation management interface.

My work covered the full automation layer: building the Slack App Home dashboard, handling button clicks and modal submissions, and reading and writing Excel data through Microsoft Graph. I also implemented the region-based report generation, user validation, and the confirmation message flow that gives users feedback after each action.

03 / Architecture

System flow

01Slack App Home
02Reclamation Dashboard by Region
03Buttons: New / Update / Search / Report / Email
04Slack Interaction Webhook
05Payload Parsing + User Whitelist
06Slack Modals
07Excel Workbook via Microsoft Graph
08Create / Search / Update Reclamation Cases
09Summary Reports + Confirmation DMs
10Optional Email Workflow
04 / Modules

Core modules

01

Slack App Home Dashboard

The Slack App Home acts as the main user interface. It displays a reclamation dashboard with status counts across multiple regions and provides action buttons for creating, updating, searching, reporting, and emailing reclamation cases. The dashboard reads region-specific Excel worksheets and calculates case counts by status, including active, completed, on-hold, cancelled, and total cases.

02

Interaction Router

A central interaction workflow receives Slack button clicks and modal submissions. It parses the Slack payload, checks the action type, detects the selected region, validates the user, and routes the request into the correct workflow branch. This allows one backend workflow to handle multiple actions: new, update, search, report, and email.

03

New Reclamation Modal

New reclamation cases are created through a structured Slack modal. It captures customer details, priority and risk levels, financial values, and responsible parties. Status and damage description fields keep cases traceable from creation through resolution.

04

Excel Operational Data Layer

The system uses Excel as the operational data layer. Each region has its own worksheet, and the workflows read, search, append, and update rows through Microsoft Graph. The usedRange endpoint returns the active worksheet range used by the workflow logic.

05

Search and Update Flow

Users can search reclamation cases by company, customer name, or address. Matching results are returned through Slack, allowing the user to identify the correct case and continue into an update flow without manually opening the Excel workbook.

06

Reporting and Summary Flow

The reporting workflow calculates summaries for one region or all regions. Users select a date range and receive a Slack report showing total cases, cases in progress, completed, on-hold, cancelled, reclamation value, paid value, open value, and region-specific or all-region summaries.

07

Confirmation Messages

After a new case is written to Excel, the user receives a structured Slack confirmation including region, row reference, company, customer, phone, address, priority, status, risk, value, responsible person, and notes. This gives immediate feedback that the case was saved successfully.

05 / Decisions

Technical decisions

Slack as the internal user interface

Slack was used as the front-end because the team already worked there. Instead of creating a separate web application, the workflow brings the operational interface into an existing communication tool.

n8n as the backend orchestration layer

n8n handles the automation backend: webhooks, routing, modal preparation, Excel operations, report calculations, and Slack responses.

Excel as the operational data layer

Excel remained the backend data store because it was already part of the operational process and was understandable for non-technical users.

Region-based worksheet structure

The system separates records by region, allowing each operational location to keep its own data while still supporting all-region summaries.

Structured Slack modals

Instead of free-text messages, structured modals are used to collect consistent input and reduce ambiguity.

User feedback after every action

Confirmation DMs and Slack responses help users know when a case was created, updated, searched, or reported successfully.

06 / Reliability

Reliability patterns

Slack payload parsingUser whitelist access controlRegion-based routingStructured modal validationExcel row preparationSearch by multiple fieldsDate-range parsingSummary calculationConfirmation messagesSeparate Home Tab and interaction workflows

The architecture separates the dashboard workflow from the interaction workflow, making the system easier to understand and maintain.

07 / Impact

The outcome

The automation made the reclamation process more structured and easier to manage directly from Slack.

It reduced the need to manually navigate Excel files for everyday actions and gave the team a central place to create, search, update, and report reclamation cases.

The most important impact was operational visibility: users could see reclamation status across regions, create structured records, search existing cases, generate reports, and receive immediate confirmation after actions.

08 / Stack

Tech stack

n8nWorkflow orchestration, Slack interaction handling, routing, parsing, and backend automation
Slack App HomeInternal dashboard interface for reclamation status by region
Slack ModalsStructured forms for creating, searching, updating, and reporting cases
Microsoft GraphExcel workbook reading and writing, worksheet access, and range updates
Microsoft ExcelOperational data layer for region-based reclamation records
JavaScriptPayload parsing, region routing, row preparation, report calculation, date handling
09 / Proof

Proof / Evidence

This case study is based on a Slack-based internal case management workflow. The architecture is documented openly. The raw workflow export is not published, since it contains customer data, Slack workspace identifiers, and internal workbook references.

Architecture diagram

Slack App HomeRegion DashboardAction ButtonsSlack InteractionWebhookUser Validation +Action RouterCreate CaseSearch / Update CaseGenerate ReportExcel via MicrosoftGraphSlack Confirmation DM

Flow showing the Slack-based reclamation case management system: users interact through App Home and modals, actions are routed through n8n, data is stored in Excel via Microsoft Graph, and confirmations are sent back through Slack.

Live system

The actual n8n workflow canvas for the internal reclamation case management system — the same flow the architecture diagram above abstracts.

Public code & documentation

Valentino-Veljanovski / internal-reclamation-case-management-snippetsPublic

Slack-based internal case management pattern with App Home dashboard, structured modals, Microsoft 365 backend, and an LLM email-drafting assistant. Architecture docs and code snippets covering modal building, payload parsing, and report aggregation.

slackslack-app-homeslack-block-kitn8nautomationmicrosoft-graphazure-openaillm-agentinternal-toolscase-study
View on GitHub

Code excerpt: Slack payload parser with allow-list

The first node of the interaction-handling workflow. Parses the URL-encoded Slack interaction payload, then checks the requesting user against a hard-coded allow-list before any downstream branch executes. This is appropriate for a closed team and documented as the right shape to replace for broader use.

slack-payload-parser.jsjavascript
// First node of the interaction-handling workflow.
// Parses the URL-encoded Slack interaction payload, then
// checks the requesting user against an allow-list before
// any downstream branch runs.

const body = $input.first().json.body;

const ALLOWED_USERS = [
  "U_AAAAAAAAAA",
  "U_BBBBBBBBBB",
  "U_CCCCCCCCCC",
];

const requestUserId = (() => {
  try {
    const p = typeof body.payload === "string"
      ? JSON.parse(body.payload)
      : body.payload || {};
    return p.user?.id || "";
  } catch (e) {
    return "";
  }
})();

if (!ALLOWED_USERS.includes(requestUserId)) {
  return [{ json: { blocked: true, userId: requestUserId } }];
}

// ... continues with action / region / view-state extraction.
// See snippets/slack-payload-parser.js for the full parser.

Full version, with action and region extraction, in snippets/slack-payload-parser.js. Four other snippets in the same repository cover Block Kit modal building, Slack thread context extraction, LLM agent prompt construction, and date-range summary aggregation.

Confidentiality & Publication Note

This case study describes a Slack-based internal case management workflow in anonymized form. The public repository documents the system architecture, Slack interaction logic, modal structure, Excel/Microsoft Graph data layer, and reporting flow. Customer data, phone numbers, addresses, Slack user IDs, Slack channel IDs, internal workbook paths, secrets, webhook URLs, and raw workflow exports are not part of the public material.

← Back to all projects