Turn raw emails, meeting transcripts, and Slack messages into a fully structured Business Requirements Document (BRD) β automatically, using AI.
A Business Requirements Document (BRD) is a formal document that describes what a software project needs to do. Writing one usually takes days of meetings, interviews, and manual writing.
BRDify automates that entire process. You paste in your raw team communications (emails, meeting notes, Slack threads), click a button, and a multi-agent AI pipeline reads everything, extracts requirements, detects conflicts, profiles stakeholders, and hands you a publication-ready BRD β in seconds.
Think of it as having a senior business analyst who never sleeps and never misses a detail.
Your Raw Input AI Agent Pipeline Outputs
ββββββββββββββ ββββββββββββββββββ βββββββ
π§ Emails βββΊ [Parse]βββΊ[Classify]βββΊ[Extract] βββΊ π BRD Document
π Meeting notes βββΊ βββΊ[Conflicts]βββΊ[Score] βββΊ βοΈ Conflict Log
π¬ Slack messages βββΊ βββΊ[Stakeholders] βββΊ π₯ Stakeholder Map
βββΊ π Analytics
Here is exactly what happens from the moment you hit "Generate BRD" to the moment you get your document.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β USER ACTION β
β Paste emails / meeting notes / Slack messages β
β + Enter Gemini API key β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 1 β INGESTION β
β β
β The app reads your raw text and splits it into individual β
β "source messages". Each message gets tagged with: β
β β’ Channel β EMAIL / MEETING / SLACK β
β β’ Sender β who wrote it β
β β’ Is it noise? β greetings, off-topic chat filtered out β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 2 β AI BATCH PROCESSING β
β β
β Messages are sent in batches to Google Gemini (AI model). β
β Each batch is processed by a chain of specialist "agents": β
β β
β Agent A β Requirement Extractor β
β Finds every "the system must / should / shall" statement β
β Tags each as Functional (what it does) or Non-Functional β
β (how well it does it β speed, security, reliability) β
β β
β Agent B β Conflict Detector β
β Looks for two messages that contradict each other β
β e.g. "launch in March" vs "launch in June" β
β Each conflict gets a severity: CRITICAL / HIGH / MEDIUM / LOW β
β β
β Agent C β Stakeholder Profiler β
β Identifies every person mentioned or speaking β
β Scores their sentiment (Positive / Neutral / Concerned / Urgent)β
β Rates their influence: HIGH / MEDIUM / LOW β
β β
β Agent D β Risk & Quality Scorer β
β Calculates a 0β100 quality score for the whole BRD β
β Flags risks: unresolved conflicts, vague requirements, etc. β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 3 β MERGE & DEDUPLICATE β
β β
β Results from all batches are merged into one unified document. β
β Duplicate requirements are removed. β
β Stakeholder profiles from different batches are combined. β
β The final quality score is stamped onto the document. β
βββββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STEP 4 β OUTPUT VIEWS β
β β
β You now get 4 interactive tabs: β
β β
β π BRD Document β
β Full structured document with all sections β
β Natural Language editor β type "resolve conflict C-01" β
β Export to print-ready PDF with one click β
β β
β βοΈ Conflicts Panel β
β See every contradiction with source quotes β
β Mark conflicts as RESOLVED or ESCALATED β
β β
β π₯ Stakeholder Panel β
β See every stakeholder, their sentiment, and influence β
β Identify who needs attention β
β β
β π Analytics Dashboard β
β Charts: requirement breakdown, risk distribution β
β Deployment confidence score β
β Message channel distribution β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
| Component | File | What it does |
|---|---|---|
| Ingestion Hub | IngestionHub.tsx |
The input form β paste text, enter API key, hit Go |
| Agent Pipeline | AgentPipeline.tsx |
Animated progress view of the AI agents running |
| Console Logs | ConsoleLogs.tsx |
Live log output as the agents process your data |
| BRD Viewer | BRDViewer.tsx |
Displays the full BRD with all sections, NL editor, PDF export |
| Conflict Panel | ConflictPanel.tsx |
Shows all detected contradictions with resolution controls |
| Stakeholder Panel | StakeholderPanel.tsx |
Stakeholder cards with sentiment and influence scores |
| Analytics Dashboard | AnalyticsDashboard.tsx |
Charts and metrics about your BRD's quality and coverage |
| Layer | Technology |
|---|---|
| Frontend framework | React 19 + TypeScript |
| Build tool | Vite 6 |
| Styling | Tailwind CSS + shadcn/ui components |
| Animations | Framer Motion |
| AI model | Google Gemini (via REST API) |
| Deployment | Netlify (see netlify.toml) |
- Node.js 18 or newer
- A free Google Gemini API key
# 1. Clone the repo
git clone <your-repo-url>
cd brd-agent
# 2. Install dependencies
npm install
# 3. Start the development server
npm run dev
# 4. Open your browser at http://localhost:5173You'll see an input form on the left. Paste your emails/meeting notes/Slack messages, enter your Gemini API key, and click Generate BRD.
π‘ No input? Click the "βΆ Run Demo Simulation" button to see a full example BRD with sample data β no API key required.
npm run build
# Output goes to /dist β deploy that folder anywheresrc/
βββ App.tsx β Root component, holds all state
βββ lib/
β βββ types.ts β TypeScript interfaces (BRDDocument, Requirement, etc.)
β βββ geminiService.ts β AI calls + batch processing + BRD merging
β βββ brdUtils.ts β Quality scoring, confidence scoring, validation
β βββ mockData.ts β Default BRD shown on first load
β βββ simulationData.ts β Demo data used by the simulation button
βββ components/
βββ dashboard/
β βββ BRDViewer.tsx β BRD document display + PDF export + NL editor
β βββ ConflictPanel.tsx β Conflict list and resolution UI
β βββ StakeholderPanel.tsx β Stakeholder intelligence view
β βββ AnalyticsDashboard.tsx β Charts and metrics
β βββ IngestionHub.tsx β Input form
β βββ AgentPipeline.tsx β Animated agent progress
β βββ ConsoleLogs.tsx β Live log stream
βββ ui/ β Reusable UI primitives (button, badge, card, etc.)
On the BRD tab, open the AI Edit panel and type plain English commands:
"Resolve conflict C-01"β marks it resolved instantly"Shorten the executive summary"β AI rewrites it"Accept all requirements"β bulk status update- Anything else β sent to Gemini AI for freeform editing
If the numbers don't add up (e.g. relevant + filtered β total messages), a red warning banner appears at the top of the BRD β so you always know your data is consistent.
The quality score shown in the header badge is always computed live from the actual BRD content β it's never stale. Change a conflict status β score updates instantly.
Click "Export PDF" to open a formatted, print-ready document in a new tab. It includes:
- Document Control section with live metrics
- Table of Contents
- All 13 BRD sections (Executive Summary β RTM)
- Confidential footer on every page
The 0β100 quality score is computed by computeQualityScore() in brdUtils.ts. It checks:
| Check | Points |
|---|---|
| Has at least 5 functional requirements | +20 |
| Has non-functional requirements | +10 |
| Has stakeholders identified | +10 |
| Has a timeline / milestones | +10 |
| Has an executive summary | +10 |
| Has success metrics | +10 |
| Unresolved critical conflicts | β15 each |
| Vague or missing rationale on requirements | β5 each |
| Low-confidence requirements | β3 each |
Q: Do I need to pay for the Gemini API? A: Gemini has a generous free tier. For normal BRD generation (a few hundred messages), you're very unlikely to exceed it.
Q: What if my text is in a different language? A: Gemini handles multilingual input, but the BRD output is always in English.
Q: Can I use this without an API key? A: Yes β click "Run Demo Simulation" on the left panel to see a fully populated BRD with sample enterprise data, no API key needed.
Q: What's the maximum input size? A: The app splits your input into batches, so there's no hard limit. Very large inputs (thousands of messages) may take longer due to API rate limits.
MIT β free to use, modify, and distribute.