# 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 a later release, 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'. RE-STATED 1.4.0 R3/R4, AND THE ROW'S OWN CITATION HAD INHERITED AN OFF-BY-ONE FROM THE INSTRUMENT. The p.31 NOTE quoted above numbers the two estimates (1) and (2); the same NOTE elsewhere calls the minimum 'Question 22(b)' and the maximum 'Question 22(c)', while the QUESTION TABLE at printed p. 32 (PDF 59) makes 22(b) a COUNT OF YEARS (0-6) and the percentages 22(c) and 22(d) — and the NOTE's own Rural CDE sentence, quoted above, agrees with the table. The table governs: it is the field list the Applicant fills in. Read verbatim from the same pinned instrument (SHA-256 0280c6bc..., re-downloaded and re-hashed 2026-08-20, still 1,525,626 bytes): 22(c) 'What is the minimum percentage of QLICIs that the Applicant is willing to commit to deploy in Non-Metropolitan Counties? ______%', Field Type 'Numerical - Percentage'. THE RENDERED CLAIM CHANGES AS A RESULT. It no longer says this tool computes a QEI share over a hard-coded twelve-state list, because it does not: intelligence/geographic_analysis._RURAL_STATES is DELETED and the classification is the OMB Non-Metropolitan County designation for each geocoded tract, read from nmtc-mapper, with a third bucket for projects whose designation could not be determined. The rendered row now says three things instead: the reported commitment is the CDE'S OWN DECLARATION passed through unchanged, the measured QEI share is reported separately under its own name, and the 20% is a Fund-wide goal and a bar on what an Allocatee COMMITTED to rather than one an Applicant's pipeline must clear | 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** | this tool reports the cde's **own declared** question N(c) figure, unchanged, and reports the pipeline's measured non-metro **qei** share separately under its own name. allocation application question N(c) (printed p. N) asks "what is the minimum percentage of **qlicis** that the applicant is willing to commit to deploy in non-metropolitan counties?" — a blank percentage field for a forward commitment, which the cy N-N noaa denominates the same way: "at least N percent of their qlicis (as measured by dollar amount)". **the N% is a fund goal across all allocatees and a bar on what an allocatee committed to; question N states no minimum an individual applicant must clear**, and it is not scored in phase i. the measured share is a share of qei, determined per project from the omb county designation for the geocoded tract — projects the tool could not determine are reported as a third bucket, never as metropolitan. | | **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 -----
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. RE-STATED 1.4.0 R1: the clause read 'it carries NOTHING for Non-Metropolitan Counties'. Carrying PipelineProject.is_non_metro from nmtc-mapper's EligibilityResult made that FALSE on all four rendered surfaces, so the sentence now states Non-Metropolitan Counties as TOOL-VERIFIED AND TRI-STATE with its own provenance and Q25_AREA_TYPES_MODELLED goes 5 -> 6. Same direction as the 1.3.0 B2 re-statement recorded above: an unstated capability reads to a CDE under deadline as an absent one, and understating this package here pushes the CDE to understate ITSELF to a federal agency. The Q25(a) item-4 quotation and the one-of-five / two-of-seven structure are unchanged, and the closing claim is unchanged and still true: holding a per-project flag contributes nothing to a QLICI-denominated share. | 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). non-metropolitan counties: tool-verified and tri-state — the omb designation is read for the same geocoded tract, and a project the lookup could not resolve is recorded as undetermined rather than as metropolitan, so no project is counted in a county type it was never determined to be in. it carries 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'. RE-STATED 1.4.0 R3/R4 — see the parallel row for streamlit_app/pages/4_About_and_Methodology.py, which carries the full ruling. Two things changed on this surface. (1) THE LETTERS: this page cited the minimum as 22(b) and the maximum as 22(c), following the p.31 NOTE, which contradicts the p.32 question table where 22(b) is a COUNT OF YEARS (0-6) and the percentages are 22(c) and 22(d). Corrected to the table, with the instrument's inconsistency recorded on the page rather than silently resolved. (2) THE BASIS SENTENCE: the twelve-state list at geographic_analysis.py:16 is DELETED, so the page no longer describes a defect that exists — the classification is the per-project OMB designation and undetermined projects are a third bucket, never metropolitan. The QLICI-vs-QEI mismatch this row was created for is UNCHANGED and is still stated on the page | N-N noaa states it the same way: *"invest at least N percent of their
CITED | [nmtcapp/renderers/_question_22.py:166] CY 2024-2025 NMTC Program Allocation Application (142 pp., 1,525,626 bytes, SHA-256 0280c6bc..., re-downloaded and re-hashed 2026-08-20 for the 1.4.0 round, text-extracted LOCALLY with pypdf — SAME INSTRUMENT as the _question_25.py rows above, hash confirmed identical). Question 22, NOTE block at printed p. 31 (PDF 58) and question table at printed p. 32 (PDF 59). Read verbatim this round: 22(c) 'What is the minimum percentage of QLICIs that the Applicant is willing to commit to deploy in Non-Metropolitan Counties? ______%' and 22(d) the maximum, both Field Type 'Numerical - Percentage'; the NOTE 'such requirement shall become a condition of its Allocation Agreement with the CDFI Fund'; the NOTE 'Question 22 will not be evaluated and scored in Phase I of Allocation Application reviews'; the NOTE goal that '20% of all QLICIs made by Allocatees under this Round are invested in Non-Metropolitan Counties' and the formula reduction on 'all Allocatees in the pool that have not committed to investing a minimum of 20% of their QLICIs in Non-Metropolitan Counties'; and 22(f)'s Question Notes 'Indicate the number and dollar amount of transactions that have already been identified in Non-Metropolitan Counties, for which underwriting is completed or underway.' THE RULING THIS SUPPORTS (1.4.0 R3/R4): Q22(c)/(d) is a blank percentage field for a FORWARD COMMITMENT, the same shape 1.3.0 established for Q25(a)/(b) — so this tool's QEI share of the current pipeline is a characterisation and not an answer, the denominator is LABELLED rather than swapped, and non_metro_meets_minimum is deleted because the 20% is a Fund-wide goal and a bar on what an Allocatee COMMITTED to, never a bar an individual Applicant's pipeline must clear. RECORDED: the p.31 NOTE says the deploy range runs 'at or above the minimum indicated in Question 22(b), but not more than the maximum percentage indicated in Question 22(c)', while in the p.32 table 22(b) is a COUNT OF YEARS (0-6) and the two percentages are 22(c) and 22(d). The instrument is internally off by one letter; the question table is the field list the Applicant fills in and governs, and the NOTE's own Rural CDE sentence ('commits to a figure of 50% or greater in response to Question 22(c)') agrees with the table | basis — this figure is the share of this pipeline's qei in census tracts the cdfi fund eligibility table marks as non-metropolitan counties: N it is not an answer to question N question N(c) and N(d) of the cy N-N nmtc allocation application (printed p. N) ask what "minimum percentage of qlicis the applicant is willing to commit to deploy in non-metropolitan counties" and what maximum — a forward commitment the applicant enters as a percentage, which "shall become a condition of its allocation agreement with the cdfi fund", not a measurement of the pipeline the applicant holds today. question N also "will not be evaluated and scored in phase i of allocation application reviews" (printed p. N). what it is for. question N(f) asks the applicant to "indicate the number and dollar amount of transactions that have already been identified in non-metropolitan counties, for which underwriting is completed or underway", referencing table aN this figure and the project counts beside it are that raw material, and are a starting point for deciding what to commit to in N(c) — not the commitment. there is no N% applicant threshold. the N% in this round is a cdfi fund goal for "all qlicis made by allocatees under this round" and a bar on what an allocatee has committed to; question N states no minimum an individual applicant must clear, and this tool no longer reports whether a pipeline share clears one. the third bucket. projects whose county status this tool could not determine — not geocoded, or geocoded to a tract absent from the cdfi fund's eligibility table — are reported separately and counted as neither metropolitan nor non-metropolitan. they are not metropolitan. the three shares sum to N% of qei.

