# Fund-attribution allowlist — SOURCE side. Every string in nmtcapp/,
# streamlit_app/ and docs/ that attributes a BAR to the CDFI Fund, the Review
# Process or a regulation, ruled against the primary source.
#
# Format:  KIND | [first location] citation | normalised claim (digits -> N)
#
#   CITED      the authority states it. The citation names the DOCUMENT and the
#              PAGE or QUESTION it was read from. Unlike the sibling list in
#              tests/attribution_allowlist.txt, where "a citation recorded here
#              is recorded, not verified", every CITED entry below was checked
#              against the retrieved primary source in the 1.2.2 sweep.
#   DEFECT     the authority does NOT state it. Ruled, tagged D1..D6, and left
#              in place: this round ships the gate only. See THE SIX below.
#   HOUSE      this tool's own judgement, and the RENDERED text says so.
#   DISCLAIM   names the authority in order to deny it — the shape 1.2.1 added.
#   NARRATIVE  descriptive prose or a docstring; states no bar.
#   LABEL / PLACEHO / AUDIENCE / SELFREP as in the sibling list.
#
# READ THIS BEFORE TRUSTING A CITED ROW (1.3.0).
#
#   A GATE IS EXACTLY AS GOOD AS THE DOCUMENT ITS ALLOWLIST WAS RULED AGAINST.
#   EXPECTED_DEFECTS = 0 in tests/test_fund_attribution_source.py means "no
#   false attributions among those RULED". It does not mean "none remain".
#
# Every entry below was ruled in the 1.2.2 sweep against the Review Process,
# which is a SEVEN-PAGE SUMMARY of how the CDFI Fund scores an application. The
# Allocation Application is the INSTRUMENT — the thing the Applicant actually
# fills in — and it is 142 pages. Where the two differ the Application governs.
#
# Measured, not hypothetical: the two Question 25 rows below quoted the Review
# Process word for word and were correct to do so, and were still incomplete
# against the Application. The Review Process's "at least 20% of its QLICIs to
# 'Deep Distress' areas" is, in the Application, the TOP RUNG of a selectable
# 0/5/10/15/20 ladder over FOUR area types. A CDE reading the summary as a bar
# understates its own qualifying share to a federal agency. See 1.3.0 S1/S2.
#
# So: a Review Process citation is sound for a SCORING behaviour and owed a
# check against the Application for any COMMITMENT, PERCENTAGE or LIST OF
# AREAS. Rows re-ruled in 1.3.0 say so in their citation.
#
# THE PRIMARY SOURCES, both retrieved and text-extracted locally rather than
# fetched through a summarising model:
#
#   CY 2024-2025 NMTC Program Review Process, 7 pages (retrieved 2026-08-16)
#   https://www.cdfifund.gov/system/files/2025-12/CY_2024_25_NMTC_Program_Review_Process.pdf
#
#   CY 2024-2025 NMTC Program Allocation Application, 142 pages, 1,525,626
#   bytes (retrieved 2026-08-17; Question 25 at printed pp. 38-41 / PDF 65-68)
#   https://www.cdfifund.gov/system/files/2024-11/CY_2024-2025_NMTC_Program_Allocation_Application.pdf
#
# The two sentences this round turned on, quoted verbatim:
#
#   p.6, Part II.A.1 (Questions 14-16):
#     "For all Applicants, except those solely offering Financial Counseling
#      and Other Services or purchasing loans from other CDEs, the Applicant
#      indicated (in Question 15) that 100% of its QLICIs will be provided in
#      the form of equity; equity-equivalent financing; debt with interest
#      rates at least 50% below-market; or debt that otherwise satisfies at
#      least five indicia of flexible or non-traditional rates and terms, as
#      specified under Question 14."
#
#   p.7, Part II.B.2 (Question 23):
#     "The Applicant indicated that it will commit to using substantially all
#      of the proceeds of its QEIs to make QLICIs in one or more businesses in
#      which persons Unrelated to the Applicant hold the majority equity
#      interest."
#
# Note what the second one does NOT contain: a percentage. Nor does the
# corroborating sentence on p.2. Treas. Reg. 1.45D-1(c)(5)(i) — verified
# against eCFR, title-26 — puts "substantially all" at 85 percent, reduced to
# 75 percent in the seventh year. The 90% this package holds is neither.
#
# THE SIX OUTSTANDING DEFECTS. Ruled here, fixed in the next round.
#
#   D1  Product Flexibility 50% / 5-indicia   6 surfaces
#   D2  "90%+ deployment rate"                3 surfaces
#   D3  Unrelated Entities 90%                4 surfaces
#   D4  "Top Tier" 95/45 as a Fund gate       4 surfaces
#   D5  Special Targeting "5 bonus points"    2 surfaces
#   D6  "expects near-100% eligibility"       1 surface
#
# A SEVENTH was ruled and IS fixed in this round, which is why it has no entry:
# nmtcapp/data/benchmark_thresholds.py declared its whole first half "SECTION A
# — CDFI Fund Published Thresholds", which is the provenance claim that
# licensed D1-D5. An allowlist written against a file still declaring itself
# sourced would inherit the claim it exists to adjudicate.
#
# WHY THE DEFECTS ARE STILL HERE. The 1.2.2 brief was scoped for two of these
# and instructed: if the sweep finds more than two, stop and report before
# fixing. It found seven. This round therefore ships the gate that enumerates
# them — so the fix round is scoped off this file rather than off anyone's
# hand-count. Every one of the six was found on at least one surface that no
# prior round had listed, and D2, D4 and D5 were not known to exist at all.
#
# DO NOT ADD AN ENTRY YOU HAVE NOT OPENED THE SOURCE FOR. Six entries in the
# sibling list once cited a "CDFI Fund NMTC Program Annual Report, FY2018-
# FY2023" that does not exist.
CITED | [docs/workflow/win-alignment.md:89] D4 FIXED. CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2 - the published Highly Qualified gate, quoted correctly, plus the round-2 zero-hit finding for 'Top Tier' across all three primary documents. The row above it is now marked 'This tool'. | "top tier" is not a cdfi fund tier.** the review process (p.N step N) publishes the highly qualified gate — N per section and an aggregate base score of N — and **nothing above it**; "top tier" returns zero hits across the allocation application (N pp.), the review process (N pp.) and the cy N-N noaa (N pp.). the N/N cut points are an unsourced house heuristic, and an application in this row is in the *same* highly qualified pool as the row above it, not a further one. see [methodology](../reference/methodology.md#top-tier-is-not-a-cdfi-fund-tier).
DISCLAIM | [nmtcapp/intelligence/recommendations.py:441] States that full credit here is on 'this tool's %-of-QEI proxy' and directs the CDE to compute its own QLICI share. Disclosure, not attribution. | add Npp of deeper-distress projects to reach full credit on this tool's N-of-qei proxy. target tracts at ≤N% ami or ≥N% poverty rate to maximize the distress classification, and compute your own qlici-denominated share before committing to a figure.
CITED | [nmtcapp/intelligence/win_probability.py:606] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2, verbatim: 'an aggregate score of at least 40 out of a possible total of 50 points in each of the two scored Application sections; and (ii) an aggregate base score (excluding priority points) of at least 85 points'. Newly adjudicated in round 2: 'Highly Qualified' is the Fund's OWN NAME for this gate, so stating a bar required for it attributes that bar to the Fund. Figures verified and correct; text unchanged. | aggregate base score (N/N) is below the N-point minimum required for highly qualified status.
DISCLAIM | [nmtcapp/renderers/_disclosure.py:42] Banner text that withdraws an earlier claim ('reflect verified projects only') rather than making one. | banner text naming the unverified project ids. this text used to claim the figures "reflect verified projects only". they do not, and that was the more dangerous half of the defect: a wrong figure is a defect, but a wrong figure carrying an accurate-sounding disclaimer spends the reader's trust to conceal itself. what the distress figures actually do (distress_analysis.py:N and N-N): an unverified project has ``distress_level = none``, so it can never enter the numerator — but ``total_qei`` sums every project, so it is always in the denominator. measured: a pipeline whose only verified project was N% of verified qei and severely distressed reported N%. the arithmetic is the half that stays. two reasons, and the second decides: N it aggregates over the whole pipeline, which is the shape the fund's own commitment takes. cy N-N allocation application, question N(a): "at least N% of its qlicis (in terms of aggregate dollar amounts)" — aggregate over all of them, not over the subset whose geocoding happened to succeed. the shape, not the basis: the fund's denominator is qlicis and this package's is qei, and this line used to say the two "match", which is the claim fix-N removed from the rendered document. it is not the reason the denominator is what it is — reason N is. N a verified-only denominator overstates, in the direction that flatters the applicant. one verified deep-distress project out of twenty would file "N% of qei in deep/severe tracts". understating is the only safe direction to err in a federal filing, and the current number is an honest lower bound. so the sentence changes to describe the lower bound, rather than the arithmetic changing to match a sentence that was wrong. the document carries two denominators on purpose, which is why this text no longer states one rule for all of them: the eligibility rate uses a verified-only denominator and says so on its face (eligibility_check.py:N "only n% of verified qei"), while the distress shares use the full pipeline. each figure states its own basis; the banner stops pretending they share one.
CITED | [nmtcapp/intelligence/recommendations.py:878] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2, verbatim: 'an aggregate score of at least 40 out of a possible total of 50 points in each of the two scored Application sections; and (ii) an aggregate base score (excluding priority points) of at least 85 points'. Newly adjudicated in round 2: 'Highly Qualified' is the Fund's OWN NAME for this gate, so stating a bar required for it attributes that bar to the Fund. Figures verified and correct; text unchanged. | both sections meet the N-point minimum but aggregate score (N/N) is below N — the highly qualified threshold.
NARRATIVE | [nmtcapp/intelligence/recommendations.py:422] expected_impact exhortation about the weighting of a criterion within THIS TOOL's scoring. No authority, no bar. | bring higher distress targeting to full credit; this is the highest-weighted community outcomes criterion and directly affects gating.
CITED | [nmtcapp/intelligence/win_probability.py:594] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2, verbatim: 'an aggregate score of at least 40 out of a possible total of 50 points in each of the two scored Application sections; and (ii) an aggregate base score (excluding priority points) of at least 85 points'. Newly adjudicated in round 2: 'Highly Qualified' is the Fund's OWN NAME for this gate, so stating a bar required for it attributes that bar to the Fund. Figures verified and correct; text unchanged. | business strategy section (N/N) is below the N-point minimum required for highly qualified status.
CITED | [nmtcapp/intelligence/recommendations.py:825] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2, verbatim: 'an aggregate score of at least 40 out of a possible total of 50 points in each of the two scored Application sections; and (ii) an aggregate base score (excluding priority points) of at least 85 points'. Newly adjudicated in round 2: 'Highly Qualified' is the Fund's OWN NAME for this gate, so stating a bar required for it attributes that bar to the Fund. Figures verified and correct; text unchanged. | business strategy section score (N/N) is below the N-point minimum required to reach the highly qualified pool. applications that miss either section minimum do not advance to phase N
CITED | [nmtcapp/intelligence/win_probability.py:600] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2, verbatim: 'an aggregate score of at least 40 out of a possible total of 50 points in each of the two scored Application sections; and (ii) an aggregate base score (excluding priority points) of at least 85 points'. Newly adjudicated in round 2: 'Highly Qualified' is the Fund's OWN NAME for this gate, so stating a bar required for it attributes that bar to the Fund. Figures verified and correct; text unchanged. | community outcomes section (N/N) is below the N-point minimum required for highly qualified status.
CITED | [nmtcapp/intelligence/recommendations.py:851] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2, verbatim: 'an aggregate score of at least 40 out of a possible total of 50 points in each of the two scored Application sections; and (ii) an aggregate base score (excluding priority points) of at least 85 points'. Newly adjudicated in round 2: 'Highly Qualified' is the Fund's OWN NAME for this gate, so stating a bar required for it attributes that bar to the Fund. Figures verified and correct; text unchanged. | community outcomes section score (N/N) is below the N-point minimum required to reach the highly qualified pool.
CITED | [nmtcapp/intelligence/distress_analysis.py:86] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.7 Q25, quoted in the module docstring with both commitments' QLICI denominator stated. Verified verbatim against the retrieved PDF. 1.3.0 REVIEW PROCESS SWEEP. Re-cited from the Review Process's summary of Question 25 to the Allocation Application itself (Question 25(a), printed p. 38 / PDF 65): 'at least 85% of its QLICIs (in terms of aggregate dollar amounts)'. The word 'bar' is gone from the 20%: Question 25(b)(i) is a selectable 0/5/10/15/20 ladder over four area types, not a threshold, so the summary's 'at least 20% of its QLICIs to Deep Distress areas' reads as something the Application does not ask | compute distress level breakdown for a pipeline. every share returned here has ``total_qei`` as its denominator — the sum of ``qei_request`` over the whole pipeline. ``qlici_amount`` is never read by this module. that matters because several of the cdfi fund's own commitments are stated as shares of qlicis rather than of qei — cy N-N nmtc allocation application, question N(a), printed p. N: "at least N% of its qlicis (in terms of aggregate dollar amounts)" — so these figures are proxies for those commitments and no caller may render one as an answer to a commitment. changing the denominator moves every scored figure and stays deferred behind a written methodology. returns a dict with: - ``pct_deep`` – fraction of qei in deep-distress tracts - ``pct_severe_excluding_deep`` – fraction of qei in tracts that are severely distressed but not also deep. named for what it is: deep distress is a strict subset of severe distress in the fund's own workbook (see :data:`deep_is_subset_of_severe`), so this is a residual and not "the severe share". - ``pct_deep_or_severe`` – the severe share, deep included. this is what the fund's severe-distress flag means. it is not what the N% higher-distress commitment is measured against: that is a share of qlicis, over severe distress or multiple indicia of distress, and this package computes no multi-indicia measure either. - ``pct_lic`` – fraction of qei in standard lic tracts - ``pct_non_lic`` – fraction of qei in ineligible tracts - ``pct_native_area`` – fraction of qei in nmtc native areas - ``pct_high_migration_rural`` – fraction of qei in hmr tracts - ``dollars_by_distress`` – absolute qei dollars in each category - ``pct_eligible`` – fraction of qei in any eligible (lic) tract - ``meets_min_threshold`` – bool, ≥ min_deep_distress competitive threshold - ``meets_target_threshold`` – bool, ≥ target_deep_distress threshold - ``project_count_by_distress`` – project count per level example:: result = analyze_distress_concentration(pipeline) print(f"deep/severe: {result['pct_deep_or_severe']:.N%}")
CITED | [nmtcapp/intelligence/recommendations.py:887] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2, verbatim: 'an aggregate score of at least 40 out of a possible total of 50 points in each of the two scored Application sections; and (ii) an aggregate base score (excluding priority points) of at least 85 points'. Newly adjudicated in round 2: 'Highly Qualified' is the Fund's OWN NAME for this gate, so stating a bar required for it attributes that bar to the Fund. Figures verified and correct; text unchanged. | cross the N-point highly qualified threshold.
CITED | [nmtcapp/intelligence/recommendations.py:601] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.7 Part II.B.1 - 5+ years AND 70% of direct financing volume to DBCs. Accurate; UPHELD. | dbc track record priority points are N/N full credit requires N+ years of dbc focus and N+ of direct financing volume to disadvantaged businesses/communities.
CITED | [docs/reference/methodology.md:86] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.7 Part II.B.1: 'at least 70% of its total dollar volume of direct financing activities has been provided to DBCs', and 'five or more years of experience'. Both figures and the AND are accurate. UPHELD - do not sweep this one. | dbc track record | N | N+ years and N%+ of direct financing volume to disadvantaged businesses/communities
CITED | [streamlit_app/pages/4_About_and_Methodology.py:137] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.7 Part II.B.1 - 5+ years and 70% of financing volume to DBCs. UPHELD. | dbc track record** | N | ≥ N years and ≥ N of financing volume to disadvantaged businesses/communities
CITED | [nmtcapp/renderers/_methodology.py:110] IRC 45D(a)(2), quoted inline in the rendered text: 5% of the QEI on each of the first three credit allowance dates and 6% on each of the remaining four. Corroborated by Treas. Reg. 1.45D-1(b)(3) as retrieved from eCFR title-26. | deal economics: computed using the nmtc-calc library, standard leveraged nmtc structure. statutory credit rate N of qei over N years (irc §Nd(a)(N): N% of the qei on each of the first three credit allowance dates and N% on each of the remaining four). assumed credit price $N/credit and cde fee N of qei are market assumptions of this model, not cdfi fund parameters. the leverage loan is the residual of qei less investor equity, so leverage plus equity equals qei in every surface of this document.
CITED | [docs/reference/methodology.md:57] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.7 Part II.C.1 (Question 25): 'at least 20% of its QLICIs to "Deep Distress" areas'. Rendered against QEI and labelled a proxy on its face.  1.3.0 S2 RE-RULED AGAINST THE INSTRUMENT. The citation above quotes the CY 2024-2025 NMTC Program Review Process, a SEVEN-PAGE SUMMARY, and quotes it correctly. The Allocation Application (142 pp., retrieved and text-extracted locally 2026-08-17), Question 25 at printed pp. 38-41 (PDF 65-68), states both commitments differently in two ways the summary drops: the 85% is denominated in QLICIs 'in terms of aggregate dollar amounts' over a one-of-items-1-5 or two-of-items-6-12 test applied PER QLICI, and the 20% is NOT A BAR but the top rung of a selectable 0/5/10/15/20 ladder (25(b)(i)'s Response column verbatim: '0 / 5 / 10 / 15 / 20, if selected enter exact percentage 20-100% in 25(b)(ii)') over FOUR area types, a QLICI meeting which 'will also automatically meet the commitment made in Question 25(a)'. Both omissions instructed a CDE to UNDERSTATE its own qualifying share. Kind stays CITED, not DEFECT: the Review Process does state both sentences. What changed is the rendered text and the document it is ruled against | deep distress commitment | N | N%+ of **qei** in cdfi fund-designated deep distress areas — a proxy for the **top rung** of question N(b)(i)'s ladder, see the basis note below
CITED | [streamlit_app/pages/4_About_and_Methodology.py:106] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.7 Q25 20% Deep Distress commitment, rendered against QEI and labelled a proxy.  1.3.0 S2 RE-RULED AGAINST THE INSTRUMENT. The citation above quotes the CY 2024-2025 NMTC Program Review Process, a SEVEN-PAGE SUMMARY, and quotes it correctly. The Allocation Application (142 pp., retrieved and text-extracted locally 2026-08-17), Question 25 at printed pp. 38-41 (PDF 65-68), states both commitments differently in two ways the summary drops: the 85% is denominated in QLICIs 'in terms of aggregate dollar amounts' over a one-of-items-1-5 or two-of-items-6-12 test applied PER QLICI, and the 20% is NOT A BAR but the top rung of a selectable 0/5/10/15/20 ladder (25(b)(i)'s Response column verbatim: '0 / 5 / 10 / 15 / 20, if selected enter exact percentage 20-100% in 25(b)(ii)') over FOUR area types, a QLICI meeting which 'will also automatically meet the commitment made in Question 25(a)'. Both omissions instructed a CDE to UNDERSTATE its own qualifying share. Kind stays CITED, not DEFECT: the Review Process does state both sentences. What changed is the rendered text and the document it is ruled against | deep distress commitment** | N | ≥ N of **qei** in deep distress areas — a proxy for the **top rung** of a selectable ladder, see below
CITED | [nmtcapp/intelligence/distress_analysis.py:70] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.7 Q25 20% Deep Distress commitment, named here expressly as a QEI proxy for a QLICI commitment. The 1.2.1 remedy. 1.3.0 REVIEW PROCESS SWEEP. Re-cited from the Review Process's summary of Question 25 to the Allocation Application itself (Question 25(a), printed p. 38 / PDF 65): 'at least 85% of its QLICIs (in terms of aggregate dollar amounts)'. The word 'bar' is gone from the 20%: Question 25(b)(i) is a selectable 0/5/10/15/20 ladder over four area types, not a threshold, so the summary's 'at least 20% of its QLICIs to Deep Distress areas' reads as something the Application does not ask | deep distress only, as a share of qei — this tool's proxy for the top rung of the fund's N%-of-qlicis commitment ladder, not that commitment's own basis
CITED | [nmtcapp/validation/eligibility_check.py:95] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.7 Q25 - states the 85%-of-QLICIs bar correctly AND disclaims this tool's house band in the same string. Not exempted as a disclaimer precisely because it also asserts a Fund figure (narrowing X1-EXCEPT). | deep/severe distress concentration (N of qei) is below this tool's internal screening band of N (a house heuristic, not a cdfi fund threshold). the published cy N-N severe-distress bar for full credit is N% of qlicis, which this tool does not compute — do not read the figure above as an answer to it
CITED | [docs/reference/methodology.md:62] D2 FIXED. CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.4 (prior-allocation deployment is a Phase 2 compliance matter carrying NO percentage) and p.7 Part II.A.4. 'deployment rate' returns zero hits across CY 2024-2025 NMTC Allocation Application (142pp, 1,525,626 bytes, retrieved and text-extracted locally 2026-08-17), the Review Process and CY 2024-2025 NOAA (89 FR 92283-92292, 21 Nov 2024, 10pp, retrieved from the Federal Register). | deployment of a *prior* allocation is a separate phase N compliance matter (*review process* p.N) and carries **no published percentage**. the phrase "deployment rate" appears nowhere in the allocation application (N pp.), the review process (N pp.) or the cy N-N noaa (N pp.). the N% this tool scores against is its own.
CITED | [nmtcapp/renderers/_methodology.py:80] CDFI Fund NMTC LIC Eligibility workbook, 2016-2020 ACS, columns O and P, introduced as quoted with spacing normalised - the 1.2.1 FIX-4 wording, verified intact. | distress levels (quoted from the cdfi fund nmtc lic eligibility workbook, N N — the file this tool loads to classify every tract; the criteria are the workbook's own, with spacing normalised for legibility): severe distress = lic and (poverty>N%; mfi<=N%; unemployment>=N). deep distress = lic and (poverty>N%; mfi<=N%; unemployment>=N). the semicolons are ors; both tiers additionally require the tract to be a low-income community.
NARRATIVE | [nmtcapp/renderers/_cell_format.py:1] Module docstring about currency formatting. Matched on an incidental token; makes no claim about any authority. | format a table cell by what its column is, not by what python type it holds. the defect this replaces every renderer decided currency by looking at the value:: _word_helpers._fmt_cell float and val > N -> f"${val:,.Nf}" pdf_builder._df_to_rl_table float and abs(v) > N -> f"${v:,.Nf}" markdown_builder._df_to_md float and v > N -> f"{v:,.Nf}" excel_builder._write_df_to_sheet float and abs>N -> fmt_currency a type-based rule standing in for a column-based one. it gets two things wrong in opposite directions and both had live instances in N: too eager any non-currency float over the threshold takes a dollar sign it has not earned. a square footage, a ratio, an index, a rate. too timid a share stored as a fraction (N) is under the threshold, so word and pdf printed "N" for a state holding N% of pipeline qei, markdown printed "N", and excel's auto-detect gave it "#,##N" and rendered it "N". appendix c read N N N N N N N down the whole share column, in the workbook the word and pdf documents cross-reference as the authoritative attachment. N worked around the second by pre-formatting that one column to a string in tables/geographic_table, and said so in a comment that ends "if this sheet's format config is repaired later, move this back to a float and give it a real pct_cols entry." this module is that repair. the column knows what it is; the value does not. the convention, which every table in this package already follows: header ends with "($)" currency, whole dollars header ends with "($/credit)" currency, cents header contains "(%" or "%)" a share stored as a fraction, shown as % header names an identifier digits, exactly as given: no separator, no decimal point (see below) anything else plain: thousands separator for integers, two decimals for floats, str() otherwise nothing infers from magnitude. a column that wants a dollar sign says so in its own name, which is also what the reader of the header is told. identifiers are not quantities (N b-N) the "anything else" arm above ends in ``f"{value:,}"``, and that is right for a count and wrong for a label that happens to be made of digits. it shipped a prior nmtc award year as **N** on all four surfaces — a year is an identifier, not a quantity, and nothing is N of anything. the consequence scales with the identifier. an N-digit census tract geoid rendered ``N`` in a filing, in the column carrying a "cdfi fund nmtc eligibility table" citation, would be worse: unlike a stray comma in a year it is not obviously a formatting fault, and a reviewer checking the tract against the fund's table finds nothing at that number. so the class is declared rather than discovered. a column is an identifier when its header names one — year, census tract, geoid, fips, zip, or an id — and an identifier column never takes a separator whatever the magnitude of its value. the geoid columns reach this module as strings today (tables/distress_table calls ``str()`` on them), so this rule is not what makes them correct now; it is what keeps them correct the first time one arrives as an int.
HOUSE | [docs/reference/methodology.md:182] D1 FIXED. Both cut points are this tool's own and the sentence now says so on its face, with a link to the Question 15 disclosure above it. No Fund figure is asserted here. | full credit **on this tool's sub-score** if either: ≥ N% of products are offered below market rate, or ≥ N indicia of flexible product terms are documented. both cut points are this tool's own, and neither is the cdfi fund's question N test — see [product flexibility does not measure the cdfi fund's question N test](#product-flexibility-does-not-measure-the-cdfi-funds-question-N-test), above.
CITED | [docs/reference/methodology.md:56] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.7 Part II.C.1 (Question 25): 'at least 85% of its QLICIs in specified areas of severe distress and/or areas characterized by multiple indicia of distress'. Rendered here against QEI and labelled a proxy on its face, with the BASIS NOTE below it - the 1.2.1 remedy, verified intact.  1.3.0 S2 RE-RULED AGAINST THE INSTRUMENT. The citation above quotes the CY 2024-2025 NMTC Program Review Process, a SEVEN-PAGE SUMMARY, and quotes it correctly. The Allocation Application (142 pp., retrieved and text-extracted locally 2026-08-17), Question 25 at printed pp. 38-41 (PDF 65-68), states both commitments differently in two ways the summary drops: the 85% is denominated in QLICIs 'in terms of aggregate dollar amounts' over a one-of-items-1-5 or two-of-items-6-12 test applied PER QLICI, and the 20% is NOT A BAR but the top rung of a selectable 0/5/10/15/20 ladder (25(b)(i)'s Response column verbatim: '0 / 5 / 10 / 15 / 20, if selected enter exact percentage 20-100% in 25(b)(ii)') over FOUR area types, a QLICI meeting which 'will also automatically meet the commitment made in Question 25(a)'. Both omissions instructed a CDE to UNDERSTATE its own qualifying share. Kind stays CITED, not DEFECT: the Review Process does state both sentences. What changed is the rendered text and the document it is ruled against | higher distress targeting | N | N%+ of **qei** in severely distressed areas — a proxy for a question N(a) commitment measured on qlici dollars, see the basis note below
CITED | [streamlit_app/pages/4_About_and_Methodology.py:105] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.7 Q25 85% commitment, rendered against QEI and labelled a proxy on its face.  1.3.0 S2 RE-RULED AGAINST THE INSTRUMENT. The citation above quotes the CY 2024-2025 NMTC Program Review Process, a SEVEN-PAGE SUMMARY, and quotes it correctly. The Allocation Application (142 pp., retrieved and text-extracted locally 2026-08-17), Question 25 at printed pp. 38-41 (PDF 65-68), states both commitments differently in two ways the summary drops: the 85% is denominated in QLICIs 'in terms of aggregate dollar amounts' over a one-of-items-1-5 or two-of-items-6-12 test applied PER QLICI, and the 20% is NOT A BAR but the top rung of a selectable 0/5/10/15/20 ladder (25(b)(i)'s Response column verbatim: '0 / 5 / 10 / 15 / 20, if selected enter exact percentage 20-100% in 25(b)(ii)') over FOUR area types, a QLICI meeting which 'will also automatically meet the commitment made in Question 25(a)'. Both omissions instructed a CDE to UNDERSTATE its own qualifying share. Kind stays CITED, not DEFECT: the Review Process does state both sentences. What changed is the rendered text and the document it is ruled against | higher distress targeting** | N | ≥ N of **qei** in severely distressed tracts — a proxy for a qlici-dollar commitment, see below
CITED | [nmtcapp/intelligence/win_probability.py:715] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.3 Step 2 - the 40-point section minimum and the Phase 2 review of Management Capacity and Capitalization Strategy (p.3, bullet 3). | highly qualified (N/N). both sections meet the N-point minimum. priority points: N/N phase N review of management capacity and capitalization strategy will determine final ranking. focus improvement on N (N/N).
CITED | [nmtcapp/intelligence/recommendations.py:1010] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2, verbatim: 'an aggregate score of at least 40 out of a possible total of 50 points in each of the two scored Application sections; and (ii) an aggregate base score (excluding priority points) of at least 85 points'. Newly adjudicated in round 2: 'Highly Qualified' is the Fund's OWN NAME for this gate, so stating a bar required for it attributes that bar to the Fund. Figures verified and correct; text unchanged. | highly qualified (N/N). business strategy: N/N community outcomes: N/N both sections meet the N-point gating minimum. priority changes below can improve ranking within the highly qualified pool.
CITED | [streamlit_app/pages/2_Win_Alignment_Scorer.py:79] D4 FIFTH SURFACE, FIXED. CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2, verbatim: 'an aggregate score of at least 40 out of a possible total of 50 points in each of the two scored Application sections; and (ii) an aggregate base score (excluding priority points) of at least 85 points'. This line rendered as '**Highly Qualified gate:** 85+ ...' immediately above '**Top Tier gate:** 95+ ...', same weight, same shape, so a CDE read a matched pair of CDFI Fund gates and only one of them was. Neither string was on round 1's list of four D4 surfaces, and neither could be seen by this gate before round 2 added the tier names as implicit authorities. Now names the Fund and cites the page; the Top Tier line beneath it is marked as this tool's label. | highly qualified gate (cdfi fund):** N+ aggregate and N+ in each section — cy N-N review process, p.N step N
CITED | [docs/reference/methodology.md:130] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2. Unchanged figures; a 'Whose threshold' column was added so the published gate and this tool's invented tier are distinguishable in the table itself. | highly qualified** | N–N | both sections ≥ N | cdfi fund
CITED | [streamlit_app/pages/4_About_and_Methodology.py:219] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2 - the same published gate on the Streamlit About page, now carrying the provenance column. | highly qualified** | N–N | both sections ≥ N | phase N reviewed; award depends on ranking | cdfi fund
CITED | [docs/workflow/win-alignment.md:86] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2 - the same published gate on a third surface, now carrying the provenance column. | highly qualified** | N–N | both sections ≥ N/N | yes | cdfi fund
HOUSE | [nmtcapp/intelligence/recommendations.py:664] D5 FIXED. This is the recommendation's CITATION FIELD, rewritten to name the documents that DISPROVE the claim rather than a Review Process section that never contained it. CY 2024-2025 NOAA (89 FR 92283-92292, 21 Nov 2024, 10pp, retrieved from the Federal Register) section V.B(b); CY 2024-2025 NMTC Allocation Application (142pp, 1,525,626 bytes, retrieved and text-extracted locally 2026-08-17) p.132 (the four categories define a Disadvantaged Business). | house criterion — no cdfi fund source. disproved against: cy N-N noaa (N fr N N nov N), section v.b(b), two statutory priorities totalling N points; cy N-N nmtc allocation application p.N which uses these four categories to define a disadvantaged business.
CITED | [nmtcapp/intelligence/win_probability.py:65] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.3 (50/50) and p.2 (10 priority points); the sub-weight disclaimer follows in the same string. | important: this score assesses alignment with the cdfi fund's published cy N-N review process criteria (business strategy N pts + community outcomes N pts + priority points N pts). it is a self-assessment tool, not a guarantee of selection. tier names: "highly qualified" is the cdfi fund's own gate. "top tier" is this tool's own label for an application well clear of that gate — the cdfi fund publishes no tier above highly qualified, and the N/N cut points behind the label are an unsourced house heuristic, not a federal figure. sub-score weights within sections are this tool's interpretation — the cdfi fund does not publish exact point values for individual sub-criteria. phase N factors (management capacity, capitalization strategy) and past reporting compliance deductions are not modeled here. source: cy_Nnmtc_program_review_process.pdf
NARRATIVE | [nmtcapp/intelligence/recommendations.py:557] expected_impact exhortation, 'improve outcomes quality to near-full credit'. No authority, no bar. | improve outcomes quality to near-full credit.
CITED | [docs/reference/methodology.md:117] D3 FIXED. Treas. Reg. 1.45D-1(c)(5)(i), verified against eCFR title-26: 'the term substantially all means at least 85 percent'. Quoted here in order to REFUSE it as a re-basing target, because it governs the deployment test at 1.45D-1(c)(1)(ii), not an unrelated-entities share. | it has deliberately not been re-based to N%.** treas. reg. §Nd-N(c)(N)(i) does define *"substantially all"* as "at least N percent", but it defines it for the **deployment** test — qei cash into qlicis, at §Nd-N(c)(N)(ii) — which is a different requirement. substituting N% here would swap one unstated number for another *while strengthening the appearance of a citation*.
NARRATIVE | [docs/index.md:7] Landing-page prose on why the tool exists. The two concentration figures are worked examples of two hypothetical pipelines, not a bar, and no authority is said to require anything. Matched only because 'allocation applications' is an authority token. | new markets tax credit allocation applications are decided on margin. two cdes with comparable missions and track records can receive divergent outcomes because one pipeline had N% deep-distress concentration and the other had N%. one had projects in N states; the other had N nmtc application builder exists to close that information gap — giving every cde the same benchmarking intelligence that previously required expensive consultants or years of pattern-recognition experience.
CITED | [docs/reference/methodology.md:139] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.6 Part II.A.1: 'require the selling CDE to re-invest at least 95% of these proceeds as QLICIs'. Recorded here expressly as a NUMERIC COINCIDENCE that does NOT license HOUSE_TOP_TIER_AGGREGATE_MIN=95. Found in round 2; the round-2 brief flagged only the '10 priority points' trap. RE-RULED 1.3.0 B1 ROUND, AND THE RULING WAS INCOMPLETE: this is a COMMITMENT PERCENTAGE, so by this file's own rule (see header) it was owed a check against the Application and never got one — the 1.2.2 sweep checked whether it licensed the house constant and stopped there. The Review Process's Part II.A.1 is Questions 14-16, and the hostile audit of 1.3.0 reports the Application states this same reinvestment commitment at Question 16(a), printed p.21, as 85% rather than 95%. THAT FIGURE IS NOT VERIFIED HERE: the Application is not checked into this repository by policy and was not available to the session that wrote this line, so 85% is recorded as a REPORTED CONFLICT to be settled against the instrument, not as a finding. Nothing renders off this quotation on any surface — it is a methodology-page citation — so the failure is in the METHOD, not in the output. Settle it in 1.3.1 by reading Question 16(a) and either correcting the quotation to the Application's figure or recording why the two differ. | note also that the review process's single "N%" — *"applicants purchasing loans from other cdes committed to require the selling cde to re-invest at least N% of these proceeds as qlicis"* (p.N) — is a reinvestment share on purchased loans, not a score. it is a different kind of quantity and does not support the N above.
HOUSE | [docs/reference/methodology.md:184] D1 FIXED. States that this tool divides a QEI-weighted portfolio share by a per-loan discount depth and that the result has no dimensional meaning. Asserts no Fund figure; names the limb as retained-because-removal-moves-the-baseline (1.2.3). | note the first line's arithmetic: `products_below_market_pct` is a qei-weighted share of the portfolio, while the fund's N% is the depth of the rate discount on an individual loan. dividing one by the other produces a number with no dimensional meaning. it is retained here only because removing it moves scored figures; that removal is N behind a written methodology.
CITED | [nmtcapp/validation/eligibility_check.py:87] D6 FIXED. Was 'CDFI Fund expects near-100% eligibility', a bare Fund expectation with no citation; 'near-100' returns zero hits across all three primary documents. Replaced with the structural requirement that is real: IRC 45D(d) (a QLICI must be made in a QALICB located in a Low-Income Community) and Treas. Reg. 1.45D-1(c)(5)(i) (substantially all, at least 85 percent, of QEI proceeds into QLICIs). The 90% trigger is disclosed as this tool's own screening band. Rest of the file re-checked in round 2: no other attribution remains. | only N of verified qei is in eligible tractsN flagged at this tool's own N% screening band — not a cdfi fund threshold. what is federal here is structural, not a scoring expectation: irc §Nd(d) requires each qlici to be made in a qualified active low-income community business, which must be located in a low-income community, and treas. reg. §Nd-N(c)(N)(i) requires substantially all — at least N percent — of qei proceeds to be invested in qlicis. qei attributed to ineligible tracts cannot count toward that test
CITED | [streamlit_app/pages/4_About_and_Methodology.py:171] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.3 Step 2 bullet 3 and p.4 - Management Capacity, Capitalization Strategy and Information Regarding Previous Awards are reviewed by CDFI Fund staff in Phase 2 and are not scored in Phase 1. 1.3.0 REVIEW PROCESS SWEEP. This row read 'Basis not established by this tool ... has not been checked against the Application's own question text'. It was accurate when 1.2.1 wrote it and STALE from 1.2.2 round 2, which established the QLICI basis from the NOAA and recorded it in nmtcapp/data/benchmark_thresholds.py while leaving the 'not checked' sentence live on this surface and in docs/reference/methodology.md. Now settled a third way, from the instrument: CY 2024-2025 NMTC Program Allocation Application, Question 22, printed p. 31 (PDF 58), verbatim - 'Applicants are therefore required to provide two target estimates below: (1) a minimum percentage of QLICIs the Applicant is willing to commit to provide to Non-Metropolitan Counties; and (2) the maximum percentage of QLICIs that the Applicant is willing to commit to providing to Non-Metropolitan Counties', against the Fund goal that '20% of all QLICIs made by Allocatees under this Round are invested in Non-Metropolitan Counties', with the formula reduction falling on Allocatees 'that have not committed to investing a minimum of 20% of their QLICIs in Non-Metropolitan Counties' and the Rural CDE 50% being a commitment 'in response to Question 22(c)'. Corroborated by CY 2024-2025 NOAA (89 FR 92283-92292), 'at least 20 percent of their QLICIs (as measured by dollar amount)'. The rendered row now states the mismatch on its face: the Fund measures QLICI dollars, this tool measures a QEI share over a hard-coded twelve-state list (intelligence/geographic_analysis.py:16) rather than the OMB Bulletin 20-01 county definition, and Question 22's own NOTE says it 'will not be evaluated and scored in Phase I' | phase N considerations (not scored by this tool) phase N evaluates qualitative factors through cdfi fund staff review. this tool reports these as informational flags (`phaseNflags`) but does not score them. | factor | what reviewers look for | |---|---| | **management capacity** | staffing, systems, organizational capability to deploy capital | | **capitalization strategy** | qei-raising track record; investor relationships; feasibility | | **non-metro commitment** | ≥ N% non-metro; ≥ N% for rural cde designation. **both are shares of qlicis and this tool computes a share of qei.** allocation application question N (printed p. N) asks for "a minimum percentage of **qlicis** the applicant is willing to commit to provide to non-metropolitan counties", and the cy N-N noaa says "at least N percent of their qlicis (as measured by dollar amount)". this tool's figure is a qei share over a hard-coded twelve-state list, not the omb bulletin N-N county definition — and question N is not scored in phase i. | | **fee / compensation structure** | fee levels favorable to qalicbs | | **prior reporting compliance** | late or inaccurate prior-round reports → potential point deductions
CITED | [streamlit_app/pages/4_About_and_Methodology.py:174] D3 FIXED. The Priority Points blob on the Streamlit About page. DBC row unchanged and Fund-accurate (CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17) p.7 Part II.B.1). Unrelated Entities row now marked house, with CY 2024-2025 NMTC Allocation Application (142pp, 1,525,626 bytes, retrieved and text-extracted locally 2026-08-17) Question 23 (p.34) quoted verbatim as a Yes/No dropdown and sub-section E's 'five additional points'. | priority points (N bonus points) priority points increase an application's ranking within the highly qualified pool but do not affect gating. | criterion | max | key threshold | |---|---|---| | **dbc track record** | N | ≥ N years and ≥ N of financing volume to disadvantaged businesses/communities | | **unrelated entities commitment** | N | ≥ N of qeis to unrelated entities — **this tool's threshold; the fund's test is yes/no, see below** | **the N is this tool's own scoring threshold. the cdfi fund publishes no percentage here, and its test is not a percentage at all.** question N of the cy N-N allocation application (p.N) is a dropdown: *"does the applicant intend to use substantially all of the proceeds of its qeis to make qlicis in one or more businesses in which persons unrelated to the applicant hold the majority equity interest? ☐ yes ☐ no"*, and sub-section e states *"an applicant that answers 'yes' to question N will be awarded five additional points."* a yes/no intent commitment, binding in the allocation agreement. so this tool grades a continuous share against a binary question. the N is not the fund's figure, and it is **not** treas. reg. §Nd-N(c)(N)(i)'s N% either: that defines "substantially all" for the *deployment* test — qei cash into qlicis — which is a different requirement. re-basing this row to N% would swap one unstated number for another while making the citation look stronger, so it has deliberately not been done. the **denominator** (proceeds of qeis) is correct and unchanged; that is what question N and the noaa both say.
HOUSE | [nmtcapp/intelligence/recommendations.py:293] D1 FIXED. The pf<10 branch. Was 'one or two indicia short of full credit', which read as the Fund's full credit; now names the indicia count as this tool's threshold and states that Question 15 asks for a single committed option this tool does not compute. | product flexibility is N/N on this tool's own sub-score — one or two indicia short of its N-indicia full-credit point. that point is this tool's threshold, not the cdfi fund's: question N asks for a single committed option covering N% of qlicis, which this tool does not compute.
CITED | [nmtcapp/intelligence/recommendations.py:248] D1 FIXED. The pf<8 branch, and the round's largest rewrite. Was 'The CDFI Fund awards full credit for CDEs offering 50%+ below-market products OR documenting 5+ indicia'. CY 2024-2025 NMTC Allocation Application (142pp, 1,525,626 bytes, retrieved and text-extracted locally 2026-08-17) pp.20-21 shows Question 15 is a SINGLE-SELECT LADDER - 'Choose one of the following options. Check only one.' - at 50%/5, 33%/4, 25%/3, 15%/2 indicia, every rung a property of an INDIVIDUAL QLICI. The disclosure states all three things: that this sub-score is not Q15's test, what Q15 actually asks, and that the number is this tool's own. | product flexibility score is N/N — this tool's own sub-score, not a measure of the cdfi fund's question N test. question N (cy N-N nmtc allocation application, pp. N-N) asks the applicant to check one option committing that N% of its qlicis will be provided as equity; equity-equivalent financing; debt at least N% below market; or debt satisfying at least N indicia of flexible or non-traditional terms — with lower-scoring rungs at N%/N indicia, N%/N and N%/N every rung is a property of each individual qlici. this sub-score instead divides a qei-weighted share of the portfolio priced below market by a per-loan discount depth, and takes the better of that and an application-level indicia count. those are different quantities, so no figure here answers question N
HOUSE | [docs/reference/methodology.md:42] D1 FIXED. The docs Product Flexibility row. Both figures are this tool's own AS USED - the Fund's 50% is a per-loan discount depth and its 5 indicia a per-loan qualifying form - and the row says so, pointing at the Question 15 disclosure below it. | product flexibility | N | N%+ of the portfolio priced below market or N+ indicia — **this tool's own test, see below
HOUSE | [streamlit_app/pages/4_About_and_Methodology.py:90] D1 FIXED. The same row on the Streamlit About page, which interpolates HOUSE_PRODUCT_FLEXIBILITY_BELOW_MARKET_PCT and HOUSE_PRODUCT_FLEXIBILITY_MIN_INDICIA live. | product flexibility** | N | ≥ N of the portfolio priced below market or ≥ N indicia — **this tool's own test, see below
CITED | [docs/reference/methodology.md:52] D1 FIXED. CY 2024-2025 NMTC Allocation Application (142pp, 1,525,626 bytes, retrieved and text-extracted locally 2026-08-17) pp.20-21, Question 15 'Additional Flexibility for Debt', quoted as the ladder it is. NOTE THIS CORRECTS ROUND 1: the round-1 allowlist recorded Q15 as '100% of QLICIs must take one of FOUR forms', which is CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17) p.6's description of a HIGHLY RANKED application - rung (a) only. Writing that into rendered text would have installed a new misattribution while fixing the old one. | question N (*cy N-N nmtc allocation application*, pp. N-N) is a single-select ladder — "choose one of the following options. check only one." — in which the applicant commits that **N% of its qlicis** will be provided as equity; equity-equivalent financing; debt at least **N%** below market; **or** debt satisfying at least **N** indicia of flexible or non-traditional rates and terms. lower rungs commit to N%/N indicia, N%/N or N%/N and score lower. every rung describes a property of each **individual qlici**.
CITED | [docs/reference/methodology.md:113] D3 FIXED. CY 2024-2025 NMTC Allocation Application (142pp, 1,525,626 bytes, retrieved and text-extracted locally 2026-08-17) p.34, Question 23, verbatim including the Yes/No dropdown and sub-section E's 'An Applicant that answers Yes to Question 23 will be awarded five additional points'. Corroborated by CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17) p.7 Part II.B.2 and CY 2024-2025 NOAA (89 FR 92283-92292, 21 Nov 2024, 10pp, retrieved from the Federal Register), both of which likewise publish no percentage. | question N of the cy N-N allocation application (p.N) is a dropdown: *"does the applicant intend to use substantially all of the proceeds of its qeis to make qlicis in one or more businesses in which persons unrelated to the applicant hold the majority equity interest? ☐ yes ☐ no"*, and sub-section e states *"an applicant that answers 'yes' to question N will be awarded five additional points."* it is a yes/no intent commitment, binding in the allocation agreement — the review process (p.N part ii.b.N) describes the same commitment and likewise publishes **no percentage**.
DISCLAIM | [nmtcapp/intelligence/recommendations.py:414] Names the Fund in order to say the gap closed is to THIS TOOL's QEI proxy and 'not what the Fund will score', and tells the CDE to compute its own QLICI-denominated share. The 1.2.1 remedy; matched here because it also names the Fund's mapping tool. | replace at least N percentage points of standard-lic pipeline with projects in census tracts the cdfi fund flags as severely distressed — that is what closes the gap to full credit on this tool's N-of-qei proxy, not what the fund will score. use the cdfi fund's nmtc mapping tool to identify qualifying tracts in your target markets, and compute your own qlici-denominated share before committing to a figure.
NARRATIVE | [nmtcapp/intelligence/pattern_analysis.py:22] Docstring stating the provenance of the winner-pattern data (CDFI Fund award announcements). A provenance statement, not a bar; the rendered surfaces carry the house-heuristic disclosure. | return a structured summary of historical nmtc winner patterns. aggregates data from cdfi fund award announcements (cyN–cyN) into a single dict. useful for display tables, quick benchmarking, and notebook exploration. returns: dict with keys: ``distress``, ``geographic``, ``sector``, ``impact``, ``acceptance_rate``. example:: from nmtcapp.intelligence.pattern_analysis import analyze_winning_patterns patterns = analyze_winning_patterns() print(f"winner median distress: {patterns['distress']['pNpct_deep_or_severe']:.N%}")
CITED | [nmtcapp/intelligence/recommendations.py:788] D3 FIXED. The recommendation's ACTION field. Points the CDE at the Question 23 answer and the Allocation Agreement commitment rather than at this tool's percentage. CY 2024-2025 NMTC Allocation Application (142pp, 1,525,626 bytes, retrieved and text-extracted locally 2026-08-17) p.34 and sub-section E. | review pipeline for any related-party transactions. if any qeis go to cde affiliates, replace with unrelated qalicb projects. the commitment the fund records is the question N answer itself, and a cde that answers yes is bound to it in its allocation agreement — decide it on the cde's own structure, not on this tool's N point.
CITED | [nmtcapp/core/application.py:342] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.3 (50 points per scored section) and p.2 (up to five priority points for DBC track record, five for unrelated entities). Docstring; not published to the docs site - mkdocs runs the search plugin only, no mkdocstrings. | score this application against the cdfi fund's cy N-N framework. scores two sections (business strategy N pts, community outcomes N pts) plus priority points (N pts). returns a :class:`winprobabilityscore` with tier classification (not qualified / highly qualified / top tier) and a mandatory methodology disclosure. example:: score = app.score_win_probability() print(score.summary())
CITED | [streamlit_app/pages/2_Win_Alignment_Scorer.py:38] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.3 (50/50) and p.2 (10 priority points). | score this application against the cdfi fund's published cy N-N review process criteria — business strategy (N pts) + community outcomes (N pts) + priority points (N pts).
CITED | [streamlit_app/pages/4_About_and_Methodology.py:85] D1 + D2 FIXED. The whole Business Strategy blob on the Streamlit About page. Carries the Question 15 ladder (CY 2024-2025 NMTC Allocation Application (142pp, 1,525,626 bytes, retrieved and text-extracted locally 2026-08-17) pp.20-21) and the Track Record Alignment split (CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17) p.7 Part II.A.4: the 70% Fund-stated and UPHELD, the 90%-to-projection quoted correctly, prior-allocation deployment named as this tool's own). | section N — business strategy (N base points) | sub-criterion | max | key threshold | |---|---|---| | **product flexibility** | N | ≥ N of the portfolio priced below market or ≥ N indicia — **this tool's own test, see below** | | **pipeline credibility** | N | pipeline projects identified, sized, and timed credibly | | **track record strength** | N | N-year direct financing record; bonus for own capital at risk | | **track record alignment** | N | ≥ N pipeline supported by similar prior activity; ≥ N prior-allocation deployment — **the second is this tool's own, see below** | > **sub-score disclosure:** weights within business strategy (e.g., product flexibility N pts) > are this tool's interpretation of the review process document. the cdfi fund does not > publish exact point values for individual sub-criteria. **product flexibility does not measure the cdfi fund's question N test.** question N (*cy N-N nmtc allocation application*, pp. N-N) is a single-select ladder — "choose one of the following options. check only one." — in which the applicant commits that **N% of its qlicis** will be provided as equity; equity-equivalent financing; debt at least **N%** below market; **or** debt satisfying at least **N** indicia of flexible or non-traditional terms. lower rungs commit to N%/N indicia, N%/N or N%/N and score lower. every rung describes a property of each **individual qlici**. this tool computes neither figure. its sub-score divides a **qei-weighted share of the portfolio** priced below market by the fund's **per-loan discount depth**, and takes the better of that and an application-level indicia count — so the fund's "or" sits inside one loan and this tool's sits across the whole book. those are different quantities, and the share-over-depth comparison is not a ratio of anything. **no number in this row answers question N**, and it should not be read as a near-miss against it. the cde must answer question N from its own loan terms. **the N on track record alignment is this tool's, not the fund's.** the N is fund-stated and correct (*review process* p.N part ii.a.N: "at least N of the applicant's proposed nmtc investments were supported by a track record of similar business types and activity types"). the fund's own N in that same paragraph is a different measure — "its most recent N-year direct financing track record was N or more of its **projected nmtc deployment in exhibit a**" — a track-record-to-projection ratio. deployment of a *prior* allocation is reviewed in phase N and carries **no published percentage**.
CITED | [streamlit_app/pages/4_About_and_Methodology.py:128] D5 FIXED. The Community Outcomes blob on the Streamlit About page. The 1.2.1 basis note is intact; the Special Targeting withdrawal is appended, quoting CY 2024-2025 NOAA (89 FR 92283-92292, 21 Nov 2024, 10pp, retrieved from the Federal Register) section V.B(b) - 'one or both of the statutory priorities' totalling 'up to a total of ten additional points' - and CY 2024-2025 NMTC Allocation Application (142pp, 1,525,626 bytes, retrieved and text-extracted locally 2026-08-17) p.132's Disadvantaged Business definition.  1.3.0 S2 RE-RULED AGAINST THE INSTRUMENT. The citation above quotes the CY 2024-2025 NMTC Program Review Process, a SEVEN-PAGE SUMMARY, and quotes it correctly. The Allocation Application (142 pp., retrieved and text-extracted locally 2026-08-17), Question 25 at printed pp. 38-41 (PDF 65-68), states both commitments differently in two ways the summary drops: the 85% is denominated in QLICIs 'in terms of aggregate dollar amounts' over a one-of-items-1-5 or two-of-items-6-12 test applied PER QLICI, and the 20% is NOT A BAR but the top rung of a selectable 0/5/10/15/20 ladder (25(b)(i)'s Response column verbatim: '0 / 5 / 10 / 15 / 20, if selected enter exact percentage 20-100% in 25(b)(ii)') over FOUR area types, a QLICI meeting which 'will also automatically meet the commitment made in Question 25(a)'. Both omissions instructed a CDE to UNDERSTATE its own qualifying share. Kind stays CITED, not DEFECT: the Review Process does state both sentences. What changed is the rendered text and the document it is ruled against | section N — community outcomes (N base points) | sub-criterion | max | key threshold | |---|---|---| | **higher distress targeting** | N | ≥ N of **qei** in severely distressed tracts — a proxy for a qlici-dollar commitment, see below | | **deep distress commitment** | N | ≥ N of **qei** in deep distress areas — a proxy for the **top rung** of a selectable ladder, see below | | **special targeting** | N | qei in u.s. territories, high migration rural, nmtc native areas, persistent poverty counties — **this tool's own criterion, not the fund's, see below** | | **community outcomes quality** | N | quantified outcomes (jobs, units, sq ft) with third-party methodology | | **community accountability** | N | lic board representation + community engagement track record | **basis note — the fund's two distress commitments are measured on qlicis, these sub-scores are measured on qei.** question N of the cy N-N **allocation application** (printed pp. N-N) sets both, denominated in qlicis *"in terms of aggregate dollar amounts"* and tested **for each qlici**. **question N(a)** asks for at least N of qlicis in areas characterized by at least **one** of items N-N (severe distress; nmtc native areas; u.s. island areas; non-metropolitan counties; targeted populations) **or** by at least **two** of items N-N (N% poverty / N% median family income / N× unemployment; brownfield sites; arc and/or dra areas; colonias areas; federal medically underserved areas; fema disaster areas; low-income and low-access to supermarkets). *"multiple indicia of distress"* is that **two-of-seven** test, per qlici. **question N(b)(i) is not a N bar.** it is a selectable commitment level — **N / N / N / N / N**, where selecting N opens a field for any figure from N% to N% — over **four** area types: deep distress, nmtc native areas, high migration rural counties, u.s. island areas. a cde that can honestly commit N% selects N and has failed nothing, and *"a qlici that meets this commitment will also automatically meet the commitment made in question N(a)."* every distress share this tool computes is a share of **qei**; `qlici_amount` is read only to print it in appendix a and to check it does not exceed its project's qei, and feeds no percentage, no score and no bar. the two sub-scores above are qei-based *proxies*, and no figure this tool renders answers either commitment. this package carries a per-project field for **five of the fourteen** distinct area types question N lists — a tool-verified distress level covering severe and deep distress, plus cde-declared and unverified flags for nmtc native areas, high migration rural counties and u.s. territory — and nothing for non-metropolitan counties, nothing for targeted populations, and nothing for any of items N-N **holding those fields is not a partial answer to question N**: the commitment is a share of qlici *dollars* and this tool weights nothing by qlici dollars. *corrected in N* through N this note quoted the seven-page **review process** — accurately, and it is a summary. the summary reads as a N% bar and compresses question N(b)'s four area types into one, which told a cde to understate its own qualifying share. **special targeting is this tool's own criterion. the cdfi fund publishes no such criterion and no bonus points for it.** the cy N-N noaa (N fr N N nov N), section v.b(b), sets out the complete set of additional points under irc §Nd(f)(N): *"the cdfi fund will ascribe additional points to entities that meet one or both of the statutory priorities"* — a dbc track record (up to five points) and investments in unrelated entities (five points) — *"thus, applicants that meet the requirements of both priority categories can receive up to a total of ten additional points."* two priorities, ten points, and both are scored separately under priority points below. the phrases "special targeting" and "bonus points" appear **nowhere** in the cy N-N allocation application (N pp.), the review process (N pp.), or the noaa (N pp.). the four categories are real nmtc concepts, but the application uses them to **define a disadvantaged business** (p.N: a disadvantaged business is one located in *"a persistent poverty county; a nmtc native area; or a u.s. island area"*) — they feed the dbc statutory priority, and are not scored on their own. treat this row as a house prompt to consider those areas, not as a bar the cdfi fund will measure.
NARRATIVE | [nmtcapp/tables/pipeline_table.py:1] Module docstring describing which columns come from the CDE's own submission versus this tool. Describes provenance of the CDE's data, attributes nothing to the Fund. | section a pipeline detail table — the per-project attachment. each row is one qalicb project with eligibility, distress, financial and impact data drawn from the cde's own pipeline submission. what the cdfi fund actually asks for, and what this table used to invent this module's docstring used to say it "mirrors cdfi fund cyN excel template format". N retrieved the form. the fund's per-project pipeline attachment is table aN: proposed transactions in the cy N-N nmtc allocation application (cdfifund.gov, cy_N-Nnmtc_program_allocation_application.pdf, exhibit a, pp. N-N). its complete field list is: (aN) project/business name (i) total non-qlici sources (aN) description (j) total qeis from unaffiliated cdes (b) address city / state (k) total number of unaffiliated cdes (c) census tract (l) activity type (d) non-metropolitan county? (m) small dollar / revolving loan fund (e) projected qlici closing date (n) business type (f) total project costs (o) planned uses of financing (g) total applicant qei (p) targeted community outcomes (h) total applicant qlicis five columns this table printed as data appear nowhere in that form, and a full-text search of all N pages of the application returns zero occurrences of "qlici b", "senior debt", "subordinate debt", "annual operating budget" and "investor equity". the fund does not split qlicis into a and b tranches at all; it collects one figure, row (h). so they are removed rather than bracketed: qlici a loan ($) / qlici b loan ($) a flat N/N split of the cde's qlici_amount. the a/b tranche split is a deal-specific structural fact the cde knows and this tool guessed. the cde's own total is now printed instead, as "total qlici ($)" — the figure table aN row (h) asks for, and the number the cde actually supplied. senior debt ($) a plug: total_project_cost - investor_equity - N% of qei. it was not disjoint from the leverage loan column beside it — on the shipped N- project sample the two summed to $Nmm against a $Nmm project cost. subordinate debt ($) asserted as $N for every project in every pipeline. not "none"; unknown. annual operating budget ($) N% of total project cost. a qalicb financial-statement line, invented from a construction budget, under a heading a reviewer reads as reported. why deleted and not bracketed as [cde to complete]. N settled the investor table that way, and the precedent would have carried here if the form shape were real: bracketing keeps a form's rows while asserting nothing. it is not real. bracketing five fields the fund never asks for would invite a cde to research and fill in five figures that have nowhere to go, and would leave this attachment claiming a template parity it does not have. the docstring's claim goes with them.
CITED | [nmtcapp/intelligence/distress_analysis.py:78] CY 2024-2025 NMTC Program Review Process (downloaded 2026-08-16, 7pp, text-extracted locally), p.7 Q25 85% higher-distress commitment, named here expressly as a QEI proxy. | severely distressed, deep distress included, as a share of qei — this tool's proxy for the fund's N%-of-qlicis commitment, and the share appendix b's per-project flag reports
NARRATIVE | [nmtcapp/renderers/_disclosure.py:1] Module docstring describing the two degraded eligibility states and the phrasing each gets. Describes this package's behaviour. | shared disclosure phrasing for pipelines with unverified projects. two distinct degraded states flow into export surfaces: - full unavailable: ``eligibility_data_status != "ok"`` — the cdfi fund dataset never loaded; no eligibility figure exists at all. - partial unverified: the dataset loaded, but some projects could not be location-verified (``unverified_project_ids`` non-empty). figures exist but cover only the verified subset. for the partial case every affected metric must carry its qualifier inline ("N% (N of N unverified)") in the same cell/line as the number — a separate disclaimer paragraph can be stripped in editing; an inline qualifier cannot.
DISCLAIM | [streamlit_app/pages/1_Pipeline_Analyzer.py:441] Says the line is this tool's own screening band, not a CDFI Fund threshold, and that the Fund publishes no distribution so no percentile exists. Matched because it also states the published 85%-of-QLICIs bar correctly (X1-EXCEPT). | the N line is **this tool's own screening band**, not a cdfi fund threshold and not a percentile of past winners. the cdfi fund publishes no distribution of applicant distress concentration, so no such percentile exists. the published cy N-N bar for full community outcomes credit is N% of qlicis in areas of higher distress (allocation application, question N(a)) — **a share of qlicis, while the bars above are shares of qei**. this tool computes no qlici-denominated share, so nothing on this chart answers that bar or may be compared to it.
CITED | [docs/reference/methodology.md:60] D2 FIXED. CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.7 Part II.A.4, BOTH sentences quoted and kept apart: the 70% pipeline-support figure (Fund-stated, UPHELD, untouched) and the 90% track-record-TO-PROJECTION ratio against Exhibit A. The round-1 defect was fusing the second with prior-allocation deployment. | the N% is fund-stated and correct — *review process* p.N part ii.a.N: "at least N% of the applicant's proposed nmtc investments were supported by a track record of similar business types and activity types." the fund's own N%, in that same paragraph, is a **different measure**: "its most recent N-year direct financing track record was N% or more of its **projected nmtc deployment in exhibit a**" — a track-record-to-projection ratio.
HOUSE | [docs/reference/methodology.md:111] D3 FIXED. Section heading naming the 90% as this tool's scoring threshold and stating that the Fund's test is not a percentage at all. | the N% is this tool's scoring threshold — the fund's test is not a percentage
CITED | [streamlit_app/pages/4_About_and_Methodology.py:211] D4 FIXED. The gating blob on the Streamlit About page, interpolating HOUSE_TOP_TIER_AGGREGATE_MIN and HOUSE_TOP_TIER_SECTION_MIN. CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17) p.3 Step 2 quoted verbatim for the published gate; the Top Tier row is marked 'This tool'. The outcome cell's award prediction ('High probability of award at or near maximum requested') is withdrawn - it rested on an invented gate and this tool disclaims predicting selection. | the cdfi fund uses a **two-stage gating process** to form the highly qualified pool that advances to phase N review. it publishes **one** gate, shown in the first two rows. the third row is this tool's own and is marked as such. | tier | aggregate base score | section minimums | outcome | whose threshold | |---|---|---|---|---| | **not qualified** | < N | either section < N | does not advance to phase N | cdfi fund | | **highly qualified** | N–N | both sections ≥ N | phase N reviewed; award depends on ranking | cdfi fund | | **top tier** | N–N | both sections ≥ N | well clear of the published gate | **this tool** | **critical rule:** an application that scores below N points in *either* section does not advance to phase N regardless of aggregate score. **"top tier" is not a cdfi fund tier.** the review process (p.N step N) publishes the highly qualified gate verbatim — *"(i) an aggregate score of at least N out of a possible total of N points in each of the two scored application sections; and (ii) an aggregate base score (excluding priority points) of at least N points"* — and **nothing above it**. the phrase "top tier" returns zero hits across the allocation application (N pp.), the review process (N pp.) and the cy N-N noaa (N pp.); the noaa's only tier concept is the "highly qualified pool". the N/N cut points behind the label are an unsourced house heuristic. the outcome cell for that row previously read *"high probability of award at or near maximum requested."* that was an award prediction resting on an invented gate, and this tool does not compute a probability of selection — see "this tool is not", above. above the published gate, ranking and the phase N panel decide the award: the review process states that highly qualified applicants are ranked *"inclusive of half of the priority points"* and forwarded to an allocation recommendation panel, which this tool does not model.
CITED | [docs/reference/methodology.md:137] D4 FIXED. CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2, quoted verbatim, with the zero-hit finding for 'Top Tier' across CY 2024-2025 NMTC Allocation Application (142pp, 1,525,626 bytes, retrieved and text-extracted locally 2026-08-17), the Review Process and CY 2024-2025 NOAA (89 FR 92283-92292, 21 Nov 2024, 10pp, retrieved from the Federal Register), and the note that the NOAA's only tier concept is the 'highly qualified pool'. | the review process (p.N step N) publishes the highly qualified gate verbatim — *"(i) an aggregate score of at least N out of a possible total of N points in each of the two scored application sections; and (ii) an aggregate base score (excluding priority points) of at least N points"* — and **nothing above it**. the phrase "top tier" returns zero hits across the allocation application (N pp.), the review process (N pp.) and the cy N-N noaa (N pp.); the noaa's only tier concept is the "highly qualified pool". the N/N cut points behind the label are an unsourced house heuristic.
CITED | [nmtcapp/renderers/_methodology.py:63] CDFI Fund NMTC LIC Eligibility workbook (NMTC_LIC_Eligibility_2016_2020.xlsb), columns O and P - the file this package downloads and parses. Same source as the sibling allowlist's FIX-4 entries. | the two tier definitions, quoted from the workbook this tool loads. not interpolated from a constant, because the package has no constant for them: the thresholds live in the cdfi fund's workbook and reach the code as a classification (``distress_level``), never as numbers. the string below is a quotation, and tests/pinned_constants.txt pins it against the workbook's own cells. not byte-identical, and it no longer says it is. the workbook's notes sheet holds ``severe distress=lic and (poverty>N%; mfi<=N%;unemployment>=N)``; this renders it with a space either side of the ``=`` and after the second semicolon — three insertions per line, six across both. every threshold, operator and separator is the workbook's. the word in the rendered sentence was "verbatim" until fix-N which is a fidelity claim the text does not meet, inside the one paragraph whose whole job is fidelity.
CITED | [nmtcapp/intelligence/win_probability.py:726] D4 SIXTH SURFACE, FIXED. CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.3 Step 2, verbatim: 'an aggregate score of at least 40 out of a possible total of 50 points in each of the two scored Application sections; and (ii) an aggregate base score (excluding priority points) of at least 85 points'. This ended 'High probability of Phase 2 advancement; award may approach the maximum requested' - an AWARD PREDICTION resting on an invented gate, in a package that disclaims predicting selection ('Not a win probability calculator', docs/reference/methodology.md). Renders in WinProbabilityScore.summary(), a pinned surface. Withdrawn; the corrected text states the published gate, marks Top Tier as this tool's label, and says ranking plus the Allocation Recommendation Panel decide above the gate - the Review Process ranks 'inclusive of half of the priority points', which this tool does not model. | top tier (N/N). both sections exceed the N-point threshold. "top tier" is this tool's own label, not a cdfi fund tier: the fund publishes the highly qualified gate (N aggregate, N per section) and nothing above it, and these cut points are an unsourced house heuristic. this application is well clear of the published gate, and is in the same highly qualified pool as any other application that clears it. no award outcome follows: above the gate the cdfi fund ranks applicants (inclusive of half their priority points) and an allocation recommendation panel decides, neither of which this tool models.
HOUSE | [docs/reference/methodology.md:131] D4 FIXED. The docs Top Tier row, now carrying a 'Whose threshold' cell reading 'This tool'. | top tier** | N–N | both sections ≥ N | **this tool
HOUSE | [streamlit_app/pages/4_About_and_Methodology.py:220] D4 FIXED. The same row on the Streamlit About page; outcome cell no longer predicts an award. | top tier** | N–N | both sections ≥ N | well clear of the published gate | **this tool
HOUSE | [docs/workflow/win-alignment.md:87] D4 FIXED. The same row on the win-alignment docs page; 'Yes - stronger ranking' corrected to 'Yes - same pool', since an application here is in the SAME Highly Qualified pool, not a further one. | top tier** | ≥ N | both sections ≥ N/N | yes — same pool | **this tool
CITED | [nmtcapp/intelligence/recommendations.py:387] D2 FIXED. CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.7 Part II.A.4 and p.4. The two Fund concepts that had been fused are now stated separately with their own provenance, and the 70% - which IS Fund-stated and correct - is untouched. | track record alignment is N/N the cdfi fund (review process p.N part ii.a.N) looks for N+ of proposed nmtc investments to be supported by a track record of similar business types and activity types, and for the most recent N-year direct financing track record to be N+ of projected nmtc deployment in exhibit a. separately, this tool scores prior-allocation deployment against its own N point — the cdfi fund reviews deployment of a prior allocation in phase N (p.N) and publishes no percentage for it.
CITED | [docs/reference/methodology.md:45] D2 FIXED. The docs Track Record Alignment row. MIXED PROVENANCE ON ONE ROW: the 70% is CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17) p.7 Part II.A.4 verbatim and UPHELD; the 90% is prior-allocation deployment and is this tool's own, marked as such in the cell. | track record alignment | N | N%+ pipeline supported by similar prior activity; N%+ prior-allocation deployment — **the second is this tool's own, see below
CITED | [streamlit_app/pages/4_About_and_Methodology.py:93] D2 FIXED. The same row on the Streamlit About page, interpolating TRACK_RECORD_PIPELINE_ALIGNMENT_MIN (Fund) and HOUSE_TRACK_RECORD_DEPLOYMENT_MIN (house) side by side. | track record alignment** | N | ≥ N pipeline supported by similar prior activity; ≥ N prior-allocation deployment — **the second is this tool's own, see below
HOUSE | [docs/reference/methodology.md:109] D3 FIXED. The docs Unrelated Entities row. The percentage is this tool's own; the denominator (proceeds of QEIs) is CORRECT and unchanged. Deliberately NOT re-based to Treas. Reg. 1.45D-1(c)(5)(i)'s 85%, which governs a different test. | unrelated entities commitment | N | N%+ of qeis to entities unrelated to the cde — **this tool's threshold; the fund's test is yes/no, see below
HOUSE | [streamlit_app/pages/4_About_and_Methodology.py:183] D3 FIXED. The same row on the Streamlit About page, interpolating HOUSE_UNRELATED_ENTITIES_MIN_PCT. | unrelated entities commitment** | N | ≥ N of qeis to unrelated entities — **this tool's threshold; the fund's test is yes/no, see below
CITED | [nmtcapp/intelligence/recommendations.py:780] D3 FIXED. Was 'Full credit requires committing substantially all (90%+) QEIs', which presented the 90% as the content of 'substantially all' under a Full-credit stem. Now names the 90% as this tool's own and quotes what the Fund actually asks: CY 2024-2025 NMTC Allocation Application (142pp, 1,525,626 bytes, retrieved and text-extracted locally 2026-08-17) Question 23 (p.34), a Yes/No commitment awarded five additional points. | unrelated entities priority points are N/N scored against this tool's own N-of-qei point. the cdfi fund publishes no percentage here: question N is a yes/no commitment to use "substantially all" of the proceeds of the cde's qeis for qlicis in businesses in which unrelated persons hold the majority equity interest, and answering yes is awarded five additional points.
NARRATIVE | [nmtcapp/integrations/nmtc_calc_adapter.py:16] Module docstring. 'published CDFI Fund typical parameters' is loose and sits in tension with the rendered disclosure at renderers/_methodology.py:115, which states that the credit price and CDE fee are market assumptions of this model and NOT Fund parameters. Docstrings are not published (mkdocs runs search only, no mkdocstrings), so this reaches a developer via help(), not a CDE via a filing. RECORDED, not counted among the six: worth correcting in the fix round. | use nmtc-calc to compute aggregate deal economics for the pipeline. for each project, structures a standard nmtc leveraged transaction using published cdfi fund typical parameters. returns aggregate figures. returns a dict with: - ``total_qei`` – sum of all qei requests - ``total_nmtcs`` – total nmtc credits generated (N% of qei × N years) - ``total_investor_equity`` – total tax credit equity at $N/credit - ``total_leverage_loans`` – leverage loan component, the residual of qei less investor equity, so leverage + equity = qei - ``total_cde_fees`` – aggregate cde fees (N% of qei) - ``total_net_subsidy`` – qei less cde fees. not the qalicb's retained benefit: the leverage loan inside the qei is repaid or refinanced, so this figure is ~N% of qei and is renamed "qei less cde fees ($)" wherever it renders. the key keeps its name because it is published through ``applicationanalysis.to_dict()`` and N is a patch. - ``project_count`` – number of projects modeled - ``avg_leverage_ratio`` – leverage loan divided by investor equity, the quantity nmtc-calc computes (a multiple, ~Nx), not a fraction of qei example:: economics = compute_pipeline_economics(pipeline) print(f"total nmtcs: ${economics['total_nmtcs']:,.Nf}")

# --- 1.3.0 S1: the Question 25 module, ruled against the ALLOCATION
#     APPLICATION rather than against the Review Process's summary of it -----
NARRATIVE | [nmtcapp/renderers/_question_25.py:1] The module docstring. It states no threshold of its own: it records why the rendered note's authority moved from the Review Process to the Allocation Application, and quotes the two Review Process sentences it is superseding in order to say what they omit. Both quotations are accurate and both are adjudicated on their own rows in this file. The docstring's own claim -- that a summary document is not the instrument -- is a statement about documents, not a figure credited to the Fund | question N as the allocation application states it, in one place. the defect this replaces (N sN) through N the rendered basis note was written against the *cy N-N nmtc program review process* — a seven-page **summary** of how the cdfi fund scores an application. the review process describes question N in one sentence per commitment: "at least N% of its qlicis in specified areas of severe distress and/or areas characterized by multiple indicia of distress" "at least N% of its qlicis to 'deep distress' areas" both sentences are real, and both were quoted correctly. they are also a summary, and the summary loses two things the **instrument** — the allocation application itself, question N at printed pp. N-N — states plainly: N the N% is the top rung of a ladder, not a bar. question N(b)(i) is a dropdown of N / N / N / N / N and selecting N opens a second field for any figure from N% to N%. a cde that can honestly commit N% selects N and has failed nothing. the shipped note told that cde to compute a share and compare it to N%, which reads as a pass/fail threshold they miss. N question N(b) is four area types, not one. deep distress, nmtc native areas, high migration rural counties and u.s. island areas. a cde with native area, high migration rural or island area qlicis was told to leave them out of a numerator they belong in. both errors push the same way: **the cde understates itself to a federal agency.** every prior round in this cycle removed a claim that overstated what the fund requires; this is the first false negative in the package, and it is the same class as nmtc-mapper N reporting N tracts ineligible when they statutorily qualified. the durable rule: a summary document is not the instrument. the review process is a safe source for *how the fund scores*. it is not a safe source for *what the applicant is asked to commit to*, because the thing the applicant fills in is the application. where the two differ, the application governs and the citation must name it. why this text lives in one module. it renders on four surfaces — the section b table (markdown, word, pdf) and the excel summary dashboard. through N the markdown/word/pdf copy lived in ``sections/section_b_outcomes.py`` and the workbook carried **no basis note at all**, which is how a raw ``pct_deep_or_severe`` float came to sit under a percent format on the dashboard with no denominator in its label. four near-identical copies is the shape that produced the N defect where a sentence was deleted from one file and stayed live in a second. one authority, read by every surface. provenance. cy N-N nmtc program allocation application, N pp., N bytes, sha-N NcNbcNbNfNeNcNbNbeNbNcNbNfNdcbaeadfbbbfNbde dNdeNf, retrieved N-N-N from https://www.cdfifund.gov/system/files/N-N/cy_N-Nnmtc_program_allocation_application.pdf and text-extracted locally with pypdf — not fetched through a summarising model, which is the provenance failure this whole cycle exists to correct. question N spans printed pp. N-N (pdf pages N-N); question N(b)'s four area types run to printed p. N (pdf page N).
CITED | [nmtcapp/renderers/_question_25.py:143] CY 2024-2025 NMTC Program Allocation Application (142 pp., 1,525,626 bytes, SHA-256 0280c6bc..., retrieved and text-extracted LOCALLY with pypdf 2026-08-17), Question 25(a) at printed p. 38 (PDF 65) and items 1-12 at printed pp. 39-40 (PDF 66-67). Q25(a) verbatim: 'Will the Applicant commit to providing at least 85% of its QLICIs (in terms of aggregate dollar amounts) in areas that are either: (1) characterized by at least one of items 1-5 on the list for each QLICI; or (2) characterized by at least two of items 6-12 on the list for each QLICI?'. The rendered note reproduces the twelve item names and the one-of-five / two-of-seven structure. RE-RULED IN 1.3.0 against the INSTRUMENT: the entry this replaces cited the seven-page Review Process, correctly, and the summary omits the 'aggregate dollar amounts' denomination and compresses items 6-12 into the phrase 'multiple indicia of distress' | question N of the cy N-N nmtc allocation application (printed pp. N-N) sets both commitments, and both are measured on qlicis — specifically on qlicis "in terms of aggregate dollar amounts", tested for each qlici. question N(a) asks for at least N of qlicis in areas characterized by at least one of items N-N (
CITED | [nmtcapp/renderers/_question_25.py:165] CY 2024-2025 NMTC Program Allocation Application (142 pp., 1,525,626 bytes, SHA-256 0280c6bc..., retrieved and text-extracted LOCALLY with pypdf 2026-08-17), Question 25(b)(i) at printed p. 41 (PDF 68). The Response column is a dropdown reading '0 / 5 / 10 / 15 / 20, if selected enter exact percentage 20-100% in 25(b)(ii)', and the Question Notes say 'A QLICI that meets this commitment will also automatically meet the commitment made in Question 25(a)' and 'Applicants will not be held to the individual commitments to any of the areas listed below'. Q25(b)'s four area types -- Deep Distress, NMTC Native Areas, High Migration Rural Counties, U.S. Island Areas -- run to printed p. 42 (PDF 69). So 20 is a LADDER RUNG, not a bar, and a CDE selecting 10 has failed nothing. This is the correction 1.3.0 exists for: the Review Process's one-sentence summary reads as a bar, and the shipped note told a CDE to compute a share and compare it to 20% RE-STATED 1.3.0 B2: the clause listing which qualifying routes are visible was one blanket 'three CDE-declared and tool-unverified flags'. Confirmed by execution that High Migration Rural is NOT unverified - integrations/nmtc_mapper_adapter assigns project.is_high_migration_rural via _prefer_determinate, so the mapper's determination overwrites the CDE's declaration - while is_native_area and is_us_territory are never assigned there at all. The clause now states a provenance per field. | and N a cde that can honestly commit N% selects N and has failed nothing; a cde whose qlicis sit in native areas, high migration rural counties or island areas must count them, and no deep distress figure in this document does. the application further states that "a qlici that meets this commitment will also automatically meet the commitment made in question N(a)." every distress share in this document is a share of qei. nmtc-application-builder computes neither qlici-denominated figure — it reads this pipeline's qlici amounts only to print them in appendix a and to check that each is no larger than its qei — so no figure in this document answers either commitment, and none may be presented to the cdfi fund as doing so. which of the cde's qualifying routes are visible here: this package carries a per-project field for N of the N distinct area types question N lists, and they do not share one provenance, so each is stated with its own. severe distress and deep distress: tool-verified — the distress level is read from the cdfi fund eligibility table for the tract this package geocoded, and a cde's own distress column is kept separately and labelled cde-declared wherever it is shown. high migration rural counties: cde-declared and tool-verified — enrichment overwrites the cde's declaration whenever nmtc-mapper returns a determination for the tract, so the declaration stands only where the tool reached none, and where enrichment did not run at all. nmtc native areas and u.s. territory: cde-declared and tool-unverified — nothing in this package checks either one, and a native area determination is a spatial intersection against the fund's cims map rather than a tract-keyed lookup this package could perform (u.s. territory is the cde's own word; the application's u.s. island areas is a specific list of five). it carries nothing for non-metropolitan counties, nothing for targeted populations, and nothing for any of items N-N; it computes no multi-indicia measure at all. holding those fields is not a partial answer to question N and must not be read as one: the commitment is a share of qlici dollars, this package weights nothing by qlici dollars, and a flag that enters no denominator contributes nothing to a share. deep distress is a strict subset of severe distress, so the severe-distress share already includes the deep-distress share. the cde must compute both qlici-denominated shares from its own qlici amounts, against the application's own area lists, before stating either commitment. (the cy N noaa is not yet published.)
CITED | [docs/reference/methodology.md:214] 1.3.0 REVIEW PROCESS SWEEP. This row read 'Basis not established by this tool ... has not been checked against the Application's own question text'. It was accurate when 1.2.1 wrote it and STALE from 1.2.2 round 2, which established the QLICI basis from the NOAA and recorded it in nmtcapp/data/benchmark_thresholds.py while leaving the 'not checked' sentence live on this surface and in docs/reference/methodology.md. Now settled a third way, from the instrument: CY 2024-2025 NMTC Program Allocation Application, Question 22, printed p. 31 (PDF 58), verbatim - 'Applicants are therefore required to provide two target estimates below: (1) a minimum percentage of QLICIs the Applicant is willing to commit to provide to Non-Metropolitan Counties; and (2) the maximum percentage of QLICIs that the Applicant is willing to commit to providing to Non-Metropolitan Counties', against the Fund goal that '20% of all QLICIs made by Allocatees under this Round are invested in Non-Metropolitan Counties', with the formula reduction falling on Allocatees 'that have not committed to investing a minimum of 20% of their QLICIs in Non-Metropolitan Counties' and the Rural CDE 50% being a commitment 'in response to Question 22(c)'. Corroborated by CY 2024-2025 NOAA (89 FR 92283-92292), 'at least 20 percent of their QLICIs (as measured by dollar amount)'. The rendered row now states the mismatch on its face: the Fund measures QLICI dollars, this tool measures a QEI share over a hard-coded twelve-state list (intelligence/geographic_analysis.py:16) rather than the OMB Bulletin 20-01 county definition, and Question 22's own NOTE says it 'will not be evaluated and scored in Phase I' | N-N noaa states it the same way: *"invest at least N percent of their
