
MutationObserver to reliably capture content loaded after user interaction (like revealing an address).Chrome.storage API.options.html page for users to input and test their Airtable API credentials.InvestorLiftScraper class and performed all DOM manipulation and data extraction.AirtableManager class to handle all API communication, auth, and data formatting.revealAddress() function that programmatically clicked the button, then used a Promise-based waitForElement() helper (powered by MutationObserver) to wait for the address to appear in the DOM before scraping.findElement() helper that accepts multiple comma-separated selectors for a single piece of data. It tries each one in order, providing a robust fallback system. All selectors are stored in a central config.js file, so updates don't require digging through logic.Chrome.storage on every reload, which made testing the options page tedious.localStorage backup only for the options page. On load, it checks Chrome.storage first, but if empty, it restores credentials from localStorage, streamlining the development and testing cycle.background.js injects content.js (Scripting API)content.js scrapes all data, handling async revealsairtable.js managerairtable.js loads credentials from Chrome.storage
Posted Nov 16, 2025
Built a Chrome Extension for real estate investors. It automates property scraping from InvestorLift and syncs all data to Airtable with 1 click.
0
0
Oct 24, 2025 - Nov 8, 2025

Fort Mason