the soul of your organisation
Almi is an AI-powered HR platform covering the full employee lifecycle — recruitment, onboarding, leave, documents, payroll, compliance, and an always-on HR assistant. It supports Portuguese and UAE labour law and runs in three languages (Portuguese · English · Arabic).
The platform adapts to company size: mid-size companies get the full suite; small companies (1–50 employees) get Almi Lite, a focused experience centred on compliance, document generation, and HR assistance.
| Layer | Technology |
|---|---|
| Framework | Next.js (App Router, Turbopack) |
| Language | TypeScript |
| i18n | next-intl (PT · EN · AR) |
| Database | Supabase (PostgreSQL + pgvector) |
| Auth | Supabase Auth |
| Storage | Supabase Storage |
| AI | Anthropic Claude (claude-sonnet-4-6) |
| Embeddings | OpenAI text-embedding-3-small |
| Voice | ElevenLabs (Claudia voice) + Bland.ai |
| SendGrid | |
| Scheduling | Calendly |
| Transcription | Fireflies.ai |
| Payments | Stripe (PT + AED) |
| Hosting | Vercel |
Brand colors: #0a81bb (blue) · #0f172a (dark) · #f8f7f4 (background)
git clone https://github.com/mborges-dev/almi-platform.git
cd almi-platform
npm install
cp .env.example .env.local # fill in your keys
npm run devThe app runs at http://localhost:3000.
- Public application page with company branding + GDPR consent
- CV upload → PDF extraction → AI scoring (dual thresholds: rejection + approval)
- Pipeline Kanban: Recebidos → Triagem → Análise → Screen Call → Entrevista → Decisão → Rejeitados
- Screen Call with AI voice (Claudia via Bland.ai + ElevenLabs)
- Interview scheduling, AI-generated question scripts, scorecards
- Token-secured manager view with AI briefing
- Offer letter builder
- Personalised rejection emails (sent only when position closes)
- Talent pools for future roles
- EU AI Act compliance audit trail for CV scoring decisions
- Upload + categories + tags + expiry alerts + digital signatures
- AI summaries + semantic search via embeddings
- ChatBot HR — conversational assistant answering from company documents
- Automations — auto-onboarding on hire, auto-archiving on offboarding
- Ghost inspector: AI audit of document completeness and anomalies
- Living documents: version tracking with change summaries
- Employee profiles with contract, contact, and career data
- Departments, org chart, career events, salary history (admin only)
- Disciplinary wizard: AI-generated disciplinary documentation
- Whistleblowing channel (Lei 93/2021 + anonymous external portal)
- Exit interview module (AI-driven, voice optional)
- Configurable leave policy per company (annual vs monthly accrual)
- Working-day calculation excluding PT and UAE public holidays
- Request → approval flow with email notifications + auto-negotiation
- Team availability calendar, carry-over rules, year-end processing
- Leave map: visual overview of absences across the team
- Streaming chat answering from company documents
- Conversation history, FAQ auto-generation
- Unanswered questions dashboard, document gap detection
- Floating widget on all protected pages
Portugal:
- Salary calculator (IRS 2026 + SS contributions + FCT provisioning)
- SEPA XML export + Sage export
- SS/DMR integration (Social Security declaration)
UAE:
- WPS (Wages Protection System) SIF file generation + Stripe AED payments
- End of Service Benefit (EOSB / gratuity) calculator + provision tracking
- ILOE (involuntary loss of employment) insurance management
- Medical insurance tracking per employee
- MOHRE contracts in English and Arabic
- Emiratisation dashboard (Nafis quota tracking)
- Ramadan working hours adjustment
- Free Zone vs Mainland jurisdiction flags (DIFC / ADGM disclaimers)
- Full UAE labour law obligations checklist (56 obligations tracked)
- HR Balance Sheet: headcount, attrition, and workforce cost overview
- Benchmarks: compare KPIs against industry peers
- Hiring Radar: early signals of upcoming vacancies
- Decision Simulator: model the impact of headcount changes
- Individual training plans per employee
- Progress tracking and completion reports
- AI-suggested plans based on role and performance gaps
- eNPS (Employee Net Promoter Score) surveys with trend analysis
- Recognition system (peer-to-peer)
- Org-wide announcements
- Calendar OAuth (Google + Microsoft) for interview scheduling
- Multiposting: publish jobs to multiple job boards
- ERP integrations: Moloni (invoicing), SAP (planned)
- Time tracking integration (NICE API)
- Multi-client management for HR and accounting firms
- Client switching, operator management, per-client RLS
- Dedicated firm dashboard
| Plan | Audience |
|---|---|
| Starter | Growing teams |
| Growth | Mid-size companies |
| Enterprise | Large organisations |
| Plan | Employees | Price |
|---|---|---|
| Solo | 1–10 | €69/mo |
| Team | 11–25 | €129/mo |
| Pro | 26–50 | €229/mo |
Setup fee: €199 (one-time). Accountant partner programme: €49/mo per client.
Hosted on Supabase (PostgreSQL + pgvector).
Core: companies, profiles, jobs, candidates
Recruitment: interviews, manager_access, team_invitations, scorecards, talent_pools
Documents: documents, document_versions, document_signatures, document_embeddings, document_automations
HR Chat: hr_conversations, hr_messages, hr_faqs, hr_unanswered
Team: departments, career_events, salary_history, employee_events
Leave: leave_requests, leave_balances, leave_policies, leave_notifications
Payroll: payroll_runs_uae, eosb_provisions, wps_sif_exports
UAE Compliance: uae_obligations, emiratisation_records, mohre_contracts
Org Health: benchmarks, okrs, performance_goals, performance_reviews
Training: training_plans, training_progress
Communications: enps_surveys, recognition_events
Accountant: firms, firm_clients, firm_operators
RLS: All tables have Row Level Security scoped by
company_id. The storage bucket is private — files served via signed URLs (1h expiry).
Deploys automatically to Vercel on push to main.
Cron jobs (vercel.json):
- Daily: document expiry alerts, signature reminders, leave reminders, calendar sync
- Monthly: WPS SIF generation
- January 1: leave year-end carry-over
- AI prompts live in
lib/prompts.ts— centrally managed. - All client-facing emails show the client company's logo with a "Powered by Almi" footer.
- Rejection emails are never sent automatically — only on formal position close or manually with preview.
- Language: European Portuguese (PT), British English (EN), Modern Standard Arabic (AR).
- New tables require RLS policies scoped by
company_id.
Proprietary. © Almi. All rights reserved.
This repository is published as a portfolio showcase of my work. The code is not licensed for reuse, redistribution, or modification. You're welcome to read it, but it is not open source. If you'd like to discuss similar work, get in touch.
Built by Miguel Borges · hello@miguelborges.dev