Overview
We partnered with Grants AI to harden an existing grants implementation and extend it into a complete, AI-assisted workflow spanning past-winner research, application drafting, live-metric reporting, lifecycle email handling, and video and webinar knowledge ingestion. We delivered a tenant-safe, grounded, and auditable system that grant teams can trust end to end.
Challenges
- The existing grants implementation could not be safely shipped, carrying a backlog of pre-merge blockers around permissions, tenant schema context, AI stubs, and broken client imports.
- Access control gaps and incorrect tenant schema-context handling created real risk that one tenant's grant data could leak into another's.
- A vector-extension database migration was placed incorrectly, threatening to disrupt other tenants on the same cluster.
- AI research could silently accept ungrounded or unsupported past-winner results, eroding trust in the data filling each grant record.
- External research pulled in URLs with no validation, exposing the system to local files, metadata IP ranges, and internal network targets.
- Grant drafting was one-off and disposable, with no persisted draft records, status tracking, or way to regenerate a single weak answer.
- Reporting lacked a safe path to live program metrics, and there was a risk of accidental writes back into upstream modules that should stay read-only.
- Grant lifecycle work was untracked, with no email classification, deadline alerts, auto-archiving, or detection of missing award letters.
- Valuable funder knowledge locked inside videos and webinars was never captured or made available during drafting and reporting.
- A stray PDF dependency added unnecessary surface area and risk to the scoped work.
Solution highlights
- Remediated every pre-merge blocker, fixing permissions, tenant schema context, AI stubs, the client import path, vector migration placement, and removing the PyPDF2 dependency.
- Built real past-winner extraction using structured AI output so research reliably populates database fields.
- Added grounding verification with hard-fail behavior, so unsupported research results are rejected rather than silently downgraded.
- Introduced URL validation that blocks unsafe targets, including local files, metadata IP ranges, and internal network ranges.
- Shipped a grant application draft model with migrations, serializers, and a status state machine, turning drafting into persisted, trackable records.
- Built an AI drafting service using retrieval, prompt assembly, and per-question regeneration, paired with a frontend grant-drafting editor page.
- Created a grant report model with funder templates and a cross-plugin metrics read interface so reports substitute live program metrics without write access to upstream modules.
- Added grant lifecycle email ingestion through a tenant mailbox, with an email classifier, auto-archive rules, missing-award-letter flagging, deadline notifier, in-app alerts, and an email digest.
- Surfaced a correspondence timeline on the grant page so every lifecycle event is visible in context.
- Delivered video and webinar ingestion via URL input, transcript generation, chunking, embedding, and retrieval wiring, plus a video library panel in the frontend.
- Delivered REST endpoints, Celery tasks, and a constrained structured-target web-navigation proof of concept for research.
Outcomes
- Grant teams can now ship the platform with confidence, knowing the pre-merge blockers and tenant-safety risks have been resolved.
- Tenant data stays isolated, with corrected schema-context handling and vector migrations moved into the correct cluster-safe path.
- Past-winner research lands as reliable, structured data in the database instead of unverified free text.
- Every research result is grounded and verifiable, with unsupported outputs failing fast rather than slipping through.
- External research is safer by design, with unsafe and internal URLs rejected before they can be followed.
- Drafters work from persisted draft records with status tracking and can regenerate any single answer without redoing the whole application.
- Reports pull live program metrics through a read-only interface, keeping upstream modules protected from accidental writes.
- Grant lifecycle management is automated, so correspondence, deadlines, alerts, missing award letters, and archival are tracked without manual chasing.
- Funder knowledge from videos and webinars becomes searchable context that strengthens both drafting and reporting.