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.
Files changed (64) hide show
  1. nmtc_application_builder-1.0.0.dist-info/METADATA +265 -0
  2. nmtc_application_builder-1.0.0.dist-info/RECORD +64 -0
  3. nmtc_application_builder-1.0.0.dist-info/WHEEL +5 -0
  4. nmtc_application_builder-1.0.0.dist-info/entry_points.txt +2 -0
  5. nmtc_application_builder-1.0.0.dist-info/top_level.txt +1 -0
  6. nmtcapp/__init__.py +66 -0
  7. nmtcapp/cli.py +309 -0
  8. nmtcapp/core/__init__.py +5 -0
  9. nmtcapp/core/application.py +439 -0
  10. nmtcapp/core/cde.py +148 -0
  11. nmtcapp/core/pipeline.py +473 -0
  12. nmtcapp/data/__init__.py +29 -0
  13. nmtcapp/data/benchmark_thresholds.py +108 -0
  14. nmtcapp/data/historical_awards.py +275 -0
  15. nmtcapp/data/schema.py +140 -0
  16. nmtcapp/integrations/__init__.py +13 -0
  17. nmtcapp/integrations/cdfidata_adapter.py +97 -0
  18. nmtcapp/integrations/hmda_adapter.py +94 -0
  19. nmtcapp/integrations/impact_adapter.py +104 -0
  20. nmtcapp/integrations/nmtc_calc_adapter.py +128 -0
  21. nmtcapp/integrations/nmtc_mapper_adapter.py +122 -0
  22. nmtcapp/intelligence/__init__.py +26 -0
  23. nmtcapp/intelligence/benchmarks.py +326 -0
  24. nmtcapp/intelligence/distress_analysis.py +117 -0
  25. nmtcapp/intelligence/geographic_analysis.py +126 -0
  26. nmtcapp/intelligence/impact_aggregator.py +94 -0
  27. nmtcapp/intelligence/pattern_analysis.py +188 -0
  28. nmtcapp/intelligence/pipeline_analyzer.py +183 -0
  29. nmtcapp/intelligence/recommendations.py +517 -0
  30. nmtcapp/intelligence/sector_analysis.py +122 -0
  31. nmtcapp/intelligence/win_probability.py +293 -0
  32. nmtcapp/optimizer/__init__.py +8 -0
  33. nmtcapp/optimizer/candidate_pool.py +119 -0
  34. nmtcapp/optimizer/constraints.py +93 -0
  35. nmtcapp/optimizer/objectives.py +222 -0
  36. nmtcapp/optimizer/pipeline_optimizer.py +313 -0
  37. nmtcapp/renderers/__init__.py +24 -0
  38. nmtcapp/renderers/_word_helpers.py +207 -0
  39. nmtcapp/renderers/excel_builder.py +549 -0
  40. nmtcapp/renderers/markdown_builder.py +178 -0
  41. nmtcapp/renderers/pdf_builder.py +668 -0
  42. nmtcapp/renderers/styles.py +142 -0
  43. nmtcapp/renderers/word_builder.py +470 -0
  44. nmtcapp/sections/__init__.py +22 -0
  45. nmtcapp/sections/base.py +112 -0
  46. nmtcapp/sections/section_a_business.py +93 -0
  47. nmtcapp/sections/section_b_outcomes.py +93 -0
  48. nmtcapp/sections/section_c_management.py +82 -0
  49. nmtcapp/sections/section_d_capitalization.py +83 -0
  50. nmtcapp/sections/section_e_prior_awards.py +88 -0
  51. nmtcapp/tables/__init__.py +15 -0
  52. nmtcapp/tables/distress_table.py +108 -0
  53. nmtcapp/tables/geographic_table.py +75 -0
  54. nmtcapp/tables/impact_table.py +123 -0
  55. nmtcapp/tables/investor_table.py +131 -0
  56. nmtcapp/tables/pipeline_table.py +162 -0
  57. nmtcapp/tables/track_record_table.py +65 -0
  58. nmtcapp/validation/__init__.py +12 -0
  59. nmtcapp/validation/completeness_check.py +83 -0
  60. nmtcapp/validation/consistency_check.py +129 -0
  61. nmtcapp/validation/eligibility_check.py +77 -0
  62. nmtcapp/validation/readiness_score.py +309 -0
  63. nmtcapp/visualization/__init__.py +16 -0
  64. 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
+ [![PyPI version](https://img.shields.io/pypi/v/nmtc-application-builder.svg)](https://pypi.org/project/nmtc-application-builder/)
58
+ [![Python](https://img.shields.io/pypi/pyversions/nmtc-application-builder.svg)](https://pypi.org/project/nmtc-application-builder/)
59
+ [![Tests](https://img.shields.io/badge/tests-544%20passing-brightgreen.svg)](https://github.com/Jaypatel1511/nmtc-application-builder/actions)
60
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
61
+ [![Documentation](https://img.shields.io/badge/docs-GitHub%20Pages-blue.svg)](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,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ nmtcapp = nmtcapp.cli:main
@@ -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
+ ]