The core data ingestion module has been rewritten to replace synchronous file reads and database writes with asynchronous coroutines using asyncio. This change eliminates thread pool overhead for I/O-bound operations, improving throughput under high concurrency. The `process_batch` function now awaits `aiofiles.open` and `asyncpg.execute`, with error handling updated to propagate exceptions through the event loop.