Skip to content

Commit c833b1c

Browse files
authored
Merge pull request #5 from StreetSupport/staging
feat: wire JSON contact data files into handlers
2 parents d7681f6 + a8799df commit c833b1c

13 files changed

Lines changed: 2083 additions & 264 deletions

.github/workflows/test.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,11 @@ jobs:
2020
- name: Install dependencies
2121
run: npm ci
2222

23+
- name: Type check
24+
run: npm run type-check
25+
26+
- name: Lint
27+
run: npm run lint
28+
2329
- name: Run tests
2430
run: npm test

__tests__/safeguarding.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ describe('Non-Housing Terminal Path', () => {
383383
gender: 'Male',
384384
lgbtq: false,
385385
criminalConvictions: 'No',
386-
publicFunds: true,
386+
publicFunds: 'Yes',
387387
});
388388
const result = select(session, 2); // No children -> completes profile -> terminal
389389
expect(result.text.toLowerCase()).toContain('food');
@@ -398,7 +398,7 @@ describe('Non-Housing Terminal Path', () => {
398398
gender: 'Female',
399399
lgbtq: false,
400400
criminalConvictions: 'No',
401-
publicFunds: true,
401+
publicFunds: 'Yes',
402402
});
403403
const result = select(session, 2); // No children -> completes profile -> terminal
404404
expect(result.text.toLowerCase()).toContain('health');

