Skip to main content

Documentation Index

Fetch the complete documentation index at: https://grantmaster.dev/llms.txt

Use this file to discover all available pages before exploring further.

AI Functions Reference

Source: Modular service files in src/features/ai/services/ (see AI Engine architecture for the full file map)
Central AI service for GrantMaster. Since March 2026, the formerly monolithic geminiService.ts has been decomposed into domain-specific modules:
  • Core infrastructure: geminiClient.ts (client init), geminiRetry.ts (backoff), geminiJsonParser.ts (response parsing), geminiSchemas.ts (typed output schemas), geminiServiceCore.ts (entrypoint), geminiServiceFacade.ts (DI wrapper)
  • Feature modules: geminiAssistant.ts, geminiCompliance.ts, geminiDocuments.ts, geminiForecast.ts, geminiServiceProposalImpact.ts
  • RAG pipeline: 12 modules — see RAG section
  • Safety: responseSafety.ts (prompt injection / PII guards), contextAssembler.ts (prompt building / citation extraction)
Operates in dual mode controlled by USE_CLOUD_FUNCTIONS:
  • Cloud Functions (default): Routes through Firebase/Genkit for tracing, monitoring, and server-side retries
  • Legacy direct: Falls back to client-side Gemini SDK calls with callWithRetry (exponential backoff on 429/5xx)
All functions use structured JSON output via Gemini responseSchema (defined in geminiSchemas.ts) and track AI usage per organization via trackAiGeneration(). Model: gemini-2.5-flash

Journal Generation

generateJournalEntries

Generate AI-powered journal (journal) entries from a user’s monthly journal input. Produces audit-compliant daily task descriptions in Dutch, distributed across working days for the specified month.
generateJournalEntries(
  input: JournalInput,
  projects: Project[],
  user: User,
  organization?: Organization
): Promise<JournalEntry[]>
ParamTypeDescription
inputJournalInputMonthly Journal data including month, notable events, project allocations, and work pattern
projectsProject[]Full project list; filtered to input.selectedProjectIds internally
userUserCurrent user profile (name, role, contract hours, work pattern)
organizationOrganization?Optional organization context for locale, currency, and tenant isolation
Returns: Sorted array of journal entries with organizationId injected. Usage tracking: trackAiGeneration(orgId, 'journal_generation', { month, projectCount })

Compliance & Auditing

analyzeCompliance

Audit journal entries against project budgets, grant terms, and labor regulations. Detects issues like vague descriptions, weekend/holiday work, hour anomalies, and budget overruns.
analyzeCompliance(
  entries: JournalEntry[],
  projects: Project[],
  user: User,
  organization?: Organization
): Promise<AuditResult>
ParamTypeDescription
entriesJournalEntry[]Journal entries to audit
projectsProject[]Project context for budget and term validation
userUserUser context (contract hours, work pattern)
organizationOrganization?Organization context for compliance rules
Returns: AuditResult with score (0–100), summary, and flags[] (each with severity, issue, recommendation).

checkExpenseEligibility

Pre-validate an expense against compliance policies, budget lines, and project rules before submission.
checkExpenseEligibility(
  expense: Partial<Expense>,
  policies: CompliancePolicy[],
  budgetLines: BudgetLine[],
  activeGrants: ActiveGrant[],
  categories: ExpenseCategory[],
  organizationId: string
): Promise<ExpenseComplianceResult>
Returns: ExpenseComplianceResult with compliance level (compliant | warning | non_compliant), issues, and recommendations.

Reporting & Forecasting

generateReportNarrative

Generate a professional narrative section for a journal or progress report. Supports configurable report types (quarterly, annual, compliance).
generateReportNarrative(
  config: ReportConfig,
  projects: Project[],
  entries: JournalEntry[],
  user: User,
  organization?: Organization
): Promise<string>
Returns: Markdown-formatted narrative string.

generateProjectForecast

Predict project timeline, budget, and resource utilization using historical data. Includes risk scoring and mitigation recommendations.
generateProjectForecast(
  project: Project,
  entries: JournalEntry[],
  user: User,
  organization?: Organization
): Promise<ForecastResult>
Returns: ForecastResult with timeline/budget projections, risk scores, and recommendations.

Receipt Processing

analyzeReceipt

OCR and structured extraction from receipt images. Extracts amount, vendor, date, category, and tax information.
analyzeReceipt(
  imageBase64: string,
  mimeType: string,
  organization?: Organization
): Promise<ReceiptAnalysisResult>
ParamTypeDescription
imageBase64stringBase64-encoded image data
mimeTypestringImage MIME type (e.g. image/jpeg, image/png)
organizationOrganization?Organization context for currency defaults
Returns: Extracted receipt fields with confidence scores.

Grant Assistant

queryGrantAssistant

Conversational AI assistant for grant-related questions. Supports multi-turn chat with project and document context.
queryGrantAssistant(
  messages: ChatMessage[],
  projects: Project[],
  user: User,
  organization?: Organization
): Promise<string>
ParamTypeDescription
messagesChatMessage[]Conversation history ({ role: 'user' | 'model', text: string })
projectsProject[]Active projects for context
userUserCurrent user profile
organizationOrganization?Organization context
Returns: Assistant response text.

