Organization Allocation Lookup Process

🔍 Organization Allocation Lookup Process

Organization Table (Set During Onboarding)

Organization ID: 123 - "Literacy Foundation"

Functional Split (Organization-wide)

{ "functionalSplit": { "Program": 0.80, "Admin": 0.15, "Fundraising": 0.05 } }

Program Split (Within Program %)

{ "programSplit": [ { "name": "Youth Reading Initiative", "percent": 0.50, "metaTag": "Reading promotion" }, { "name": "STEM Summer Program", "percent": 0.30, "metaTag": "STEM education" }, { "name": "Adult Literacy", "percent": 0.20, "metaTag": "Adult education" } ] }
⬇️ UPLOAD PROCESSING ⬇️

🔒 RESTRICTED GRANT ($5,000)

CSV Input: Program = "Youth Reading Initiative"

🔍 LOOKUP & VALIDATE
Check "Youth Reading Initiative" exists in
Organization.programSplit[].name

✅ Validation Result: Found! Valid program name

💾 Record.defaultAllocations

[ { "program": "Youth Reading Initiative", "percent": 1.00, "amount": 5000, "metaTag": "Reading promotion" } ]

🔓 UNRESTRICTED DONATION ($5,000)

CSV Input: Program = "Unrestricted"

🧮 CALCULATE ALLOCATION
Use Organization.functionalSplit
+ Organization.programSplit

📐 Calculation:

  • Program portion: $5,000 × 0.80 = $4,000
  • Youth Reading: $4,000 × 0.50 = $2,000
  • STEM Summer: $4,000 × 0.30 = $1,200
  • Adult Literacy: $4,000 × 0.20 = $800
  • Admin: $5,000 × 0.15 = $750
  • Fundraising: $5,000 × 0.05 = $250

💾 Record.defaultAllocations

[ { "program": "Youth Reading Initiative", "percent": 0.40, "amount": 2000, "metaTag": "Reading promotion" }, { "program": "STEM Summer Program", "percent": 0.24, "amount": 1200, "metaTag": "STEM education" }, { "program": "Adult Literacy", "percent": 0.16, "amount": 800, "metaTag": "Adult education" }, { "program": "Admin", "percent": 0.15, "amount": 750 }, { "program": "Fundraising", "percent": 0.05, "amount": 250 } ]

🔑 Key Points for Implementation:

  • Organization table = "Recipe" - stores how to split money for this org
  • Restricted grants: Lookup program name, use 100% allocation
  • Unrestricted donations: Calculate allocation using org's recipe
  • Record table: Stores the final calculated allocation for each donation
  • Single source of truth: All allocation logic references the Organization's JSON config