AUDIT-2026-Q3.md §Hallucinated features flagged that FEATURES.md claimed
Zoho CRM sync but no code existed. The codebase now ships Salesforce,
HubSpot, Pipedrive, and Close.com in crm_sync.py — no Zoho.
This commit enforces doc-vs-code parity:
- Remove the Zoho row from FEATURES.md
- Strip '~~Zoho~~' from USAGE.md and ARCHITECTURE.md
- Move ROADMAP.md from '✅ Zoho CRM sync' to '⏸ deferred'
- Add crm_sync_zoho.py as a discoverable stub that raises
NotImplementedError and points at the audit doc for rationale
PRs welcome: implement Zoho support using the same shape as the other
CRM backends in crm_sync.py.
11 KiB
11 KiB
//: # (Copyright (c) 2026 Rug Munch Media LLC)
title: Pry Feature Catalog status: canonical owner: Rug Munch Media LLC Engineering last_updated: 2026-06-30
Pry Feature Catalog
Scraping & Crawling
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Single URL scrape | scraper.py |
POST /v1/scrape |
✅ |
| Multi-page crawl | scraper.py |
POST /v1/crawl |
✅ |
| Batch scrape (parallel) | advanced.py |
POST /v1/batch |
✅ |
| Batch from file + template | advanced.py |
POST /v1/batch-file |
✅ |
| URL discovery (sitemap) | scraper.py |
POST /v1/map |
✅ |
| Link analysis | scraper.py |
POST /v1/links |
✅ |
Anti-Detection & Bypass
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| 10-tier fallback scraper | ultimate_scraper.py |
Internal | ✅ |
| Block detection | adaptive.py |
POST /v1/detect-block |
✅ |
| Adaptive strategy rotation | adaptive.py |
Internal | ✅ |
| Browser pool + pre-warming | browser_pool.py |
Internal | ✅ |
| Stealth engine (6 JS scripts) | stealth_engine.py |
Internal | ✅ |
| Stealth scripts | stealth_scripts/ |
Injected | ✅ |
| Tor proxy routing (tier documented but disabled) | network.py |
POST /v1/config/profile/tor |
⚠️ aiohttp-socks missing |
| SOCKS5 proxy support | network.py |
Config | ✅ |
| User-agent rotation | scraper.py |
Internal | ✅ |
Document Parsing
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| PDF parsing | parser.py |
POST /v1/parse |
✅ |
| DOCX parsing | parser.py |
POST /v1/parse |
✅ |
| Image OCR | parser.py |
POST /v1/parse |
✅ |
| CSV parsing | parser.py |
POST /v1/parse |
✅ |
| JSON parsing | parser.py |
POST /v1/parse |
✅ |
| Shadow DOM extraction | shadow_dom.py |
POST /v1/shadow-dom |
✅ |
| Lazy load / infinite scroll | lazy_load.py |
POST /v1/capture/lazy |
✅ |
Extraction & Structured Data
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| JSON schema extraction | extractor.py |
POST /v1/extract |
✅ |
| LLM extraction + chunking | extraction.py |
POST /v1/extract/llm |
✅ |
| Schema.org / JSON-LD | extractor.py |
POST /v1/schema |
✅ |
| Email address extraction | extractor.py |
POST /v1/emails |
✅ |
| Structured field extraction | extraction.py |
POST /v1/extract/fields |
✅ |
| Field suggestion (AI) | advanced.py |
POST /v1/suggest |
✅ |
AI & Vision
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Vision AI (OpenRouter, 5-model fallback) | advanced.py |
POST /v1/vision |
✅ |
| AI summarization (Ollama) | advanced.py |
POST /v1/summarize |
✅ |
| AI categorization | advanced.py |
POST /v1/categorize |
✅ |
| GPT Action manifest | ai_plugin.py |
GET /v1/ai/gpt-manifest |
✅ |
| MCP server config | ai_plugin.py |
GET /v1/ai/mcp-config |
✅ |
mcp_server.py |
GET /mcp/tools |
⚠️ not in api.py |
|
mcp_server.py |
POST /mcp/call |
⚠️ not in api.py |
GET /mcp/toolsandPOST /mcp/callexist only inmcp_production.py, which is not deployed. Usepry mcp serve(stdio transport) for MCP access — see AUDIT-2026-Q3.md.
Browser Automation
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Step-based automation | automator.py |
POST /v1/automate |
✅ |
| Screenshot capture | automator.py |
POST /v1/screenshot |
✅ |
| Persistent browser sessions | sessions.py |
POST /v1/session/create |
✅ |
| Session list | sessions.py |
GET /v1/sessions |
✅ |
| Session save/restore | sessions.py |
POST /v1/session/save |
✅ |
| Session close | sessions.py |
POST /v1/session/close |
✅ |
| Action recorder | advanced.py |
POST /v1/record/start |
✅ |
CAPTCHA Solving
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| CAPTCHA solving (6 providers) | captcha_solver.py |
POST /v1/auth/captcha |
✅ |
| Auto-fallback across providers | captcha_solver.py |
Internal | ✅ |
Authentication
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Credential vault (encrypted) | auth_connector.py |
POST /v1/auth/credentials |
✅ |
| SSO login script generation | auth_connector.py |
POST /v1/auth/sso |
✅ |
| Session health check | auth_connector.py |
POST /v1/auth/session/health |
✅ |
| Signup automation | signup_automator.py |
Internal | ✅ |
| Account pool management | account_manager.py |
Internal | ✅ |
Monitoring & Change Detection
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Page watch / change detection | freshness.py |
POST /v1/watch |
✅ |
| Diff tracking | advanced.py |
POST /v1/diff |
✅ |
| Content freshness dashboard | freshness.py |
GET /v1/freshness/dashboard |
✅ |
| Scheduled monitors (cron) | monitor.py |
POST /v1/monitor |
✅ |
| Monitor run on-demand | monitor.py |
POST /v1/monitor/run |
✅ |
| Monitor list / delete | monitor.py |
GET /v1/monitors |
✅ |
| Structure monitoring | structure_monitor.py |
POST /v1/structure/check |
✅ |
Alerts & Notifications
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Multi-channel alerts | alerter.py |
POST /v1/alert/send |
✅ |
| Supported channel listing | alerter.py |
GET /v1/alert/channels |
✅ |
| Webhook support | destinations.py |
Config | ✅ |
| Slack integration | destinations.py |
Config | ✅ |
Quality & Review
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Content quality scoring | quality.py |
POST /v1/quality/check |
✅ |
| Quality history | quality.py |
GET /v1/quality/history |
✅ |
| Human review queue | review.py |
POST /v1/review/submit |
✅ |
| Review approve/reject | review.py |
POST /v1/review/{id}/approve |
✅ |
| Review queue listing | review.py |
GET /v1/reviews |
✅ |
Data Export & Integration
| Feature | Module | Endpoint | Status |
|---|---|---|---|
destinations.py |
POST /v1/export |
⚠️ pryfile.py only does json/csv; RSS/TXT/SQL not implemented |
|
| Webhook delivery | destinations.py |
Config | ✅ |
| S3 upload | destinations.py |
Config | ✅ |
| GCS upload | destinations.py |
Config | ✅ |
| SFTP upload | destinations.py |
Config | ✅ |
| Data transformation | advanced.py |
POST /v1/transform |
✅ |
Commerce & CRM
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| WooCommerce product sync | commerce_sync.py |
POST /v1/commerce/sync |
✅ |
| Shopify product sync | commerce_sync.py |
POST /v1/commerce/sync |
✅ |
| Shopify app backend | shopify-app/ |
External | ✅ |
| Salesforce CRM sync | crm_sync.py |
POST /v1/crm/sync |
✅ |
| HubSpot CRM sync | crm_sync.py |
POST /v1/crm/sync |
✅ |
Pipelines
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Pipeline definition validation | pipelines.py |
POST /v1/pipelines/validate |
✅ |
| Pipeline execution | pipelines.py |
POST /v1/pipelines/run |
✅ |
| Pipeline CRUD | pipelines.py |
CRUD endpoints | ✅ |
| Hook registration | pipeline.py |
POST /v1/pipeline/hook |
✅ |
| Hook execution | pipeline.py |
POST /v1/pipeline/run |
✅ |
| Schema pipeline | pipelines.py |
POST /v1/pipelines/schema |
✅ |
Intelligence & Competitive Analysis
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Competitor snapshot | intelligence.py |
POST /v1/intel/snapshot |
✅ |
| Intel comparison (diff) | intelligence.py |
POST /v1/intel/compare |
✅ |
| Intel report generation | intelligence.py |
GET /v1/intel/report |
✅ |
| Tech stack detection | enrichment.py |
POST /v1/enrichment/analyze |
✅ |
Compliance & GDPR
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Compliance check (URL) | compliance.py |
POST /v1/compliance/check |
✅ |
| Consent recording | gdpr.py |
POST /v1/gdpr/consent |
✅ |
| Consent check / revoke | gdpr.py |
GET /v1/gdpr/consent/{id} |
✅ |
| Data deletion request | gdpr.py |
POST /v1/gdpr/deletion/request |
✅ |
| Deletion execution | gdpr.py |
POST /v1/gdpr/deletion/execute |
✅ |
| Data retention policy | gdpr.py |
GET /v1/gdpr/retention |
✅ |
| Data portability (export) | gdpr.py |
POST /v1/gdpr/export |
✅ |
| Compliance audit log | gdpr.py |
GET /v1/gdpr/audit |
✅ |
Training Data
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| PII/copyright stripping | training_data.py |
POST /v1/training/clean |
✅ |
| Dataset generation | training_data.py |
POST /v1/training/dataset |
✅ |
| Dataset CRUD | training_data.py |
CRUD endpoints | ✅ |
| License classification | training_data.py |
Internal | ✅ |
Agency / White-Label
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Agency profile creation | agency.py |
POST /v1/agency/create |
✅ |
| Agency branding | agency.py |
PUT /v1/agency/{id}/branding |
✅ |
| Client sub-account management | agency.py |
POST /v1/agency/{id}/clients |
✅ |
| Usage analytics | agency.py |
GET /v1/agency/{id}/analytics |
✅ |
| Client quota enforcement | agency.py |
GET /v1/client/{id}/quota |
✅ |
Reporting
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Report generation | reports.py |
POST /v1/reports/generate |
✅ |
| Report list / get | reports.py |
GET /v1/reports |
✅ |
Templates
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| Template listing | template_engine.py |
GET /v1/templates |
✅ |
| Template detail | template_engine.py |
GET /v1/templates/{id} |
✅ |
template_engine.py |
POST /v1/templates/generate |
❌ endpoint not registered in api.py |
|
| Pre-built templates | 110 JSON files | templates/ |
⚠️ ~21/110 pass structural validation; ~30–40% work end-to-end (see AUDIT-2026-Q3.md) |
SEO
| Feature | Module | Endpoint | Status |
|---|---|---|---|
| SEO analysis | seo_monitor.py |
POST /v1/seo/analyze |
✅ |
| SEO change tracking | seo_monitor.py |
POST /v1/seo/track |
✅ |
| Keyword analysis | seo_monitor.py |
POST /v1/seo/keywords |
✅ |
Infrastructure
| Feature | Module | Status |
|---|---|---|
| Health probes (liveness/readiness) | api.py |
✅ |
| Prometheus metrics | api.py |
✅ |
| Rate limiting (token bucket) | ratelimit.py |
✅ |
| LRU cache + Redis | cache.py |
✅ |
| Circuit breaker per-domain | advanced.py |
✅ |
| WebSocket streaming | pryextras.py |
✅ |
| Async job queue | jobqueue.py |
✅ |
| Docker Compose deployment | docker-compose.yml |
✅ |
| CI/CD (GitHub Actions) | .github/workflows/ci.yml |
✅ |
| Pre-commit hooks | .pre-commit-config.yaml |
✅ |
| Browser extension (Chrome) | browser-extension/ |
✅ |
| WordPress plugin | wordpress-plugin/ |
✅ |