{"id":"11cc261d-772e-4f8e-96e0-e5fbba10a0a9","entityType":"agent","slug":"crewai-honestlybroke-financial-document-analyzer-debug","name":"financial-document-analyzer-debug","canonicalUrl":"https://www.xpersona.co/agent/crewai-honestlybroke-financial-document-analyzer-debug","canonicalPath":"/agent/crewai-honestlybroke-financial-document-analyzer-debug","generatedAt":"2026-10-09T01:02:36.049Z","source":"GITHUB_OPENCLEW","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-05-19T06:58:50.873Z","emptyReason":null},"description":"An AI-powered financial document analyzer using CrewAI & FastAPI. Extracts metrics, assesses risk, and provides investment insights from PDFs. Financial Document Analyzer 🚀 **Live Demo:** $1 An AI-powered financial document analysis system built with **CrewAI** and **FastAPI**. Upload a financial PDF (e.g., Tesla Q2 2025 earnings report) and receive a comprehensive analysis including document verification, financial metrics extraction, investment recommendations, and risk assessment. Table of Contents - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 --- Architectur","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. Last updated 5/19/2026.","installCommand":"git clone https://github.com/honestlyBroke/financial-document-analyzer-debug.git","sourceUrl":"https://github.com/honestlyBroke/financial-document-analyzer-debug","homepage":null,"primaryLinks":[{"label":"View Source","url":"https://github.com/honestlyBroke/financial-document-analyzer-debug","kind":"source"}],"safetyScore":66,"overallRank":19.2,"popularityScore":0,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"An AI-powered financial document analyzer using CrewAI & FastAPI. Extracts metrics, assesses risk, and provides investment insights from PDFs. Financial Documen"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-05-19T06:58:50.873Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[{"label":"crewai","status":"self-declared"},{"label":"multi-agent","status":"self-declared"}],"verifiedCount":0,"selfDeclaredCount":3,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"},{"key":"crewai","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"},{"key":"multi-agent","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"}},"adoption":{"evidence":{"source":"no-adoption-signals","verified":false,"confidence":"low","updatedAt":"2026-05-19T06:58:50.873Z","emptyReason":"No source adoption metrics were available."},"stars":0,"forks":0,"downloads":null,"packageName":null,"latestVersion":null,"tractionLabel":null},"release":{"evidence":{"source":"agent-index","verified":false,"confidence":"medium","updatedAt":"2026-05-19T06:58:50.872Z","emptyReason":null},"lastUpdatedAt":"2026-05-19T06:58:50.873Z","lastCrawledAt":"2026-05-19T06:58:50.872Z","lastIndexedAt":null,"nextCrawlAt":"2026-05-26T06:58:50.872Z","lastVerifiedAt":null,"highlights":[]},"execution":{"evidence":{"source":"GITHUB OPENCLEW","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"git clone https://github.com/honestlyBroke/financial-document-analyzer-debug.git","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/crewai-honestlybroke-financial-document-analyzer-debug/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/crewai-honestlybroke-financial-document-analyzer-debug/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/crewai-honestlybroke-financial-document-analyzer-debug/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/crewai-honestlybroke-financial-document-analyzer-debug/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/crewai-honestlybroke-financial-document-analyzer-debug/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/crewai-honestlybroke-financial-document-analyzer-debug/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"GITHUB_OPENCLEW","generatedAt":"2026-10-09T01:02:36.049Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/crewai-honestlybroke-financial-document-analyzer-debug/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/crewai-honestlybroke-financial-document-analyzer-debug/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/crewai-honestlybroke-financial-document-analyzer-debug/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/crewai-honestlybroke-financial-document-analyzer-debug/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"GITHUB OPENCLEW","verified":false,"confidence":"high","updatedAt":"2026-05-19T06:58:50.873Z","emptyReason":null},"readme":"# Financial Document Analyzer\n\n🚀 **Live Demo:** [https://finance.yato.foo/](https://finance.yato.foo/)\n\nAn AI-powered financial document analysis system built with **CrewAI** and **FastAPI**. Upload a financial PDF (e.g., Tesla Q2 2025 earnings report) and receive a comprehensive analysis including document verification, financial metrics extraction, investment recommendations, and risk assessment.\n\n## Table of Contents\n\n- [Architecture](#architecture)\n- [Frontend](#frontend)\n- [Setup & Installation](#setup--installation)\n- [Docker Deployment](#docker-deployment)\n- [API Documentation](#api-documentation)\n- [Bugs Found & Fixes Applied](#bugs-found--fixes-applied)\n- [Prompt Engineering Improvements](#prompt-engineering-improvements)\n- [Bonus: Scaling Architecture](#bonus-scaling-architecture)\n\n---\n\n## Architecture\n\nThe system uses a **CrewAI sequential pipeline** with four specialized agents:\n\n```\nUpload PDF → Verifier → Financial Analyst → Investment Advisor → Risk Assessor → Response\n```\n\n| Agent | Role |\n|---|---|\n| **Verifier** | Validates the document is a legitimate financial report |\n| **Financial Analyst** | Extracts key metrics (revenue, EPS, margins, cash flow) |\n| **Investment Advisor** | Provides data-driven investment recommendations |\n| **Risk Assessor** | Identifies and rates financial risks with mitigation strategies |\n\n---\n\n## Frontend\n\nThe app includes a retro **NES.css**-styled single-page frontend served directly by FastAPI at the root URL (`/`). No build step required.\n\n**Features:**\n- **Analyze** — Upload a PDF, enter a query, choose sync or async mode, view results\n- **History** — Browse past analyses stored in MongoDB\n- **Status** — Live health check showing API, MongoDB, and Celery worker status\n- Async mode includes real-time progress polling with a retro progress bar\n\nThe frontend uses [NES.css](https://nostalgic-css.github.io/NES.css/) v2.3.0 with the Press Start 2P font for an 8-bit aesthetic.\n\n---\n\n## Setup & Installation\n\n### Prerequisites\n\n- **Python 3.12** (required — `crewai-tools==0.47.1` depends on `embedchain` which does not support Python 3.13+)\n- An [OpenRouter API key](https://openrouter.ai/) (used for Gemini 2.0 Flash via OpenRouter)\n- A [Serper API key](https://serper.dev/) (for web search)\n\n### Steps\n\n```bash\n# 1. Clone the repository\ngit clone https://github.com/honestlyBroke/financial-document-analyzer-debug.git\ncd financial-document-analyzer-debug\n\n# 2. Create and activate a virtual environment with Python 3.12\npython3.12 -m venv venv       # or: /path/to/python3.12 -m venv venv\nsource venv/bin/activate       # On Windows: venv\\Scripts\\activate\n\n# 3. Install dependencies\npip install -r requirements.txt\n\n# 4. Configure environment variables\ncp .env.example .env\n# Edit .env and add your API keys:\n#   OPENROUTER_API_KEY=sk-or-...\n#   SERPER_API_KEY=your_serper_api_key\n\n# 5. Run the server\ncd src\npython main.py\n```\n\nThe API will be available at `http://localhost:8000`.\n\n### Sample Document\n\nA Tesla Q2 2025 financial update PDF is included at `data/TSLA-Q2-2025-Update.pdf`.\n\n---\n\n## Docker Deployment\n\nThe project includes a full Docker Compose setup for production deployment.\n\n```bash\n# 1. Clone and configure\ngit clone https://github.com/honestlyBroke/financial-document-analyzer-debug.git\ncd financial-document-analyzer-debug\ncp .env.example .env\n# Edit .env with your API keys\n\n# 2. Build and start all services\ndocker compose up -d --build\n\n# 3. Check logs\ndocker compose logs -f\n```\n\nThis starts 4 services:\n- **app** — FastAPI server (port 8000)\n- **celery_worker** — Background task processor\n- **redis** — Message broker for Celery\n- **mongodb** — Persistent storage for analysis results\n\nAll containers join the `nginx-network` for use with Nginx Proxy Manager.\n\n---\n\n## API Documentation\n\n### `GET /`\n\nServes the frontend UI.\n\n### `GET /api/health`\n\nHealth check endpoint.\n\n**Response:**\n```json\n{\"message\": \"Financial Document Analyzer API is running\"}\n```\n\n### `POST /analyze`\n\nUpload a financial PDF and receive a comprehensive analysis.\n\n**Request** (multipart/form-data):\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `file` | File (PDF) | Yes | The financial document to analyze |\n| `query` | String | No | Specific analysis question (default: \"Analyze this financial document for investment insights\") |\n\n**Example using cURL:**\n```bash\ncurl -X POST http://localhost:8000/analyze \\\n  -F \"file=@data/TSLA-Q2-2025-Update.pdf\" \\\n  -F \"query=What are Tesla's key financial metrics for Q2 2025?\"\n```\n\n**Response:**\n```json\n{\n  \"status\": \"success\",\n  \"query\": \"What are Tesla's key financial metrics for Q2 2025?\",\n  \"analysis\": \"...(comprehensive multi-agent analysis)...\",\n  \"file_processed\": \"TSLA-Q2-2025-Update.pdf\",\n  \"output_saved\": \"outputs/analysis_<uuid>.json\"\n}\n```\n\n### `POST /analyze/async`\n\nSubmit a document for background analysis via Celery. Returns immediately. Requires Redis + Celery worker.\n\n**Request:** Same as `POST /analyze`.\n\n**Response:**\n```json\n{\n  \"status\": \"queued\",\n  \"task_id\": \"a1b2c3d4-...\",\n  \"celery_task_id\": \"...\",\n  \"message\": \"Analysis submitted. Poll GET /result/{task_id} for results.\"\n}\n```\n\n### `GET /result/{task_id}`\n\nPoll for the result of an async analysis task.\n\n**Response (complete):**\n```json\n{\n  \"status\": \"success\",\n  \"task_id\": \"a1b2c3d4-...\",\n  \"query\": \"...\",\n  \"filename\": \"TSLA-Q2-2025-Update.pdf\",\n  \"analysis\": \"...(comprehensive multi-agent analysis)...\"\n}\n```\n\n### `GET /analyses`\n\nList past analyses from MongoDB (most recent first). Supports `?limit=20&skip=0` pagination.\n\n### `GET /analyses/{task_id}`\n\nRetrieve a specific past analysis from MongoDB by its `task_id`.\n\n**Interactive docs:** Visit `http://localhost:8000/docs` for the Swagger UI.\n\n---\n\n## Bugs Found & Fixes Applied\n\n### tools.py (6 bugs)\n\n| # | Bug | Fix |\n|---|---|---|\n| 1 | `from crewai_tools import tools` — wrong import, `tools` does not exist as a module export | Changed to `from crewai.tools import tool` (the `@tool` decorator) and `from crewai_tools import SerperDevTool` |\n| 2 | `Pdf(file_path=path).load()` — `Pdf` class is never imported and does not exist | Replaced with `pypdf.PdfReader` which is the standard Python PDF reader |\n| 3 | `async def read_data_tool(path=...)` inside a class — CrewAI tools cannot be async coroutines | Converted to a synchronous function decorated with `@tool` |\n| 4 | Methods inside classes missing `self` parameter (`read_data_tool`, `analyze_investment_tool`, `create_risk_assessment_tool`) | Converted from class methods to standalone `@tool`-decorated functions (CrewAI pattern) |\n| 5 | Tools defined as class methods but CrewAI expects callable tool objects | Used `@tool(\"Tool Name\")` decorator which is the correct CrewAI tool pattern |\n| 6 | `SerperDevTool` imported via wrong path `from crewai_tools.tools.serper_dev_tool import SerperDevTool` | Changed to `from crewai_tools import SerperDevTool` (public API) |\n\n### agents.py (7 bugs)\n\n| # | Bug | Fix |\n|---|---|---|\n| 1 | `llm = llm` — self-referencing undefined variable, causes `NameError` | Changed to `llm = LLM(model=\"openrouter/google/gemini-2.0-flash-001\", api_key=os.getenv(\"OPENROUTER_API_KEY\"))` |\n| 2 | `from crewai.agents import Agent` — wrong import path | Changed to `from crewai import Agent, LLM` |\n| 3 | `tool=[FinancialDocumentTool.read_data_tool]` — parameter name is `tools` (plural), and the value was a class method reference | Changed to `tools=[read_data_tool, search_tool]` with proper tool function imports |\n| 4 | `max_iter=1` on all agents — limits agents to 1 iteration, making them unable to complete multi-step analysis | Increased to `max_iter=25` |\n| 5 | `max_rpm=1` on all agents — limits to 1 request per minute, causing extreme throttling | Increased to `max_rpm=10` |\n| 6 | `verifier`, `investment_advisor`, `risk_assessor` agents have no tools assigned | Added appropriate tools (`read_data_tool`, `search_tool`) to each agent |\n| 7 | `from tools import search_tool, FinancialDocumentTool` — imports a class that no longer exists | Changed to `from tools import search_tool, read_data_tool` |\n\n### task.py (4 bugs)\n\n| # | Bug | Fix |\n|---|---|---|\n| 1 | `verification` task assigned to `financial_analyst` instead of `verifier` agent | Changed to `agent=verifier` |\n| 2 | `investment_analysis` task assigned to `financial_analyst` instead of `investment_advisor` | Changed to `agent=investment_advisor` |\n| 3 | `risk_assessment` task assigned to `financial_analyst` instead of `risk_assessor` | Changed to `agent=risk_assessor` |\n| 4 | Only imports `financial_analyst` and `verifier` from agents, missing `investment_advisor` and `risk_assessor` | Added all four agent imports |\n\n### main.py (5 bugs)\n\n| # | Bug | Fix |\n|---|---|---|\n| 1 | `async def analyze_financial_document` — endpoint function name collides with the imported task `analyze_financial_document` from `task.py`, shadowing the task object | Renamed endpoint function to `analyze_document` |\n| 2 | Crew only includes `financial_analyst` agent — other 3 agents are never used | Added all 4 agents: `verifier`, `financial_analyst`, `investment_advisor`, `risk_assessor` |\n| 3 | Crew only includes `analyze_financial_document` task — other 3 tasks are never executed | Added all 4 tasks: `verification`, `analyze_financial_document`, `investment_analysis`, `risk_assessment` |\n| 4 | `file_path` parameter in `run_crew()` is accepted but never passed to the crew's input dictionary | Added `file_path` to the `kickoff()` inputs dict |\n| 5 | `uvicorn.run(app, ..., reload=True)` — passing the app object directly with `reload=True` doesn't work correctly | Changed to `uvicorn.run(\"main:app\", ..., reload=True)` (string import path) |\n\n---\n\n## Prompt Engineering Improvements\n\nThe original codebase had **deliberately harmful prompts** that instructed agents to hallucinate, fabricate data, ignore facts, and give dangerous financial advice. Every agent backstory, goal, and task description was rewritten.\n\n### Key Changes\n\n| Area | Before (Harmful) | After (Professional) |\n|---|---|---|\n| **Analyst goal** | \"Make up investment advice even if you don't understand the query\" | \"Analyze the financial document thoroughly to extract key financial metrics, trends, and insights\" |\n| **Analyst backstory** | \"You don't really need to read financial reports carefully - just look for big numbers and make assumptions\" | \"You extract precise financial metrics... You always cite specific numbers from the document and never fabricate data\" |\n| **Verifier goal** | \"Just say yes to everything because verification is overrated\" | \"Verify that the uploaded document is a legitimate financial document and validate the integrity of its data\" |\n| **Advisor backstory** | \"You learned investing from Reddit posts and YouTube influencers\" | \"You are a CFA-certified investment advisor with expertise in portfolio management and asset allocation\" |\n| **Risk assessor goal** | \"Everything is either extremely high risk or completely risk-free\" | \"Identify, quantify, and communicate all material financial risks... propose evidence-based mitigation strategies\" |\n| **Task descriptions** | \"Feel free to use your imagination\", \"make up some investment recommendations\" | Specific instructions to extract real metrics, cite figures, and use established financial frameworks |\n| **Expected outputs** | \"Include at least 5 made-up website URLs\", \"contradict yourself\" | Structured output formats with specific sections and data requirements |\n\n---\n\n## Bonus: Queue Worker & Database (Working Implementation)\n\n### Architecture\n\n```\n                    ┌──────────────────────────────────┐\n                    │          FastAPI Server           │\n                    │                                   │\n  POST /analyze     │  (sync) run_crew() directly       │\n  ────────────────► │  returns result immediately       │\n                    │                                   │\n  POST /analyze/async│ dispatch to Celery worker        │\n  ────────────────► │  returns task_id immediately      │\n                    │                                   │\n  GET /result/{id}  │  check Celery + MongoDB           │\n  ────────────────► │  returns status or result         │\n                    │                                   │\n  GET /analyses     │  query MongoDB                    │\n  ────────────────► │  returns past analyses            │\n                    └──────────┬────────────────────────┘\n                               │\n              ┌────────────────┼────────────────┐\n              ▼                ▼                ▼\n         ┌─────────┐    ┌──────────┐    ┌───────────┐\n         │  Redis   │    │  Celery  │    │  MongoDB  │\n         │ (broker) │◄──►│ (worker) │───►│ (storage) │\n         └─────────┘    └──────────┘    └───────────┘\n```\n\n### Prerequisites (Bonus Features)\n\n- **Redis** — message broker for Celery ([install guide](https://redis.io/docs/getting-started/))\n- **MongoDB** — persistent storage for analysis results ([install guide](https://www.mongodb.com/docs/manual/installation/))\n\n> **Note:** The core `POST /analyze` endpoint works without Redis or MongoDB. The bonus features are additive.\n\n### Setup\n\n```bash\n# 1. Start Redis (default port 6379)\nredis-server\n\n# 2. Start MongoDB (default port 27017)\nmongod\n\n# 3. Add to your .env file (optional — defaults shown below):\nREDIS_URL=redis://localhost:6379/0\nREDIS_BACKEND=redis://localhost:6379/1\nMONGODB_URL=mongodb://localhost:27017\n\n# 4. Start the Celery worker (in a separate terminal, with venv activated)\ncd src\ncelery -A celery_app worker --loglevel=info --pool=solo\n\n# 5. Start the FastAPI server (in another terminal)\ncd src\npython main.py\n```\n\n### New API Endpoints\n\n#### `POST /analyze/async`\n\nSubmit a document for **background processing**. Returns immediately with a `task_id`.\n\n```bash\ncurl -X POST http://localhost:8000/analyze/async \\\n  -F \"file=@data/TSLA-Q2-2025-Update.pdf\" \\\n  -F \"query=What are Tesla's key risks?\"\n```\n\n**Response:**\n```json\n{\n  \"status\": \"queued\",\n  \"task_id\": \"a1b2c3d4-...\",\n  \"celery_task_id\": \"...\",\n  \"message\": \"Analysis submitted. Poll GET /result/{task_id} for results.\"\n}\n```\n\n#### `GET /result/{task_id}`\n\nPoll for the result of an async analysis.\n\n```bash\ncurl http://localhost:8000/result/a1b2c3d4-...\n```\n\n**Response (processing):**\n```json\n{\"status\": \"processing\", \"task_id\": \"a1b2c3d4-...\", \"message\": \"Analysis is in progress.\"}\n```\n\n**Response (complete):**\n```json\n{\n  \"status\": \"success\",\n  \"task_id\": \"a1b2c3d4-...\",\n  \"query\": \"What are Tesla's key risks?\",\n  \"filename\": \"TSLA-Q2-2025-Update.pdf\",\n  \"analysis\": \"...(comprehensive multi-agent analysis)...\"\n}\n```\n\n#### `GET /analyses`\n\nList past analyses stored in MongoDB (most recent first).\n\n```bash\ncurl \"http://localhost:8000/analyses?limit=10&skip=0\"\n```\n\n#### `GET /analyses/{task_id}`\n\nRetrieve a specific past analysis from MongoDB.\n\n```bash\ncurl http://localhost:8000/analyses/a1b2c3d4-...\n```\n\n### Key Files\n\n| File | Purpose |\n|---|---|\n| `src/main.py` | FastAPI endpoints (sync + async + history) + frontend serving |\n| `src/agents.py` | CrewAI agent definitions with OpenRouter LLM |\n| `src/task.py` | CrewAI task definitions for the analysis pipeline |\n| `src/tools.py` | PDF reader tool + SerperDev search tool |\n| `src/celery_app.py` | Celery app + `run_analysis_task` background task |\n| `src/db.py` | MongoDB client with CRUD operations for analyses |\n| `static/index.html` | NES.css retro frontend (single-page app) |\n| `Dockerfile` | Container image definition |\n| `docker-compose.yml` | Full-stack deployment (app + worker + Redis + MongoDB) |\n","readmeExcerpt":"Financial Document Analyzer 🚀 **Live Demo:** $1 An AI-powered financial document analysis system built with **CrewAI** and **FastAPI**. Upload a financial PDF (e.g., Tesla Q2 2025 earnings report) and receive a comprehensive analysis including document verification, financial metrics extraction, investment recommendations, and risk assessment. Table of Contents - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 --- Architectur","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"Upload PDF → Verifier → Financial Analyst → Investment Advisor → Risk Assessor → Response"},{"language":"bash","snippet":"# 1. Clone the repository\ngit clone https://github.com/honestlyBroke/financial-document-analyzer-debug.git\ncd financial-document-analyzer-debug\n\n# 2. Create and activate a virtual environment with Python 3.12\npython3.12 -m venv venv       # or: /path/to/python3.12 -m venv venv\nsource venv/bin/activate       # On Windows: venv\\Scripts\\activate\n\n# 3. Install dependencies\npip install -r requirements.txt\n\n# 4. Configure environment variables\ncp .env.example .env\n# Edit .env and add your API keys:\n#   OPENROUTER_API_KEY=sk-or-...\n#   SERPER_API_KEY=your_serper_api_key\n\n# 5. Run the server\ncd src\npython main.py"},{"language":"bash","snippet":"# 1. Clone and configure\ngit clone https://github.com/honestlyBroke/financial-document-analyzer-debug.git\ncd financial-document-analyzer-debug\ncp .env.example .env\n# Edit .env with your API keys\n\n# 2. Build and start all services\ndocker compose up -d --build\n\n# 3. Check logs\ndocker compose logs -f"},{"language":"json","snippet":"{\"message\": \"Financial Document Analyzer API is running\"}"},{"language":"bash","snippet":"curl -X POST http://localhost:8000/analyze \\\n  -F \"file=@data/TSLA-Q2-2025-Update.pdf\" \\\n  -F \"query=What are Tesla's key financial metrics for Q2 2025?\""},{"language":"bash","snippet":"curl -X POST http://localhost:8000/analyze \\\n  -F \"file=@data/TSLA-Q2-2025-Update.pdf\" \\\n  -F \"query=What are Tesla's key financial metrics for Q2 2025?\""}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[],"languages":["python"],"docsSourceLabel":"GITHUB OPENCLEW","editorialOverview":"An AI-powered financial document analyzer using CrewAI & FastAPI. Extracts metrics, assesses risk, and provides investment insights from PDFs. Financial Document Analyzer 🚀 **Live Demo:** $1 An AI-powered financial document analysis system built with **CrewAI** and **FastAPI**. Upload a financial PDF (e.g., Tesla Q2 2025 earnings report) and receive a comprehensive analysis including document verification, financial metrics extraction, investment recommendations, and risk assessment. Table of Contents - $1 - $1 - $1 - $1 - $1 - $1 - $1 - $1 --- Architectur","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":388,"uniquenessScore":64,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-05-19T06:58:50.873Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-05-19T06:58:50.873Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T01:02:36.049Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/github_openclew","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}