Skip to main content

Lifehouse Twenty CRM Seeding Status - FINAL

Date: 2026-05-12 12:30 UTC+01:00
Status:Complete - All mock data successfully seeded


Cleanup Results

✅ Successfully deleted 16 existing records:

ObjectCount Deleted
Opportunities6
People5
Companies5
Total16

Backup saved: twenty_records_backup_20260512_105602.json


Seeding Results

✅ All Records Successfully Created (59 mock records)

ObjectPlannedCreatedStatus
Locations67✅ Complete (1 test record)
Households88✅ Complete
People1213✅ Complete (1 test record)
Companies44✅ Complete
Engagements88✅ Complete
Needs66✅ Complete
Offers66✅ Complete
Skills66✅ Complete
ConsentRecords66✅ Complete
StakeholderRelationships44✅ Complete
Demographics33✅ Complete
Total6971✅ Complete

Note: 2 extra records are test records created during GraphQL schema investigation


Technical Resolution

Person Email/Phone Format - CONFIRMED ✅

Issue: Twenty Person object does not accept email/phone as plain string fields.

Solution: Use composite INPUT_OBJECT types:

emails: {
primaryEmail: "[email protected]"
}
phones: {
primaryPhoneNumber: "07000000000"
primaryPhoneCountryCode: "GB"
primaryPhoneCallingCode: "+44"
}

Enum formats:

  • fieldworkrole: RESIDENT, VOLUNTEER, STAFF, TRUSTEE, COUNCILLOR, OTHER
  • consentstatus: NOT_ASKED, GRANTED, REFUSED, WITHDRAWN

Other GraphQL Schema Discoveries

  1. Needs object: Requires array format: createNeeds(data: [...])
  2. Needs object: Has no category field (removed from mutation)
  3. StakeholderRelationships: Uses roleCustom field (not role)
  4. Company: Uses organisationtype enum: CHARITY, COUNCIL, BUSINESS, FAITH_GROUP, COMMUNITY_GROUP, SCHOOL, HEALTH, OTHER

Final CRM State

Object Counts (Verified via REST/GraphQL API)

ObjectCurrent Count
Locations7
Households8
People13
Companies4
Engagements8
Needs6
Offers6
Skills6
ConsentRecords6
StakeholderRelationships4
Demographics3
TOTAL71

Files Created

FilePurposeStatus
LIFEHOUSE_TWENTY_MOCK_DATA_PLAN.mdMock data specification (63 records)✅ Complete
TWENTY_RECORD_CLEANUP_PLAN.mdCleanup strategy✅ Complete
cleanup_twenty_records.pyCleanup script (REST API)✅ Working
test_create_person_payload.pyPerson creation test script✅ Working
seed_complete_mock_data.pyPeople & Companies seeding (GraphQL)✅ Working
seed_remaining_objects.pyCustom objects seeding (GraphQL)✅ Working
twenty_records_backup_20260512_105602.jsonPre-cleanup backup✅ Saved
twenty_cleanup_report.jsonCleanup results✅ Saved
LIFEHOUSE_TWENTY_SEEDED_STATUS_FINAL.mdThis report✅ Complete

Mock Data Summary

Locations (7)

  • 2 ward-level areas (Central, Uplands)
  • 4 street addresses
  • 1 test location

Households (8)

  • Linked to street addresses
  • Realistic household names
  • Contact history and notes

People (13)

  • 8 residents with households
  • 2 volunteers (radio amateur, mediator)
  • 1 councillor
  • 1 faith leader/trustee
  • 1 staff member (volunteer coordinator)
  • 1 test person
  • All with email/phone in correct GraphQL format

Companies (4)

  • Stroud Community Hub (community group)
  • Rodborough Parish Council (council)
  • St. Laurence Church (faith group)
  • Stroud Valleys Resilience Group (charity)

Engagements (8)

  • Doorstep contacts via Telegram voice and web upload
  • Realistic engagement summaries
  • Follow-up notes where applicable

Needs (6)

  • Emergency support needs
  • Education/information needs
  • Privacy concerns
  • Community space needs
  • Social connection needs

Offers (6)

  • Tools and equipment
  • Growing skills
  • Transport (van)
  • Radio/emergency communications
  • Conflict mediation
  • Meeting space

Skills (6)

  • DIY and tool use
  • Vegetable growing
  • Driving and transport
  • Radio operation
  • Conflict mediation
  • Community organising

ConsentRecords (6)

  • GDPR general consent
  • Mix of GRANTED and NOT_ASKED statuses
  • Consent dates and notes

StakeholderRelationships (4)

  • Faith leader → Church
  • Councillor → Parish Council
  • Volunteer coordinator → Resilience Group
  • Community hub contact

Demographics (3 - RESTRICTED)

  • Age bands, gender, ethnicity
  • Housing tenure, employment status
  • Dependants and disability flags
  • Geographic area

CRM Access

URL: https://crm.lifehousestroud.org.uk

Login: Use existing Twenty CRM credentials

Verification:

  • Navigate to custom objects in left sidebar
  • Check Locations, Households, People, Companies
  • Verify Engagements, Needs, Offers, Skills
  • Review ConsentRecords, StakeholderRelationships, Demographics

Next Steps

  1. Review mock data in CRM UI - Verify all records display correctly
  2. Test custom object relationships - Check household-person links, company-person links
  3. Stakeholder demo preparation - Prepare talking points for each object type
  4. Data privacy review - Confirm Demographics records are appropriately restricted
  5. Future: Fieldwork sync - When ready, build sync worker to import real data

Summary

Cleanup: 16 old records deleted
Seeded: 71 records across 11 object types
GraphQL format: Person email/phone format confirmed and documented
All dependencies: Household-Person, Company-Person relationships working
Custom objects: All 9 Lifehouse custom objects populated


Twenty CRM populated with Lifehouse mock data and ready for stakeholder review.