Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
.next
out
*.local

# Editor directories and files
Expand Down
Binary file added app/PolicyEngine_POSE_Presentation.pptx
Binary file not shown.
446 changes: 334 additions & 112 deletions app/bun.lock

Large diffs are not rendered by default.

Binary file added app/bun.lockb
Binary file not shown.
38 changes: 38 additions & 0 deletions app/dist/assets/index-Ckzfl-_I.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions app/dist/assets/index-DtoK_MeA.css

Large diffs are not rendered by default.

28 changes: 28 additions & 0 deletions app/dist/assets/logos/cosilico-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions app/dist/assets/logos/pe-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions app/dist/assets/logos/rf-icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/dist/assets/team/daniel-feenberg.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/dist/assets/team/max-ghenis.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/dist/assets/team/pavel-makarchuk.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
586 changes: 586 additions & 0 deletions app/dist/ecosystem-map-cosilico.html

Large diffs are not rendered by default.

604 changes: 604 additions & 0 deletions app/dist/ecosystem-map-policyengine.html

Large diffs are not rendered by default.

484 changes: 484 additions & 0 deletions app/dist/ecosystem-map-rules-foundation.html

Large diffs are not rendered by default.

576 changes: 576 additions & 0 deletions app/dist/ecosystem-map.html

Large diffs are not rendered by default.

127 changes: 127 additions & 0 deletions app/dist/ecosystem-maps.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ecosystem maps | POSE Winter 2026</title>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Roboto+Serif:opsz,wght@8..144,400;8..144,600&display=swap" rel="stylesheet">
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Inter', -apple-system, sans-serif;
background: #FAFAFA;
min-height: 100vh;
color: #344054;
padding: 48px 24px;
}
.container {
max-width: 900px;
margin: 0 auto;
}
h1 {
font-family: 'Roboto Serif', Georgia, serif;
font-size: 2rem;
margin-bottom: 8px;
color: #1D4044;
}
.subtitle {
color: #6B7280;
margin-bottom: 40px;
font-size: 1rem;
}
.cards {
display: grid;
grid-template-columns: 1fr;
gap: 20px;
}
a.card {
display: block;
background: white;
border-radius: 12px;
box-shadow: 0 2px 12px rgba(0,0,0,0.06);
padding: 28px 32px;
text-decoration: none;
color: inherit;
border-left: 5px solid transparent;
transition: box-shadow 0.2s, transform 0.15s;
}
a.card:hover {
box-shadow: 0 6px 24px rgba(0,0,0,0.12);
transform: translateY(-2px);
}
.card-rules { border-left-color: #2563EB; }
.card-cosilico { border-left-color: #0891B2; }
.card-policyengine { border-left-color: #319795; }
.card-unified { border-left-color: #9CA3AF; }
.card h2 {
font-size: 1.25rem;
font-weight: 600;
margin-bottom: 4px;
}
.card .entity {
font-size: 0.8rem;
color: #6B7280;
margin-bottom: 8px;
}
.card p {
font-size: 0.95rem;
color: #4B5563;
line-height: 1.5;
}
.badge {
display: inline-block;
background: #F3F4F6;
color: #6B7280;
padding: 2px 8px;
border-radius: 4px;
font-size: 0.75rem;
font-weight: 500;
margin-left: 8px;
vertical-align: middle;
}
.footer {
margin-top: 48px;
text-align: center;
color: #9CA3AF;
font-size: 0.85rem;
}
.footer a { color: #319795; text-decoration: none; }
</style>
</head>
<body>
<div class="container">
<h1>Ecosystem maps</h1>
<p class="subtitle">NSF POSE Winter 2026 &mdash; three organizations, clear boundaries</p>

<div class="cards">
<a href="ecosystem-map-rules-foundation.html" class="card card-rules">
<h2>Rules Foundation <span class="badge">501(c)(3)</span></h2>
<div class="entity">Encode the law</div>
<p>Neutral, multi-stakeholder foundation maintaining the authoritative encoding of law as code. Source document archive, .rac DSL, AutoRAC validation harness, ground truth test data.</p>
</a>

<a href="ecosystem-map-cosilico.html" class="card card-cosilico">
<h2>Cosilico <span class="badge">Public Benefit Corp</span></h2>
<div class="entity">Run the infrastructure</div>
<p>Production infrastructure with two product lines: Cosilico Rules (deterministic tax/benefit calculations) and Cosilico Simulate (microsimulation, imputation, Microplex). 11 market segments, $250B+ total addressable markets.</p>
</a>

<a href="ecosystem-map-policyengine.html" class="card card-policyengine">
<h2>PolicyEngine <span class="badge">501(c)(3) / UK Charity</span></h2>
<div class="entity">Tell the story</div>
<p>Focused research organization: policy analysis, interactive tools, congressional district dashboards, research partnerships with NBER, Atlanta Fed, Brookings, NIESR. 12 segments, 100+ interview targets.</p>
</a>

<a href="ecosystem-map.html" class="card card-unified">
<h2>Unified (original) <span class="badge">Pre-split</span></h2>
<div class="entity">Combined ecosystem</div>
<p>Original unified PolicyEngine ecosystem map before the three-org split. Kept for reference.</p>
</a>
</div>

<div class="footer">
<a href="https://github.com/PolicyEngine/pose">PolicyEngine/pose</a> &middot; NSF Award #4373
</div>
</div>
</body>
</html>
3 changes: 2 additions & 1 deletion app/index.html → app/dist/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>app</title>
<script type="module" crossorigin src="/assets/index-Ckzfl-_I.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-DtoK_MeA.css">
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
File renamed without changes
4 changes: 1 addition & 3 deletions app/eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'
import { defineConfig, globalIgnores } from 'eslint/config'

export default defineConfig([
globalIgnores(['dist']),
globalIgnores(['.next']),
{
files: ['**/*.{ts,tsx}'],
extends: [
js.configs.recommended,
tseslint.configs.recommended,
reactHooks.configs.flat.recommended,
reactRefresh.configs.vite,
],
languageOptions: {
ecmaVersion: 2020,
Expand Down
Loading