Proposal Generation

generateProposalSection

Generate a single section of a grant proposal (e.g. executive summary, methodology, budget justification).
generateProposalSection(
  sectionType: ProposalSectionType,
  context: ProposalGenerationContext,
  organizationId: string
): Promise<ProposalSectionResult>
ParamTypeDescription
sectionTypeProposalSectionTypeSection to generate (e.g. 'executive_summary', 'methodology', 'budget_justification')
contextProposalGenerationContextProject info, organization profile, funder requirements, any existing sections
organizationIdstringTenant ID for usage tracking
Returns: ProposalSectionResult with generated content, key points, and confidence score.

generateFullProposal

Generate all sections of a grant proposal in sequence. Supports progress callbacks for UI feedback.
generateFullProposal(
  context: ProposalGenerationContext,
  organizationId: string,
  onProgress?: (section: string, index: number, total: number) => void
): Promise<ProposalSectionResult[]>
ParamTypeDescription
contextProposalGenerationContextFull proposal context
organizationIdstringTenant ID
onProgressfunction?Optional callback fired after each section completes
Returns: Array of ProposalSectionResult for all generated sections.

Impact / M&E Analytics

suggestMEIndicators

Suggest monitoring & evaluation indicators for a project based on its theory of change, sector, and funder requirements.
suggestMEIndicators(
  project: Project,
  existingIndicators: MEIndicator[],
  organization?: Organization
): Promise<SuggestedIndicator[]>

generateMENarrative

Generate a narrative report section for M&E data — interprets indicator values, trends, and anomalies into human-readable analysis.
generateMENarrative(
  indicators: MEIndicator[],
  dataPoints: MEDataPoint[],
  project: Project,
  organization?: Organization
): Promise<string>

detectMEAnomalies

Detect statistical anomalies in M&E data collection — identifies outliers, sudden trend changes, and data quality issues.
detectMEAnomalies(
  indicators: MEIndicator[],
  dataPoints: MEDataPoint[],
  project: Project,
  organization?: Organization
): Promise<MEAnomaly[]>

RAG Pipeline Functions

Source: src/features/ai/services/rag*.ts, contextAssembler.ts, ranking.ts, retrievalQueryBuilder.ts

queryRAGAuto

Public entry point for RAG queries. In production, delegates to Cloud Functions; falls back to client-side pipeline.
queryRAGAuto(options: RAGQueryOptions): Promise<RAGQueryResponse>

uploadAndProcessDocument

Full document upload-to-processing lifecycle (chunking, embedding, storage).
uploadAndProcessDocument(file: File, projectId: string, orgId: string): Promise<string>

extractDeadlines / extractActivityRules

Standalone metadata extractors using gemini-2.5-flash with structured JSON output.
extractDeadlines(documentText: string): Promise<DeadlineInfo[]>
extractActivityRules(documentText: string): Promise<ActivityRule[]>

Safety Functions

Source: src/features/ai/services/responseSafety.ts

applySafetyGuard

Validates RAG responses before returning to user. Checks for prompt injection patterns, secret exfiltration attempts, and PII exposure.
applySafetyGuard(response: string, context: SafetyContext): SafetyResult

Internal Helpers

HelperSourceDescription
getAIClient()geminiClient.tsInstantiates a GoogleGenAI client per call (ensures latest API key)
callWithRetry<T>(fn, retries?, delay?)geminiRetry.tsExponential backoff retry for 429/5xx errors (3 retries, 1s base)
USE_CLOUD_FUNCTIONSgeminiServiceCore.tsFeature flag — true routes through Genkit Cloud Functions
assembleContextFromChunks()contextAssembler.tsBuilds RAG prompt from retrieved chunks
buildRAGPrompt()contextAssembler.tsConstructs full prompt with system instruction, context, and query
extractCitations()contextAssembler.tsParses [Source N] references from RAG responses
cosineSimilarity()ranking.tsVector similarity for chunk scoring
dedupeScoredChunks()ranking.tsDeduplication of overlapping chunks
hashQuery()ragCache.tsDeterministic hash for cache keying

Usage Tracking

Every AI function calls trackAiGeneration(organizationId, type, metadata) on success. Agent-specific operations are tracked via dedicated trackers in usageTrackingTrackers.ts.

AI Generation Types

TypeFunction
journal_generationgenerateJournalEntries
compliance_analysisanalyzeCompliance
report_narrativegenerateReportNarrative
project_forecastgenerateProjectForecast
receipt_analysisanalyzeReceipt
expense_eligibilitycheckExpenseEligibility
grant_assistantqueryGrantAssistant
proposal_sectiongenerateProposalSection
full_proposalgenerateFullProposal
me_indicatorssuggestMEIndicators
me_narrativegenerateMENarrative
me_anomaliesdetectMEAnomalies

Agent Usage Trackers (Added March 2026)

TrackerSourceDescription
trackAgentRun()usageTrackingTrackers.tsLogs agent run initiation
trackAgentStep()usageTrackingTrackers.tsLogs agent step execution
trackCreditConsumption()usageTrackingTrackers.tsMetering for credit usage
trackCreditPurchase()usageTrackingTrackers.tsLogs credit pack purchases