Tech Talk

AI-Powered Work Automation

A Practical Case Study

Youngsoo Cho

Automating what annoys us — one script at a time.

The Problem

Every week, the same manual loops.

  • Opening JIRA, scanning tickets, chasing status
  • Writing the same weekly report from scratch
  • Meeting notes lost in chat or notebooks
  • Stale tickets nobody remembers to clean up
  • Team visibility stuck in a spreadsheet

The Vision

Data sources feed an automated pipeline. Humans review, not collect.

Sources
JIRA
Meetings
Email
→
Automation
Pipeline
→
Outputs
Reports
Dashboard
Weekly Summary

System Architecture

flowchart TB subgraph Sources["Data Sources"] J[JIRA REST API] W[Whisper STT] M[Email Inbox] AI[AI Assistant] end subgraph Pipeline["Automation Layer"] F[Fetch & Parse] R[Rules & Filters] G[Report Generator] end subgraph Outputs["Outputs"] MD[Markdown Archive] HTML[HTML Dashboard] WR[Weekly Report] end J --> F W --> F M -.->|planned| F AI -.->|assists dev| Pipeline F --> R --> G G --> MD G --> HTML G --> WR classDef built fill:#132a22,stroke:#3ee6b5,color:#e6e8eb classDef planned fill:#2a1f10,stroke:#ffb454,color:#e6e8eb,stroke-dasharray:5 5 class J,W,F,R,G,MD,HTML built class M,WR planned
Built & Running Planned / Vision

Tech Stack

Python
Automation runtime
REST + JQL
Ticket data source
Whisper
Speech-to-text
reveal.js
This deck
Mermaid
All diagrams
AI Assistant
Pair programmer

No framework lock-in. Everything swappable.

JIRA Automation Built

  • One command, end-to-end report
  • JQL-based targeted ticket collection
  • Stale ticket detection and auto-comment
  • Dual output: Markdown archive + HTML dashboard
  • Safe by default with DRY_RUN mode

Data Collection Flow

sequenceDiagram autonumber participant S as Script participant API as JIRA REST API participant P as Parser participant O as Output Builder S->>API: Auth with Bearer token S->>API: JQL query (paginated) API-->>S: 500 issues/page S->>S: Loop until all pages fetched S->>P: Parse 8 key fields Note over P: summary, status, assignee, updated, priority, labels P->>O: Structured issue list O->>O: Apply rules & filters O-->>S: Markdown + HTML

Smart Filtering

Management Targets

  • Named project scopes
  • My Tickets queue
  • Cross-team watchlist

Stale Detection

  • Idle for 10+ days
  • Limited to active statuses
  • Exclusions via label rules

Filters are plain data. No branching code to read.

Automated Actions

flowchart TB Start([Stale Candidate]) --> C{Idle over 10 days?} C -- No --> Skip[Skip] C -- Yes --> S{Status active?} S -- No --> Skip S -- Yes --> E{Excluded label?} E -- Yes --> Skip E -- No --> DR{DRY_RUN?} DR -- Yes --> Log[Log intent only] DR -- No --> Post[Post auto-comment] Post --> Done([Recorded]) Log --> Done classDef safe fill:#132a22,stroke:#3ee6b5,color:#e6e8eb classDef guard fill:#2a1f10,stroke:#ffb454,color:#e6e8eb class Post safe class DR,E,S,C guard

Report Generation

Markdown

  • Archival & diff-friendly
  • Pastes into any chat
  • Plain text, forever readable

HTML Dashboard

  • Progress bars per scope
  • Status badges per ticket
  • Assignee workload summary
  • Reviewer opinion section

Web Dashboard

  • Single command: start, stop, restart
  • Lightweight HTTP server on local port
  • Shareable link across the team
  • Auto-refresh to latest report
  • Zero install for viewers

Meeting Notes Challenge

  • Meetings happen, notes rarely survive
  • Action items leak out of memory
  • Decisions disappear between tools
  • Post-meeting writeups eat focus time

Whisper Pipeline Built

flowchart LR A[Audio Recording] --> B[Whisper STT] B --> C[Raw Transcript] C --> D[AI Summarization] D --> E1[Attendees] D --> E2[Topics] D --> E3[Decisions] D --> E4[Action Items] classDef stage fill:#0e1117,stroke:#3ee6b5,color:#e6e8eb classDef out fill:#132a22,stroke:#3ee6b5,color:#3ee6b5 class A,B,C,D stage class E1,E2,E3,E4 out

Meeting Notes → Weekly Report Vision

  • Decisions become report highlights
  • Action items map to tickets
  • Attendees inform team activity view
  • Zero retyping across tools

