# Product Requirements Document (PRD)

## AOLL — Always-On Lead Library
### AI-Powered B2B Intelligence & Outreach Platform

| Field | Value |
|-------|-------|
| **Document Version** | 1.0 |
| **Status** | Draft — For Engineering & Leadership Review |
| **Author** | Product Management |
| **Last Updated** | July 27, 2026 |
| **Epic Reference** | AA-25 |
| **Related Releases** | CHGREL-1255 (Initial Release), CHGREL-1269 |

---

## Table of Contents

1. [Executive Summary](#1-executive-summary)
2. [Problem Statement & Opportunity](#2-problem-statement--opportunity)
3. [Product Vision & Positioning](#3-product-vision--positioning)
4. [Goals, Non-Goals & Success Metrics](#4-goals-non-goals--success-metrics)
5. [User Personas & Jobs-to-be-Done](#5-user-personas--jobs-to-be-done)
6. [Current State & Release Baseline](#6-current-state--release-baseline)
7. [Product Scope](#7-product-scope)
8. [Functional Requirements by Module](#8-functional-requirements-by-module)
9. [Subscription & Feature Tiering](#9-subscription--feature-tiering)
10. [Non-Functional Requirements](#10-non-functional-requirements)
11. [Feasibility Assessment & Constraints](#11-feasibility-assessment--constraints)
12. [Workarounds & Phased Deferrals](#12-workarounds--phased-deferrals)
13. [Assumptions & Dependencies](#13-assumptions--dependencies)
14. [Risks & Mitigations](#14-risks--mitigations)
15. [Release Roadmap](#15-release-roadmap)
16. [Open Questions & Decision Log](#16-open-questions--decision-log)
17. [Appendices](#17-appendices)

---

## 1. Executive Summary

**AOLL (Always-On Lead Library)** is a self-serve B2B sales intelligence platform that combines company intelligence, contact data, buying signals, intent tracking, and AI-generated outreach — positioned as a hybrid of **ZoomInfo** (general B2B intelligence) and **Winmo** (advertiser/agency and ad-spend intelligence).

The platform enables marketers, agencies, media sellers, and business development teams to discover target accounts, identify decision-makers, monitor buying intent, and act on signals — without the sales-led procurement cycle typical of incumbent vendors.

**Current state:** Phase 1 (CHGREL-1255) delivered the public marketing site, authentication, dashboard shell, and mock-data UI. Phase 2 onward requires building the data foundation, real search, signals pipeline, billing, CRM integrations, and AI capabilities described in this document.

**Strategic differentiators vs. ZoomInfo:**
- Self-serve tiered pricing (public checkout vs. sales-led quotes)
- Brand, agency, and **media spend** data as first-class entities
- Brand–agency relationship mapping
- Vertical focus on advertising and media buying workflows

---

## 2. Problem Statement & Opportunity

### 2.1 Problem

B2B revenue teams spend a disproportionate amount of time on manual prospecting:

- Fragmented data across LinkedIn, CRM, news sites, and ad libraries
- No single view of **who is spending**, **who to call**, and **when to reach out**
- Incumbent platforms (ZoomInfo, Winmo) require annual contracts, opaque pricing ($15K–$100K+/year), and lengthy sales cycles
- Intent and signal data are gated behind premium tiers with no self-serve path

### 2.2 Opportunity

| Market Signal | Implication for AOLL |
|---------------|----------------------|
| ZoomInfo processes 1.5B+ data points/day; intent is mid-tier+ | Intent is expected; must be real, not cosmetic |
| Winmo owns ad-spend and brand–agency data | AOLL can own the media/advertising vertical wedge |
| Neither offers transparent self-serve pricing | Pricing transparency is a GTM advantage |
| AI outreach is now table stakes at enterprise tier | Intelligence tier must deliver measurable time savings |

### 2.3 Business Objective

Reduce prospecting effort while increasing lead quality and conversion rates by providing a centralized platform to:

1. Discover target companies (Companies, Brands, Agencies)
2. Identify decision-makers with verified contact data
3. Monitor buying and marketing intent signals
4. Receive AI-powered opportunity insights and outreach content
5. Export and integrate data into CRM systems

---

## 3. Product Vision & Positioning

### 3.1 Vision Statement

> *Give every revenue team instant access to who is spending, who to call, and when to reach out — without enterprise sales friction.*

### 3.2 Positioning Statement

For **media sellers, agencies, and B2B sales teams** who need to find and engage high-value accounts, **AOLL** is a **self-serve B2B intelligence platform** that combines ad-spend insights, company/contact data, and buying signals. Unlike **ZoomInfo** (general B2B, sales-led) and **Winmo** (advertiser-focused, sales-led), AOLL offers **transparent pricing**, **brand/agency intelligence**, and **AI-assisted outreach** in a single product.

### 3.3 Competitive Feature Matrix

| Capability | AOLL | ZoomInfo | Winmo |
|------------|------|----------|-------|
| Company / firmographic database | ✅ Planned | ✅ | Partial |
| Contact / decision-maker data | ✅ Planned | ✅ | ✅ |
| Brand (advertiser) records | ✅ Planned | Partial | ✅ |
| Agency + brand–agency mapping | ✅ Planned | ❌ | ✅ |
| Media / ad-spend data | ✅ Planned | ❌ | ✅ |
| Technographics | ✅ Planned | ✅ | ❌ |
| Intent / buying signals | ✅ Planned | ✅ | Partial |
| Event signals (Scoops) | ✅ Planned | ✅ | ✅ |
| Workflows / automation | ✅ Planned | ✅ | Unverified |
| CRM integrations | ✅ Planned | ✅ | ✅ |
| AI insights & outreach | ✅ Planned | ✅ (Elite) | ❌ |
| Self-serve pricing | ✅ Planned | ❌ | ❌ |
| Org charts | ❌ Out of scope (v1) | ✅ | ❌ |
| Website visitor ID (WebSights) | ❌ Out of scope (v1) | ✅ | ❌ |

---

## 4. Goals, Non-Goals & Success Metrics

### 4.1 Product Goals (12-Month Horizon)

| Goal | Target | Measurement |
|------|--------|-------------|
| Data credibility | ≥100K indexed companies in target verticals | Companies in search index |
| Search utility | P95 search latency < 2s for filtered queries | APM / load tests |
| Signal freshness | Scoops ≤ 48h from source publication | Pipeline SLA |
| Monetization | Self-serve checkout live | Stripe conversion funnel |
| Engagement | ≥40% WAU/MAU for paid accounts | Product analytics |
| Data accuracy | ≥85% contact email deliverability (verified subset) | Bounce rate on exports |

### 4.2 Non-Goals (Explicitly Out of Scope — v1)

| Non-Goal | Rationale |
|----------|-----------|
| Org charts / buying committee visualization | High build cost; ZoomInfo differentiator; defer to v2+ |
| Website visitor de-anonymization (WebSights equivalent) | Requires pixel deployment + identity graph at scale; not feasible in initial phases |
| Bi-directional CRM sync | One-way export sufficient for MVP; bi-directional adds 3–6 months |
| Chrome extension / LinkedIn overlay | Execution surface; defer until core data is credible |
| Real-time intent streaming | Batch/daily intent refresh acceptable for v1; true real-time requires Bombora-grade partnership |
| Pipedrive integration | Listed in epic; defer to Phase 4+ (HubSpot + Salesforce first) |
| Mobile native apps | Responsive web only for v1 |
| Conversation intelligence (Chorus equivalent) | Separate product category; not in AOLL scope |
| MCP / headless AI agent API | Enterprise v2 consideration; API first |

### 4.3 Success Metrics

**North Star Metric:** Qualified exports per active paid user per month (companies + contacts pushed to CRM or downloaded).

**Supporting metrics:**

| Category | Metric |
|----------|--------|
| Data | Total companies indexed, contacts verified, signals generated/day |
| Product | MAU, searches/user, saved searches created, alerts enabled |
| Revenue | Trial → paid conversion, ARPU, churn rate |
| Integration | CRM connections active, workflow runs/week, export volume |
| AI | AI insight generations/user, outreach copy saves |

---

## 5. User Personas & Jobs-to-be-Done

### 5.1 Primary Personas

#### Persona 1: Media Seller (Primary Wedge)
- **Role:** Account executive at ad network, SSP, or media platform
- **JTBD:** Find brands actively spending on advertising and reach the CMO/media buyer
- **Key features:** Brand search, media spend filter, intent topics (Display, Video, Programmatic)

#### Persona 2: Agency Business Development
- **Role:** New business lead at creative/media agency
- **JTBD:** Identify brands without agency relationships or those reviewing agencies
- **Key features:** Brand–agency mapping, leadership change alerts, scoops

#### Persona 3: B2B SDR / AE (General)
- **Role:** Sales rep at SaaS or services company
- **JTBD:** Build targeted lists, monitor intent, push to Salesforce/HubSpot
- **Key features:** Advanced search, saved searches, workflows, CRM export

#### Persona 4: Workspace Admin
- **Role:** RevOps or sales manager
- **JTBD:** Manage team access, billing, CRM connections
- **Key features:** User management, plan & billing, connectors

### 5.2 Secondary Personas

- **Marketer:** Intent topic tracking, opportunity scoring
- **Recruiter:** Executive change signals, hiring scoops (partial fit)

---

## 6. Current State & Release Baseline

### 6.1 Delivered — CHGREL-1255 (Initial Release)

| Area | Status |
|------|--------|
| Marketing site (Home, Pricing, About, Solutions, FAQ, Blog, Terms, Privacy) | ✅ Live |
| Contact Us / Book Demo forms + DB + email | ✅ Live |
| Signup (email + Google OAuth) | ✅ Live |
| Login / Logout / Forgot Password | ✅ Live |
| Dashboard shell (all sidebar pages) | ✅ Live |
| Settings (profile, password) | ✅ Live |
| API read endpoints | ✅ Mock data |
| API write endpoints | ❌ 501 Not Implemented |

### 6.2 Known Limitations (Documented in Release)

- Live Stripe billing: **not implemented**
- Real CRM OAuth: **not implemented**
- AI backends: **not implemented**
- Dashboard product data: **mock/static UI**

### 6.3 Design Assets

Design system and page mocks available at `design.admedia.com/aoll/` (referenced in AA-27).

---

## 7. Product Scope

### 7.1 In Scope — Full Product (Phases 2–5)

| # | Module | Jira Reference |
|---|--------|----------------|
| M1 | Authentication & Onboarding | AA-38 |
| M2 | Home — Buying Signal Feed | AA-39 |
| M3 | Advanced Search | AA-41 |
| M4 | Intent & Topics | AA-40 |
| M5 | Saved (Searches + Signal Feed) | AA-44 |
| M6 | Alerts | AA-45 |
| M7 | Workflows | AA-46 |
| M8 | Connectors (HubSpot, Salesforce) | AA-42 |
| M9 | Plan & Billing | AA-47 |
| M10 | Users & Administration | AA-43 |
| M11 | Company Profile Page | AA-25 Module 7 |
| M12 | AI Opportunity Intelligence | AA-25 Module 4 |
| M13 | AI Outreach Assistant | AA-25 Module 5 |
| M14 | Data Export | AA-25 Module 9 |
| M15 | Marketing Website | AA-47 (mostly done) |
| M16 | Transactional Email | AA-60 (mostly done) |
| M17 | Data Ingestion (Scraper + CSV/Excel Upload) | New |

### 7.2 Data Ingestion Sources

AOLL ingests company, contact, brand, and agency data through **three primary channels**, all feeding the same normalization → entity resolution → enrichment pipeline:

| Source | Type | Owner | Description |
|--------|------|-------|-------------|
| **Web Scraper** | Automated (existing) | Data Ops / Engineering | Scheduled crawlers scrape public sources and dump raw records into the database staging area |
| **CSV / Excel Upload** | Manual bulk import | Admin / Data Ops | Admin uploads `.csv` or `.xlsx` files via internal UI; validated, mapped, and queued for ingest |
| **Licensed Vendor API** | Automated (optional) | Data Ops | Third-party bulk export (Apollo, Clearbit, etc.) if contracted |

All sources converge on the **same pipeline** after landing in raw/staging storage. Entity resolution deduplicates records across scraper, upload, and vendor data.

### 7.3 Data Entities

| Entity | Description |
|--------|-------------|
| **Company** | General B2B firmographic record |
| **Brand** | Advertiser record with media spend attributes |
| **Agency** | Agency record with client relationships |
| **Contact** | Person linked to Company/Brand/Agency |
| **Scoop** | Business event signal (funding, leadership, etc.) |
| **Intent Signal** | Topic-based buying intent record |
| **Topic** | Intent topic in library (user assigns up to 6) |
| **Saved Search** | Persisted filter set with optional alerts |
| **Workflow** | Trigger → action automation |
| **Connector** | OAuth-linked CRM integration |

---

## 8. Functional Requirements by Module

Requirements below use **MoSCoW** priority: **Must** (P0), **Should** (P1), **Could** (P2), **Won't** (v1).

---

### M1 — Authentication & Onboarding (AA-38)

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| AUTH-1 | Email + password login | Must | Valid credentials → dashboard; invalid → generic error; Remember me supported |
| AUTH-2 | SSO (Google, Microsoft) | Must | OAuth flow; first-time users provisioned per account rules |
| AUTH-3 | Forgot / reset password | Must | Time-limited token (30 min); no account enumeration |
| AUTH-4 | Sign up | Must | Work email validation (block free domains); password strength; ToS acceptance |
| AUTH-5 | Email verification | Should | Verification link activates account |
| AUTH-6 | First-login onboarding | Should | Company name, size, website, industry capture |
| AUTH-7 | SSO (Office 365) | Could | Microsoft OAuth (listed in design; Google done in v1 release) |

**Status:** Partial — Google OAuth and email auth delivered; Microsoft OAuth and onboarding wizard pending.

---

### M2 — Home — Buying Signal Feed (AA-39)

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| HOME-1 | Personalized feed header | Must | Time-based greeting; "Edit Feed" opens modal |
| HOME-2 | Signal feed cards | Must | Logo, company name, signal badge, date, description; click → company detail |
| HOME-3 | Save a signal | Must | Bookmark toggle; persisted; visible in Saved module |
| HOME-4 | Edit Feed configuration | Must | General settings (industry, location, media spend, size); intent topics; technologies |
| HOME-5 | Intent Signals widget | Must | Count + top topics; click → Intent page |
| HOME-6 | Saved Searches widget | Must | List saved searches; click → Saved page |
| HOME-7 | Recently Viewed widget | Should | Last N companies viewed; click → company detail |
| HOME-8 | Summary count boxes | Must | Five boxes with live counts; click → filtered list |

**Signal types (feed badges):** Funding, Leadership, Product, Executive.

---

### M3 — Advanced Search (AA-41)

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| SEARCH-1 | Entity tabs | Must | Companies, Brands, Agencies — tab switch resets filters |
| SEARCH-2 | Filters | Must | Company: name, industry, employees, revenue, media spend, location, technology. Contact: name, email |
| SEARCH-3 | Keyword search + sub-tabs | Must | Contacts, Companies, Scoops with live counts |
| SEARCH-4 | Company results table | Must | Logo, location, industry, employees, revenue, website; Brands/Agencies include media spend |
| SEARCH-5 | Contact results | Must | Name, title, company, email, location; row-hover quick actions |
| SEARCH-6 | Scoop results | Must | Date, company, description, source link, topics, type |
| SEARCH-7 | Select & export | Must | Checkbox selection; CSV export |
| SEARCH-8 | Save search & alert | Must | Save modal; alert preferences; retrievable from Saved |

**Scoop types:** Event, Open Position, Product Launch, Funding, Executive Hire.

---

### M4 — Intent & Topics (AA-40)

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| INTENT-1 | Module navigation | Must | "View Signals" and "My Topics" tabs |
| INTENT-2 | Intent signals table | Must | Columns: date, country, company, topic, industry, signal score, audience strength |
| INTENT-3 | Date-range selector | Must | Week, Month, Quarter, Year, Custom |
| INTENT-4 | Filter signals | Must | Topic, company, location, media spend, technology |
| INTENT-5 | Select & export | Must | Row/select-all; export selection |
| INTENT-6 | Manage My Topics | Must | Counter (X/6 max); assign/remove topics |
| INTENT-7 | Browse topic library | Must | Search; multi-select assign |

**Intent model:** Activity on topics surges above account baseline → signal surfaced. Score indicates strength/relevance.

---

### M5 — Saved (AA-44)

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| SAVE-1 | Save search (new/replace) | Must | Name, description (250 char); from Advanced Search |
| SAVE-2 | Alert notifications | Must | Toggle; notify on contacts/companies/scoops added; daily/weekly |
| SAVE-3 | Email notifications | Must | Toggle; confirmation reflects schedule |
| SAVE-4 | Feed bookmark | Must | Toggle on home feed cards; retrievable in Saved view |
| SAVE-5 | Favourites | Should | Star saved searches |
| SAVE-6 | Filter transparency | Should | Reveal exact filters on saved search |

---

### M6 — Alerts (AA-45)

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| ALERT-1 | Tab navigation | Must | "Alerts" and "Email Alerts" tabs |
| ALERT-2 | Alerts feed | Must | Cards: company, date, title, body; sourced from saved searches |
| ALERT-3 | Category filter | Must | Stakeholders & Leadership, Hiring & Team Growth, Funding & Financials, Product & Launches, Expansion & Growth, M&A & Corporate, Others |
| ALERT-4 | Email alerts log | Must | Table: date, name, frequency, status, actions |
| ALERT-5 | Unread tracking | Should | Indicator for new alerts |
| ALERT-6 | CSV attachment in email | Must | Per AA-60 alert email template |

**Dependency:** Alerts are generated **only** from saved searches with notifications enabled (AA-45).

---

### M7 — Workflows (AA-46)

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| WF-1 | Manage workflows | Must | List with name, trigger, frequency, action, status; edit/delete/toggle |
| WF-2 | Create workflow | Must | Name; inactive default; requires trigger + ≥1 action |
| WF-3 | Trigger selection | Must | Intent, Saved Search, or Scoops (one per workflow) |
| WF-4 | Configure trigger | Must | Intent → topic; Saved Search → pick search; Scoops → category; schedule daily/weekly |
| WF-5 | Add action | Must | Discover Contacts, Export HubSpot, Export Salesforce, Export Webhook |
| WF-6 | Configure action | Must | Discover: max contacts, location, roles; Webhook: URL required |
| WF-7 | Activate & persist | Must | Active workflows execute on schedule |

**Tier gate:** Intelligence tier and above (per feature tiering doc).

---

### M8 — Connectors (AA-42)

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| CONN-1 | Integration catalog | Must | Browse HubSpot, Salesforce; search/filter |
| CONN-2 | OAuth authentication | Must | Connect flow; success marks connected; failure handled |
| CONN-3 | Export to CRM | Must | Companies/contacts/scoops export; field mapping; success/error surfaced |
| CONN-4 | HubSpot one-way export | Must | Data pushed into HubSpot objects |
| CONN-5 | Salesforce push | Must | Records created/updated in Salesforce |
| CONN-6 | Sync failure notification | Must | Email to admin on failure (AA-60 template) |

**Tier gate:** Intelligence tier and above.

---

### M9 — Plan & Billing (AA-47)

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| BILL-1 | Tier display | Must | Starter, Professional, Intelligence, Enterprise with features |
| BILL-2 | Self-serve upgrade/downgrade | Must | Change effective next billing cycle |
| BILL-3 | Monthly / annual billing | Must | Annual discount |
| BILL-4 | Plan transparency | Must | Current plan, status, renewal date |
| BILL-5 | Enterprise contact sales | Must | CTA → contact/demo flow |
| BILL-6 | Usage limit enforcement | Must | Searches, contact views, exports capped by tier |
| BILL-7 | Payment failure handling | Must | Lock features; billing page accessible |
| BILL-8 | Trial ending emails | Should | 3-day, 1-day, day-of (AA-60) |

---

### M10 — Users & Administration (AA-43)

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| USER-1 | User list | Must | Name, email, role, status; admin-only |
| USER-2 | Search users | Must | Filter by name/email |
| USER-3 | Add user | Must | Side panel; role Admin/Non-Admin |
| USER-4 | Remove user | Must | Revoke access |
| USER-5 | Role-based access | Must | Admin: billing, users, intents; Non-Admin: standard access |

**Tier gate:** Enterprise tier.

---

### M11 — Company Profile Page (AA-25)

| Section | Content |
|---------|---------|
| Overview | Business info, industry, revenue, employees |
| Decision Makers | Linked contacts |
| Intent Signals | Recent intent by topic |
| Scoops | Recent business events |
| Technology Stack | Technographics |
| AI Insights | Opportunity score, summary, budget estimate |
| Outreach | AI-generated recommendations |

---

### M12 — AI Opportunity Intelligence (AA-25 Module 4)

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| AI-1 | Opportunity Score (0–100) | Must | Generated per company; factors documented |
| AI-2 | Opportunity Summary | Must | Why company likely to purchase |
| AI-3 | Recommended Services | Should | Paid Media, SEO, Creative, etc. |
| AI-4 | Budget Intelligence | Should | Estimated range from size/funding/hiring |
| AI-5 | Suggested Pitch | Must | Why now, talking points, value prop |

**Tier gate:** Intelligence tier.

---

### M13 — AI Outreach Assistant (AA-25 Module 5)

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| OUT-1 | Email generation | Must | Cold, intro, meeting request, follow-up |
| OUT-2 | LinkedIn messages | Should | Connection, follow-up, prospecting |
| OUT-3 | Call scripts | Should | Discovery, intro, executive |
| OUT-4 | Personalization inputs | Must | Company, contact role, signals, AI insights |
| OUT-5 | User actions | Must | Copy, save, regenerate, export |

**Tier gate:** Intelligence tier.

---

### M14 — Data Export (AA-25 Module 9)

| Format | Priority |
|--------|----------|
| CSV | Must |
| Excel | Should |
| CRM push (HubSpot, Salesforce) | Must (Intelligence+) |

---

### M17 — Data Ingestion: Scraper + CSV/Excel Upload

**Audience:** Admin and Data Operations only — not exposed to standard sales users.

| ID | Requirement | Priority | Acceptance Criteria |
|----|-------------|----------|---------------------|
| ING-1 | Web scraper pipeline (existing) | Must | Scheduled scraper runs; raw output lands in staging table or S3; run status logged |
| ING-2 | Scraper → pipeline handoff | Must | Scraper output passes through normalize → entity resolution → PostgreSQL → OpenSearch |
| ING-3 | CSV upload | Must | Admin uploads `.csv` up to configured max (e.g. 50MB / 100K rows); async processing |
| ING-4 | Excel upload | Must | Admin uploads `.xlsx` / `.xls`; first sheet parsed; same validation as CSV |
| ING-5 | Downloadable import templates | Must | Templates for Companies, Contacts, Brands, Agencies with required/optional columns documented |
| ING-6 | Column mapping | Should | Auto-map known headers; allow manual override for non-standard files |
| ING-7 | Validation & error report | Must | Reject invalid rows; produce error report (row number, field, reason); import summary (accepted/rejected/merged) |
| ING-8 | Entity deduplication on import | Must | Uploaded records merged via entity resolution (domain/name match); no duplicate companies |
| ING-9 | Import job history | Must | List past uploads: filename, date, user, status, row counts, error file download |
| ING-10 | Source attribution | Must | Each record stores `data_source` (`scraper`, `csv_upload`, `excel_upload`, `vendor`) and `source_file` or `scraper_run_id` |
| ING-11 | Admin-only access | Must | Upload UI and APIs gated to Admin / Data Ops role |
| ING-12 | Index refresh after import | Must | OpenSearch index updated within 15 min (or on job completion) after successful import |

**Supported upload entity types (v1):**

| Template | Required columns | Optional columns |
|----------|------------------|------------------|
| Companies | `company_name`, `domain` | industry, employees, revenue, hq_city, hq_state, hq_country, website, description |
| Contacts | `first_name`, `last_name`, `email`, `company_domain` | job_title, department, phone, linkedin_url, seniority |
| Brands | `brand_name`, `domain` | media_spend_tier, industry, parent_company |
| Agencies | `agency_name`, `domain` | industry, hq_city, hq_state |

**Out of scope (v1):** Customer self-serve upload; real-time streaming ingest; upload of intent/scoop data via CSV (Phase 3+ consideration).

---

## 9. Subscription & Feature Tiering

### 9.1 Plan Matrix

| Feature | Starter ($149/mo) | Professional ($499/mo) | Intelligence ($999/mo) | Enterprise ($1,599+/mo) |
|---------|-------------------|------------------------|------------------------|-------------------------|
| Searches | Limited (e.g., 100/mo) | Unlimited | Unlimited | Unlimited |
| Contact views | Limited (e.g., 50/mo) | Full access | Full access | Full access |
| Exports | Limited (e.g., 25/mo) | Additional volume | Higher volume | Custom |
| Company intelligence | Preview | Full | Full | Full |
| Intent signals | ❌ | ✅ | ✅ | ✅ |
| Brand/agency + media spend | ❌ | ✅ | ✅ | ✅ |
| Saved searches & standard alerts | ❌ | ✅ | ✅ | ✅ |
| AI opportunity insights | ❌ | ❌ | ✅ | ✅ |
| AI outreach generation | ❌ | ❌ | ✅ | ✅ |
| Custom alerts | ❌ | ❌ | ✅ | ✅ |
| CRM integrations | ❌ | ❌ | ✅ | ✅ |
| Workflows | ❌ | ❌ | ✅ | ✅ |
| API access | ❌ | ❌ | ❌ | ✅ |
| Team management | ❌ | ❌ | ❌ | ✅ |
| Custom intelligence feeds | ❌ | ❌ | ❌ | ✅ |
| Dedicated support | ❌ | ❌ | ❌ | ✅ |

*Exact limits to be finalized before Stripe implementation.*

### 9.2 Competitive Tiering Rationale

Placement follows ZoomInfo/Winmo norms: search and basic data at entry; intent, automation, AI, and CRM at higher tiers. Self-serve checkout is an AOLL differentiator.

---

## 10. Non-Functional Requirements

| Category | Requirement |
|----------|-------------|
| **Availability** | 99.5% uptime for authenticated app (excluding planned maintenance) |
| **Performance** | Search P95 < 2s; feed load P95 < 3s |
| **Security** | HTTPS; encrypted credentials; OAuth for CRM; GDPR/CCPA-ready data handling |
| **Scalability** | Support 10K MAU initially; horizontal search scaling |
| **Compliance** | CAN-SPAM for alert emails; unsubscribe per alert; work-email signup policy |
| **Accessibility** | WCAG 2.1 AA target for dashboard (Phase 3+) |
| **Audit** | Admin actions logged (user add/remove, billing changes) |

---

## 11. Feasibility Assessment & Constraints

### 11.1 What Is Achievable (High Confidence)

| Capability | Feasibility | Notes |
|------------|-------------|-------|
| Dashboard UI for all modules | ✅ High | Shell exists; wire to real APIs |
| Auth, billing (Stripe), email | ✅ High | Standard SaaS patterns |
| Advanced search with filters | ✅ High | Requires search index + data |
| Saved searches, alerts, workflows | ✅ High | Application logic; depends on data freshness |
| HubSpot/Salesforce one-way export | ✅ High | Well-documented APIs |
| AI outreach generation | ✅ High | LLM API + RAG over company context |
| CSV/Excel export | ✅ High | Standard |

### 11.2 What Is Difficult but Achievable (Medium Confidence)

| Capability | Challenge | Realistic Outcome |
|------------|-----------|-------------------|
| 100K+ company database | Building from scratch takes 12–18 months | License base data; enrich with proprietary ad-spend |
| Verified contact emails at scale | Verification is expensive | Hybrid: licensed data + periodic verification |
| Intent signals (Bombora-grade) | True content-consumption intent requires partnership | Proxy intent from events + optional Bombora license |
| Media spend data (Winmo-grade) | Proprietary aggregation | Estimated spend from public ad libraries + models |
| Signal scoring | Requires ML tuning | Rule-based v1 → ML v2 |
| Brand–agency mapping | Relationship data is hard | Start with public case studies + manual curation |

### 11.3 What Is Not Feasible in v1 (Low Confidence / Not Recommended)

| Capability | Why Not Feasible | Recommendation |
|------------|------------------|----------------|
| ZoomInfo-scale database (100M+ companies, 500M+ contacts) | Requires years + $100M+ investment | Target 100K–500K quality records in vertical |
| 95%+ contact accuracy claim | Requires human research team at scale | Set honest accuracy targets (80–85%); show verification status |
| Real-time intent streaming | Needs publisher network + Bombora | Daily batch refresh; label "Updated daily" |
| Website visitor identification | Identity graph + pixel at scale | **Out of scope v1** |
| Org charts with reporting lines | LinkedIn-dependent; legal/ToS risk | **Out of scope v1** |
| Bi-directional CRM sync | Conflict resolution, field mapping complexity | One-way export v1 |
| Full Microsoft SSO + SSO for all IdPs | Incremental OAuth work | Google first (done); Microsoft Phase 3 |

---

## 12. Workarounds & Phased Deferrals

| Desired Feature | Workaround / Phased Approach | Phase |
|-----------------|------------------------------|-------|
| **True intent data** | (1) License Bombora/6sense feed; OR (2) **Proxy intent** from composite signals: hiring + funding + tech changes + ad spend increases | 2–3 |
| **Media spend (exact)** | **Estimated ad spend** tiers (Low/Medium/High/$X–$Y) from Meta/Google ad library signals + industry benchmarks; label as "Estimated" | 2 |
| **Brand–agency mapping** | Start with **curated dataset** (top 5K brands) + NLP extraction from press releases; expand via user feedback | 2–3 |
| **Contact verification** | Show **verification status** (Verified / Likely / Unverified); gate "Verified" badge on SMTP/DNS checks for exported subset | 2 |
| **AI opportunity score** | **Rule-based scoring v1** (weighted signals); ML model v2 with conversion feedback | 3 |
| **Real-time alerts** | **Daily/weekly batch** diff on saved searches; email with CSV attachment | 3 |
| **Workflow event triggers** | Scheduled runs (daily/weekly) for v1; event-stream triggers in v2 | 3 |
| **CRM bi-directional sync** | One-way push; users manually manage duplicates in CRM | 2–3 |
| **6 topic limit** | Enforce in UI; upsell Enterprise for more | 2 |
| **Limited free tier hook** | Optional: limited HubSpot export on Starter (ZoomInfo Lite precedent) | 4 (optional) |

---

## 13. Assumptions & Dependencies

### 13.1 Assumptions

| ID | Assumption |
|----|------------|
| A1 | Target market is **US-first**; international expansion deferred |
| A2 | Primary wedge vertical: **advertising, media, and marketing services** |
| A3 | Users accept **daily-refreshed** intent/signals (not real-time) for v1 |
| A4 | **Work email required** for signup reduces fraud and aligns with B2B |
| A5 | CodeIgniter 4 / PHP 8.2 remains the web application framework for Phase 2 |
| A6 | MySQL (cms) remains system of record for users, billing metadata, saved searches |
| A7 | A **separate search service** (OpenSearch/Elasticsearch) will be introduced for product data |
| A8 | Third-party **data licensing budget** ($50K–$200K/year) is approved for Phase 2 |
| A9 | **OpenAI or Anthropic API** approved for AI features (Intelligence tier) |
| A10 | **Stripe** is the payment provider for self-serve billing |
| A11 | Single **workspace per account** in v1 (no multi-workspace) |
| A12 | Admin role maps 1:1 to account owner who manages billing |
| A13 | Media spend figures shown as **estimates** unless sourced from verified vendor data |
| A14 | Design mocks in `design.admedia.com/aoll/` are approved for implementation |
| A16 | An **existing web scraper** dumps scraped data into DB/staging and remains a primary ingestion source |
| A17 | **CSV/Excel upload** is admin-only (not customer-facing) for bulk data enrichment |

### 13.2 Dependencies

| Dependency | Owner | Required By |
|------------|-------|-------------|
| Scraper infrastructure (existing) | Data Engineering | Phase 2 |
| CSV/Excel upload UI + import API | Engineering | Phase 2 |
| Intent data source (Bombora or proxy pipeline) | Data Engineering | Phase 3 |
| Stripe account + webhook infrastructure | Engineering | Phase 3 |
| HubSpot Developer App + Salesforce Connected App | Engineering | Phase 3 |
| OpenAI/Anthropic API keys + usage budget | Engineering / Finance | Phase 4 |
| OpenSearch/Elasticsearch cluster | DevOps | Phase 2 |
| CMS MySQL schema migrations | DBA / Engineering | Phase 2 |
| Legal review: ToS, Privacy, data sourcing | Legal | Phase 2 |

---

## 14. Risks & Mitigations

| Risk | Impact | Likelihood | Mitigation |
|------|--------|------------|------------|
| Data quality insufficient for paid conversion | High | Medium | License reputable base data; vertical focus; show verification status |
| Ad-spend estimates inaccurate | High | High | Label as estimates; confidence scores; improve with proprietary sources |
| Intent data without Bombora feels weak | Medium | Medium | Proxy intent composite; clear UX on signal source |
| ZoomInfo/Winmo competitive response | Medium | Low | Wedge on self-serve + media vertical |
| CRM API rate limits break workflows | Medium | Medium | Queue + backoff; batch exports |
| AI hallucination in outreach | Medium | Medium | Ground in company facts; disclaimer; human review prompt |
| LinkedIn/scraping ToS violations | High | Medium | Use licensed data only; no scraping in product |
| Scope creep (org charts, WebSights) | High | Medium | Enforce non-goals; phased roadmap |
| Stripe/chargeback on annual plans | Low | Low | Clear refund policy; trial period |

---

## 15. Release Roadmap

### Phase 2 — Core Data MVP (Weeks 1–12)
**Goal:** Real search that demonstrates data credibility

- Company/Brand/Agency database (100K records, target vertical)
- Contact data (linked to companies)
- **Data ingestion:** existing web scraper → DB, **CSV/Excel bulk upload** (admin), optional licensed vendor API
- OpenSearch index + Advanced Search (real results)
- Company profile page
- CSV export
- Usage metering (searches, contact views)
- Entity resolution pipeline v1

**Exit criteria:** User can search, filter, view company, export CSV; P95 search < 2s; admin can upload CSV/Excel and see records indexed.

### Phase 3 — Signals & Engagement (Weeks 13–20)
**Goal:** Answer "why reach out now?"

- Scoops ingestion pipeline
- Intent topics + signal scoring (proxy or licensed)
- Home feed personalization
- Saved searches + in-app alerts
- Email alert digests (AA-60 templates)
- Stripe billing + tier enforcement

**Exit criteria:** Saved search alerts fire on schedule; paid upgrade works.

### Phase 4 — Integrations & Automation (Weeks 21–28)
**Goal:** Data flows into CRM

- HubSpot + Salesforce OAuth + export
- Workflows engine
- Team management (Enterprise)
- CRM sync failure emails

**Exit criteria:** Workflow exports contacts to HubSpot weekly.

### Phase 5 — AI & Enterprise (Weeks 29–36)
**Goal:** Differentiation and enterprise readiness

- AI Opportunity Score + summaries
- AI Outreach generation
- REST API (Enterprise)
- Custom intelligence feeds (Enterprise)
- Excel export

**Exit criteria:** Intelligence tier user generates outreach from company page.

---

## 16. Open Questions & Decision Log

| # | Question | Owner | Status | Decision |
|---|----------|-------|--------|----------|
| Q1 | Which data vendor for base company/contact data? | Business | Open | TBD — evaluate Apollo, Clearbit, Explorium |
| Q2 | Bombora intent license vs. proxy-only for v1? | Product / Data | Open | Recommend proxy v1, Bombora Phase 3+ |
| Q3 | Exact usage limits per tier? | Product | Open | Draft limits in Stripe spec |
| Q4 | Free trial duration and plan? | Product | Open | Recommend 14-day Professional trial |
| Q5 | Multi-seat pricing model? | Product / Finance | Open | Per-seat add-on for Enterprise |
| Q6 | Pipedrive integration priority? | Product | Deferred | Post-Salesforce/HubSpot |
| Q7 | Separate data service vs. monolith? | Engineering | Open | Recommend search microservice |
| Q8 | Ad-spend data: build vs. license (Kantar, Pathmatics)? | Business | Open | Hybrid: public libraries + estimates |

---

## 17. Appendices

### Appendix A — Jira Ticket Mapping

| Module | Tickets |
|--------|---------|
| Epic | AA-25 |
| Design | AA-27 (Done) |
| Auth | AA-38 |
| Home | AA-39 |
| Intent | AA-40 |
| Search | AA-41 |
| Connectors | AA-42 |
| Users | AA-43 |
| Saved | AA-44 |
| Alerts | AA-45 |
| Workflows | AA-46 |
| Website | AA-47 |
| Email templates | AA-60, AA-61 (Done) |
| Releases | CHGREL-1255, CHGREL-1269 |

### Appendix B — Signal Type Reference

**Feed / Scoop categories:** Funding, Leadership, Product, Executive, Open Position, Event, M&A, Expansion, Hiring, Technology Change, Increased Advertising Activity.

**Alert categories:** Stakeholders & Leadership, Hiring & Team Growth, Funding & Financials, Product & Launches, Expansion & Growth, M&A & Corporate, Others.

### Appendix C — Document History

| Version | Date | Author | Changes |
|---------|------|--------|---------|
| 1.0 | 2026-07-27 | Product Management | Initial PRD |

---

*This document is the authoritative product requirements reference for AOLL Phases 2–5. Engineering implementation details are specified in the Technical Specification and Architecture documents.*
