BudgetLens is an AI-powered budget analysis platform that enables government officials, auditors, and citizens to query, visualize, and understand public budgets through natural language. Built with Angular 21, Angular Material 21, and Angular Signals.
Ask questions about budgets, audits, departments, and governance in plain language. The AI responds with rich, structured answers including charts, tables, department rankings, audit insights, and procurement analysis — all sourced from uploaded budget documents.
Upload budget PDFs and financial reports. The system parses and indexes them, making their contents instantly queryable through the chat interface.
Interactive visual overview of budget allocations across departments and sectors, year-over-year comparisons, top allocation charts, and key metrics — all in one glance.
Chat queries and responses support multiple languages, making the platform accessible to a broader audience.
Full dark mode support across the entire application.
- Admin: can upload documents and manage users
- User: can query the AI and view the budget dashboard
| Layer | Technology | Version |
|---|---|---|
| Framework | Angular (standalone components) | 21.2.x |
| UI Components | Angular Material + CDK | 21.2.x |
| Charts | Chart.js | 4.5.x |
| State | Angular Signals + RxJS | — / 7.8.x |
| Auth | JWT with functional guards and interceptors | — |
| Change Detection | OnPush everywhere | — |
| Language | TypeScript | 5.9 |
| Styling | SCSS with BEM conventions | — |
| Testing | Jasmine / Karma (≥ 80% coverage target) | 5.6.x / 6.4.x |
| Linting | ESLint + Prettier | 10.x / 3.x |
| Git hooks | Husky + lint-staged | 9.x / 16.x |
| Runtime | Zone.js | 0.15.x |
- Node.js 20+
- Angular CLI 21 (
npm install -g @angular/cli@21)
npm installnpm startOpen http://localhost:4200/ in your browser. The app reloads automatically on file changes.
npm run build:prodArtifacts are output to the dist/ directory.
| Script | Description |
|---|---|
npm start |
Serve with default config |
npm run start:dev |
Serve with development config |
npm run start:staging |
Serve with staging config |
npm run build |
Development build |
npm run build:prod |
Production build |
npm run build:staging |
Staging build |
npm run watch |
Watch build (development) |
npm run test |
Unit tests (watch mode) |
npm run test:coverage |
Tests with coverage report |
npm run test:ci |
Headless single-run tests for CI |
npm run lint |
ESLint check |
npm run lint:fix |
ESLint auto-fix |
npm run format |
Prettier format all sources |
npm run format:check |
Prettier format check (no writes) |
npm run docs:update |
Re-scan project and update CLAUDE.md |
src/
├── app/
│ ├── core/ # Guards, interceptors, services, models
│ ├── features/
│ │ ├── auth/ # Login, register, signup
│ │ ├── budget-dashboard/ # Charts and KPI widgets
│ │ ├── chat/ # AI chat window, messages, responses
│ │ ├── dashboard/ # Admin user management dashboard
│ │ └── upload/ # Budget document upload
│ ├── layout/ # Shell, header, sidebar, footer
│ └── shared/ # Reusable components, pipes, directives
├── environments/ # Dev, staging, production configs
└── assets/
For full architecture details and coding standards, see CLAUDE.md.









