DeGrants Application Lifecycle
In short
How a DeGrants application goes from submission to a completed grant: steward scoring, admin offer, applicant acceptance, blueprint and KYC, milestones, and impact report.
August 21, 2026
How a DeGrants application moves from submission to a completed grant. Written for applicants, stewards, admins, and anyone who needs the process in one place.
In one sentence
An application is reviewed and offered funding. A grant is created only after the applicant accepts the offer. Then the grantee submits a blueprint, delivers milestones, and finishes with an impact report.
Does the applicant need to accept if admin offers the full amount?
Yes. Approving the original amount and approving an adjusted amount both create an offer. The applicant must click Accept Offer in either case.
Approving never creates a grant by itself.
The two records
| Record | What it is | When it exists |
|---|---|---|
| Application | The pitch and funding decision | Created when the applicant submits |
| Grant | The funded project with blueprint and milestones | Created only when the applicant accepts the offer |
Applicants choose one funding amount when they apply: $3,000, $4,000, or $5,000.
End-to-end flow
Apply
→ Stewards score
→ Admin decides (approve full / approve less / reject)
→ Applicant accepts or declines the offer
→ If accepted: Grant is created
→ Applicant submits blueprint + KYC
→ Steward/admin approves blueprint
→ Milestones run one at a time
→ Impact report
→ Grant complete
Phase 1 — Applicant submits
- Applicant logs in. Steward accounts cannot apply.
- They fill the form at
/funding/apply(project, team, funding amount, milestones, acknowledgements). - On submit, an application is created with status
Submitted. - It appears in My DeGrants for the applicant and Review DeGrants for stewards and admins.
- A Slack intake message is sent if Slack is configured.
- The applicant waits. Scoring does not start automatically.
Phase 2 — After steward score
Steward scoring is review only. It does not approve, reject, or create an offer.
- A steward opens
/funding/review-degrants/[id]/review. - They score 6 criteria, each 1–5 (max 30):
- Stacks ecosystem relevance
- Community value
- Feasibility and execution risk
- Engagement and momentum
- Applicant fit
- Deliverables and timeline quality
- Notes are required. They can recuse as conflicted.
- They cannot score their own application.
- They cannot score an application marked duplicate (scoring is locked).
- The first score moves the application from
SubmittedtoUnderReview. - Later stewards can still score. A steward can update their own score until an admin decides.
- The average score is the average of non-conflicted reviews.
- Slack posts that a review was submitted or updated.
- After an admin decides, steward scores are locked.
Admins can decide even if there are zero steward scores. The review UI shows the average so they can use it.
Phase 3 — After admin decision
Only someone with grant-status permission sees the Admin Decision panel. There are three options.
A. Approve original amount (full amount)
- Admin clicks Approve (original amount).
- The system reads the requested amount from the application (
$3,000/$4,000/$5,000). - Status becomes
Approved. offerAmountis set to that full requested amount.- Optional decision notes are stored.
- Applicant gets an in-app Grant offer made notification.
- No grant is created yet.
B. Approve adjusted amount
- Admin enters a custom USD amount and confirms.
- Same as above: status
Approved,offerAmount= the adjusted number. - Applicant still gets an offer notification.
- Still no grant until they accept.
C. Reject
- Admin clicks Reject politely.
- Status becomes
Rejected. offerAmountis cleared.- Applicant gets a Pitch rejected notification (notes included if written).
- Process ends. No offer, no grant.
After any of these, the admin UI shows “already decided,” and stewards can no longer change scores.
Phase 4 — Applicant accepts or declines
On My DeGrants → that application, if status is Approved, the applicant sees You’ve received a DeGrants offer with Accept / Decline.
This is required for both full-amount and adjusted-amount approvals.
If they accept
- Only the applicant can do this, and only while status is
Approvedand no grant exists yet. - The system creates a Grant:
- awarded amount = the offer
- requested amount = what they originally asked for
- category = DeGrants
- stage =
blueprint - assigned steward = highest-scoring non-conflicted steward (if any)
- Application status becomes
OfferAcceptedand is linked to that grant. - The admin who decided gets Grant offer accepted.
- Applicant is sent to
/funding/my-degrants/[grantId]. - Next required step: submit the project blueprint.
If they decline
- Status becomes
OfferDeclined. - No grant is created.
- The deciding admin gets Grant offer declined.
- Process ends. They cannot accept later from this application.
Phase 5 — After accept: blueprint
The grant starts at blueprint. There are no active milestones yet.
- Applicant opens the grant and submits a blueprint:
- overall scope of work
- at least one milestone (name, scope, amount)
- KYC document (required)
- optional start date / deadline
- Milestone amounts cannot exceed the awarded amount.
- All milestones are created as
locked. - Blueprint review status becomes
pending. - Assigned steward is notified.
Then a steward or admin reviews.
Blueprint approved
All three must pass:
- Blueprint: approve
- KYC: verified
- Funding release: approve
Then:
- Blueprint is marked approved
- Grant moves to
milestones - Milestone 1 becomes
active initialFundingPaidAtis recorded- Applicant is notified Blueprint approved
Blueprint rejected
- Stage stays
blueprint, review = rejected - Applicant can resubmit a new plan (old milestones are replaced)
- Applicant is notified Blueprint rejected
Phase 6 — Milestone steps on the grant
Milestones run in order. Only the current one is active. Later ones stay locked until the previous one is paid.
locked → active → submitted → approved → paid
↘ requires_changes → (resubmit) → submitted
1. Grantee works on the active milestone
Only active or requires_changes can be submitted.
2. Grantee submits deliverables
- Must include a valid deliverables URL (optional notes)
- Status becomes
submitted - Steward is notified
3. Steward or admin reviews
Approve
- Status →
approved - Grantee is notified
- Payment is not automatic
Request changes
- Feedback text is required
- Status →
requires_changes - Grantee can resubmit
- Grantee is notified
4. Admin marks it paid
- Only after status is
approved(admins only) - Optional Hiro explorer transaction URL (
https://explorer.hiro.so/txid/...) - Status →
paid - Next milestone (if any) becomes
active - Grantee and steward are notified
5. When every milestone is paid
The grant automatically moves to impact_report.
Phase 7 — Impact report and completion
- Grantee submits an impact report URL (optional notes).
- Steward or admin reviews:
- Approve → grant stage
complete, grant status Completed - Requires changes → stays in impact report; grantee revises and resubmits
- Approve → grant stage
Quick reference
| Event | Status | Who acts next |
|---|---|---|
| Form submitted | Application: Submitted | Stewards score |
| First steward score | Application: UnderReview | More stewards / admin |
| Admin rejects | Application: Rejected | Done |
| Admin approves full or adjusted | Application: Approved (offer waiting) | Applicant must accept or decline |
| Applicant declines | Application: OfferDeclined | Done — no grant |
| Applicant accepts | Application: OfferAccepted + Grant created at blueprint | Applicant submits blueprint |
| Blueprint approved | Grant: milestones, M1 active | Grantee delivers M1 |
| Milestone submitted | Milestone: submitted | Steward/admin reviews |
| Milestone approved | Milestone: approved | Admin pays |
| Milestone paid | Milestone: paid, next one active | Grantee works next milestone |
| All milestones paid | Grant: impact_report | Grantee submits report |
| Impact report approved | Grant: complete | Done |
Details that often confuse people
- Steward score ≠ decision. Admins decide funding.
- Approve ≠ funded. Accept Offer creates the grant.
- Full amount still needs Accept. Same as a reduced offer.
- Decline is final for that application.
- Interview / submit_pitch exist in older frontend types. Live grants start at blueprint after accept.
- Duplicate applications can be flagged; they cannot be scored.
- Selected / public lists treat
ApprovedandOfferAcceptedas selected. Badge minting for “selected” also allowsApprovedeven if they have not accepted yet.
Application statuses
| Status | Meaning |
|---|---|
Submitted | Application received, no steward score yet |
UnderReview | At least one steward has scored |
Approved | Admin made an offer; waiting for applicant |
Rejected | Admin rejected; process ended |
OfferAccepted | Applicant accepted; grant exists |
OfferDeclined | Applicant declined; no grant |
Grant stages
| Stage | Meaning |
|---|---|
blueprint | Grantee must submit (or resubmit) the plan and KYC |
milestones | Delivering and reviewing milestones |
impact_report | All milestones paid; report required |
complete | Impact report approved |
Source of truth in code
| Step | File |
|---|---|
| Submit application | packages/web/src/actions/funding/submit-degrant-application.ts |
| Steward score and admin decision | packages/web/src/actions/funding/degrants-application-lifecycle.ts |
| Accept / decline offer | respondToOffer in the same file |
| Blueprint, milestones, impact report | packages/web/src/actions/funding/degrants-lifecycle.ts |
| Status enums | packages/database/prisma/schema.prisma (DegrantApplicationStatus) |
zadao.ai