# --- 1.5.0 S1: round provenance ---
CITED | [nmtcapp/renderers/_question_22.py:1] CY 2024-2025 NMTC Program Allocation Application (142 pp., 1,525,626 bytes, SHA-256 0280c6bc..., re-downloaded and re-hashed 2026-08-20 for the 1.4.0 round, text-extracted LOCALLY with pypdf — SAME INSTRUMENT as the _question_25.py rows above, hash confirmed identical). Question 22, NOTE block at printed p. 31 (PDF 58) and question table at printed p. 32 (PDF 59). Read verbatim this round: 22(c) 'What is the minimum percentage of QLICIs that the Applicant is willing to commit to deploy in Non-Metropolitan Counties? ______%' and 22(d) the maximum, both Field Type 'Numerical - Percentage'; the NOTE 'such requirement shall become a condition of its Allocation Agreement with the CDFI Fund'; the NOTE 'Question 22 will not be evaluated and scored in Phase I of Allocation Application reviews'; the NOTE goal that '20% of all QLICIs made by Allocatees under this Round are invested in Non-Metropolitan Counties' and the formula reduction on 'all Allocatees in the pool that have not committed to investing a minimum of 20% of their QLICIs in Non-Metropolitan Counties'; and 22(f)'s Question Notes 'Indicate the number and dollar amount of transactions that have already been identified in Non-Metropolitan Counties, for which underwriting is completed or underway.' THE RULING THIS SUPPORTS (1.4.0 R3/R4): Q22(c)/(d) is a blank percentage field for a FORWARD COMMITMENT, the same shape 1.3.0 established for Q25(a)/(b) — so this tool's QEI share of the current pipeline is a characterisation and not an answer, the denominator is LABELLED rather than swapped, and non_metro_meets_minimum is deleted because the 20% is a Fund-wide goal and a bar on what an Allocatee COMMITTED to, never a bar an individual Applicant's pipeline must clear. RECORDED: the p.31 NOTE says the deploy range runs 'at or above the minimum indicated in Question 22(b), but not more than the maximum percentage indicated in Question 22(c)', while in the p.32 table 22(b) is a COUNT OF YEARS (0-6) and the two percentages are 22(c) and 22(d). The instrument is internally off by one letter; the question table is the field list the Applicant fills in and governs, and the NOTE's own Rural CDE sentence ('commits to a figure of 50% or greater in response to Question 22(c)') agrees with the table [1.5.0 S1: the docstring was re-worded --- the pinned SHA-256 moved to renderers/_round_provenance so one hash is not hand-typed into two files. Same ruling, same source, new text.] | one authority for what the non-metropolitan share is, and what it is not. why this module exists (N rN) ``intelligence/geographic_analysis`` computes ``non_metro_pct``: the share of this pipeline's **qei** sitting in verified omb non-metropolitan counties. it renders on three surfaces — the ``nmtcapp analyze`` summary, the streamlit geographic tab, and (until N) a benchmark row scored against a "winner mean". on two of those three it rendered as a bare percentage with no denominator and no statement of what question it does or does not answer. the denominator is not swapped, and that is a finding rather than a deferral. question N(c)/(d) asks for a percentage of **qlicis**, so the obvious repair is to change the basis. it is the wrong repair, because question N does not ask for a measurement at all. read from the instrument (provenance below), printed p. N / pdf page N: (c) what is the minimum percentage of qlicis that the applicant is willing to commit to deploy in non-metropolitan counties? ______% numerical - percentage (d) what is the maximum percentage of qlicis that the applicant is willing to commit to deploy in non-metropolitan counties? ______% numerical - percentage "willing to commit to deploy" is a forward undertaking about capital the applicant does not yet have, entered into a blank field, and the application says what happens to it: the figures "shall become a condition of its allocation agreement with the cdfi fund". it is the same shape as question N(a)/(b), which the methodology round established as a dropdown and a menu rather than a measurement. so swapping qei for qlici would move this figure closer to the *units* of a commitment while leaving it a characterisation of a current pipeline. more credible, no more correct — and credible-but-wrong is the harder failure to catch downstream. the basis stays qei and every surface says so. where the application *does* want the pipeline, it says so — and this is what the share is legitimately good for. question N(f)'s own notes instruct: "indicate the number and dollar amount of transactions that have already been identified in non-metropolitan counties, for which underwriting is completed or underway. reference sample transactions in the applicant's non-metropolitan pipeline included in table aN" that is a narrative and a transaction list, not a percentage — which is exactly what ``metro_status_qei`` carries alongside the share, and why the counts are returned with the dollars. and question N is not scored in phase i. printed p. N verbatim: "question N will not be evaluated and scored in phase i of allocation application reviews. therefore, this question is not used to determine whether an applicant scored highly enough to receive consideration for an nmtc allocation." the N% is a fund goal and a commitment threshold, never a pipeline bar. also printed p. N: "the cdfi fund has established the goal that: (i) N% of all qlicis made by allocatees under this round are invested in non-metropolitan counties", and the formula reduction falls on "all allocatees in the pool that have not committed to investing a minimum of N% of their qlicis in non-metropolitan counties". both readings are about what an applicant commits to, across the whole allocatee pool. question N states no minimum an individual applicant must clear. this is why N rN deletes ``non_metro_meets_minimum``. an inconsistency in the instrument itself, recorded so a later reader does not "correct" this module toward it. the printed p. N note says the fund may require deployment "at or above the minimum indicated in question N(b), but not more than the maximum percentage indicated in question N(c)". in the question table on printed p. N N(b) is a **count of years** (N-N) and the minimum/maximum percentages are N(c) and N(d). the table is the field list an applicant fills in and governs; the note is off by one letter against it. the note's own rural cde sentence — "commits to a figure of N% or greater in response to question N(c)" — agrees with the table, not with itself. provenance. cy N-N nmtc program allocation application, re-downloaded, re-hashed and text-extracted locally with pypdf. the page count, byte count, url and sha-N are stated once, in ``renderers/_round_provenance``. until N they were typed here and in ``renderers/_question_N`` — two hand-copied N-character hashes, which is provenance that nobody can proofread; the two happened to agree, exactly as ``qNqei_basis_clause``'s three copies did. one constant now, read by both. cy N-N is a closed round being used as a proxy for the unpublished cy N instrument; see ``_round_provenance``. question N's note block is printed p. N (pdf page N); the question table is printed p. N (pdf page N).
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 [1.5.0 S1: the docstring was re-worded --- the pinned SHA-256 moved to renderers/_round_provenance so one hash is not hand-typed into two files. Same ruling, same source, new text.] | 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, retrieved N-N-N and text-extracted locally with pypdf — not fetched through a summarising model, which is the provenance failure this whole cycle exists to correct. the page count, byte count, url and sha-N are stated once, in ``renderers/_round_provenance``; they were typed here and in ``renderers/_question_N`` as two hand-copied N-character hashes until N and nobody proofreads N hex characters. re-downloaded and re-verified N-N-N: byte count and hash both unchanged. which round this is, and why that matters here. cy N-N is closed — it was awarded N dec N — and the cy N application is not yet published. this module therefore encodes the most recent published instrument as a proxy for one that does not exist. that is the right call and it is not the same as the instrument being current; see ``renderers/_round_provenance`` for the disclosure and for what a cde must re-check when cy N lands. 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 | 1.5.0 S1. Module docstring of renderers/_round_provenance, the one authority for which ROUND this package encodes. Names the CDFI Fund in order to state (a) that CY 2024-2025 is CLOSED --- opened 19 Nov 2024, deadline 29 Jan 2025, awarded 23 Dec 2025, from the NMTC program page's own timeline --- and (b) that the CY 2026 Application and NOAA are NOT YET PUBLISHED, from the Fund's news release of 12 Aug 2026 (cdfifund.gov/news/738), retrieved first-hand 2026-08-20. It attributes to the Fund only things the Fund published, and it attributes the PROXY DECISION to this package rather than to the Fund | which round this package reads, and why that is not the round a cde will file. the defect (N sN) every round-specific citation in this package names the **cy N-N** nmtc allocation application, and names it the way you name a live instrument. ``renderers/_question_N`` and ``renderers/_question_N`` both pin its sha-N and quote its page numbers; ``data/benchmark_thresholds`` reads its thresholds; ``intelligence/win_probability`` and the streamlit methodology tables render them. cy N-N is closed. it opened N nov N its deadline was N jan N and it was awarded on N dec N nothing in this package said so. what the package is actually doing, stated plainly using the most recent published application as a proxy for one that does not exist yet. **that is the correct engineering choice.** there is no other defensible one: the cy N application is unpublished, and a tool that declined to encode any instrument until it appeared would be useless during exactly the window a cde needs it. the defect was never the choice. it was that the choice was never disclosed, so a reader had no way to distinguish "this is the governing instrument" from "this is the nearest available stand-in". both directions of error, and the second is easier to cause N overstating currency -- citing a closed round as though it governed. that is what shipped through N N overstating uncertainty -- writing this disclosure so a reader concludes the cy N-N guidance is unreliable and discounts it. **the cy N-N application is not unreliable.** it is a real federal instrument, retrieved and hash-verified, and it is the best available basis for preparing a cy N application. a cde preparing against it is doing the right thing. a disclosure that drives a cde to prepare against nothing is worse than the stale citation it replaces -- it converts a small provenance error into an unprepared applicant. so the text below tells a cde **what to re-check when cy N publishes**, not that it cannot rely on anything. it is a re-check list, not a warning label. what is not claimed here, and why that question N's structure is round-invariant. a truncated fetch of the cy N application showed question **N** as a **yes/no dropdown** -- the same number and the same shape, two rounds earlier -- which is suggestive and is not evidence of stability. the criteria list, the N%-of-qlicis threshold value and the N/N/N/N/N ladder at N(b)(i) were **not** confirmed for cy N writing "this structure has been stable across rounds" on that evidence would be a new false claim installed while fixing an old one, which is the exact failure this package keeps producing. nothing below says it. the cy N facts, and where they came from retrieved first-hand from ``cdfifund.gov`` on N-N-N (http N; the page text is quoted in this round's changelog entry). the cdfi fund's news release of N aug N is the only place the cy N facts live -- the nmtc program page still displays the cy N-N timeline and carries no cy N noaa, no cy N application link and no certification deadline.
CITED | 1.5.0 S2. Module docstring of integrations/_mapper_capabilities, the runtime assertion of the nmtc-mapper contract. Its one attribution is that Question 22's Non-Metropolitan commitment is denominated in QLICIs, which is stated expressly in the CY 2024-2025 NOAA (Federal Register vol. 89 no. 225, 21 Nov 2024, pp. 92283-92292): "the CDFI Fund will then determine whether the pool of Allocatees will, in the aggregate, invest at least 20 percent of their QLICIs (as measured by dollar amount) in Non-Metropolitan counties". Already ruled for NON_METRO_MIN_COMMITMENT_PCT in data/benchmark_thresholds; restated here to explain WHICH DIRECTION a fabricated False runs, which is the argument for raising rather than degrading | one place the nmtc-mapper contract is asserted at runtime, not just in ci. what this closes (N sN) ``pyproject.toml`` declares ``nmtc-mapper>=N``, and ``tests/integrations/test_mapper_contract.py`` proves the floor is real: ``test_the_floor_field_is_tri_state_not_a_bool`` is red against N and green against N neither of those runs on a cde's machine. pip install nmtc-mapper==N into a working install warns about the conflict and proceeds. pip's dependency warning is not an enforcement mechanism and neither is a type annotation. after that: N / N is_non_metro: bool indeterminate -> false N is_non_metro: optional[bool] indeterminate -> none ``_prefer_determinate(false, declared)`` returns ``false``, because ``false`` is not ``none`` and the guard tests ``is none``. so an unresolvable tract reports as **not non-metropolitan**, ``geographic_analysis`` reads that as a determination, and the dollars go into the metropolitan bucket. **same code, dependency varied: N% metropolitan versus N% not determined.** no error, no exception, not one changed line in this repository — and the third bucket that N existed to create silently empties. why this raises instead of degrading, and the case against each alternative degrade the field to none ("not determined") -- rejected. it produces a "not determined" that is indistinguishable from a real one. a cde would read "county status unknown for N% of qei" and conclude their geocoding failed, not that their library is old. that is precisely the conflation N shipped to fix, re-introduced by the guard meant to prevent it. degrade the pipeline via ``_mark_unavailable`` -- rejected. that status means "the cdfi fund dataset never loaded", a fact about data. this is a fact about the environment. reusing one signal for both tells a cde their eligibility lookup failed when what actually happened is that their install is stale, and it yields a complete application document asserting eligibility is unavailable — correct, useless, and pointing at the wrong cause. raise -- chosen. the condition is deterministic: it depends only on which version is installed, not on any input, any network call or any tract. it is detectable before the first lookup. it has exactly one remedy, and the exception names it. the case against raising, stated rather than skipped. a cde against a deadline with a pinned old environment can now not run the tool at all, where before they would have got a complete application with one field silently wrong. that trade is still right, and the reason is which direction the error runs. ``non_metro_pct`` informs question N whose commitment is a share of qlicis in non-metropolitan counties. a pipeline reported N% metropolitan understates the cde's own non-metropolitan position to a federal agency — the false-negative class ``renderers/_question_N``'s header ranks as the worst error this package can make. a tool that refuses to start is recoverable with one command. a filing that understates the applicant is not recoverable at all. the general mechanism, because a guard on one field is a site the question this had to answer was "is there one place dependency capability is asserted, or is this an ad-hoc check per field?" it is one place: :data:`required_tri_state` below, checked once by :func:`assert_mapper_capabilities` at the single point of consumption. and the list is not hand-maintained, because a hand-maintained list drifts — which is the failure mode ``test_streamlit_page_imports`` demonstrated by mirroring three of nine imports and going stale for three releases. ``tests/integrations/test_mapper_capabilities.py`` derives the set of fields that need a declaration by walking the adapter's ast for every field passed through ``_prefer_determinate``, and fails if any of them is missing here. a new tri-state-dependent field is therefore a red test until somebody declares it.
CITED | [nmtcapp/data/historical_awards.py:253] CITED (1.5.0 F5). Every figure is from a CDFI Fund award announcement. The CY 2024-2025 figures are the CY 2024-2025 NMTC Program Award Book, cdfifund.gov/media/8018306/download?inline, linked from cdfifund.gov/news/700 (23 Dec 2025), retrieved first-hand 2026-08-21, p.4: '142 CDEs out of 216 applicants were awarded allocations by the CDFI Fund'. The double-round framing is that announcement's own words: 'The awards announced today are a double round, covering 2024 and 2025.' The CY 2026 $5 billion is cdfifund.gov/news/738 (12 Aug 2026). THE SENTENCE THIS REPLACES WAS A FORECAST -- 'Expect 30-35% acceptance in near-term rounds' -- rendered as a blockquote on the Streamlit About page. The CDFI Fund forecasts no acceptance rate and this package has no basis to; the very next round settled at 65.7%, roughly double the forecast, which is the direction that talks a CDE out of applying. What is attributed to the Fund now is only the record. | application volumes rose sharply post-covid then stabilized. across the four single rounds cyN-cyN acceptance ranged from N% (cyN most competitive) to N% (cyN). cy N-N was a double round covering two years, and N of N applicants received an allocation (N%), so it does not compare like-for-like with the single rounds beside it. this is a record, not a forecast: neither the cdfi fund nor this tool publishes an expected acceptance rate for any future round, and cy N is a $N billion single round.