eslint.config.mjs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// @ts-check
2+
3+
import eslint from '@eslint/js';
4+
import tseslint from 'typescript-eslint';
5+
6+
export default tseslint.config(
7+
{
8+
ignores: ['.next/**', 'node_modules/**', '*.js'],
9+
},
10+
eslint.configs.recommended,
11+
...tseslint.configs.recommended,
12+
{
13+
rules: {
14+
'@typescript-eslint/no-explicit-any': 'warn',
15+
'@typescript-eslint/no-unused-vars': ['warn', {
16+
argsIgnorePattern: '^_',
17+
varsIgnorePattern: '^_',
18+
}],
19+
'no-case-declarations': 'off',
20+
'no-useless-escape': 'warn',
21+
},
22+
},
23+
);
Lines changed: 339 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,339 @@
1+
{
2+
"_metadata": {
3+
"version": "1.0",
4+
"description": "LA-specific housing pathway endpoint data for the Street Support Network Virtual Assistant. Contains hardcoded local organisations for housing-related pathways. This file is the authoritative source — do not duplicate in TypeScript files.",
5+
"governed_by": "Housing Pathway Endpoints Contract v1.0",
6+
"verified": "February 2026 — council websites, org websites, enrichment pipeline data",
7+
"authority": "Managing Director",
8+
"change_control": "Operational changes (contact detail updates): MD authority, documented in CHANGELOG.md. Changes affecting routing logic: governance review required.",
9+
"notes": {
10+
"national_hardcoded": "National orgs (Shelter, Project 17, Migrant Help, AKT, Stonewall Housing, ManKind Initiative, Galop, National DV Helpline) are hardcoded in the VA codebase and do NOT appear in this file.",
11+
"migrant_advice_portal": "Migrant Advice Portal (migrantadvice.org/interact) is a self-service signposting tool, not a referral service. Shown for all LAs on NRPF pathway as a supplement to local orgs.",
12+
"dynamic_layer": "DV specialists and LGBTQ+ specialists from the SSN catalogue (AUTO_VERIFY enrichment data) are surfaced separately via service matching. This file covers hardcoded local orgs only."
13+
}
14+
},
15+
"birmingham": {
16+
"name": "Birmingham",
17+
"housingOptions": {
18+
"name": "Birmingham City Council Housing Options",
19+
"phone": "0121 303 7410",
20+
"phoneOOH": "0121 303 2296",
21+
"phoneOOHNote": "18+ only. Under 18: 0121 675 4806",
22+
"website": "https://www.birmingham.gov.uk/info/20169/homelessness"
23+
},
24+
"childrenServices": {
25+
"name": "Birmingham Children's Trust",
26+
"phone": "0121 303 1888",
27+
"phoneOOH": "0121 675 4806",
28+
"website": "https://www.birminghamchildrenstrust.co.uk"
29+
},
30+
"navigatorOrgs": [
31+
{
32+
"name": "SIFA Fireside",
33+
"description": "Drop-in housing advice and support for single adults experiencing homelessness. Broad knowledge of local housing pathways.",
34+
"ageMin": 18,
35+
"ageMax": null,
36+
"phone": "0121 766 1700",
37+
"website": "https://www.sifafireside.co.uk",
38+
"isDropIn": true
39+
},
40+
{
41+
"name": "St Basil's Birmingham",
42+
"description": "Specialist housing support for young people. Help to find and keep a home.",
43+
"ageMin": 16,
44+
"ageMax": 25,
45+
"phone": "0300 303 0099",
46+
"website": "https://www.stbasils.org.uk",
47+
"isDropIn": true
48+
}
49+
],
50+
"dvOrgs": {
51+
"womensAid": {
52+
"name": "Birmingham and Solihull Women's Aid",
53+
"phone": "0808 800 0028",
54+
"hours": "Mon-Fri 9:30am-5pm",
55+
"oohNote": "National DV Helpline (0808 2000 247) covers out of hours",
56+
"website": "https://bswaid.org"
57+
}
58+
},
59+
"immigrationOrgs": [
60+
{
61+
"name": "Refugee and Migrant Centre (RMC)",
62+
"description": "Advice and support on immigration, housing and related matters.",
63+
"phone": "01902 572 680",
64+
"website": "https://www.rmc-uk.org"
65+
},
66+
{
67+
"name": "Brushstrokes Community Project",
68+
"description": "Support for migrants and refugees including housing and immigration advice. Based in Smethwick, serving Birmingham and Sandwell.",
69+
"phone": "0121 565 2234",
70+
"hours": "Mon-Fri 9am-3pm",
71+
"email": "[email protected]",
72+
"website": "https://www.brushstrokessandwell.org.uk"
73+
}
74+
]
75+
},
76+
"coventry": {
77+
"name": "Coventry",
78+
"housingOptions": {
79+
"name": "Coventry City Council Housing Options",
80+
"phone": "024 7683 4025",
81+
"phoneHours": "Mon-Fri 9am-3:30pm",
82+
"phoneOOH": "024 7683 2222",
83+
"website": "https://www.coventry.gov.uk/housing-options"
84+
},
85+
"childrenServices": {
86+
"name": "Coventry Children's Services",
87+
"phone": "024 7678 8555",
88+
"phoneOOH": "024 7683 2222",
89+
"website": "https://www.coventry.gov.uk/childrens-services"
90+
},
91+
"navigatorOrgs": [
92+
{
93+
"name": "P3 Coventry",
94+
"_canonicalNote": "Phone verified from p3charity.org (primary source) and Google Maps. Navigator org numbers are sourced from organisations directly — la-contacts.json covers council services only.",
95+
"description": "Housing support for individuals and families experiencing or at risk of homelessness.",
96+
"ageMin": 25,
97+
"ageMax": null,
98+
"phone": "0808 196 2660",
99+
"website": "https://p3charity.org",
100+
"isDropIn": true
101+
},
102+
{
103+
"name": "St Basil's Coventry Youth Hub",
104+
"description": "Specialist housing support for young people. Help to find and keep a home.",
105+
"ageMin": 16,
106+
"ageMax": 24,
107+
"phone": "0121 269 1940",
108+
"website": "https://www.stbasils.org.uk",
109+
"isDropIn": true
110+
}
111+
],
112+
"dvOrgs": {
113+
"womensAid": {
114+
"name": "Coventry Haven Women's Aid",
115+
"phone": "0800 111 4998",
116+
"hours": "Mon-Fri 8:30am-5:30pm, Sat-Sun 10am-1pm",
117+
"website": "https://www.coventryhaven.co.uk"
118+
},
119+
"allGenders": {
120+
"name": "Valley House",
121+
"description": "Domestic abuse accommodation and support. Open to all genders.",
122+
"phone": "0800 328 9084",
123+
"hours": "24/7",
124+
"website": "https://valleyhouse.org.uk"
125+
}
126+
},
127+
"immigrationOrgs": [
128+
{
129+
"name": "Coventry Refugee and Migrant Centre",
130+
"description": "Advice and support for refugees and migrants including housing and immigration matters.",
131+
"phone": "024 7622 7254",
132+
"website": "https://covrefugee.org"
133+
}
134+
]
135+
},
136+
"dudley": {
137+
"name": "Dudley",
138+
"housingOptions": {
139+
"name": "Dudley Council Housing Options",
140+
"phone": "0300 555 2345",
141+
"phoneHours": "Mon-Fri 8:30am-5pm",
142+
"phoneOOH": "0300 555 8283",
143+
"website": "https://www.dudley.gov.uk/resident/housing"
144+
},
145+
"childrenServices": {
146+
"name": "Dudley Children's Services",
147+
"phone": "0300 555 0050",
148+
"phoneHours": "Mon-Fri 9am-5pm",
149+
"phoneOOH": "0300 555 8574",
150+
"website": "https://www.dudley.gov.uk/resident/care-health/children-and-family-care"
151+
},
152+
"navigatorOrgs": [
153+
{
154+
"name": "Lighthouse Community Hub",
155+
"description": "Drop-in housing and homelessness support.",
156+
"ageMin": null,
157+
"ageMax": null,
158+
"availabilityNote": "Monday evenings only — limited availability. Documented system gap.",
159+
"website": "https://www.dudley.gov.uk",
160+
"isDropIn": false
161+
}
162+
],
163+
"dvOrgs": {
164+
"womensAid": {
165+
"name": "Black Country Women's Aid",
166+
"phone": "0121 552 6448",
167+
"hours": "24/7",
168+
"website": "https://blackcountrywomensaid.co.uk"
169+
}
170+
},
171+
"immigrationOrgs": [
172+
{
173+
"name": "Refugee and Migrant Centre (RMC)",
174+
"description": "Advice and support on immigration, housing and related matters.",
175+
"phone": "01902 572 680",
176+
"website": "https://www.rmc-uk.org"
177+
}
178+
]
179+
},
180+
"sandwell": {
181+
"name": "Sandwell",
182+
"housingOptions": {
183+
"name": "Sandwell Council Housing Solutions",
184+
"phone": "0121 368 1166",
185+
"phoneOption": "option 2",
186+
"phoneHours": "Mon-Fri office hours",
187+
"phoneOOH": "01323 690856",
188+
"website": "https://www.sandwell.gov.uk/housing"
189+
},
190+
"childrenServices": {
191+
"name": "Sandwell Children's Trust",
192+
"phone": "0121 569 3100",
193+
"phoneOOH": "0121 569 2355",
194+
"website": "https://www.sandwellchildrenstrust.org"
195+
},
196+
"navigatorOrgs": [],
197+
"_navigatorGap": "No housing navigator organisation identified for Sandwell. Documented as a system gap — shared with local partnership.",
198+
"dvOrgs": {
199+
"womensAid": {
200+
"name": "Black Country Women's Aid",
201+
"phone": "0121 552 6448",
202+
"hours": "24/7",
203+
"website": "https://blackcountrywomensaid.co.uk"
204+
}
205+
},
206+
"immigrationOrgs": [
207+
{
208+
"name": "Brushstrokes Community Project",
209+
"description": "Support for migrants and refugees including housing and immigration advice.",
210+
"phone": "0121 565 2234",
211+
"hours": "Mon-Fri 9am-3pm",
212+
"email": "[email protected]",
213+
"website": "https://www.brushstrokessandwell.org.uk"
214+
}
215+
]
216+
},
217+
"solihull": {
218+
"name": "Solihull",
219+
"housingOptions": {
220+
"name": "Solihull Community Housing",
221+
"phone": "0121 717 1515",
222+
"phoneNote": "Automatically transfers to out-of-hours service",
223+
"website": "https://www.solihullcommunityhousing.org.uk"
224+
},
225+
"childrenServices": {
226+
"name": "Solihull Children's Services",
227+
"phone": "0121 788 4300",
228+
"website": "https://www.solihull.gov.uk/children-and-family-support"
229+
},
230+
"navigatorOrgs": [
231+
{
232+
"name": "St Basil's Solihull Youth Hub",
233+
"description": "Specialist housing support for young people, commissioned by Solihull Housing Options.",
234+
"ageMin": 16,
235+
"ageMax": 25,
236+
"phone": "0330 332 7978",
237+
"email": "[email protected]",
238+
"website": "https://www.stbasils.org.uk",
239+
"isDropIn": true
240+
}
241+
],
242+
"dvOrgs": {
243+
"womensAid": {
244+
"name": "Birmingham and Solihull Women's Aid",
245+
"phone": "0808 800 0028",
246+
"hours": "Mon-Fri 9:30am-5pm",
247+
"oohNote": "National DV Helpline (0808 2000 247) covers out of hours",
248+
"website": "https://bswaid.org"
249+
}
250+
},
251+
"immigrationOrgs": [],
252+
"_immigrationGap": "No general immigration support organisation identified for Solihull. Migrant Advice Portal (migrantadvice.org/interact) is the fallback. Specialist orgs in SSN data (Micro Rainbow, Panahghar) are not suitable for general NRPF routing — they serve specific populations the VA does not profile for."
253+
},
254+
"walsall": {
255+
"name": "Walsall",
256+
"housingOptions": {
257+
"name": "Walsall Housing Options",
258+
"phone": "01922 652250",
259+
"phoneHours": "Mon-Thu 8:45am-5:15pm, Fri 8:45am-4:45pm",
260+
"phoneOOH": "01922 650000",
261+
"website": "https://www.walsall.gov.uk/housing-options"
262+
},
263+
"childrenServices": {
264+
"name": "Walsall Children's Services",
265+
"phone": "0300 555 2866",
266+
"phoneOption": "option 2",
267+
"website": "https://www.walsall.gov.uk/children-and-families"
268+
},
269+
"navigatorOrgs": [
270+
{
271+
"name": "Glebe Centre / YMCA Black Country",
272+
"description": "Housing advice and support for people experiencing homelessness.",
273+
"ageMin": null,
274+
"ageMax": null,
275+
"website": "https://www.ymcablackcountry.org.uk",
276+
"isDropIn": true
277+
}
278+
],
279+
"dvOrgs": {
280+
"womensAid": {
281+
"name": "Black Country Women's Aid",
282+
"phone": "0121 552 6448",
283+
"hours": "24/7",
284+
"website": "https://blackcountrywomensaid.co.uk"
285+
}
286+
},
287+
"immigrationOrgs": [
288+
{
289+
"name": "Refugee and Migrant Centre (RMC)",
290+
"description": "Advice and support on immigration, housing and related matters.",
291+
"phone": "01902 572 680",
292+
"website": "https://www.rmc-uk.org"
293+
}
294+
]
295+
},
296+
"wolverhampton": {
297+
"name": "Wolverhampton",
298+
"housingOptions": {
299+
"name": "City of Wolverhampton Council Housing Options",
300+
"phone": "01902 556789",
301+
"phoneOption": "option 2",
302+
"phoneHours": "Mon-Fri 9am-5pm",
303+
"phoneOOH": "01902 552999",
304+
"website": "https://www.wolverhampton.gov.uk/housing/homeless"
305+
},
306+
"childrenServices": {
307+
"name": "Wolverhampton Children's Services",
308+
"phone": "01902 555392",
309+
"phoneOOH": "01902 552999",
310+
"website": "https://www.wolverhampton.gov.uk/children-and-young-people"
311+
},
312+
"navigatorOrgs": [
313+
{
314+
"name": "P3 Wolverhampton",
315+
"description": "Commissioned housing navigator service. Drop-in support for people experiencing homelessness.",
316+
"ageMin": null,
317+
"ageMax": null,
318+
"website": "https://www.p3charity.org",
319+
"isDropIn": true
320+
}
321+
],
322+
"dvOrgs": {
323+
"womensAid": {
324+
"name": "The Haven Wolverhampton",
325+
"phone": "08000 194 400",
326+
"hours": "24/7",
327+
"website": "https://www.havenrefuge.org.uk"
328+
}
329+
},
330+
"immigrationOrgs": [
331+
{
332+
"name": "Refugee and Migrant Centre (RMC)",
333+
"description": "Advice and support on immigration, housing and related matters. Main office in Wolverhampton.",
334+
"phone": "01902 572 680",
335+
"website": "https://www.rmc-uk.org"
336+
}
337+
]
338+
}
339+
}

0 commit comments

Comments
 (0)