From 59af796b1385e7c3fb3e02b81a978036f8ba1378 Mon Sep 17 00:00:00 2001 From: Earth Walker Date: Wed, 17 Jun 2026 13:19:59 -0400 Subject: [PATCH 1/8] add volunteer roles descriptions --- .../text/volunteer-roles/Benefit Analyst.md | 21 ++++++++++++++++++ .../Grant Writer Funding Strategist.md | 21 ++++++++++++++++++ .../Project Manager Coordinator.md | 22 +++++++++++++++++++ .../text/volunteer-roles/Software Engineer.md | 22 +++++++++++++++++++ .../text/volunteer-roles/UX Designer.md | 22 +++++++++++++++++++ .../text/volunteer-roles/UX Researcher.md | 22 +++++++++++++++++++ .../Volunteer Recruitment and Management.md | 22 +++++++++++++++++++ 7 files changed, 152 insertions(+) create mode 100644 website/src/assets/text/volunteer-roles/Benefit Analyst.md create mode 100644 website/src/assets/text/volunteer-roles/Grant Writer Funding Strategist.md create mode 100644 website/src/assets/text/volunteer-roles/Project Manager Coordinator.md create mode 100644 website/src/assets/text/volunteer-roles/Software Engineer.md create mode 100644 website/src/assets/text/volunteer-roles/UX Designer.md create mode 100644 website/src/assets/text/volunteer-roles/UX Researcher.md create mode 100644 website/src/assets/text/volunteer-roles/Volunteer Recruitment and Management.md diff --git a/website/src/assets/text/volunteer-roles/Benefit Analyst.md b/website/src/assets/text/volunteer-roles/Benefit Analyst.md new file mode 100644 index 00000000..d61c6b0a --- /dev/null +++ b/website/src/assets/text/volunteer-roles/Benefit Analyst.md @@ -0,0 +1,21 @@ +--- +title: Benefit Analyst +brief: You will be the expert in how benefit eligibility rules are written, documented, and applied. +--- + +**Your Role:** + +You will be the expert in how benefit eligibility rules are written, documented, and applied. You will help create clear patterns and documentation so that the Benefit Toolbox can handle the vast diversity of rules across programs. + +**Key Responsibilities:** + +- Analyze diverse public benefit programs (e.g., local tax relief, utility assistance, food access) to identify common patterns and unique complexities in their eligibility rules. +- Advise the Engineering team on how to design the framework to accurately and robustly model rules. +- Develop a standardized documentation template for writing benefit rules that can be easily entered into the DMN editor by non-analysts. + +**Requirements:** + +- Professional experience researching, interpreting, or applying rules for government benefit programs (e.g., former analyst, policy researcher, or eligibility specialist). +- Strong attention to detail and ability to parse dense legal/regulatory documents. +- Ability to communicate complex logic clearly and structurally. +- Ability to commit 3–5 hours per week. diff --git a/website/src/assets/text/volunteer-roles/Grant Writer Funding Strategist.md b/website/src/assets/text/volunteer-roles/Grant Writer Funding Strategist.md new file mode 100644 index 00000000..58203d3d --- /dev/null +++ b/website/src/assets/text/volunteer-roles/Grant Writer Funding Strategist.md @@ -0,0 +1,21 @@ +--- +title: Grant Writer / Funding Strategist +brief: You will help secure the long-term sustainability of this critical infrastructure project by identifying and applying for grants. +--- + +**Your Role:** + +You will help secure the long-term sustainability of this critical infrastructure project by identifying and applying for grants. This funding can eventually support dedicated project management, outreach, and maintenance. + +**Key Responsibilities:** + +- Research grant opportunities focused on **civic technology infrastructure, non-profit capacity building, or economic empowerment**. +- Draft compelling **proposals, narratives, and budgets**, using the Philly Property Tax Relief Screener as a key proof-of-concept. +- Work with the Project Manager to track and report on project metrics and impact. +- Develop a strategy for demonstrating the value of reusable open-source tools to funders. + +**Requirements:** + +- Proven experience in **grant writing or technical writing**. +- Ability to craft persuasive and detailed written materials that articulate both the technological solution and the human impact. +- Ability to commit 3–5 hours per week (often project-based around grant deadlines). diff --git a/website/src/assets/text/volunteer-roles/Project Manager Coordinator.md b/website/src/assets/text/volunteer-roles/Project Manager Coordinator.md new file mode 100644 index 00000000..b605ba3c --- /dev/null +++ b/website/src/assets/text/volunteer-roles/Project Manager Coordinator.md @@ -0,0 +1,22 @@ +--- +title: Project Manager / Coordinator +brief: You will ensure the project team stays focused on delivering value for our user partners and advancing the core framework. +--- + +**Your Role:** + +You will ensure the project team stays focused on delivering value for our user (non-profit partners) and advancing the core framework. You will coordinate efforts across engineering, research, and analysis. + +**Key Responsibilities:** + +- Facilitate weekly team meetings, managing agendas, and documenting decisions. +- Own and manage the **GitHub Issues backlog**, translating high-level goals into actionable user stories for technical and non-technical volunteers. +- Help define and track **milestones** for the development of the reusable framework. +- Maintain project documentation and ensure new volunteers have a clear path to contribution. + +**Requirements:** + +- Experience in **Agile/Scrum methodologies** is strongly preferred. +- Excellent organizational, time management, and written communication skills. +- Familiarity with collaboration tools like **GitHub Issues, Slack, or Trello**. +- Ability to commit 3–5 hours per week. diff --git a/website/src/assets/text/volunteer-roles/Software Engineer.md b/website/src/assets/text/volunteer-roles/Software Engineer.md new file mode 100644 index 00000000..a240616f --- /dev/null +++ b/website/src/assets/text/volunteer-roles/Software Engineer.md @@ -0,0 +1,22 @@ +--- +title: Software Engineer (Full-Stack or Backend Focus) +brief: You will build and refine the core engine of the Benefit Toolbox, creating reusable components for defining complex benefit rules. +--- + +**Your Role:** + +You will be building and refining the core "engine" of the Benefit Toolbox: the reusable components that allow a user to define complex benefit rules (the "DMN" component) and generate a web-based screener. + +**Key Responsibilities:** + +- Write **clean, modular, and well-tested code** for the framework's architecture (we currently use Python and JavaScript/React, but the core logic is key). +- Focus on developing the **low-code/no-code interface** that non-profit users will use to define benefit eligibility rules. +- Help containerize and document the deployment process to make it easy for partners to launch their own screeners. +- Participate in code reviews and follow open-source best practices. + +**Requirements:** + +- Proficiency in **Python** (for backend logic) or strong skills in **JavaScript/React** (for the editor interface). +- Familiarity with **data modeling, APIs, and rule engines** (or a strong interest in learning about them). +- Experience with **Git/GitHub** and collaborative software development. +- Ability to commit 5+ hours per week. diff --git a/website/src/assets/text/volunteer-roles/UX Designer.md b/website/src/assets/text/volunteer-roles/UX Designer.md new file mode 100644 index 00000000..2daa2bf0 --- /dev/null +++ b/website/src/assets/text/volunteer-roles/UX Designer.md @@ -0,0 +1,22 @@ +--- +title: UX Designer (Focus on Admin/Builder Interface) +brief: You will design the intuitive interface that allows non-profit staff to define complex logic and deploy screening tools without writing code. +--- + +**Your Role:** + +Your primary user is the non-profit _staff member_ who needs to build a screener. You will design the intuitive interface that allows them to define complex logic, manage questions, and deploy their tool _without_ writing code. + +**Key Responsibilities:** + +- Design the **administrative interface** for defining benefit rules (the "DMN" editor) and managing benefit data. +- Create **wireframes and user flows** that minimize friction and cognitive load for the non-technical non-profit user. +- Collaborate closely with Engineers to ensure the admin interface is feasible and meets usability goals. +- Maintain the design system for both the builder tool and the resulting client-facing screeners. + +**Requirements:** + +- Experience using design tools like **Figma or Sketch**. +- A portfolio showing examples of designing **complex data entry tools, admin panels, or "builder" interfaces** (not just marketing sites). +- Strong understanding of accessibility and information architecture. +- Ability to commit 3–5 hours per week. diff --git a/website/src/assets/text/volunteer-roles/UX Researcher.md b/website/src/assets/text/volunteer-roles/UX Researcher.md new file mode 100644 index 00000000..fec61f3f --- /dev/null +++ b/website/src/assets/text/volunteer-roles/UX Researcher.md @@ -0,0 +1,22 @@ +--- +title: UX Researcher (Focus on Non-Profit Needs) +brief: You will focus on understanding the non-technical needs, workflows, and pain points of non-profit staff and their clients. +--- + +**Your Role:** + +You will focus on understanding the non-technical needs, workflows, and pain points of non-profit staff who currently screen clients for eligibility or want to build a tool like this. + +**Key Responsibilities:** + +- Plan and conduct research (interviews, surveys) with **non-profit managers, benefits navigators, and program staff** to understand their current methods. +- Validate the usability of the **Benefit Toolbox admin interface** with non-technical users. +- Synthesize research findings into clear, actionable recommendations for the UX and Engineering teams. +- Help define user personas for the non-profit _builder_ and the end _client_. + +**Requirements:** + +- Experience planning and executing **UX research** activities. +- Strong interviewing, synthesis, and presentation skills. +- Experience working with or interviewing non-profit organizations is a significant asset. +- Ability to commit 3–5 hours per week. diff --git a/website/src/assets/text/volunteer-roles/Volunteer Recruitment and Management.md b/website/src/assets/text/volunteer-roles/Volunteer Recruitment and Management.md new file mode 100644 index 00000000..1b3caf8f --- /dev/null +++ b/website/src/assets/text/volunteer-roles/Volunteer Recruitment and Management.md @@ -0,0 +1,22 @@ +--- +title: Volunteer Recruitment and Management +brief: You will grow and nurture our volunteer community, ensuring we have the right mix of technical and non-technical talent. +--- + +**Your Role:** + +You will grow and nurture our volunteer community, ensuring we have the right mix of technical and non-technical talent to meet our roadmap goals. + +**Key Responsibilities:** + +- Develop targeted outreach for the highly specific roles needed (e.g., Benefit Analysts, specific Engineer roles). +- Manage the **onboarding process**, ensuring new contributors feel welcome, have clear first tasks, and access to necessary documentation. +- Monitor volunteer engagement and proactively address communication gaps or burnout. +- Maintain a positive, inclusive, and goal-oriented project culture. + +**Requirements:** + +- Excellent interpersonal and written communication skills. +- Experience in **recruiting, community management, or volunteer coordination**. +- A passion for civic tech and team building. +- Ability to commit 3–5 hours per week. From 7e2d0d068ac3a3c8713877852e5e9eb7f6fc1e6d Mon Sep 17 00:00:00 2001 From: Earth Walker Date: Wed, 17 Jun 2026 13:20:33 -0400 Subject: [PATCH 2/8] formatting changes --- website/svelte.config.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/svelte.config.js b/website/svelte.config.js index 522c1ef6..cf44f387 100644 --- a/website/svelte.config.js +++ b/website/svelte.config.js @@ -1,5 +1,5 @@ -import { vitePreprocess } from '@astrojs/svelte'; +import { vitePreprocess } from "@astrojs/svelte"; export default { - preprocess: vitePreprocess(), -} + preprocess: vitePreprocess(), +}; From 157407df5c359c95891e39a63fe83df12088f312 Mon Sep 17 00:00:00 2001 From: Earth Walker Date: Sat, 20 Jun 2026 20:19:33 -0400 Subject: [PATCH 3/8] basic implementation of volunteer role cards with buton to show details --- website/src/components/VolunteerRoles.astro | 30 +++++++++++++++++++++ website/src/content.config.ts | 13 ++++++++- website/src/pages/about.astro | 2 ++ 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 website/src/components/VolunteerRoles.astro diff --git a/website/src/components/VolunteerRoles.astro b/website/src/components/VolunteerRoles.astro new file mode 100644 index 00000000..a9fc00b1 --- /dev/null +++ b/website/src/components/VolunteerRoles.astro @@ -0,0 +1,30 @@ +--- +import { getCollection } from "astro:content"; +import { render } from "astro:content"; +const roles = await getCollection("roles"); +--- + +
+

