Skip to content
Vienna, AT
Projects

AI-Powered Funding Advisory for Cemit

Cover image for AI-Powered Funding Advisory for Cemit
March 20, 2026
Austrian funding consultants spend hours cross-referencing dozens of programs, checking eligibility rules, stacking limits, and deadlines, mostly in spreadsheets and PDFs. The domain knowledge is deep but the tooling is shallow. Cemit, a funding advisory firm, wanted something better: an AI assistant that actually understands the domain, not just a chatbot with a search bar. This is a single-page AI chat application where Cemit's consultants describe a client project in natural language and get back scored, ranked funding matches with full transparency into why each program fits or doesn't.
The assistant on open, offering starting points drawn from the consultants' actual work: finding programs for a digitalisation project, summarising recent FFG changes, handling a client question on R&D funding, and checking de-minimis rules.
A LangGraph StateGraph with 17 tools that runs a cyclic reasoning loop: the agent calls tools, syncs state, and decides what to do next until it has a complete answer. It progressively accumulates project context across the conversation: company details, budget, KMU status, TRL level, region, and topics. Matching combines two approaches:
  • Deterministic scoring across 9 dimensions (eligibility, budget fit, deadline proximity, stacking headroom, TRL overlap, and more), normalized to 0-100
  • Semantic scoring via a single batched LLM call that evaluates all candidate programs against the project description
Final score: 70% deterministic + 30% semantic. This means the system is explainable: consultants can see exactly which dimension pulled a score down and why. Every tool output is automatically rendered as a rich interactive card via json-render: match result lists with score badges, score breakdowns with dimension bars, side-by-side program comparisons, stacking analysis, and action plans. The LLM never generates UI specs directly; server-side spec builders handle the translation. An extensible skill directory that teaches the agent new capabilities: structured funding application workflows, KMU status checks, cumulation analysis, and DOCX generation via isolated Vercel Sandbox microVMs.
The skill directory, grouped by where each one belongs in the advisory process: consultation, analysis, application, and document tooling.
  • Frontend: Next.js 15, React 19, Tailwind CSS v4, shadcn/ui, Vercel AI SDK v6
  • Agent: LangGraph with 17 tools, cyclic StateGraph, 25-iteration recursion limit
  • LLMs: Claude Sonnet 4 (reasoning), Claude Haiku 4.5 (quick tasks), Nova Micro (titles), all via Vercel AI Gateway
  • Search: Multi-tier semantic + full-text with pgvector, synonym expansion, and confidence scoring
  • Database: Neon PostgreSQL (serverless) with pgvector embeddings
  • Validation: Zod v4 for all API input validation
  • Auth: NextAuth v5 + Microsoft Entra ID with RBAC
  • Security: PostgreSQL-backed rate limiting (request + token budgets), HSTS, CSP, per-user daily caps
The scoring pipeline went through several iterations. Pure semantic scoring was too unpredictable: consultants need to trust the results. Pure rules were too rigid: they missed nuance. The hybrid approach with transparent dimension breakdowns was the sweet spot. Batch semantic scoring was a key optimization: evaluating 15 programs individually took 40-60 seconds. A single batched call brings it down to 3-5 seconds. The generative UI system required careful separation: letting the LLM generate UI specs directly led to inconsistent rendering. Moving spec building server-side with a strict component catalog made everything reliable. The platform is in production at Cemit. What used to be a spreadsheet afternoon (cross-referencing programs, eligibility rules, stacking limits, deadlines) is now a conversation that returns scored matches in seconds, with the dimension-level breakdown consultants need to defend a recommendation to a client. The explainability was the adoption lever: advisors trust a score they can argue with.