AI Backlog Generator for Product Teams
Turn product context and objectives into INVEST-ready, JIRA-syncable user stories with AI, market research, and prioritization.
Product Managers often struggle to balance competing demands from sales, engineering, and users. BackLogAI enforces a disciplined approach to backlog creation by combining context-driven inputs, market research, AI drafting, and INVEST validation. It ensures every story aligns with strategic business goals before it ever hits your JIRA board.
ai backlog management jira story generator product management ai invest user stories slack integration slack slash command
slack jira sync slack backlog automation kotlin multiplatform fastapi serpapi market research automation
backlog prioritization moscow prioritization cloudflare tunnel cloudflare quick tunnel local jira integration local backlogai backend slackbot workflow security windows compose desktop windows msi installer
Every backlog item generated by this system answers three critical questions:
- Why now? (Urgency) β°
- Why this? (Value) π
- Why us? (Strategic Fit) π―
BackLogAI prioritizes features based on a weighted score across five dimensions:
| Pillar | Focus | Key Question |
|---|---|---|
| 1. User Value | β€οΈ Solving Pain Points | "Will this feature actually be used and loved?" |
| 2. Commercial Impact | π° Revenue & Deals | "Does this help close deals or reduce churn this quarter?" |
| 3. Strategic Horizon | π Future Demand | "Are we building for the market of 2027, or reacting to 2026?" |
| 4. Competitive Positioning | βοΈ Market Differentiation | "Is this a catch-up feature or a differentiator?" |
| 5. Technical Reality | π οΈ Feasibility & Debt | "Is the technical 'price tag' worth the business value?" |
graph LR
A[Context + Objective] --> B[Market Research]
B --> C[Story Generation v2]
C --> D[INVEST Validation]
D -->|Warnings| C
D --> E[Prioritization]
E --> F[JIRA Sync]
style A fill:#f9f,stroke:#333,stroke-width:2px
style C fill:#bbf,stroke:#333,stroke-width:2px
style F fill:#bfb,stroke:#333,stroke-width:2px
- Input: User provides context + objective and optional signals (persona, segment, constraints, metrics, competitors).
- Process:
- Research: SerpAPI pulls relevant market and competitor signals (cached + rate-limited).
- Generation: AI drafts stories (
As a... I want... So that...) withGiven/When/Thenacceptance criteria. - Validation: INVEST checks produce warnings and a quality score, with an optional revision pass.
- Scoring: Computes priority score + MoSCoW classification.
- Output:
- JIRA-ready description with research summary, NFRs, metrics, risks, and rollout plan.
- Direct sync to JIRA.
- Cross-platform UI (Android + iOS + macOS), Slack client channel, and Windows client rollout in progress.
To run BackLogAI effectively, you need to configure external services in your .env file.
- Sign up/Login: OpenAI Platform
- Create Key: Go to API Keys -> Create new secret key.
- Set Env:
OPENAI_API_KEY=sk-... - Note: If you have issues logging in, try accessing platform.openai.com directly instead of auth subdomains.
- Sign up: SerpAPI
- Free tier: 250 searches/month
- Set Env:
SERPAPI_API_KEY=...
- URL: Your Atlassian domain (e.g.,
https://your-domain.atlassian.net). - Username: Your Atlassian email address.
- API Token: Go to Atlassian Security -> Create API token.
- Set Env:
JIRA_URL=https://your-domain.atlassian.net JIRA_USERNAME=your.email@example.com JIRA_API_TOKEN=your_api_token JIRA_PROJECT_KEY=KAN
- Supported Clients/Channels: Android, iOS, macOS Desktop, Slack and Windows (In Progress).
- Backend Requirement: BacklogAI API must be running and reachable from the client platform.
- Base URL Guidance + Demo Links:
- Android Emulator: π
http://10.0.2.2:<backend-port>
Demo:demo/android-e2e-v2/ - iOS Simulator: π
http://localhost:<backend-port>
Demo:demo/ios-e2e-v2/ - macOS Desktop: π
http://localhost:<backend-port>
Demo:demo/macos-e2e-v2/ - Windows Desktop (Phase 8): π
http://localhost:<backend-port>(current default for desktop runtime)
- Android Emulator: π
- Quick Verification:
- Health check:
GET /health - Generation check:
POST /backlog/generate/v2
- Health check:
- Android + macOS (combined):
- Video:
demo/e2e-v3/macos-android-demo-v3.mov - Screenshot:
demo/e2e-v3/macos-android-v3.png
- Video:
- Slack end-to-end:
- Android APK:
demo/binaries-v3/android/BacklogAI-android-release-unsigned.apk - iPhone IPA:
demo/binaries-v3/ios/BacklogAI-iPhone.ipa - macOS App Bundle (.zip):
demo/binaries-v3/macos/BackLogAI.app.zip
- Status: π§ In progress (Kotlin Multiplatform + Compose Desktop).
- Packaging Target (Recommended): MSI installer + portable ZIP.
- Planned Artifact Folder:
demo/binaries-v3/windows/ - Windows Docs:
- Live setup guide:
WINDOWS_LIVE_SETUP.md - Release checklist:
WINDOWS_RELEASE_CHECKLIST.md
- Live setup guide:
- Integration Model: Slack works as an additional client channel, allowing users to submit inputs, review Story Preview, and trigger Jira sync directly from Slack.
- Business Value: This reduces context switching and enables backlog collaboration where teams already communicate.
- Status: β End-to-end flow is live and validated.
- Deployment Pattern: Local BacklogAI backend + Local Jira + Live Slack callbacks via Cloudflare Tunnel (quick tunnel for local demos).
- Setup Summary:
- Create a Slack app with Slash Commands + Interactivity and scopes
chat:write,commands(optional:channels:history,users:read). - Configure callback endpoints:
- Slash command: π
https://<public-backlogai-host>/slack/commands - Interactivity: π
https://<public-backlogai-host>/slack/interactions
- Slash command: π
- For local demo: use Cloudflare quick tunnel.
- For production hardening: add Zero Trust policies and Slack bypass rules for Jira Slack endpoints.
- Keep Jira linked using the public Jira base URL.
- Create a Slack app with Slash Commands + Interactivity and scopes
- Set Env: (π copy into
.env)SLACK_BOT_TOKEN=xoxb-... SLACK_SIGNING_SECRET=... SLACK_INTEGRATION_ENABLED=true
- Runtime Flow:
/backlogai-> input modal -> Story Preview -> Sync to JIRA -> Jira key + URL posted to Slack. - Reliability Notes:
- Slash command endpoint returns immediate ACK to avoid Slack timeout/dispatch errors.
- Sync is idempotent for repeated button clicks and returns existing Jira key/URL.
- Security Notes:
- Slack request signature verification and timestamp replay protection are enforced on webhook endpoints.
- Cloudflare Tunnel provides HTTPS callback ingress to local services without opening inbound ports.
- Setup Docs:
- Live guide:
SLACK_LIVE_SETUP.md - Quick tunnel rotation checklist:
SLACK_QUICK_TUNNEL_CHECKLIST.md
- Live guide:
| Channel | Create Story Preview | Sync to Jira | Status |
|---|---|---|---|
| Android App | β | β | Live |
| iOS App | β | β | Live |
| macOS App | β | β | Live |
Slack (/backlogai) |
β | β | Live |
| Windows App | π§ | π§ | In Progress |
See ARCHITECTURE.md for detailed system design.
| Layer | Stack |
|---|---|
| Backend API | Python 3.11+, FastAPI, Uvicorn |
| AI & Research | OpenAI API, SerpAPI (market search) |
| Backlog Logic | INVEST quality checks, MoSCoW prioritization, story decomposition |
| Integrations | Jira REST API, Slack Web API + interactive webhooks, SMTP-compatible notification workflow |
| Client Apps | Kotlin Multiplatform + Compose (Android, iOS, macOS Desktop, Windows In Progress) |
| Build & Delivery | Gradle, Docker, GitHub, Cloudflare Tunnel (cloudflared) |
See IMPLEMENTATION_PLAN.md for the phased development plan.
This project is licensed under the MIT License - see the LICENSE file for details.