Volunteer Roles

+
    + { + roles.map(async (role) => { + const { Content } = await render(role); + return ( +
  • +

    {role.data.title}

    +

    {role.data.brief}

    +
    + + Show more + +
    + +
    +
    +
  • + ); + }) + } +
+
diff --git a/website/src/content.config.ts b/website/src/content.config.ts index 56641204..d5dfb921 100644 --- a/website/src/content.config.ts +++ b/website/src/content.config.ts @@ -23,4 +23,15 @@ const team = defineCollection({ }), }); -export const collections = { projects, team }; +const roles = defineCollection({ + loader: glob({ + pattern: "**/*.md", + base: "./src/assets/text/volunteer-roles", + }), + schema: z.object({ + title: z.string(), + brief: z.string(), + }), +}); + +export const collections = { projects, team, roles }; diff --git a/website/src/pages/about.astro b/website/src/pages/about.astro index 25659d8f..4141bb5c 100644 --- a/website/src/pages/about.astro +++ b/website/src/pages/about.astro @@ -2,9 +2,11 @@ import Layout from "../layouts/Layout.astro"; import Team from "../components/Team.astro"; import Volunteer from "../components/Volunteer.astro"; +import VolunteerRoles from "../components/VolunteerRoles.astro"; --- + From 1583d33a773bf8791d2fef81260d61077defceb7 Mon Sep 17 00:00:00 2001 From: Earth Walker Date: Tue, 23 Jun 2026 18:43:38 -0400 Subject: [PATCH 4/8] change color of card, disable text selection on show more button --- website/src/components/VolunteerRoles.astro | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/src/components/VolunteerRoles.astro b/website/src/components/VolunteerRoles.astro index a9fc00b1..8b2ff160 100644 --- a/website/src/components/VolunteerRoles.astro +++ b/website/src/components/VolunteerRoles.astro @@ -11,11 +11,11 @@ const roles = await getCollection("roles"); roles.map(async (role) => { const { Content } = await render(role); return ( -
  • +
  • {role.data.title}

    {role.data.brief}

    - + Show more
    From 1a9d6052616f365754388255ac2a3285e404483e Mon Sep 17 00:00:00 2001 From: Earth Walker Date: Tue, 23 Jun 2026 19:44:55 -0400 Subject: [PATCH 5/8] adjust title --- website/src/assets/text/volunteer-roles/Benefit Analyst.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/src/assets/text/volunteer-roles/Benefit Analyst.md b/website/src/assets/text/volunteer-roles/Benefit Analyst.md index d61c6b0a..3ec63325 100644 --- a/website/src/assets/text/volunteer-roles/Benefit Analyst.md +++ b/website/src/assets/text/volunteer-roles/Benefit Analyst.md @@ -1,5 +1,5 @@ --- -title: Benefit Analyst +title: Benefit Analyst (Program Rule Translation) brief: You will be the expert in how benefit eligibility rules are written, documented, and applied. --- From 71352767d04046d70db453c579d077be8a3a808e Mon Sep 17 00:00:00 2001 From: Earth Walker Date: Tue, 23 Jun 2026 19:46:31 -0400 Subject: [PATCH 6/8] change label on button to match card state, expand card horizontally when selected, scroll to top of card when selected --- website/src/components/VolunteerRoles.astro | 32 +++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/website/src/components/VolunteerRoles.astro b/website/src/components/VolunteerRoles.astro index 8b2ff160..5b8ee17d 100644 --- a/website/src/components/VolunteerRoles.astro +++ b/website/src/components/VolunteerRoles.astro @@ -11,12 +11,13 @@ const roles = await getCollection("roles"); roles.map(async (role) => { const { Content } = await render(role); return ( -
  • +
  • {role.data.title}

    {role.data.brief}

    - Show more + Show more +
    @@ -28,3 +29,30 @@ const roles = await getCollection("roles"); }
    + + + + From 4a9bba0030b2933971d85710b596bc63ec684192 Mon Sep 17 00:00:00 2001 From: Earth Walker Date: Tue, 23 Jun 2026 19:48:16 -0400 Subject: [PATCH 7/8] resolve ts error --- website/src/components/VolunteerRoles.astro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/src/components/VolunteerRoles.astro b/website/src/components/VolunteerRoles.astro index 5b8ee17d..5180fda3 100644 --- a/website/src/components/VolunteerRoles.astro +++ b/website/src/components/VolunteerRoles.astro @@ -45,7 +45,7 @@ const roles = await getCollection("roles");