Generate IC credit memos from structured deal inputs — CDFI loans, NMTC deals, and impact investments
Project description
credit-memo 📝
Generate IC credit memos from structured deal inputs.
Takes borrower profile, loan terms, financial data, impact metrics, and risk factors as structured Python inputs and generates a complete, formatted Investment Committee credit memo in Markdown or Word (.docx) format.
Why credit-memo?
Every CDFI analyst, IC committee, and private credit team writes credit memos from scratch in Word. credit-memo standardizes the process — define your deal inputs once, generate a professional IC memo instantly.
Installation
pip install credit-memo
# For Word .docx output
pip install credit-memo[docx]
Quickstart
from creditmemo import (
CreditMemo, DealProfile, BorrowerProfile,
LoanTerms, FinancialData, ImpactData, RiskFactor,
)
borrower = BorrowerProfile(
name="Southside Community Health Center",
borrower_type="nonprofit",
sector="healthcare",
state="IL",
city="Chicago",
year_founded=2005,
ceo_name="Dr. Maria Johnson",
mission="To provide quality healthcare to underserved communities.",
is_cdfi_certified=False,
)
loan = LoanTerms(
deal_type="loan",
amount=2_500_000,
interest_rate=0.045,
term_years=10,
amortization_years=20,
io_periods=12,
collateral="First mortgage on real property",
use_of_proceeds="Acquisition and renovation of community health facility",
min_dscr_covenant=1.20,
)
financials = FinancialData(
revenue_y1=2_800_000, revenue_y2=3_000_000, revenue_y3=3_200_000,
net_income_y1=150_000, net_income_y2=180_000, net_income_y3=210_000,
dscr=1.35, current_ratio=1.8,
)
impact = ImpactData(
jobs_created=18, jobs_retained=32,
patients_served=8500,
is_low_income_area=True,
is_nmtc_eligible=True,
is_minority_borrower=True,
)
deal = DealProfile(
deal_name="Southside Health Center — $2.5MM Term Loan",
borrower=borrower,
loan_terms=loan,
financial_data=financials,
impact_data=impact,
recommendation="approve_conditions",
prepared_by="Jay Patel",
prepared_date="2026-05-06",
fund_name="NCIF Community Lending Fund",
conditions=[
"Receipt of final appraisal satisfactory to lender",
"Evidence of $500k matching funds from borrower",
],
)
memo = CreditMemo(deal)
print(memo.to_markdown())
memo.save_markdown("southside_health_memo.md")
memo.save_docx("southside_health_memo.docx") # requires pip install credit-memo[docx]
Memo Sections Generated
- Executive Summary — deal overview, recommendation, key terms table
- Borrower Profile — organization description, mission, certifications
- Transaction Structure — loan terms, collateral, covenants, NMTC structure
- Financial Analysis — historical financials, key ratios, projections
- Impact Analysis — jobs, units, demographics, eligibility flags
- Risk Assessment — risk factors by severity with mitigants
- IC Recommendation — formal recommendation with conditions and signature block
Deal Types Supported
- loan — Direct loan or line of credit
- nmtc — New Markets Tax Credit investment
- equity — Equity investment
- grant — Grant or forgivable loan
- guarantee — Loan guarantee
NMTC Deals
from creditmemo import NMTCTerms
nmtc = NMTCTerms(
nmtc_allocation=10_000_000,
credit_price=0.83,
leverage_loan_rate=0.045,
qlici_a_rate=0.045,
qlici_b_rate=0.010,
cde_fee_rate=0.02,
cde_name="Chicago Development Fund",
investor_name="US Bancorp CDC",
)
deal = DealProfile(..., nmtc_terms=nmtc, ...)
Running Tests
PYTHONPATH=. pytest tests/ -v
29 tests across all modules.
Who This Is For
- CDFI analysts drafting IC memos for loan committee
- Private credit teams standardizing deal documentation
- CDEs preparing NMTC investment memos
- Impact investors documenting community development deals
- Anyone replacing manual Word memo templates with structured Python inputs
License
MIT 2026 Jaypatel1511
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file credit_memo-0.1.0.tar.gz.
File metadata
- Download URL: credit_memo-0.1.0.tar.gz
- Upload date:
- Size: 13.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0cce4b20f74df91ed57bb4630a0024b0d20d1288fb881e69d58c1c6e3aa4aaa
|
|
| MD5 |
96601b7b9125ff7a6f1c721c2717423a
|
|
| BLAKE2b-256 |
b0daa4bb00e2f2fe140c1a2d56cf7b443d241aaf855aca7536b43e7604ac2aff
|
File details
Details for the file credit_memo-0.1.0-py3-none-any.whl.
File metadata
- Download URL: credit_memo-0.1.0-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05fc433cf0c204b409571855da176fd3d3074a5d1f133d80f20336b2a5bb973d
|
|
| MD5 |
cc12288791b464243244e14351db9469
|
|
| BLAKE2b-256 |
fe24c94ae6523e82aa477f2e2c9097b67a1261bf46b212b69e15d32dbbdd1617
|