nmtc-application-builder 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- nmtc_application_builder-1.0.0.dist-info/METADATA +265 -0
- nmtc_application_builder-1.0.0.dist-info/RECORD +64 -0
- nmtc_application_builder-1.0.0.dist-info/WHEEL +5 -0
- nmtc_application_builder-1.0.0.dist-info/entry_points.txt +2 -0
- nmtc_application_builder-1.0.0.dist-info/top_level.txt +1 -0
- nmtcapp/__init__.py +66 -0
- nmtcapp/cli.py +309 -0
- nmtcapp/core/__init__.py +5 -0
- nmtcapp/core/application.py +439 -0
- nmtcapp/core/cde.py +148 -0
- nmtcapp/core/pipeline.py +473 -0
- nmtcapp/data/__init__.py +29 -0
- nmtcapp/data/benchmark_thresholds.py +108 -0
- nmtcapp/data/historical_awards.py +275 -0
- nmtcapp/data/schema.py +140 -0
- nmtcapp/integrations/__init__.py +13 -0
- nmtcapp/integrations/cdfidata_adapter.py +97 -0
- nmtcapp/integrations/hmda_adapter.py +94 -0
- nmtcapp/integrations/impact_adapter.py +104 -0
- nmtcapp/integrations/nmtc_calc_adapter.py +128 -0
- nmtcapp/integrations/nmtc_mapper_adapter.py +122 -0
- nmtcapp/intelligence/__init__.py +26 -0
- nmtcapp/intelligence/benchmarks.py +326 -0
- nmtcapp/intelligence/distress_analysis.py +117 -0
- nmtcapp/intelligence/geographic_analysis.py +126 -0
- nmtcapp/intelligence/impact_aggregator.py +94 -0
- nmtcapp/intelligence/pattern_analysis.py +188 -0
- nmtcapp/intelligence/pipeline_analyzer.py +183 -0
- nmtcapp/intelligence/recommendations.py +517 -0
- nmtcapp/intelligence/sector_analysis.py +122 -0
- nmtcapp/intelligence/win_probability.py +293 -0
- nmtcapp/optimizer/__init__.py +8 -0
- nmtcapp/optimizer/candidate_pool.py +119 -0
- nmtcapp/optimizer/constraints.py +93 -0
- nmtcapp/optimizer/objectives.py +222 -0
- nmtcapp/optimizer/pipeline_optimizer.py +313 -0
- nmtcapp/renderers/__init__.py +24 -0
- nmtcapp/renderers/_word_helpers.py +207 -0
- nmtcapp/renderers/excel_builder.py +549 -0
- nmtcapp/renderers/markdown_builder.py +178 -0
- nmtcapp/renderers/pdf_builder.py +668 -0
- nmtcapp/renderers/styles.py +142 -0
- nmtcapp/renderers/word_builder.py +470 -0
- nmtcapp/sections/__init__.py +22 -0
- nmtcapp/sections/base.py +112 -0
- nmtcapp/sections/section_a_business.py +93 -0
- nmtcapp/sections/section_b_outcomes.py +93 -0
- nmtcapp/sections/section_c_management.py +82 -0
- nmtcapp/sections/section_d_capitalization.py +83 -0
- nmtcapp/sections/section_e_prior_awards.py +88 -0
- nmtcapp/tables/__init__.py +15 -0
- nmtcapp/tables/distress_table.py +108 -0
- nmtcapp/tables/geographic_table.py +75 -0
- nmtcapp/tables/impact_table.py +123 -0
- nmtcapp/tables/investor_table.py +131 -0
- nmtcapp/tables/pipeline_table.py +162 -0
- nmtcapp/tables/track_record_table.py +65 -0
- nmtcapp/validation/__init__.py +12 -0
- nmtcapp/validation/completeness_check.py +83 -0
- nmtcapp/validation/consistency_check.py +129 -0
- nmtcapp/validation/eligibility_check.py +77 -0
- nmtcapp/validation/readiness_score.py +309 -0
- nmtcapp/visualization/__init__.py +16 -0
- nmtcapp/visualization/maps.py +726 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: nmtc-application-builder
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Flagship NMTC application intelligence platform — pipeline analysis, eligibility validation, readiness scoring, and visualization for CDEs
|
|
5
|
+
Author-email: Jay Patel <thejaypatel1511@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Jaypatel1511/nmtc-application-builder
|
|
8
|
+
Project-URL: Repository, https://github.com/Jaypatel1511/nmtc-application-builder
|
|
9
|
+
Project-URL: Documentation, https://github.com/Jaypatel1511/nmtc-application-builder#readme
|
|
10
|
+
Project-URL: Issue Tracker, https://github.com/Jaypatel1511/nmtc-application-builder/issues
|
|
11
|
+
Keywords: nmtc,cdfi,community-development,new-markets-tax-credit,pipeline
|
|
12
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: Office/Business :: Financial
|
|
20
|
+
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
21
|
+
Requires-Python: >=3.9
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
Requires-Dist: pandas>=1.3
|
|
24
|
+
Requires-Dist: numpy>=1.21
|
|
25
|
+
Requires-Dist: pyyaml>=6.0
|
|
26
|
+
Requires-Dist: nmtc-mapper>=0.3.0
|
|
27
|
+
Requires-Dist: nmtc-calc>=0.1.0
|
|
28
|
+
Requires-Dist: hmda-analyzer>=0.1.0
|
|
29
|
+
Requires-Dist: cdfidata>=0.1.7
|
|
30
|
+
Requires-Dist: impact-ledger>=0.2.0
|
|
31
|
+
Requires-Dist: cra-scraper>=0.1.0
|
|
32
|
+
Provides-Extra: word
|
|
33
|
+
Requires-Dist: python-docx>=1.1.0; extra == "word"
|
|
34
|
+
Provides-Extra: excel
|
|
35
|
+
Requires-Dist: openpyxl>=3.0.9; extra == "excel"
|
|
36
|
+
Provides-Extra: pdf
|
|
37
|
+
Requires-Dist: reportlab>=4.0.0; extra == "pdf"
|
|
38
|
+
Provides-Extra: viz
|
|
39
|
+
Requires-Dist: matplotlib>=3.7; extra == "viz"
|
|
40
|
+
Provides-Extra: output
|
|
41
|
+
Requires-Dist: python-docx>=1.1.0; extra == "output"
|
|
42
|
+
Requires-Dist: openpyxl>=3.0.9; extra == "output"
|
|
43
|
+
Requires-Dist: reportlab>=4.0.0; extra == "output"
|
|
44
|
+
Provides-Extra: dev
|
|
45
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
46
|
+
Requires-Dist: pytest-cov>=4.0; extra == "dev"
|
|
47
|
+
Requires-Dist: jupyter>=1.0; extra == "dev"
|
|
48
|
+
Requires-Dist: python-docx>=1.1.0; extra == "dev"
|
|
49
|
+
Requires-Dist: openpyxl>=3.0.9; extra == "dev"
|
|
50
|
+
Requires-Dist: reportlab>=4.0.0; extra == "dev"
|
|
51
|
+
Requires-Dist: matplotlib>=3.7; extra == "dev"
|
|
52
|
+
|
|
53
|
+
# NMTC Application Builder
|
|
54
|
+
|
|
55
|
+
**The open-source intelligence platform for competitive CDFI Fund applications.**
|
|
56
|
+
|
|
57
|
+
[](https://pypi.org/project/nmtc-application-builder/)
|
|
58
|
+
[](https://pypi.org/project/nmtc-application-builder/)
|
|
59
|
+
[](https://github.com/Jaypatel1511/nmtc-application-builder/actions)
|
|
60
|
+
[](https://opensource.org/licenses/MIT)
|
|
61
|
+
[](https://jaypatel1511.github.io/nmtc-application-builder/)
|
|
62
|
+
|
|
63
|
+
**[Documentation](https://jaypatel1511.github.io/nmtc-application-builder/) · [Streamlit Demo](https://nmtc-application-builder.streamlit.app) · [Examples](examples/) · [PyPI](https://pypi.org/project/nmtc-application-builder/)**
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
CDEs spend months preparing NMTC allocation applications without knowing how their pipeline compares to historical winners. This library changes that — scoring your pipeline against five years of CDFI Fund award data in seconds, generating competition-ready document drafts automatically, and telling you exactly what to fix.
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
app = Application(cde=CDEProfile.sample(), requested_allocation=65_000_000)
|
|
71
|
+
app.add_pipeline(Pipeline.from_csv("pipeline.csv"))
|
|
72
|
+
score = app.score_win_probability()
|
|
73
|
+
print(f"Alignment: {score.composite_score:.0f}/100 [{score.competitive_tier}]")
|
|
74
|
+
# → Alignment: 66/100 [competitive]
|
|
75
|
+
paths = app.generate("./drafts/")
|
|
76
|
+
# → Word, Excel, PDF, and Markdown application package ready in ./drafts/
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## The Problem
|
|
82
|
+
|
|
83
|
+
CDE teams preparing NMTC allocation applications work blind. They spend weeks manually assembling pipeline data in Excel, draft narrative sections without knowing how their distress concentration or geographic diversity compares to past winners, and submit applications with no objective measure of competitiveness. The CDFI Fund receives 280–340 applications per round with a ~35% acceptance rate — yet most CDEs have no systematic way to benchmark their position before the deadline.
|
|
84
|
+
|
|
85
|
+
## The Solution
|
|
86
|
+
|
|
87
|
+
`nmtc-application-builder` gives CDEs a programmatic intelligence layer built on five years of CDFI Fund public award data. Load your pipeline from CSV, run `analyze()`, and immediately see where you stand on every dimension the CDFI Fund scores: distress concentration, geographic diversity, sector mix, impact intensity, and pipeline quality. Get specific, numbered recommendations. Optimize your project subset automatically. Generate the Word, Excel, PDF, and Markdown drafts that go directly into your application package.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Quickstart
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
pip install nmtc-application-builder[output,viz]
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
from nmtcapp import Application, CDEProfile, Pipeline
|
|
99
|
+
from nmtcapp.optimizer import OptimizationConstraints
|
|
100
|
+
|
|
101
|
+
# 1. Define your CDE
|
|
102
|
+
cde = CDEProfile.sample() # or CDEProfile.from_yaml("cde.yaml")
|
|
103
|
+
|
|
104
|
+
# 2. Load your pipeline
|
|
105
|
+
pipeline = Pipeline.from_csv("pipeline.csv") # or Pipeline.sample(n=20) for demo
|
|
106
|
+
|
|
107
|
+
# 3. Analyze
|
|
108
|
+
app = Application(cde=cde, requested_allocation=65_000_000)
|
|
109
|
+
app.add_pipeline(pipeline)
|
|
110
|
+
analysis = app.analyze()
|
|
111
|
+
analysis.summary()
|
|
112
|
+
|
|
113
|
+
# 4. Score alignment with historical winners
|
|
114
|
+
score = app.score_win_probability() # alignment score, not win probability
|
|
115
|
+
print(f"{score.composite_score:.0f}/100 [{score.competitive_tier}]")
|
|
116
|
+
|
|
117
|
+
# 5. Get quantified recommendations
|
|
118
|
+
recs = app.recommendations()
|
|
119
|
+
print(recs.summary())
|
|
120
|
+
|
|
121
|
+
# 6. Optimize your pipeline subset
|
|
122
|
+
result = app.optimize_pipeline(
|
|
123
|
+
constraints=OptimizationConstraints(max_total_qei=65_000_000, min_states=5)
|
|
124
|
+
)
|
|
125
|
+
print(f"Score: {result.alignment_score_before*100:.0f} → {result.alignment_score_after*100:.0f}")
|
|
126
|
+
|
|
127
|
+
# 7. Generate the full application package
|
|
128
|
+
paths = app.generate("./drafts/")
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Or bootstrap a starter project in 60 seconds:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
nmtcapp init my-application/
|
|
135
|
+
cd my-application/
|
|
136
|
+
jupyter notebook analysis.ipynb
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## What It Does
|
|
142
|
+
|
|
143
|
+
- **Pipeline ingestion** — Load from CSV or build programmatically; validates all required fields
|
|
144
|
+
- **NMTC eligibility enrichment** — Census tract lookup, distress level classification (deep / severe / LIC), opportunity zone and native area flags
|
|
145
|
+
- **Distress concentration analysis** — Deep/severe QEI percentage vs. CDFI Fund competitive thresholds (target: ≥75%)
|
|
146
|
+
- **Geographic diversity scoring** — State count, HHI concentration index, urban/rural split
|
|
147
|
+
- **Sector mix analysis** — Shannon entropy, dominant sector, high-priority sector alignment
|
|
148
|
+
- **Impact projection** — Jobs per $MM QEI benchmarked against historical winner distributions
|
|
149
|
+
- **Win alignment scoring** — 5-dimensional score (0–100) against CY2020–2024 winner patterns
|
|
150
|
+
- **Quantified recommendations** — Specific, numbered improvement actions per dimension with estimated score impact
|
|
151
|
+
- **Pipeline optimizer** — Greedy + local-search selects the best project subset for your target budget
|
|
152
|
+
- **Output generation** — Word, Excel, PDF, and Markdown application drafts in one call
|
|
153
|
+
- **Geographic visualizations** — Publication-quality pipeline maps, radar charts, and benchmark plots at 300 DPI
|
|
154
|
+
- **CLI** — `nmtcapp init` / `nmtcapp analyze` for quick command-line workflows
|
|
155
|
+
|
|
156
|
+
> **Methodology note:** Alignment scores measure similarity to historical winner patterns — they are not win probabilities. The CDFI Fund does not publish rejected application data, so a true probability model cannot be built from public information alone.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Sample Output Gallery
|
|
161
|
+
|
|
162
|
+
Generated outputs are in [`examples/sample_output/`](examples/sample_output/) — Word, Excel, PDF, and Markdown for a realistic sample CDE application.
|
|
163
|
+
|
|
164
|
+
The three example notebooks tell a complete story:
|
|
165
|
+
|
|
166
|
+
| Notebook | What it demonstrates |
|
|
167
|
+
|---|---|
|
|
168
|
+
| [01_quickstart.ipynb](examples/01_quickstart.ipynb) | End-to-end workflow in 10 minutes |
|
|
169
|
+
| [02_full_application_walkthrough.ipynb](examples/02_full_application_walkthrough.ipynb) | Complete document generation |
|
|
170
|
+
| [03_intelligence_and_optimization.ipynb](examples/03_intelligence_and_optimization.ipynb) | **5.5 → 65.9 → 79.1/100** — weak→competitive pipeline transformation |
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Architecture
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
nmtc-application-builder/
|
|
178
|
+
├── nmtcapp/
|
|
179
|
+
│ ├── core/ Application · CDEProfile · Pipeline
|
|
180
|
+
│ ├── intelligence/ PipelineAnalyzer · WinProbabilityModel · RecommendationEngine
|
|
181
|
+
│ ├── optimizer/ PipelineOptimizer · CandidatePool · Objectives
|
|
182
|
+
│ ├── validation/ EligibilityCheck · CompletenessCheck · ReadinessScore
|
|
183
|
+
│ ├── integrations/ nmtc-mapper · nmtc-calc · cdfidata · impact-ledger
|
|
184
|
+
│ ├── visualization/ pipeline maps · distress heatmap · radar · alignment charts
|
|
185
|
+
│ ├── renderers/ Word · Excel · PDF · Markdown builders
|
|
186
|
+
│ ├── data/ historical awards · benchmark thresholds · schema
|
|
187
|
+
│ └── cli.py nmtcapp init / analyze / version
|
|
188
|
+
├── examples/ 3 executed Jupyter notebooks + sample output
|
|
189
|
+
├── streamlit_app/ Interactive web demo (4 pages)
|
|
190
|
+
├── templates/ pipeline_template.csv · cde_profile_template.yaml
|
|
191
|
+
└── docs/ MkDocs documentation site
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Built on the Open-Source CDFI Analytics Stack
|
|
195
|
+
|
|
196
|
+
This library integrates six companion libraries built for the CDFI space:
|
|
197
|
+
|
|
198
|
+
| Library | Role in this project |
|
|
199
|
+
|---|---|
|
|
200
|
+
| `nmtc-mapper` | Census tract geocoding and eligibility classification (deep / severe / LIC) |
|
|
201
|
+
| `nmtc-calc` | NMTC leveraged deal economics (QEI → NMTCs → investor equity) |
|
|
202
|
+
| `cdfidata` | CDFI Fund TLR/CLR/Awards ETL and dataset loader |
|
|
203
|
+
| `impact-ledger` | Portfolio-level impact tracking by sector |
|
|
204
|
+
| `hmda-analyzer` | HMDA CRA assessment data integration |
|
|
205
|
+
| `cra-scraper` | Community Reinvestment Act data extraction |
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Use Cases
|
|
210
|
+
|
|
211
|
+
**CDE application teams** — Run `analyze()` on your pipeline weekly during application season. Watch your readiness score improve as you add projects and address recommendations. Generate the first draft of every section automatically.
|
|
212
|
+
|
|
213
|
+
**CDFI consultants** — Drop a client's pipeline CSV in and produce a competitive benchmark report in minutes. Show exactly where they stand vs. historical winners before committing to a full engagement.
|
|
214
|
+
|
|
215
|
+
**Researchers and policy analysts** — Query the embedded CY2020–2024 CDFI Fund award statistics. Study what differentiates winning applications across distress concentration, geographic reach, and impact intensity.
|
|
216
|
+
|
|
217
|
+
**CDEs evaluating pipeline strategy** — Use the optimizer to understand what subset of your project pipeline maximizes competitive alignment given a target allocation amount and diversity constraints.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Limitations & Honest Disclosures
|
|
222
|
+
|
|
223
|
+
- **Not a win probability model.** Alignment score ≠ probability of receiving an allocation. The CDFI Fund does not publish rejected application data, so a calibrated probability model cannot be built from public information alone.
|
|
224
|
+
- **Historical patterns, not current NOFA.** Benchmarks derive from CY2020–2024 award data. CDFI Fund priorities shift — always check the current NOFA for updated criteria.
|
|
225
|
+
- **Approximate geographic data.** Pipeline maps use state centroids, not actual project addresses. Eligibility enrichment uses `nmtc-mapper` and falls back to embedded sample data when offline.
|
|
226
|
+
- **Not a substitute for expert review.** Always have a qualified CDFI practitioner or attorney review application materials before submission.
|
|
227
|
+
- **No investor or underwriting analysis.** This library covers competitive positioning, not deal structuring, investor sourcing, or legal compliance.
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Documentation
|
|
232
|
+
|
|
233
|
+
Full documentation at **[jaypatel1511.github.io/nmtc-application-builder](https://jaypatel1511.github.io/nmtc-application-builder/)**
|
|
234
|
+
|
|
235
|
+
- [Installation guide](https://jaypatel1511.github.io/nmtc-application-builder/installation/)
|
|
236
|
+
- [60-second quickstart](https://jaypatel1511.github.io/nmtc-application-builder/quickstart/)
|
|
237
|
+
- [Pipeline analysis workflow](https://jaypatel1511.github.io/nmtc-application-builder/workflow/pipeline-analysis/)
|
|
238
|
+
- [Win alignment scoring & methodology](https://jaypatel1511.github.io/nmtc-application-builder/workflow/win-alignment/)
|
|
239
|
+
- [Full API reference](https://jaypatel1511.github.io/nmtc-application-builder/reference/api/)
|
|
240
|
+
- [Honest limitations](https://jaypatel1511.github.io/nmtc-application-builder/about/limitations/)
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## Contributing
|
|
245
|
+
|
|
246
|
+
Contributions welcome — bug fixes, additional data sources, visualization improvements, and documentation all help.
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
git clone https://github.com/Jaypatel1511/nmtc-application-builder.git
|
|
250
|
+
cd nmtc-application-builder
|
|
251
|
+
pip install -e ".[dev]"
|
|
252
|
+
PYTHONPATH=. pytest tests/ -v # 544 tests, should all pass
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on pull requests, code style, and issue reporting.
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## License
|
|
260
|
+
|
|
261
|
+
MIT License — see [LICENSE](LICENSE) for details.
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
*Built by [Jay Patel](https://github.com/Jaypatel1511) as part of an open-source CDFI analytics portfolio. Not affiliated with the CDFI Fund or the US Treasury.*
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
nmtcapp/__init__.py,sha256=nJfEVhOhedLIkT2sV4yecHnuvZ1SYHSkp4B9_fJdcM8,2132
|
|
2
|
+
nmtcapp/cli.py,sha256=_vwK8vH9cMEUj4n86ROBxbnCe-PQY6Uuw-2QtR8zFAA,10555
|
|
3
|
+
nmtcapp/core/__init__.py,sha256=--nn_6Hmy0i1wFsKW4rZdHZqGdPXbCpdoehAA3JN7n4,265
|
|
4
|
+
nmtcapp/core/application.py,sha256=hOBG94Z8gv71XTu4_3lrk_jri24W4G91B979vQR6_Hk,16418
|
|
5
|
+
nmtcapp/core/cde.py,sha256=t7vIb8K7nBpT9olkdzX_aWx7dYIgS59Sy1SBgoOpi9k,5713
|
|
6
|
+
nmtcapp/core/pipeline.py,sha256=xw5LnFVjWr5ZqKB0_ujRkNJJZICvou8om6cwcub8ti4,23078
|
|
7
|
+
nmtcapp/data/__init__.py,sha256=-aJhIqblRBoMkelHQfRrLotWQyxHJ4qEG-2_46dfeqk,683
|
|
8
|
+
nmtcapp/data/benchmark_thresholds.py,sha256=xoHuLCIIOPXNCKCnM3X_sWPyCc93qrlplQxUJkOWsr4,3972
|
|
9
|
+
nmtcapp/data/historical_awards.py,sha256=5kMSByRhMosbXKKCcyqunu2vKaUByfm_I60iMErw6_0,10211
|
|
10
|
+
nmtcapp/data/schema.py,sha256=A7SpnyNls0yc7Gz7NBsDbrlkFcwXGhGM_LQJdSdpW1c,5987
|
|
11
|
+
nmtcapp/integrations/__init__.py,sha256=3Pd_Z66tVKHYBhTBzQCdQKR9brViX_SQh-wwLLivQE0,546
|
|
12
|
+
nmtcapp/integrations/cdfidata_adapter.py,sha256=Y9wHdBwHG2E_3WaIzD6PZaf6i6fQMnYr9ae-YP9WjHo,3364
|
|
13
|
+
nmtcapp/integrations/hmda_adapter.py,sha256=80EIJwqbCI71I6jdRxV0bAU3slHQfA3rd5zUUgUL7qM,3715
|
|
14
|
+
nmtcapp/integrations/impact_adapter.py,sha256=MlB9JaIDweoNte6CVay6yWo6fAgcvpsiRIL98TKB-2Q,3412
|
|
15
|
+
nmtcapp/integrations/nmtc_calc_adapter.py,sha256=txUT8RJ_cSzaiCVvXcKAaOYnwUW2iuRV302fiEGcrCY,4776
|
|
16
|
+
nmtcapp/integrations/nmtc_mapper_adapter.py,sha256=YdcQ1k-JcXEQFhIk-4JG8o4zRvLjFFGjXFIbJ7Zu93A,4780
|
|
17
|
+
nmtcapp/intelligence/__init__.py,sha256=MNNmoGfZGSe3_nvvyKO9wOUa0Horkby3MyXo6MlV5PE,1165
|
|
18
|
+
nmtcapp/intelligence/benchmarks.py,sha256=Hq9A9ktPla0h6EI8uj1T6yr9nbstcB1Z5vieTqCi_rM,11605
|
|
19
|
+
nmtcapp/intelligence/distress_analysis.py,sha256=r_DI8nPBU3cm9uGhYz5HWRyqQk_sb8o01P4YgGaScXc,4351
|
|
20
|
+
nmtcapp/intelligence/geographic_analysis.py,sha256=VT0B_2eu-xlZ6BaEC7obv7aRs_cTcoAH18eWNdvDtTo,4227
|
|
21
|
+
nmtcapp/intelligence/impact_aggregator.py,sha256=bKI5H_PsegpvWFIT1VKmtqj0ULkem3MBWdj1sh3PB54,3576
|
|
22
|
+
nmtcapp/intelligence/pattern_analysis.py,sha256=TihyMZko4E28JhHYksacbLmvhcTp_KyYHXBTktWJIYM,8610
|
|
23
|
+
nmtcapp/intelligence/pipeline_analyzer.py,sha256=swFHbKGoMXQExl2YOe-JtaPCSmuIYGJGtYIJyxEVIVs,7742
|
|
24
|
+
nmtcapp/intelligence/recommendations.py,sha256=whx4LtZD_B-QTQhjskJKEuQs9nguehiGppL35ZU8i3E,23348
|
|
25
|
+
nmtcapp/intelligence/sector_analysis.py,sha256=ylwC3C3cktwqFzvjbh7a_rDB6pFPwaVdhqGQTDiQMtU,3885
|
|
26
|
+
nmtcapp/intelligence/win_probability.py,sha256=uZViXkGItbuNeXW0-IkBIozQwXHVk4ml5b6G-fbTboQ,11951
|
|
27
|
+
nmtcapp/optimizer/__init__.py,sha256=y-yPPP1UpeWMltKVrNDK--NP19i4uX-CKvfa7rUtZxg,250
|
|
28
|
+
nmtcapp/optimizer/candidate_pool.py,sha256=hEEmAhRHE7aFzanODkbI_IBuNLHhonW6l7lMhYzPA-E,3551
|
|
29
|
+
nmtcapp/optimizer/constraints.py,sha256=sCUGD1dVPkoyNtNw59y0lGa3DOu615_IAOwZK_eveVo,3454
|
|
30
|
+
nmtcapp/optimizer/objectives.py,sha256=pu1lmPG2SCXBzZRG1H-UXmVxf_xtWolIfFU4E9RWqj8,7109
|
|
31
|
+
nmtcapp/optimizer/pipeline_optimizer.py,sha256=5zgyArhh6wBhEVGXoBOuQaM_4uq9eSgl7RYGsRSzj5Y,13246
|
|
32
|
+
nmtcapp/renderers/__init__.py,sha256=IJKTzjHD4Le4EhZskzhZfuOI_sLYrXCOiS1E9DozbZs,929
|
|
33
|
+
nmtcapp/renderers/_word_helpers.py,sha256=JGZ3-SYoxQo4OxTD9q5zL4Yb6eoDqWp-OZbT4x0k-JY,7108
|
|
34
|
+
nmtcapp/renderers/excel_builder.py,sha256=OMEKipxP2pcLww76UoZO3yIzg89Vczgty5KUK4kEFmc,23787
|
|
35
|
+
nmtcapp/renderers/markdown_builder.py,sha256=JlgkfDpFLI5NwxJsN8vxJ4dUKexUWAr0zzFQFntFiz0,7711
|
|
36
|
+
nmtcapp/renderers/pdf_builder.py,sha256=Yj-joRaVbvBU673r7OMEbZSPsVybqOk4XewF8bPEQS0,27164
|
|
37
|
+
nmtcapp/renderers/styles.py,sha256=XDD8n8ChrwKHnRsUJdTxNKv73W8akuReR8h45_YNMPY,5402
|
|
38
|
+
nmtcapp/renderers/word_builder.py,sha256=ibNYRqcBdmnu4W5mnisT91UPA85BvLVC8wtEgH6GgOo,20690
|
|
39
|
+
nmtcapp/sections/__init__.py,sha256=nOPuU2Tz3ufLDnM8UYqkuxVekfPYvAWbuyDZNx_T_yc,764
|
|
40
|
+
nmtcapp/sections/base.py,sha256=eImKKyLuUHH9YsPEqgmu3mDYCC6g51TPCpcXIVFd07k,3684
|
|
41
|
+
nmtcapp/sections/section_a_business.py,sha256=RG2tizYtHcdRxJDVVwyUQdWZyTAdIsN-FP2-AT9LxtE,4296
|
|
42
|
+
nmtcapp/sections/section_b_outcomes.py,sha256=E2mKxsY1OTUp0q4--ZIDKRNc9Vlp1u3kXgKyGqATmog,4334
|
|
43
|
+
nmtcapp/sections/section_c_management.py,sha256=vDGypLAesPwI47t5omnSsChyOzc1bQJ6r8mowJ0IlAE,3944
|
|
44
|
+
nmtcapp/sections/section_d_capitalization.py,sha256=TMN_jHkhHGI37rdaBJVV7Apa1HKo1rak7BJDyXZMbAw,4076
|
|
45
|
+
nmtcapp/sections/section_e_prior_awards.py,sha256=OZqq7lRcd14XbFvnttpTylQ5UTRmootujiu5f8QlgdE,3451
|
|
46
|
+
nmtcapp/tables/__init__.py,sha256=qCphVYSPcnSFro6qPfMsCfa7sgDroQnOx9fcA35GXQo,573
|
|
47
|
+
nmtcapp/tables/distress_table.py,sha256=EWQ3nQ7Pkr_kcfqvvaMeWSpVWBvOdZ6WXkfDj2AAkRM,4039
|
|
48
|
+
nmtcapp/tables/geographic_table.py,sha256=lBP6pbfFflurPnkjWCHVYBGm6Nkxa4jtxAh8STRY9UU,2423
|
|
49
|
+
nmtcapp/tables/impact_table.py,sha256=TyyfmNhjbaYM_ovWCGyw7GxoRcxFkRis9_S_ts6bZh0,4489
|
|
50
|
+
nmtcapp/tables/investor_table.py,sha256=c8OaIyo8aRCF_cF6JGnJ0NXENhe32yuLE8hqPWIwwAY,4377
|
|
51
|
+
nmtcapp/tables/pipeline_table.py,sha256=dRAQmNmLCh2Ta_MdAPwiv7rj338fvhVOEZRxnfh2Kx0,6997
|
|
52
|
+
nmtcapp/tables/track_record_table.py,sha256=ybDWEFzDW3Tl_0NGPR27gNRzSP71sk-7z18DQXl663c,2110
|
|
53
|
+
nmtcapp/validation/__init__.py,sha256=W6l3lX3zfoZeFEwtYVtaHc5PUndT_Q4-htguk-D4-hU,434
|
|
54
|
+
nmtcapp/validation/completeness_check.py,sha256=dMUIudOaKz5VPeltXocztG8r0AesrdDeVTu7JvtAq-s,2941
|
|
55
|
+
nmtcapp/validation/consistency_check.py,sha256=vQsThSpaJJJP9nFvM4SF1aK4ilCyJV5nme2a2V68stI,5124
|
|
56
|
+
nmtcapp/validation/eligibility_check.py,sha256=45B-vHltRZM_Z2efke8VOPCL3jh-W6wGq2j7dQw8qUI,2658
|
|
57
|
+
nmtcapp/validation/readiness_score.py,sha256=SUHKvhBXRHZpou2sx2ckoTf92wuSp_DlRKFuMUS24hU,10642
|
|
58
|
+
nmtcapp/visualization/__init__.py,sha256=dYYGQXJmot-6_Ayk72-EI5OgEKUQu3fX1JuqMwubQLk,399
|
|
59
|
+
nmtcapp/visualization/maps.py,sha256=c6byLOzz7Q48pCgPFaNotQvLSunBYC8rP_HE7MxQ2SU,24491
|
|
60
|
+
nmtc_application_builder-1.0.0.dist-info/METADATA,sha256=atNwUceyyvNUxXKe62yWgrITiNGxWpQFNnb5Imkw3M0,13730
|
|
61
|
+
nmtc_application_builder-1.0.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
62
|
+
nmtc_application_builder-1.0.0.dist-info/entry_points.txt,sha256=r9tRo8rDv46YHv4q2L_4zBEJgTrz0JWU_G2cuwekNnE,45
|
|
63
|
+
nmtc_application_builder-1.0.0.dist-info/top_level.txt,sha256=jSqmEWSINIdXIHwwVSVorpI_Q1TFNqiRh15AssOI2Lo,8
|
|
64
|
+
nmtc_application_builder-1.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
nmtcapp
|
nmtcapp/__init__.py
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""
|
|
2
|
+
nmtc-application-builder — Full Platform: Pipeline Intelligence, Output Renderers,
|
|
3
|
+
Win Alignment Scoring, Pipeline Optimization, and Visualization
|
|
4
|
+
===============================================================================
|
|
5
|
+
Flagship NMTC application intelligence platform for CDEs.
|
|
6
|
+
|
|
7
|
+
Covers:
|
|
8
|
+
- Week 1: Foundation — CDEProfile, Pipeline, PipelineProject, CSV/YAML loading
|
|
9
|
+
- Week 2: Output Renderers — Word, Excel, PDF, Markdown application documents
|
|
10
|
+
- Week 3: Intelligence — distress analysis, geographic diversity, sector mix,
|
|
11
|
+
win alignment scoring, pipeline optimization, pattern analysis
|
|
12
|
+
- Week 4: Visualization — pipeline maps, distress heatmaps, sector charts,
|
|
13
|
+
radar charts, winner alignment plots; CLI entry point
|
|
14
|
+
|
|
15
|
+
Quick start::
|
|
16
|
+
|
|
17
|
+
from nmtcapp.core.application import Application
|
|
18
|
+
from nmtcapp.core.cde import CDEProfile
|
|
19
|
+
from nmtcapp.core.pipeline import Pipeline
|
|
20
|
+
|
|
21
|
+
cde = CDEProfile.sample()
|
|
22
|
+
pipeline = Pipeline.sample(n=20)
|
|
23
|
+
|
|
24
|
+
app = Application(cde=cde, requested_allocation=65_000_000)
|
|
25
|
+
app.add_pipeline(pipeline)
|
|
26
|
+
analysis = app.analyze()
|
|
27
|
+
analysis.summary()
|
|
28
|
+
|
|
29
|
+
# Generate Word, Excel, PDF, and Markdown outputs
|
|
30
|
+
paths = app.generate("./drafts/")
|
|
31
|
+
|
|
32
|
+
# Score win alignment
|
|
33
|
+
score = app.score_win_probability()
|
|
34
|
+
print(score.summary())
|
|
35
|
+
|
|
36
|
+
# Generate visualizations (requires matplotlib)
|
|
37
|
+
from nmtcapp.visualization import plot_readiness_radar
|
|
38
|
+
plot_readiness_radar(app, "./radar.png")
|
|
39
|
+
"""
|
|
40
|
+
__version__ = "1.0.0"
|
|
41
|
+
__author__ = "Jay Patel"
|
|
42
|
+
|
|
43
|
+
from nmtcapp.core.application import Application, ApplicationAnalysis
|
|
44
|
+
from nmtcapp.core.cde import CDEProfile
|
|
45
|
+
from nmtcapp.core.pipeline import Pipeline, PipelineProject
|
|
46
|
+
from nmtcapp.visualization import (
|
|
47
|
+
plot_pipeline_map,
|
|
48
|
+
plot_distress_heatmap,
|
|
49
|
+
plot_sector_distribution,
|
|
50
|
+
plot_readiness_radar,
|
|
51
|
+
plot_winner_alignment,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
__all__ = [
|
|
55
|
+
"Application",
|
|
56
|
+
"ApplicationAnalysis",
|
|
57
|
+
"CDEProfile",
|
|
58
|
+
"Pipeline",
|
|
59
|
+
"PipelineProject",
|
|
60
|
+
"plot_pipeline_map",
|
|
61
|
+
"plot_distress_heatmap",
|
|
62
|
+
"plot_sector_distribution",
|
|
63
|
+
"plot_readiness_radar",
|
|
64
|
+
"plot_winner_alignment",
|
|
65
|
+
"__version__",
|
|
66
|
+
]
|