AI as Development Partner

Not just using AI — using AI to build the AI tooling.

  • Specs in, scaffolds out, minutes
  • Refactor nudges while reading code
  • Edge cases surfaced early
  • Docs and tests written alongside

Development Workflow

flowchart LR R[Describe requirement] --> G[AI generates code] G --> T[Test locally] T --> F{Works?} F -- No --> R2[Refine prompt] --> G F -- Yes --> D[Deploy and observe] D --> N[Next iteration] --> R classDef step fill:#0e1117,stroke:#3ee6b5,color:#e6e8eb class R,G,T,D,R2,N step

Practical Benefits

  • Faster first draft, always
  • Boilerplate drops to near zero
  • Quick spikes without commitment
  • Better test coverage by default
  • Consistent style across scripts

How It All Connects

flowchart TB subgraph Inputs["Inputs"] I1[JIRA] I2[Meeting Audio] I3[Email] end subgraph Core["Processing Core"] P1[Fetchers] P2[Normalizer] P3[Rules Engine] P4[Generator] end subgraph Surfaces["Surfaces"] S1[HTML Dashboard] S2[Markdown Archive] S3[Weekly Digest] S4[Team Activity View] end I1 --> P1 I2 --> P1 I3 -.->|planned| P1 P1 --> P2 --> P3 --> P4 P4 --> S1 P4 --> S2 P4 -.->|planned| S3 P4 -.->|planned| S4 classDef live fill:#132a22,stroke:#3ee6b5,color:#e6e8eb classDef plan fill:#2a1f10,stroke:#ffb454,color:#e6e8eb,stroke-dasharray:5 5 class I1,I2,P1,P2,P3,P4,S1,S2 live class I3,S3,S4 plan

Before vs After

Before

  • Manual ticket scan, daily
  • Weekly report from scratch
  • Meeting notes by hand
  • Stale tickets discovered late
  • Status meetings for status

After

  • One command, report ready
  • Dashboard always current
  • Transcripts auto-structured
  • Stale tickets auto-flagged
  • Meetings about decisions

Quantified Impact

~5h
Saved / week
100%
Reports auto-generated
10d
Stale threshold enforced
0
Manual status writeups
3×
Faster iteration
1
Click to start dashboard

Team Visibility Vision

  • Who is working on what, right now
  • Response latency by assignee
  • Workload balance at a glance
  • Drill-down into any member's queue

All data already collected. Surface is the only missing piece.

Weekly Report Vision

flowchart LR J[JIRA Activity] --> C[Combiner] M[Meeting Notes] --> C E[Email Digest] -.->|planned| C C --> H[Highlights] C --> A[Action Items] C --> R[Risks] H --> WR[Weekly Report] A --> WR R --> WR classDef live fill:#132a22,stroke:#3ee6b5,color:#e6e8eb classDef plan fill:#2a1f10,stroke:#ffb454,color:#e6e8eb,stroke-dasharray:5 5 class J,M,C,H,A,R,WR live class E plan

Key Lessons Learned

  • Pagination first, features later
  • DRY_RUN as non-negotiable default
  • Plain data beats smart branching
  • Small automations compound fast
  • Ship ugly, iterate with data

Challenges & Solutions

Challenge

  • Rate limits on big queries
  • Mermaid rendering in slides
  • Noisy auto-comments early
  • Multiple output formats

Fix

  • Paging + retry with backoff
  • Render on slide-ready event
  • Strict filters + DRY_RUN weeks
  • One parser, two renderers

Roadmap Phase 1

gantt dateFormat YYYY-MM-DD title Phase 1 - Next 6 Weeks section Inputs Email integration :active, a1, 2026-04-20, 14d Meeting notes sync :a2, after a1, 10d section Outputs Team activity dashboard :a3, 2026-04-27, 14d Scheduled runs via cron :a4, after a3, 7d section Hardening Observability and alerts :a5, after a4, 7d

Roadmap Phase 2 Vision

  • Confluence auto-publishing
  • Cross-team activity analytics
  • Predictive stale detection
  • Slack / Teams daily digest

Adoption Path

  • Pick the task that annoys you most
  • Script the first 80%
  • Run in dry-run for a week
  • Ship to your own workflow first
  • Offer to teammates only once stable

Key Takeaways

Automate what annoys you. Ship ugly. Iterate fast.
  • Small scripts beat big platforms
  • Safety flags keep trust intact
  • AI compresses the try-and-see loop

Call to Action

Start small. Automate what annoys you. Let AI help build it.

You don't need a platform. You need a first script.

Q & A

Thank You

Youngsoo Cho

Questions, critiques, or ideas — all welcome.