-
-
captaru.org: nine official funding sources connected, from Spain BDNS and the EU portal to Grants.gov.
-
12,949 funding calls indexed across 9 territories, scored and ranked against the organization profile by Gemini 2.0 Flash.
-
Gemini analysing a call automatically: eligibility, consortium, budget, deadlines and evaluation criteria.Step 2 of a 12-step agent workflow
-
The organization dashboard: projects, documents, saved searches and community in one workspace.
-
Documentum generating the institutional legal documentation NGOs need to remain eligible.
-
The completed deep call analysis, cached to the database and reused across all users at no additional token cost.
-
The Gemini API drafting a complete application section by section, structured to the call evaluation criteria.
-
Automated MGA budget generation, one of the twelve stages of the Grant Technician workflow.
-
Recommendation profile results: 955 calls surfaced for a single organization out of 12,949 indexed.
-
Generated draft sections, produced without any human drafting step.
-
Feedback-loop and correction-orchestrator agents reviewing the draft for cross-section inconsistencies before delivery.
-
AI project ideation generating candidate project concepts against the requirements of a specific call.
-
GIF
Gemini generating a complete grant application in production, section by section.
Inspiration
At Fundación Plaza de Castilla we have worked in the Spanish and European social sector for more than 20 years, alongside 5 Chambers of Commerce, 2 CEEIs (business innovation centres) and dozens of NGO partners across Spain and Colombia. In that time we have watched the same pattern repeat: organizations that can afford a professional grant writer get funded, and organizations that cannot, do not. We have seen projects of enormous social value go unfunded, not for lack of merit but for lack of capacity. That pattern is not anecdotal. It is documented:
Administrative capacity and delivery modes are "one of the strongest predictors of absorption" of EU funds, and national authorities should "provide support for the capacity of beneficiaries." European Parliament, Absorption rates of Cohesion Policy funds, PE 747.284, May 2024
Access to public money is decided less by the merit of an organization's work than by whether it can afford the administrative capacity to apply for it. That capacity is expensive. A typical NGO or small company invests 40 to 80 hours per application: searching fragmented databases, drafting complex narratives, finding consortium partners and managing compliance requirements, all while running its actual mission with a small team and no dedicated fundraising professional. If anything, our estimate is conservative. An observational study of Australian research grants found applicants spent an average of 34 working days per proposal, with only 20.5% succeeding, amounting to roughly 550 working years of effort in a single funding round (Herbert et al., BMJ Open, 2013). A professional grant consultant in Spain charges €2,000 to €5,000 per application. For most of the organizations we work with, that is not a line item they can approve. We built CAPTARU because we knew the solution existed, and because artificial intelligence finally made it possible to build it.
What it does
CAPTARU is an AI-native SaaS platform that compresses the entire fundraising workflow into a single intelligent environment. It serves NGOs, foundations, social enterprises, small businesses and small public bodies such as municipalities and town halls with no grants office. Users describe who they are and what they do. From there:
- AI-powered grant discovery: it analyzes and classifies thousands of open funding calls (EU Funding& Tenders Portal, Spain's BDNS, TED, Horizon Europe, Erasmus+, LIFE and many more), ranking them by relevance to each user's specific profile and mission.
- LLM-based application drafting: it generates complete, personalized project proposals with the Gemini API, structured to the exact requirements and evaluation criteria of each call.
- Consortium matching: it identifies compatible partner organizations for calls that require a multi-entity consortium, using semantic vector search.
- Documentum: it generates the institutional legal documentation (bylaws, GDPR policies, annual reports) that NGOs need in order to stay eligible.
- Community hub: requests, offers and a social layer where organizations share needs, post collaboration requests, and build the networks that underpin long-term fundraising success.
How we built it
We chose an end-to-end TypeScript stack to maximize a small team's iteration speed: a Node.js 22 backend with Express 5 and Prisma 6 on PostgreSQL 17, and a Next.js (App Router) frontend with Tailwind CSS 4 and internationalization in 7 languages via next-intl. Everything is deployed on Google Cloud Run with scale-to-zero, so infrastructure costs almost nothing at rest and scales with demand. The intelligence core is a multi-agent layer built with LangChain and LangGraph. When a user asks to analyze a call or generate an application, an agent graph is orchestrated: first the context is assembled (entity profile, past projects, entity type and geographic scope), then the call and its evaluation criteria are analyzed, and the Gemini API generates the proposal section by section. A feedback-loop agent reviews the draft for inconsistencies and a correction orchestrator resolves them before the result is returned.
Discovery and matching rely on vector search with Qdrant: we compute embeddings of each organization's profile and of each funding call, then compare them semantically to produce a personalized, relevance-ranked feed and to identify compatible consortium partners. Generated documents and assets are stored in MinIO. Model selection per task is hot-configurable from the admin panel (ExplorerConfig) without redeploying, and every LLM invocation is logged (model, tokens, latency, timestamp) for auditability and cost control. The CI/CD pipeline runs on GitHub Actions with keyless authentication (Workload Identity Federation) against GCP.
Challenges we ran into
The biggest challenge was not generating text but producing specific, non-generic applications. A generic prompt yields a generic application that no evaluator scores highly. We solved it with the profile-based context-assembly layer that feeds every Gemini call the organization's real mission, experience and scope.
The heterogeneity of grant-call data was the second challenge. We aggregate very different sources (EU Portal, BDNS, TED, Horizon Europe, Erasmus+, LIFE) with inconsistent formats and fields. We built a normalization step that extracts requirements, evaluation criteria and annexes from official PDFs and web pages so the AI works on structured data rather than raw text.
State management across long multi-agent flows in LangGraph (streaming generation, job resumption if the user closes the session, per-call cost and latency control) required instrumenting every invocation and adding retries and grace windows. Finally, deploying with scale-to-zero forced us to optimize cold starts and move heavy AI jobs to asynchronous processing.
Accomplishments that we're proud of
A team of three shipped a complete production AI system on Google Cloud inside the hackathon window. Five Gemini agents run live in production and execute real decisions with no human in the loop. The platform aggregates and normalizes funding calls from structurally inconsistent sources across several countries, in 7 languages. We opened it to the public on 16 August 2026.
The accomplishment we care about most is narrower. The drafts CAPTARU produces are not templates. When the context-assembly layer does its job, the output reads like the organization that is submitting it, and that is the whole difference between an application that scores and one that does not.
What we learned
Building CAPTARU taught us that the hardest part of AI-assisted application writing is not generating text; it is understanding context. A generic prompt to an LLM produces generic results. The breakthrough came when we built a profile-based context-assembly layer: the system reads the organization's mission, its past projects, its entity type and its geographic scope, and uses that to steer and personalize every call to the Gemini API. The result is not a template. It is an application that sounds like the organization submitting it.
We also learned that in this domain the model is rarely the bottleneck. Getting messy, inconsistent public data into a structure an LLM can reason over turned out to be most of the work, and most of the value.
What's next for CAPTARU
Billing goes live immediately, starting with the accessible subscription tiers and the pay-per-use Expert Human Review that pairs AI drafting with a verified consultant's accountability. Next come institutional licences for Chambers of Commerce, CEEIs and NGO federations, so that an entire member network gains access at once, and further expansion of the call index beyond Spain, the EU, the US, France, Germany, Italy, Turkey and Colombia.
The feature we most want to build is a feedback loop that learns from outcomes, so that every funded application makes the next one stronger. In a sector where capacity is the binding constraint, compounding that capacity is the point.
Built With
- artifact-registry
- cloud-run
- cloud-sql
- express.js
- gemini-2.0-flash
- gemini-2.5-flash
- gemini-api
- gemma-3
- google-cloud
- langchain
- langgraph
- memorystore
- minio
- next.js
- node.js
- openrouter
- postgresql
- prisma
- qdrant
- redis
- secret-manager
- stripe
- tailwind-css
- typescript
- whisper
Log in or sign up for Devpost to join the conversation.