Skip to content

Hourly

Get a lessons-learned write-up when an epic is done

When an epic is marked Done, you get a summary of how it went, built from its child issues and comments.

Runs
Hourly
Apps
Jira
AI
Yes, uses the built-in AI allowance
Access
read

Send this to your assistant

Create a ClickRuntime automation: when an epic in project ABC is marked Done, gather its child issues and comments and email me a lessons-learned summary: what went well, what slipped and why.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A Jira epic for a new billing flow wraps up after three months. Forty child issues were completed, a few were descoped, and a couple of surprises cost a sprint. The team means to hold a retrospective, but the next project starts immediately. The history sits in dozens of tickets, and the people who remember why choices were made have moved on to other work, so the next epic repeats the same mistakes.

Every hour, ClickRuntime checks Jira for epics that have just moved to Done. For each, it fetches the child issues and has built-in AI write a summary of what was delivered, what was cut or delayed, and what appears to have caused trouble. It emails the write-up to you.

Engineering managers and product owners who want a record of each large piece of work will find it handy.

What you get out of it

  • Lessons are captured while memory is fresh

    A write-up produced the day an epic closes catches details people will forget in a month. The reasons for scope cuts and delays are recorded before the team moves on.

  • Retrospectives start with a draft

    Instead of a blank whiteboard, the team begins with a summary of what happened. Conversation goes into what to do differently, not into reconstructing a timeline from ticket histories. The meeting then produces actions instead of a long recital of events.

  • Future estimates improve

    Reading how earlier epics ran over, and why, gives planners realistic numbers for similar work. Over several epics, patterns such as underestimated integrations become clear and fixable. That makes the next quarter's plan more credible to the people who have to fund it.

  • New team members get context

    Someone joining the project later can read the write-ups to learn what was built and what went wrong. That is faster than interviewing colleagues or digging through old tickets. It also saves the original team from answering the same background questions repeatedly.

  • Stakeholders see what was delivered

    Executives and customer-facing teams can read a plain summary of what shipped from an epic, with the tickets listed. They avoid asking engineers to explain it in a meeting. Nobody needs to schedule a walkthrough just to find out what a finished epic delivered.

How it works

What happens, step by step

  1. Every hour, ClickRuntime checks Jira for epics that have just been marked Done.

  2. For each one, it collects the epic's child issues and their comments.

  3. AI writes a short lessons-learned summary covering what went well and what slipped.

  4. The write-up is emailed to you.

Before it runs live

  • Connect Jira

What you get

RunsHourly
Get a lessons-learned write-up when an epic is donetoday, 9:00Succeeded
Email · Lessons learned: ABC-300 New billing pageWent well: design and API work ran in parallel. Slipped: tax rules took 2 extra weeks because requirements arrived late.

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Change what the AI looks for, or how it writes the result
  • Add another app, for example also send it to Slack
  • Combine it with other Jira steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
ai_epic_lessons_learned_report.pyexample
import json
from clickruntime import on_trigger, credentials, http, ai, state, notify, report_fetched

JIRA = "https://api.atlassian.com/ex/jira/your-cloud-id"

def jira(method, path, **kw):
    resp = http.request(method, JIRA + path, headers={
        "Authorization": f"Bearer {credentials.connection('jira', 'work')}", "Accept": "application/json"}, **kw)
    resp.raise_for_status()
    return resp.json() if resp.content else None

def search(jql, fields, limit=100):
    return jira("POST", "/rest/api/3/search/jql", json={"jql": jql, "fields": fields, "maxResults": limit})["issues"]


@on_trigger
def run(event):
    epics = search("project = ABC AND issuetype = Epic AND status changed to Done AFTER -7d", ["summary"], 20)
    done = set(state.get("done") or [])
    new = [e for e in epics if e["key"] not in done]
    report_fetched(len(new))
    if not new:
        return {"reports": 0}
    for epic in new:
        children = search(f"parent = {epic['key']}", ["summary", "status", "created", "resolutiondate", "comment"], 100)
        lines = []
        for c in children:
            comments = [json.dumps(cm["body"])[:300] for cm in c["fields"]["comment"]["comments"][-3:]]
            lines.append(f"{c['key']} {c['fields']['summary']} | {c['fields']['status']['name']} | "
                         f"{c['fields']['created'][:10]} → {(c['fields'].get('resolutiondate') or '')[:10]} | {' / '.join(comments)}")
        report = ai.generate("\n".join(lines)[:15000], max_output_tokens=600,
                             system="Write a blameless lessons-learned summary for this epic: what went well, what slipped and why.").text
        notify.email_me(f"Lessons learned: {epic['key']} {epic['fields']['summary']}", report)
        done.add(epic["key"])
    state.set("done", sorted(done))
    return {"reports": len(new)}

FAQ

Common questions

How does the AI know what went wrong on the epic?
It reads the child issues, including their summaries, statuses, comments and any recorded changes, and describes the delays or cut items it can see. It can only report what is written in Jira, so a team that documents little will get a shorter summary.
What counts as an epic being done?
The automation looks for epics whose status changed to Done, using the status category Jira reports. If your workflow uses different names, such as Released or Closed, say which statuses mean finished and it will watch for those.
Will it write up the same epic twice?
No. Once an epic has been reported, it is remembered, so later hourly checks skip it. If you reopen an epic and finish it again, you can ask for a fresh write-up for that second completion.
What permissions does it need?
read. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Get a lessons-learned write-up when an epic is done” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.