New: the $2,500 CRM System
← All case studies

Grant-writing consultancy · Nonprofit · Build 04

A grant-writing consultancy's ClickUp, turned into a client-facing product.

The consultancy writes and manages grants for ~20 nonprofits, with everything in ClickUp. We built their client-facing portal and live reporting layer: an executive fundraising dashboard, per-client grant reports with PDF export, a retainer portal with AI-written monthly summaries, and passwordless login — all reading ClickUp in real time, no database.

~20.

Nonprofit clients reported live

0.

Databases — ClickUp is the only source of truth

1-click.

AI monthly summaries, ready to email

20h.

Monthly retainer tracked with a live capacity ring

The brief

All the data was in ClickUp. None of it was a product.

The problem

All the operational data existed in ClickUp — grants, statuses, dollar amounts, team assignments — but none of it was visible as a product: no executive dashboard, no client-ready reports, no self-service way for clients to make requests or see their retainer.

And the numbers had to be right: win rates, awarded vs. requested dollars, multi-stage applications that mustn't double-count — computed live over messy real-world data.

The solution

Turn the workspace into the product: a live executive dashboard, per-client grant reports with board-ready PDF export, and a retainer portal clients open themselves — every number computed honestly from messy real-world data, and traceable to its source. No second database; passwordless sign-in restricted to the client's domain.

01 · The metrics engine

The hard part wasn't charts — it was honest numbers.

Categorizing grants by status, a win rate that counts advanced LOIs as wins while excluding pending, de-duplication so a multi-stage application never double-counts — then the client's staff stress-tested every figure and we fixed every finding: subtask inflation, a win rate that could top 100%, fuzzy 'submitted' definitions. Every number on every screen traces to a ClickUp task.

  • Win rate that can't exceed 100%
  • Multi-stage grants counted once
  • A QA loop with the client's own staff
  • Every figure traceable to its source
Live simulation · automation

clickup → portal — the pipeline

1

ClickUp webhook fires

HMAC-verified — no spoofing

2

Metrics recomputed

success rates, retention, velocity

3

Portal snapshot updated

snapshots published today

41

a QA loop cross-checks every figure before it publishes

02 · The dashboard

Leadership, staff, and clients — one product, three doors.

Executive overview for leadership, per-client grant reports with PDF export, team workload from ClickUp assignments and time tracking, and the flagship: a retainer portal the client opens themselves, with a capacity ring and a Claude-written monthly summary one click away. Passwordless sign-in — one-time codes restricted to the client's domain, stateless HMAC-signed sessions. Dark by default, light available, fully responsive — walk through it below.

  • Executive · Clients · Team · Projects · Retainer portal
  • Board-ready PDF export per client
  • Passwordless, domain-restricted, HMAC sessions
Live via ClickUp API
orchard — grant dashboard · sign in
OOrchardGrants

Grant Dashboard

Sign in with your work email. We'll send you a one-time code.

Email address

you@orchardgrants.example•••
Send code

Passwordless · codes restricted to the client's domain · stateless HMAC-signed sessions

I've concealed this client's name and data to protect their privacy. The dashboard appears here under the fictional name “Orchard Grants” and is our own redesign of the product — close to the real layout, fully responsive, light and dark — and every client, person, grant, and figure on these screens is invented.

03 · Integrations & automations

Everything computed from ClickUp, delivered as a product.

ClickUp holds the grants, statuses, dollars, and assignments; the dashboard reads them live, computes honestly, and hands each audience the view they need — with a language model doing the one thing humans hated: writing the monthly summary.

Integrations

ClickUp API

Grants, statuses, dollar amounts, assignees, and the Team Management list — read live on every load; no snapshot, no copy.

The single source of truth.

ClickUp time tracking

Hours per person and per month, pulled from tracked time — shown honestly as 'not everyone logs time'.

Workload you can defend.

Claude API

One click drafts a plain-English monthly retainer summary from the month's delivered items and hours.

The write-up nobody wanted to write.

Transactional email

One-time sign-in codes from a verified sending domain, restricted to the client's email domain.

Passwordless, no accounts to manage.

PDF export

Print-optimized client reports — donut and bar charts included — generated from the same live data.

Board-ready without editing.

Vercel

Hosting, preview deployments per change, and the build ID stamped in the sidebar so support knows exactly what's running.

Ship, verify, roll back.

Automations built

Status categorization

Every grant task classified into submitted / awarded / declined / pending / abandoned / LOI by rules the client signed off on.

Win-rate rules

Advanced LOIs count as wins; pending excluded; the rate can never exceed 100% — enforced in code, not in a formula someone can edit.

Multi-stage de-duplication

LOI → proposal → award chains counted once, so a multi-stage application never inflates the numbers.

Retainer capacity

Hours delivered against the monthly retainer, computed from time tracking; the ring resets on the first of the month.

Monthly summary generation

Delivered items, hours, and awarded value assembled into a prompt; Claude writes the summary; the client edits and sends.

QA-loop fixes as guards

Subtask inflation, fuzzy 'submitted' definitions, and rate overflow — each finding became a permanent check.

The outcome

ClickUp became the product: leadership sees performance live, clients self-serve, and every number is defensible.

Next.jsReactTypeScriptClickUp API v2Claude (Opus 4.8)ResendChart.jsHMAC auth + edge middlewareVercelGoogle Apps Script
01

ClickUp became the product: leadership sees fundraising performance live, clients get reports and self-service, and every number traces to its source.

02

It's the first working piece of their long-term vision — becoming the operating system for nonprofit fundraising.

Want a system like this one?

A 30-minute call to map what you have to what you need. Fixed-fee where the scope is known, $100/hr beyond it, and everything documented so your team runs it without me.

I've concealed this client's name and data to protect their privacy. The dashboard appears here under the fictional name “Orchard Grants” and is our own redesign of the product — close to the real layout, fully responsive, light and dark — and every client, person, grant, and figure on these screens is invented.

Next case study — Luxury travel concierge

A luxury travel agency's command center — intake to itinerary to payment.