Inspiration
Rental applications ask for the same facts again and again: personal details, address history, employment, income, pets, vehicles, and references. But every platform splits those questions across different pages, uses different labels, and may prefill outdated information from a previous session.
That creates two problems at once: applicants waste time re-entering data, and “autofill everything” is unsafe. A saved email might belong to a referee, a browser-prefilled job may be outdated, and some information—passwords, bank details, identity documents, declarations—should never be captured or filled at all.
Rental Apply Mate was inspired by the idea that rental applications need a private, user-controlled data layer, not another form-filling bot.
What it does
Rental Apply Mate is a local-first Chrome extension for Australian rental applications.
It keeps long-lived rental facts in an encrypted, structured Vault: one current address, one current employment record, a pet record, reusable answers, and so on. It does not keep a copy of every answer submitted to every property.
The extension supports a careful two-way workflow:
- Profile → application:
Fill nowandAuto-fill as I gofill only blank, compatible, high-confidence fields. They never overwrite an existing answer and never submit a form. - Application → profile: users can save selected page text through a right-click destination picker. Existing page values are compared with the Vault and sent to a review queue when they are new or conflict with saved data.
- Multi-page support: each visited section is scanned independently, so the product does not depend on a fixed page order. It also rescans after SPA navigation and dynamically added sections.
- Safety by design: passwords, OTPs, bank/payment data, government identifiers, uploads, declarations, and consent controls are excluded from capture and autofill.
- Outcome tracking: the Application Tracker records a property link and application status after a recognised success page or a user correction, without storing a snapshot of submitted answers.
For ambiguous but safe fields, users can optionally enable privacy-safe AI mapping. The AI service receives only bounded, redacted field metadata—not profile values, field values, URLs, property addresses, or files.
How we built it
We built Rental Apply Mate as a Manifest V3 Chrome extension with WXT, TypeScript, and React.
The product has three main parts:
Encrypted local Vault
Profile records, reusable answers, review items, and application-tracker data are stored locally in the browser. The Vault is encrypted and unlocks only for the active session.Field engine and platform adapters
A content script scans forms, classifies control types, applies hard safety exclusions, groups related fields, and maps high-confidence fields to the correct structured record. It supports text fields, textareas, selects, radios, checkboxes, checkbox groups, and supported accessible comboboxes. We added platform-aware adapters for common Australian rental flows, including REA and 2Apply-style structures.Optional Cloudflare AI mapping Worker
A Cloudflare Worker calls the OpenAI Responses API with Structured Outputs andstore: false. Deterministic local rules always run first. AI is only a fallback for ambiguous safe metadata and cannot overwrite values, submit forms, or reorganise stored records automatically.
We also built fictional multi-page rental flows and tested the real unpacked MV3 extension with Playwright. The test suite covers onboarding, Vault locking, multilingual UI, responsive layouts, capture/review behaviour, blank-only autofill, Undo, dynamic sections, AI failure modes, application tracking, and service-worker lifecycle behaviour.
Challenges we faced
The hardest challenge was not filling a field—it was deciding when not to fill one.
A label such as “Email” is not enough: it could refer to the applicant, a referee, an emergency contact, or an agent. Address fields must stay grouped as one address record rather than becoming unrelated address1, suburb, and postcode fragments. Employment history also cannot be matched safely by page position alone.
We addressed this by making grouping and safety deterministic and local first. The extension considers field labels, section context, control type, role, existing values, and supported platform adapters before proposing a mapping. Ambiguous values go to a picker or review queue instead of being guessed.
Another challenge was modern web form behaviour. Rental sites often use SPA navigation, dynamic sections, and custom ARIA controls instead of plain HTML inputs. We added rescanning for navigation and DOM changes, plus reversible handling for supported managed comboboxes: the extension selects the real rendered option rather than mutating a hidden form value directly.
Finally, privacy shaped the architecture. We intentionally avoided sending answers or page identity to AI, kept the Worker outside the extension package, and treated AI as a constrained classifier rather than an autonomous agent.
What we learned
We learned that safe automation needs stronger product boundaries than fast automation.
The most useful principle was: automate only what can be explained, reversed, and kept private. That led us to blank-only filling, explicit review for conflicts, structured records instead of loose key/value pairs, and an AI fallback with a strict metadata-only contract.
We also learned how to test a real Manifest V3 extension end to end: loading an unpacked production build in persistent Chromium, working with service workers and content scripts, and using fictional application sites to test multi-page flows without touching real rental platforms or user data.
Rental Apply Mate is an early beta, but its goal is clear: make rental applications less repetitive without taking control away from the applicant.
Built With
- accessibility
- automation
- cloudflare
- extension
- form
- manifest
- playwright
- privacy
- radix
- react
- responses
- storage
- tailwind
- typescript
- vitest
- workers
- wxt
Log in or sign up for Devpost to join the conversation.