Skip to content

Commit 810b285

Browse files
Merge pull request #535 from SuffolkLITLab/copilot/document-impounded-addresses-summary
Add comprehensive documentation for impounded addresses feature
2 parents ea88c5c + df10c70 commit 810b285

File tree

1 file changed

+218
-0
lines changed

1 file changed

+218
-0
lines changed

docs/style_guide/question_library/addresses.md

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,6 +358,224 @@ know in advance.
358358
Keep in mind that this may not be a very good user experience for most users.
359359
Your default address question should be more standardized.
360360

361+
## Impounded addresses
362+
363+
Impounded addresses are addresses that should be hidden or redacted on certain documents for safety or privacy reasons. This feature is commonly needed in domestic violence cases, restraining orders, or other sensitive legal situations where revealing an address could put someone at risk.
364+
365+
The Assembly Line framework supports both impounded addresses and impounded phone numbers.
366+
367+
### When to use impounded addresses
368+
369+
Use the impounded address feature when:
370+
371+
- The user's address needs to be kept confidential for safety reasons
372+
- Court rules allow or require address impounding in your jurisdiction
373+
- The user may need some documents to show their full address (like for service), while other documents should redact it
374+
- You need to collect the address for court records but hide it from opposing parties
375+
376+
### Basic impounded address collection
377+
378+
Add the `ask_if_impounded=True` parameter to the `address_fields()` method to include a checkbox asking if the address should be impounded:
379+
380+
<Tabs>
381+
<TabItem value="Assembly Line Example" label="Assembly Line Example" default>
382+
383+
```yaml
384+
id: user address
385+
sets:
386+
- users[0].address.address
387+
- users[0].address.city
388+
question: |
389+
Your address
390+
subquestion: |
391+
What is your current address?
392+
fields:
393+
- code: |
394+
users[0].address_fields(ask_if_impounded=True)
395+
```
396+
397+
</TabItem>
398+
<TabItem value="Vanilla Docassemble" label="Vanilla Docassemble">
399+
400+
```yaml
401+
---
402+
id: user address
403+
question: |
404+
Your address
405+
subquestion: |
406+
What is your current address?
407+
fields:
408+
- Street address: users[0].address.address
409+
address autocomplete: True
410+
- Unit: users[0].address.unit
411+
required: False
412+
- City: users[0].address.city
413+
- State: users[0].address.state
414+
code: |
415+
states_list()
416+
default: MA
417+
- Zip: users[0].address.zip
418+
required: False
419+
- This address is impounded: users[0].address.impounded
420+
datatype: yesno
421+
help: |
422+
Check this box if this address should be kept confidential for safety reasons.
423+
```
424+
425+
</TabItem>
426+
</Tabs>
427+
428+
### Impounded phone numbers
429+
430+
Similarly, you can collect and impound phone numbers:
431+
432+
<Tabs>
433+
<TabItem value="Assembly Line Example" label="Assembly Line Example" default>
434+
435+
```yaml
436+
id: contact information
437+
question: |
438+
Your contact information
439+
fields:
440+
- Mobile number: users[0].mobile_number
441+
required: False
442+
- Other phone number: users[0].phone_number
443+
required: False
444+
- My phone number is impounded: users[0].phone_impounded
445+
datatype: yesno
446+
help: |
447+
Check this if your phone number should be kept confidential.
448+
- Email address: users[0].email
449+
datatype: email
450+
required: False
451+
```
452+
453+
</TabItem>
454+
<TabItem value="Vanilla Docassemble" label="Vanilla Docassemble">
455+
456+
```yaml
457+
id: contact information
458+
question: |
459+
Your contact information
460+
fields:
461+
- Mobile number: users[0].mobile_number
462+
required: False
463+
- Other phone number: users[0].phone_number
464+
required: False
465+
- My phone number is impounded: users[0].phone_impounded
466+
datatype: yesno
467+
help: |
468+
Check this if your phone number should be kept confidential.
469+
- Email address: users[0].email
470+
datatype: email
471+
required: False
472+
```
473+
474+
</TabItem>
475+
</Tabs>
476+
477+
### Displaying impounded information
478+
479+
By default, if an address or phone number is marked as impounded, it will display as **IMPOUNDED** instead of the actual information when used in templates or document assembly.
480+
481+
To override this and show the actual impounded information (for example, on documents meant for court filing), use the `show_impounded=True` parameter:
482+
483+
```yaml
484+
# This will show "**IMPOUNDED**" if the address is impounded
485+
${ users[0].address_block() }
486+
487+
# This will show the actual address even if impounded
488+
${ users[0].address_block(show_impounded=True) }
489+
490+
# Same applies to phone numbers
491+
${ users[0].phone_numbers() } # Shows "**IMPOUNDED**" if impounded
492+
${ users[0].phone_numbers(show_impounded=True) } # Shows actual number
493+
```
494+
495+
### Methods that support impounded addresses
496+
497+
All address display methods support the `show_impounded` parameter:
498+
499+
- `address.block(show_impounded=True)`
500+
- `address.line_one(show_impounded=True)`
501+
- `address.line_two(show_impounded=True)`
502+
- `address.on_one_line(show_impounded=True)`
503+
- `person.address_block(show_impounded=True)`
504+
- `person.phone_numbers(show_impounded=True)`
505+
506+
### Custom impounded text labels
507+
508+
You can customize the text that appears when information is impounded by defining these templates in your interview:
509+
510+
```yaml
511+
# Custom label for the impounded checkbox
512+
template: ALAddress.impounded_label
513+
content: |
514+
Keep this address confidential
515+
516+
# Custom text shown instead of impounded addresses
517+
template: ALAddress.impounded_output_label
518+
content: |
519+
[CONFIDENTIAL ADDRESS]
520+
521+
# Custom text shown instead of impounded phone numbers
522+
template: ALIndividual.impounded_phone_output_label
523+
content: |
524+
[CONFIDENTIAL PHONE]
525+
```
526+
527+
### Complete example
528+
529+
Here's a complete example showing how to collect and use impounded information:
530+
531+
```yaml
532+
---
533+
include:
534+
- assembly_line.yml
535+
---
536+
mandatory: True
537+
code: |
538+
users[0].address.address
539+
users[0].phone_number
540+
final_screen
541+
---
542+
sets:
543+
- users[0].address.address
544+
question: |
545+
Your address
546+
fields:
547+
- code: |
548+
users[0].address_fields(ask_if_impounded=True)
549+
---
550+
question: |
551+
Your contact information
552+
fields:
553+
- Phone number: users[0].phone_number
554+
required: False
555+
- My phone number is impounded: users[0].phone_impounded
556+
datatype: yesno
557+
---
558+
event: final_screen
559+
question: |
560+
Review your information
561+
subquestion: |
562+
## For most documents (public filing):
563+
564+
**Address:** ${ users[0].address_block() }
565+
566+
**Phone:** ${ users[0].phone_numbers() }
567+
568+
## For confidential court records:
569+
570+
**Address:** ${ users[0].address_block(show_impounded=True) }
571+
572+
**Phone:** ${ users[0].phone_numbers(show_impounded=True) }
573+
```
574+
575+
:::warning
576+
When using `normalized_address()`, the geocoded result will not be redacted even if the original address is impounded. Use the original address object for impounded content.
577+
:::
578+
361579
## Further reading
362580

363581
### Collecting international addresses

0 commit comments

Comments
 (0)