A model declares the fields you want; tab.extract resolves every selector against the live DOM concurrently (asyncio.gather), reads text or an attribute, runs any transform, then Pydantic validates the result into a typed object. Watch each value get grabbed and dropped into its slot.