68 lines
3.0 KiB
Markdown
68 lines
3.0 KiB
Markdown
# Project-Specific Recommendations & Overrides (EXAMPLE)
|
|
|
|
> This is a **filled-in example** for a compliance document classifier (Archetype C).
|
|
> Copy `RECOMMENDATIONS.md` from the repo root and replace placeholders with your values.
|
|
|
|
---
|
|
|
|
## 1. Project Context
|
|
- **Domain / product type:** Compliance document classifier for financial institutions
|
|
- **Chosen archetype:** C — Classification / Decision Support Pipeline
|
|
- **Modules in scope:** core AI, integrations, pipeline, human feedback, events, reporting, multi-tenancy, billing
|
|
- **Primary users:** compliance officers, team leads, auditors
|
|
- **Key success metrics:** classification accuracy > 95%, p95 latency < 3s, < 5% manual reviews
|
|
- **Current phase:** Phase 1
|
|
- **Repos/services in scope:** monorepo (`apps/web`, `apps/api`, `packages/shared`)
|
|
|
|
## 2. Locked Stack Decisions
|
|
|
|
**Frontend**
|
|
- **Framework:** Next.js 15 (App Router)
|
|
- **Language:** TypeScript 5.7
|
|
- **Styling:** Tailwind CSS 4.x + shadcn/ui
|
|
- **Server/Client data layer:** React Query v5
|
|
- **Forms & validation:** React Hook Form + Zod
|
|
- **Auth client:** Clerk
|
|
|
|
**Backend**
|
|
- **Runtime/language:** Node.js 22 LTS + TypeScript 5.7
|
|
- **Framework:** Fastify
|
|
- **Database:** PostgreSQL 16 (vector search: pgvector)
|
|
- **ORM:** Drizzle
|
|
- **Queues/workers:** BullMQ (Redis 7)
|
|
- **LLM provider & helper:** Single `callLLM()` abstraction, provider: Anthropic (Claude Sonnet)
|
|
- **File/storage:** Cloudflare R2
|
|
|
|
**Infra / DevOps**
|
|
- **Hosting/deploy:** Vercel (web) + Railway (api + workers)
|
|
- **CI/CD:** GitHub Actions
|
|
- **Observability:** Sentry (errors) + Axiom (logs)
|
|
- **Environments:** dev / staging / prod
|
|
|
|
## 3. Non-Negotiable Constraints
|
|
- **Compliance/regulation:** SOC2, GDPR (EU data residency)
|
|
- **Data residency/retention:** EU-only, 7-year retention for audit logs
|
|
- **Performance/SLOs:** p95 classification < 3s, API p99 < 500ms
|
|
- **Cost limits:** LLM budget $2000/month, infra cap $500/month
|
|
- **Target platforms:** Chrome/Firefox/Safari latest 2 versions, desktop-first
|
|
- **Repository constraints:** no `npm run dev` in CI; all merges via PR with at least 1 approval
|
|
|
|
## 4. Deviations From Template
|
|
- Using Fastify instead of Express → better async performance and schema validation built-in → no migration plan needed (greenfield)
|
|
- Using Drizzle instead of Prisma → lighter, better SQL control for complex queries → can migrate via schema dump if needed
|
|
- Skipping i18n in Phase 2 → single-locale MVP (English), will add next-intl in Phase 3
|
|
|
|
## 5. Open Questions / To Confirm
|
|
- Vector embedding model choice (OpenAI ada-002 vs Cohere) → backend lead → Phase 1
|
|
- Exact Clerk plan and SSO requirements → product owner → Phase 1
|
|
|
|
## 6. Change Log
|
|
- 2025-01-15: Locked Fastify + Drizzle (ADR-0001)
|
|
- 2025-01-20: Chose Cloudflare R2 over S3 (cost + EU edge)
|
|
- 2025-02-01: Set LLM budget cap at $2000/month
|
|
|
|
## 7. Architecture Decision Records (ADRs)
|
|
- `docs/adr/0001-fastify-over-express.md` — accepted
|
|
- `docs/adr/0002-drizzle-over-prisma.md` — accepted
|
|
- `docs/adr/0003-cloudflare-r2-storage.md` — accepted
|