You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
GrantStack is a serverless project-intake and grant-screening product for capex-heavy facility expansion projects. A user submits project basics through the landing page, the API accepts the request immediately, asynchronous workers generate a source-backed incentive-screening memo, and the user views the result through a private tokenized report link.
3
+
AI grant intelligence for companies planning capex-heavy facility expansions.
4
4
5
-
## Live Demo
5
+
GrantStack turns a rough expansion plan into a cited first-pass incentive strategy: which grant, tax credit, workforce, infrastructure, and economic-development programs are worth pursuing, what risks could kill eligibility, and what the team should validate next.
Manufacturers, logistics operators, energy companies, and other capex-heavy businesses often make site and expansion decisions before they have a clear read on public funding.
14
+
15
+
The early process is messy:
16
+
17
+
- Project specs live in emails, spreadsheets, PDFs, and consultant notes.
18
+
- Incentive programs vary by state, locality, job count, wages, capex, industry, and timeline.
19
+
- Teams waste time chasing programs that are not a fit.
20
+
- CFOs and operators need a defensible first-pass answer before paying for deeper advisory work.
21
+
- Generic AI tools can summarize programs, but they do not create a structured, source-backed workflow with status, auditability, retries, and private report links.
22
+
23
+
GrantStack is built for that gap: fast enough for early diligence, structured enough for buyer conversations, and architected like a real serverless product instead of a one-off prompt wrapper.
24
+
25
+
## Who It Is For
26
+
27
+
Primary end users:
28
+
29
+
- Expansion teams evaluating new sites or facility upgrades.
30
+
- CFO, finance, and strategy teams screening whether incentives are worth deeper pursuit.
31
+
- Site-selection consultants and economic-development advisors preparing first-pass memos.
32
+
- Operators who need to turn project basics into a better conversation with public agencies.
33
+
34
+
Best first customer niche:
35
+
36
+
- US manufacturing or advanced industrial companies considering a multi-million-dollar expansion with meaningful job creation and a site decision inside 3-6 months.
37
+
38
+
## What It Does
39
+
40
+
A user submits:
41
+
42
+
- Location
43
+
- Capital investment
44
+
- New jobs
45
+
- Facility type
46
+
- Optional buyer context such as company, wages, timeline, and competing locations
47
+
48
+
GrantStack returns a private report with:
49
+
50
+
- Eligibility score and confidence level
51
+
- Recommended incentive program categories
52
+
- Cited program recommendations with source URLs
53
+
- Strengths tied to capex, jobs, location, and facility type
54
+
- Risk flags and missing diligence items
55
+
- Next actions for internal review or agency outreach
56
+
- Validation disclaimer so the report is positioned as decision support, not legal or tax advice
57
+
58
+
## Live Workflow
59
+
60
+
The deployed demo is an end-to-end product flow:
61
+
62
+
1. User submits project specs on the Cloudflare Pages frontend.
63
+
2. API Gateway accepts the request and returns `202 Accepted` immediately with a private report token.
64
+
3. Ingestion Lambda validates the payload, writes the accepted record, and queues the job.
65
+
4. SQS triggers an asynchronous processor worker.
66
+
5. Processor Lambda screens the project against the active source catalog and optional LLM/vector provider path.
67
+
6. DynamoDB stores the completed structured report.
68
+
7. The report page polls the private tokenized endpoint and renders the result.
- Dev: deterministic source-backed evidence engine for predictable cost.
122
+
- Staging/prod: configurable LLM and vector path using Secrets Manager ARNs, OpenAI-compatible embeddings, Pinecone Serverless, OpenAI, Anthropic, or generic JSON providers.
123
+
124
+
## Current Product Readiness
125
+
126
+
GrantStack is ready for credible paid-pilot conversations, not enterprise procurement.
127
+
128
+
What is live:
129
+
130
+
- Public landing page
131
+
- Project intake
132
+
- API Gateway/Lambda/SQS/DynamoDB backend
133
+
- Private tokenized report endpoint
134
+
- Cited incentive-screening report generation
135
+
- Source refresh job
136
+
- CloudWatch/X-Ray operations baseline
137
+
- Terraform IaC with remote backend support
138
+
- CI workflow
139
+
140
+
Known limits:
141
+
142
+
- The deployed dev environment uses `mock_external_calls = true`, so reports use the deterministic source-backed engine rather than paid external LLM/vector calls.
143
+
- The source catalog is intentionally narrow and should be expanded before positioning this as a national incentive platform.
144
+
- Authentication, billing, saved customer workspaces, and email delivery are not implemented yet.
145
+
- Reports are first-pass decision-support memos and still require human validation before being used for legal, tax, accounting, or public-agency commitments.
146
+
147
+
## What A Reviewer Should Notice
148
+
149
+
This repo is designed to show practical full-stack cloud engineering judgment:
150
+
151
+
- Serverless architecture that scales to zero instead of relying on idle workers.
152
+
- Terraform modules that manage real AWS resources, IAM, observability, backend state, and environment separation.
153
+
- Python Lambda handlers with validation, idempotent processing, timeout-safe external-call structure, and clear failure handling.
154
+
- A working buyer-facing frontend connected to a live backend.
155
+
- CI and runbooks that make the project maintainable after the first demo.
156
+
- Honest product boundaries instead of pretending the prototype is already an enterprise SaaS.
9
157
10
158
## Live Surfaces
11
159
@@ -14,19 +162,6 @@ GrantStack is a serverless project-intake and grant-screening product for capex-
3. Ingestion Lambda validates payloads, creates a project record, issues an access token, and queues work.
24
-
4. SQS triggers the processor Lambda asynchronously.
25
-
5. Processor Lambda screens the project against the active S3-backed incentive source catalog and writes the completed structured report to DynamoDB On-Demand.
26
-
6. The report page polls the private report endpoint and renders the result with citations, diligence questions, and print/export controls.
27
-
28
-
Important limitation: the deployed dev backend is configured with `mock_external_calls = true`, which means it uses the source-backed evidence engine instead of paid external vector/LLM calls. Staging and production examples are included for OpenAI/Anthropic-compatible LLM calls, OpenAI embeddings, and Pinecone Serverless retrieval; activating them requires Secrets Manager ARNs and a live vector index.
29
-
30
165
## Repository Layout
31
166
32
167
-`grantstack-backend/ARCHITECTURE.md` - architecture blueprint and operational notes.
@@ -40,7 +175,7 @@ Important limitation: the deployed dev backend is configured with `mock_external
40
175
41
176
Prerequisites:
42
177
43
-
- AWS credentials with permissions to manage API Gateway, Lambda, SQS, DynamoDB, IAM, and CloudWatch.
178
+
- AWS credentials with permissions to manage API Gateway, Lambda, SQS, DynamoDB, IAM, CloudWatch, S3, and EventBridge.
The local JSON catalog remains the authoritative seed for curated program details; the refresh job verifies official source URLs, records status and content hashes, and writes the active catalog to S3 for the processor.
103
-
104
-
## AI Provider Modes
105
-
106
-
Dev keeps costs predictable with `mock_external_calls = true`. In that mode, reports are deterministic, cited, and source-backed.
107
-
108
-
For staging/prod, set `mock_external_calls = false` and provide:
109
-
110
-
-`llm_provider`: `openai`, `anthropic`, or `generic_json`.
111
-
-`llm_api_endpoint`, `llm_api_key_secret_arn`, and `llm_model`.
112
-
-`embedding_provider = "openai"`, `embedding_api_key_secret_arn`, and `embedding_model`.
113
-
-`vector_db_provider = "pinecone"` with `vector_db_endpoint` and `vector_db_api_key_secret_arn`.
114
-
115
-
Terraform grants the processor Lambda `secretsmanager:GetSecretValue` only for the configured secret ARNs.
116
-
117
-
## Frontend Deploy
118
-
119
-
Prerequisites:
120
-
121
-
- Cloudflare Wrangler authenticated for the target account.
0 commit comments