The demo suite creates synthetic but realistic Vietnam 2026 data through the live API. It does not insert directly into PostgreSQL, so auth, tenancy, RBAC, billing, invoice, payment, export, tenant portal, and maintenance code paths are exercised exactly like a landlord would use them.

Research assumptions

Seed locally

Start the backend first:
In another terminal:
Optional overrides:
The script writes a validation artifact to output/demo-suite-<run_id>.json. Each run appends a new demo snapshot under the same organization. Use a fresh database or override ANHOME_DEMO_USERNAME when you want isolated dashboard totals.

Seed public listing search data

Issue #30 adds a dedicated public renter-search testing corpus. This mode uses the same live API path as the regular demo seed and creates only synthetic data: testing owners, testing properties, testing rooms, public listing overlays, and visibility controls. Preview the deterministic data shape without writing anything:
Seed a local/dev/staging API:
Safe target environments: local, dev, staging, and disposable QA databases. The command fails closed unless ANHOME_ALLOW_PUBLIC_LISTING_SEED=yes and a temporary QA password are provided, and it refuses production-like API URLs. Use a fresh ANHOME_DEMO_RUN_ID for every corpus snapshot; fixed run-id reruns fail before writes when the previous public corpus is still visible. The corpus creates:
  • 3 synthetic active owner organizations.
  • 46 public published vacant listings total.
  • 23 public published vacant listings in Cần Thơ (province_code=92).
  • 23 public published vacant listings in Ho Chi Minh City (province_code=79).
  • 4 represented wards in Cần Thơ and 4 represented wards in Ho Chi Minh City.
  • A valid Cần Thơ empty-state ward (ward_code=31299, Xã Phong Điền) with zero seeded public rooms.
  • Unpublished, occupied, maintenance, and hidden controls that must not appear on public renter APIs.
Validate after seeding:

Demo account

Get a token:

Validation endpoints

The output JSON includes a tenant_link.public_token when at least one issued invoice exists. Validate the public tenant portal with:

Seed coverage

Each run creates:
  • 3 properties across HCMC, Hanoi, and Binh Duong.
  • 15 rooms with occupied, vacant, and maintenance states.
  • 12 renters and active leases.
  • Billing settings, default recurring fees, payment accounts, meter readings for two 2026 periods.
  • Draft, issued, paid, partially paid, overdue, and reconciled invoices.
  • Manual cash/bank payments and one manual reconciliation match.
  • Admin and public tenant maintenance tickets.
  • Dashboard, reports, and CSV export validation previews.