Scheduled/recurring report generation with cron-like configuration. Stores TimeZoneId (IANA) to convert user local time to UTC for accurate scheduling.
References Accounts and Jobs
Symbol Lists & Templates
Table Name
Purpose
Key Relationships
symbollists
Named collections of stock symbols for analysis
References Accounts
symbollistitems
Individual stock symbols within a list
References SymbolLists
symbollisttemplates
Pre-built symbol list templates (system-provided or customer-created)
References Accounts (creator), has IsSystemProvided flag
symbollisttemplateitems
Individual stock symbols within a template
References SymbolListTemplates
Files & Storage
Table Name
Purpose
Key Relationships
files
Generated report files with Azure Blob Storage references
References Jobs, Folders, Accounts, CouponCodes
filedownloads
File download tracking and analytics
References Files
folders
Hierarchical file organization with parent/sibling structure
Self-referencing parent/sibling structure
downloads
Bulk download packaging and delivery (ZIP bundles)
References Accounts and Files
Portfolio & Position Reports
Table Name
Purpose
Key Relationships
positionreports
Portfolio position tracking reports with name and description
References Accounts
positionreportlistitems
Individual stock positions (symbol, shares, cost basis) within a report
References PositionReports
AI Analysis
Table Name
Purpose
Key Relationships
claudeanalysisjobs
Claude AI analysis job tracking with status, model selection, and cost
References Accounts
claudeanalysisrequests
Individual file analysis requests within a Claude analysis job
References ClaudeAnalysisJobs, Files
reportcomparisonjobs
Report comparison job tracking with status and date range parameters
References Accounts
reportcomparisonjobsymbollists
Links report comparison jobs to symbol lists being compared
References ReportComparisonJobs and SymbolLists
Billing & Payments
Table Name
Purpose
Key Relationships
charges
Service usage charges with amount, description, billing period, InternalCost, and ChargeType
References Accounts, linked to JobCharges and InvoiceCharges
invoices
Monthly billing invoices with status and payment tracking
References Accounts
invoicecharges
Links itemized charges to invoices
References Invoices and Charges
payments
Payment transaction records processed via Stripe
References Accounts
billingruns
Monthly billing process execution tracking
Tracks billing cycle status and timing
servicepricings
Service pricing configuration, rate management, and CostPerUnit tracking
System-wide pricing rules
couponcodes
Promotional codes and free trial management
Referenced by CouponUsage and Files
couponusage
Tracks coupon code redemption per account
References Accounts, CouponCodes, Jobs
failedpaymentreconciliations
Tracks failed Stripe payments for manual reconciliation
References Accounts
operationalexpenses
Operational expense tracking with Category, Description, Amount, Frequency, ExpenseDate, ExpenseYear, ExpenseMonth for cost and margin analytics
Standalone expense management
Stripe Integration
Table Name
Purpose
Key Relationships
stripewebhookevents
Idempotent Stripe webhook event processing log
Standalone event tracking
striperefunds
Stripe refund transaction records
References Accounts
stripedisputes
Stripe payment dispute/chargeback tracking
References Accounts
Notifications & Messaging
Table Name
Purpose
Key Relationships
emailstosend
Email notification queue with retry support and SendGrid integration
Async email processing
smsstosend
SMS notification queue with retry support and Twilio integration
Async SMS processing
adminnotificationemailaddresses
Admin email addresses for system notification alerts
Standalone admin configuration
Platform & Content Management
Table Name
Purpose
Key Relationships
supportrequests
Customer support tickets with priority, status, and admin response tracking
References Accounts
featurerequests
User-submitted feature ideas with category, status workflow, and admin notes
References Accounts
platformfeedback
Smile/frown sentiment feedback from any page, supports public and authenticated users
Optionally references Accounts
bugreports
Structured bug reports with severity, steps to reproduce, and admin triage status
Optionally references Accounts
knowledgebasearticles
Self-service help center articles with categories, slugs, and publish/draft status
Standalone content management
announcements
Platform-wide announcements with start/end dates and severity levels
Standalone, polled by client apps
changelogentries
Version history and release notes with publish/draft workflow
Standalone content management
maintenancewindows
Scheduled maintenance periods with start/end times and user-facing descriptions
Standalone, polled by client apps
emailpreferences
Per-account email opt-in/opt-out preferences for different notification categories
References Accounts (unique constraint)
blogposts
Blog articles with rich content, categories, slugs, view counts, and publish/draft status
Standalone content management
SEO & Public Ticker Pages
Table
Purpose
Key Relationships
publictickers
Curated tickers published as free SEO grade pages (/grade/{TICKER}), with the cached generation snapshot: grade, grade date, headline stats JSON, Claude summary, and per-ticker generation status
Standalone; unique Ticker; written by SeoPageBuilder
publictickergroups
Named ticker groups/indexes (S&P 500, Nasdaq, Dow Jones from FMP constituents; Russell 2000 via IWM ETF holdings; manual lists), with source type and sync timestamps
Standalone; unique Slug
publictickergroupmembers
Membership of tickers in groups — drives the /grade/ landing page sections and related-ticker internal links
Queue for page-regeneration runs: admin "Refresh & Republish" button and the monthly auto-check enqueue; the SeoPageBuilder VM service polls, executes, and records success/failure counts
Standalone job queue
Logging & Monitoring
Table Name
Purpose
Key Relationships
activitylogentries
Tracks user activity events with type, name, detail, and app source
References Accounts
auditlogs
Tracks entity changes with old/new values for compliance
References Accounts
criticalerrorlogs
Logs critical errors from background processors with resolution tracking
Standalone, indexed by ServiceName and IsResolved
systemhealthchecks
System health monitoring records with disk, memory, CPU, database, API connectivity, and background service status metrics
Standalone, written by HealthMonitor background service
Entity Relationships
Core Relationships
Account → Jobs: One account can have multiple report generation jobs
Job → Files: Each job generates multiple files (Excel, JSON)
Job → JobSymbolLists → SymbolLists: Jobs are linked to symbol lists for report generation
Folder → Files: Files are organized in a hierarchical folder structure
Account → AccountFolders → Folders: Each account has its own folder structure
SymbolList → SymbolListItems: Stock symbols grouped in lists for analysis
SymbolListTemplate → SymbolListTemplateItems: Pre-built template symbol lists (system or customer)
AI & Comparison
Account → ClaudeAnalysisJobs → ClaudeAnalysisRequests: AI analysis jobs with individual file analysis requests
Account → ReportComparisonJobs → ReportComparisonJobSymbolLists: Report comparison jobs linked to symbol lists for period-over-period analysis
Portfolio
Account → PositionReports → PositionReportListItems: Portfolio position tracking with individual holdings
Billing & Payments
Account → Payments: Payment transactions processed via Stripe
Account → CreditCards: Tokenized payment methods on file
Invoice → InvoiceCharges → Charges: Monthly billing with itemized charges
PublicTickers, PublicTickerGroups, PublicTickerGroupMembers, PublicTickerRefreshJobs: SEO ticker-page curation — groups sync membership from FMP index constituents (or IWM holdings for Russell 2000), tickers cache their generated grade snapshot, and the refresh-job queue coordinates the SeoPageBuilder VM service
Auditing & Activity
Account → ActivityLogEntries: User activity tracking across app sources
Account → AuditLogs: Entity change tracking with old/new values
Account → LoginHistories: Login activity tracking with geolocation