CITED | [streamlit_app/pages/4_About_and_Methodology.py:332] Limitations 7 and 8. (7) The readiness score: NAMES THE FUND IN ORDER TO DENY IT -- the CDFI Fund publishes NO such score, weighting or grade, the same negative already ruled at schema.READINESS_SCORING_WEIGHTS and rendered by _methodology.readiness_weights_note. Unchanged in 1.5.2 except that the narrative it describes is now withdrawn (T1). (8) RE-RULED IN 1.5.2 T3: THE OPEN ITEM IS RETIRED AND THIS HALF NOW CITES. Through 1.5.1 this passage recorded the 25-vs-50 Part I reconciliation as 'not verified against the primary source in this release ... an open item, not as a fact about the CDFI Fund', and the 1.5.1 ruling for this entry said explicitly that no citation was offered because none had been opened. It has now been opened. CY 2024-2025 NMTC Program Review Process (7pp, 187,497 bytes, SHA-256 ad0dc777eab0dc8cf437d970418bcdbea8403eb99b79dd1662f4ce94eab98749), retrieved first-hand from cdfifund.gov/system/files/2025-12/ and text-extracted locally with pypdf on 2026-08-21 -- NOT fetched through a summarising model. PDF p.2, verbatim: "The CDFI Fund's Phase 1 review process, for all eligible Applicants, required two reviewers to independently evaluate and score the Business Strategy and Community Outcomes sections of each Application." PDF p.3, 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." The Application side was re-verified the same day: its SHA-256 and byte count match the values pinned in renderers/_round_provenance exactly, and PDF p.40 (printed p.13) reads "Total Maximum Points for Part I: 25 points, plus up to 10 additional 'priority points'". WHAT IS QUOTED AND WHAT IS INFERRED IS KEPT APART ON THE PAGE, which is why this stays reviewable: the two-reviewer fact and both point figures are quotations; that the 25 is PER REVIEWER is the inference joining them, and the page says so. The arithmetic corroborates it independently -- at 25 per section the aggregate base maximum is 50 and the published 85 gate would be unreachable, while at 2 x 25 = 50 per section it is coherent, as is that page's own worked example of 40 + 38 = 78 falling short of 85. The CDFI Fund does not print the reconciliation itself and the page does not claim it does RE-RULED 1.5.2 AUDIT, F5 AND F2, AND THE CLAIM TEXT MOVED WITH BOTH. F5: this page led with "The reconciliation is now established, from the primary source" and closed four paragraphs later with "The CDFI Fund does not print the reconciliation itself", and the round's own report marked the joining inference PLAUSIBLE. A page cannot say both. The heading now reads "not printed anywhere; it is NECESSARILY IMPLIED BY THE PRIMARY SOURCES", which is the claim the evidence supports and which the closing sentence no longer contradicts. TWO ANCHORS WERE ADDED AND BOTH WERE OPENED FIRST-HAND, not inherited from the prior round. Anchor 2, Review Process PDF p.2 verbatim: "An anomalous base score was deemed to have occurred when the difference between the two reviewer base scores, divided by the higher of the two base scores, was significant" -- establishing that a BASE SCORE is a quantity each reviewer produces, so two exist per Application and p.3's "aggregate base score" is what they aggregate to. Anchor 3, Allocation Application PDF p.65 (printed p.38) verbatim: "Total Maximum Points for Part II: 25 points", matching PDF p.40 (printed p.13)'s "Total Maximum Points for Part I: 25 points, plus up to 10 additional 'priority points'" -- so one reviewer's base score maxes at 25+25=50 and two aggregate to 100. Both instruments were re-hashed on 2026-08-22 before quoting: Review Process 187,497 bytes SHA-256 ad0dc777eab0dc8cf437d970418bcdbea8403eb99b79dd1662f4ce94eab98749, Allocation Application 142pp 1,525,626 bytes SHA-256 0280c6bc7b35f6015e2c2b1be4b1c07b3864f2dcbaeadfbbbf8bded8de12834f, both matching the values pinned in renderers/_round_provenance. F2: Limitation 7 now INTERPOLATES readiness_inline_qualifier() twice instead of retyping the same disclosure in its own words. The paraphrase was substantively correct and unrecognisable to the proximity gate, which is the drift class this package keeps finding; reading the function makes the About page and the four generated documents one string | known limitations ### N phase N not modeled phase N evaluates management capacity and capitalization strategy through narrative review. these are the subjective factors that distinguish applicants within the highly qualified pool. this tool does not score phase N ### N sub-score weights are interpretive the cdfi fund publishes section totals (N pts each) and criterion descriptions, but does not publish exact point values for individual sub-criteria. this tool's sub-point allocations (e.g., product flexibility N pts) are best-effort interpretations. ### N non-winner data is not available the cdfi fund publishes only winner-level data. application data for non-winning applicants is not publicly disclosed. the `historicalbenchmarks` module uses winner patterns only. ### N past reporting compliance not modeled prior-round reporting issues can result in score deductions. this tool assumes a clean compliance record unless explicitly flagged in `cde_attributes`. ### N pipeline data quality matters scores are only as good as the data provided. inaccurate distress classifications, job estimates, or sector assignments will produce misleading results. ### N sample data is illustrative only the sample pipeline (N projects, riverbend community capital cde) is fictional. do not use sample output to benchmark a real application. ### N the readiness score has no cdfi fund referent this page is the tool's disclosure page, and through N it did not mention the readiness score anywhere — not in this list, not in the scoring framework above. the readiness grade is the largest number on the pipeline analyzer and the first thing printed on every generated document, and it is **N**: a weighted composite of six components this tool chose, with weights this tool assigned, calibrated against nothing. the cdfi fund publishes no such score, no such weighting, and no grade. **it does not predict an award outcome and it is not evidence about an application.** it is also **not the alignment score** on this page — the readiness grade is N and the alignment score is not. the alignment score is assessed against the published cy N-N review process criteria and carries the fund's own highly qualified gate. the readiness grade is not, and the two can move in opposite directions: a pipeline can raise its readiness grade while its alignment score falls below the fund's gate. **where they disagree, the alignment score is the one with a published referent.** ### N the application and the review process print different part i maxima a cde reading both cdfi fund documents will find **two different point maxima for the same part i** — the allocation application states a *total maximum points for part i* of **N**, and the review process describes **N points per section**, which is the denominator every "/N" on this page is scored against. nothing in this package acknowledged the discrepancy, so a cde who noticed it had no way to tell which figure this tool was using or why. **this tool scores against N**, from the review process. **the reconciliation is not printed anywhere; it is necessarily implied by the primary sources.** three published figures and one published gate are quoted below, and only one reading of them is arithmetically consistent. that is a strong claim and a different one from "the fund says so", which this page said through N and which was contradicted four paragraphs later by its own closing sentence. the cy N-N nmtc program review process states on **pdf p.N**, verbatim: > "the cdfi fund's phase N review process, for all eligible applicants, required > **two reviewers** to independently evaluate and score the business strategy and > community outcomes sections of each application." two reviewers score each of the two sections independently, so the application's **per-reviewer** maximum of N aggregates to the **N** the review process describes. the same document's **p.N** confirms the denominator in the same breath as the gate: *"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."* **a second anchor, from the same page, and it is the one that settles what a "base score" belongs to.** the review process's **p.N** describes the anomaly check verbatim: > "an anomalous base score was deemed to have occurred when the difference > between **the two reviewer base scores**, divided by the higher of the two > base scores, was significant." a *base score* is therefore a quantity **each reviewer produces**, for the whole application, not a single number the application carries. two of them exist per application, and p.N's "aggregate base score ... of at least N points" is what they aggregate to. **a third figure, and it doubles the arithmetic.** the allocation application states a maximum for *each* scored part, not only for part i: **pdf p.N** (printed p.N) reads *"total maximum points for part ii: N points"*, matching **pdf p.N** (printed p.N)'s *"total maximum points for part i: N points, plus up to N additional 'priority points'"*. so one reviewer's base score maxes at N + N = **N**, and two reviewers aggregate to **N**. **the arithmetic then admits one reading and no other.** at N points per section the aggregate base maximum would be N and a gate requiring "at least N points" would be unreachable — the fund would have published a threshold no application could ever meet. at N × N = N per section the maximum is N and the N gate is coherent, as is that page's own worked example, where N + N = N falls short of N **what is quoted and what is inferred, kept apart.** the two-reviewer fact, the two-reviewer-base-scores sentence, both part maxima and the N gate are all quotations from the two pinned documents. that the N is *per reviewer* is the inference joining them. it is not printed anywhere: **the cdfi fund does not print the reconciliation itself**, and this page does not claim it does. what the page claims is narrower and checkable — that no other reading leaves every published figure simultaneously true. *both instruments re-opened and text-extracted locally with pypdf on N-N-N for the two citations added above — review process, Npp, N bytes, sha-N `adNdcNeabNdcNcfNdNbcdbeaNebNbNddNfNceNeabN`; allocation application, Npp, N bytes, sha-N `NcNbcNbNfNeNcNbNbeNbNcNbNfNdcbaeadfbbbfNbdedNdeNf`. both hashes match the values already pinned in `renderers/_round_provenance` exactly. part ii's maximum was read from the application's own page, not inferred from part i's.* **no scoring changes from this disclosure**; the denominators are unchanged.
DISCLAIM | [docs/about/why.md:7] NAMES THE FUND TO WITHDRAW THREE CLAIMS ABOUT IT, added 1.5.1. The removed prose asserted that healthcare+education "score well on sector diversity", that a 4-state pipeline "will be penalized relative to competitors with 8-10", and that jobs-per-million-QEI below 6 flags impact reviewers — three unsourced claims about how the CDFI Fund scores, standing in the project's own rationale page. The state-count denial is the SAME negative already ruled at schema.MIN_GEOGRAPHIC_DIVERSITY, whose comment records that the CY 2024-2025 Review Process scores no state count and that the Allocation Application asks for a service area rather than a number of states; this row inherits that ruling rather than restating a source. Its executable twin is the geographic recommendation withdrawn in readiness_score._build_recommendations this release. | three examples used to stand here and have been removed** (N). they asserted that healthcare + education combinations "score well on sector diversity", that "a pipeline with only N states will be penalized relative to competitors with N–N", and that a jobs-per-million-qei figure below N "is a meaningful flag for impact reviewers". none of the three is sourced, and all three are claims about how the cdfi fund scores. the middle one is the sharpest: **the cy N-N review process scores no state count at all**, and the allocation application asks for a service area, not a minimum number of states. the same claim, in its executable form, is the geographic recommendation this release withdrew — see `min_geographic_diversity` in `schema.py`. leaving the prose version standing would have withdrawn the advice and kept the assertion behind it.
CITED | [docs/workflow/recommendations.md:74] CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17) p.3 Step 2, quoted verbatim elsewhere in this package: "(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". THE ROW SAYS NO NUMBER AND NAMES NO TOOL THRESHOLD -- it says a PUBLISHED gate was missed, which is exactly what _gating_recs emits a critical for, and the numbers behind it are the two constants already ruled CITED (HIGHLY_QUALIFIED_SECTION_MIN, HIGHLY_QUALIFIED_AGGREGATE_MIN). ADDED IN THE 1.5.1 AUDIT ROUND, REPLACING A DEFECT: this cell previously read "Blocks competitive consideration" against triggers "Eligibility rate <N%, only N state, distress <N% (pN floor)" -- a wrong-conclusion claim of the "not viable in current form" shape, attached to three trigger conditions that fire nothing in this engine. No state count raises any priority here, and there is no pN floor anywhere in it. | `critical` | a **published** gate is missed | the score is `not qualified` — a section total below the highly qualified section minimum, or an aggregate base score below the published aggregate minimum
DISCLAIM | [docs/workflow/recommendations.md:233] NAMES THE APPLICATION IN ORDER TO DENY A BAR, added in the 1.5.1 audit round (B2). This is the SAME negative already ruled at schema.MIN_GEOGRAPHIC_DIVERSITY and allowlisted for the T1 withdrawal string in tests/attribution_allowlist.txt: the CY 2024-2025 Review Process scores no state count, and the CY 2024-2025 NMTC Allocation Application asks the Applicant to describe a SERVICE AREA rather than to meet a minimum number of states. This row inherits that ruling rather than restating a source. It carries the published defence for withdrawing the geographic advice onto the page that, at 4bd26ab, was contradicting it -- docs/workflow/recommendations.md was live on gh-pages telling readers to "reach at least the winner p25 of 4 states, ideally 7+ states" while being cited as evidence that the second engine emits no such advice. | allocation application asks for a service area, not a minimum number of
DISCLAIM | [nmtcapp/validation/readiness_score.py:545] NAMES THE REVIEW PROCESS IN ORDER TO DENY THAT THIS TABLE IS ACTIONABLE AGAINST IT. Added by the 1.5.2 audit's F1. Two measurements are quoted and both were executed in this tree, not sourced from any document: (1) a hand-built pipeline taken from 3 states to 6 with distress unchanged gained exactly the 10.0 the geographic row itemises while its aggregate base score under WinProbabilityModel did not move; (2) a pipeline taken from 2 states at 100% severe to 3 states at 80% severe gained 2.1 readiness points while that same aggregate base score fell 78 -> 77. The '78 to 77' is therefore a figure this package produced about ITSELF and the sentence says so on its face -- an earlier draft read 'its CDFI Fund base score fell by one', which would have been a false attribution of this tool's arithmetic to the Fund, the exact defect class this gate exists to catch. The geographic negative underneath it inherits the ruling already recorded at schema.MIN_GEOGRAPHIC_DIVERSITY: the CY 2024-2025 Review Process scores no state count, and the Allocation Application asks for a service area rather than a number of states | the blocks above are not the same currency and must not be traded off against each other. a point recovered on a house bookkeeping row changes this tool's headline and nothing else. worse, the two blocks can move in opposite directions: a measured sample pipeline that added a state and diluted its severe-distress share gained N readiness points here while its aggregate base score under this package's model of the review process fell by a point, N to N this table cannot tell you which trade is worth making, and it is not trying to -- it is an account of what this tool did to its own number, not a list of things to fix.
CITED | [nmtcapp/intelligence/recommendations.py:117] 1.5.4 T2. The Question 15 sentence, LIFTED VERBATIM from the pf<8 branch already ruled at line 248 of this file so the 1.2.2 D1 sourcing is not discarded on the path an empty CDE profile actually takes. CY 2024-2025 NMTC Allocation Application (142pp, 1,525,626 bytes, retrieved and text-extracted locally 2026-08-17) pp.20-21: Question 15 is a single-select ladder, 'Choose one of the following options. Check only one.' The added closing sentence DENIES that this tool's sub-score is that test, which is the D1 disclosure. | question N of the 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. this tool's sub-score is not that test.
CITED | [nmtcapp/intelligence/recommendations.py:142] 1.5.4 T2. The Track Record Alignment sentence, lifted from the tra<8 branch already ruled at line 387. CY 2024-2025 NMTC Program Review Process (7pp, retrieved and text-extracted locally 2026-08-17), p.7 Part II.A.4. The 70% and the track-record-to-projection ratio are BOTH Fund-stated and both are quoted unchanged; the house 90% deployment point is deliberately NOT carried into this disclosure, because a not-scored item states what the Fund scores and nothing about this tool's own bands. | 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 and activity types, and for the most recent N-year direct financing track record to be N+ of projected nmtc deployment in exhibit a.
HOUSE | [nmtcapp/intelligence/recommendations.py:173] 1.5.4 T2. The DBC full-credit sentence. The bar is attributed to THIS TOOL on its face — 'Full credit under this tool requires' — which is the change from the ruled sibling at line 601, where the same figures sit under a bare 'Full credit requires'. The figures themselves are the Fund's (Review Process p.7 Part II.B.1, 5+ years AND 70% of direct financing volume to DBCs) and are interpolated from DBC_PRIORITY_YEARS_MIN and DBC_VOLUME_PCT_MIN, not typed. | full credit under this tool requires N+ years of dbc focus and N+ of direct financing volume to disadvantaged businesses or communities.
CITED | [nmtcapp/intelligence/recommendations.py:475] 1.5.4 T4, THE ELIGIBILITY GATE, and the only STATUTORY attribution this package makes in a recommendation. Ruled against the statute and the regulation directly, not against a CDFI Fund publication: IRC §45D(d)(1) defines a qualified low-income community investment and §45D(b)(1)(B) requires substantially all of a QEI to be used to make QLICIs; Treas. Reg. §1.45D-1(c)(5)(i) defines 'substantially all' as at least 85 percent, and §1.45D-1(d)(4)(i) requires the qualified active low-income community business to be located in a Low-Income Community. The SAME 85%-of-QEI-proceeds figure is already ruled on the eligibility_check warning it was lifted from (nmtcapp/validation/eligibility_check.py). NOT a Review Process figure, and the citation field says so on its face: 'NOT a CY 2024-2025 Review Process scoring criterion — a statutory precondition to being scored at all.' | N of pipeline qei (N of N projects) is in a census tract that is not a low-income community. this is a statutory gate, not a scored band: irc §Nd(d) requires each qlici to be made in a qualified active low-income community business 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 a tract that does not qualify cannot count toward that test.
