All Insights
February 2026

Sunday coffee & Code: RFP Automation - Database Schemas with Claude Code + a Design Shift

This week I re-asserted an architectural decision - and it drove some database work (I went with Postgres).

By Steve Harris

This week I re-asserted an architectural decision - and it drove some database work (I went with Postgres). ๐——๐—ฎ๐˜๐—ฎ๐—ฏ๐—ฎ๐˜€๐—ฒ ๐˜„๐—ผ๐—ฟ๐—ธ (๐˜€๐—ฐ๐—ต๐—ฒ๐—บ๐—ฎ ๐˜„๐—ถ๐˜๐—ต ๐—–๐—น๐—ฎ๐˜‚๐—ฑ๐—ฒ ๐—–๐—ผ๐—ฑ๐—ฒ) Iโ€™d sketched an initial schema with ~21 columns and asked Claude Code to review it based on what it could infer from the codebase ๐˜ข๐˜ฏ๐˜ฅ the design direction I was heading in (more on that below). It didnโ€™t disappoint. It suggested a cleaner structure, pointed out where normalization helped, where a little denormalization was pragmatic, and - most importantly - flagged a couple of changes that made the job-queue pattern safer (a problem I knew I had - avoiding blocking when multiple workers reach for the next job). ๐——๐—ฒ๐˜€๐—ถ๐—ด๐—ป ๐—ฟ๐—ฒ๐—ฎ๐˜€๐˜€๐—ฒ๐—ฟ๐˜๐—ถ๐—ผ๐—ป: ๐—ฎ๐—ด๐—ฒ๐—ป๐˜๐˜€ ๐—ณ๐˜‚๐—น๐—น๐˜† ๐˜€๐—ฒ๐—ฝ๐—ฎ๐—ฟ๐—ฎ๐˜๐—ฒ๐—ฑ ๐—ณ๐—ฟ๐—ผ๐—บ ๐˜๐—ต๐—ฒ ๐˜„๐—ฒ๐—ฏ ๐˜€๐˜๐—ฎ๐—ฐ๐—ธ The goal: ๐—ฐ๐—ผ๐—บ๐—ฝ๐—น๐—ฒ๐˜๐—ฒ ๐˜€๐—ฒ๐—ฝ๐—ฎ๐—ฟ๐—ฎ๐˜๐—ถ๐—ผ๐—ป ๐—ผ๐—ณ ๐˜๐—ต๐—ฒ ๐—ผ๐—ฟ๐—ฐ๐—ต๐—ฒ๐˜€๐˜๐—ฟ๐—ฎ๐˜๐—ผ๐—ฟ ๐—ฎ๐—ป๐—ฑ ๐—ฎ๐—ด๐—ฒ๐—ป๐˜ ๐—ฟ๐˜‚๐—ป๐˜๐—ถ๐—บ๐—ฒ ๐—ณ๐—ฟ๐—ผ๐—บ ๐˜๐—ต๐—ฒ ๐˜„๐—ฒ๐—ฏ ๐—จ๐—œ + ๐—ฏ๐—ฎ๐—ฐ๐—ธ๐—ฒ๐—ป๐—ฑ ๐˜€๐—ฒ๐—ฟ๐˜ƒ๐—ถ๐—ฐ๐—ฒ๐˜€. Now the job runner can: โ€ข Pull the next job from the DB queue โ€ข Call an Orchestrator โ€ข Track timings + status โ€ข Write results back โ€ข Support multiple orchestrators (so capacity can scale out) This was especially important because I ๐˜ฌ๐˜ฏ๐˜ฆ๐˜ธ multi-orchestrator support was going to collide with assumptions in my RAG implementation. What this buys me: โ€ข ๐—ฆ๐—บ๐—ฎ๐—น๐—น๐—ฒ๐—ฟ ๐—ฎ๐˜๐˜๐—ฎ๐—ฐ๐—ธ ๐˜€๐˜‚๐—ฟ๐—ณ๐—ฎ๐—ฐ๐—ฒ (prompt injection is still a concern, but containment improves) โ€ข ๐— ๐˜‚๐—น๐˜๐—ถ-๐—ฎ๐—ด๐—ฒ๐—ป๐˜ ๐˜€๐—ฐ๐—ฎ๐—น๐—ฎ๐—ฏ๐—ถ๐—น๐—ถ๐˜๐˜† (spin up multiple backend agent runners) โ€ข ๐—ฆ๐˜†๐˜€๐˜๐—ฒ๐—บ ๐˜€๐—ฐ๐—ฎ๐—น๐—ฎ๐—ฏ๐—ถ๐—น๐—ถ๐˜๐˜† (components can be distributed and scaled horizontally & vertically) โ€ข ๐—™๐—ฎ๐˜‚๐—น๐˜ ๐—ถ๐˜€๐—ผ๐—น๐—ฎ๐˜๐—ถ๐—ผ๐—ป (backend failures wonโ€™t take down the UI or uploads) ๐—ช๐—ต๐—ฎ๐˜ ๐—œ ๐—น๐—ฒ๐—ฎ๐—ฟ๐—ป๐—ฒ๐—ฑ (๐—ฎ๐—ณ๐˜๐—ฒ๐—ฟ ~๐Ÿญ๐—ต๐Ÿฐ๐Ÿฑ) After ~1h45 with Claude (and about $10 in extra capacity), it was done - including code changes and most of the documentation. A few takeaways: โ€ข CC can be a great tool for database schema design reviews based on the code base. โ€ข CC can miss some documentation updates (easy to overlook in a big change set) โ€ข Purchased capacity can take ~10 minutes to show up (I hit the โ€œcredit purchase delaysโ€ note on the Anthropic help agent) โ€ข Extra capacity burns fast when youโ€™re finishing multi-orchestrator behavior + docs โ€ข You still need ๐˜€๐˜๐—ฟ๐—ผ๐—ป๐—ด ๐˜€๐˜†๐˜€๐˜๐—ฒ๐—บ ๐—ฑ๐—ฒ๐˜€๐—ถ๐—ด๐—ป ๐—ถ๐—ป๐˜€๐˜๐—ถ๐—ป๐—ฐ๐˜๐˜€ Claude accelerates decisions, it doesnโ€™t replace them (if you donโ€™t it will become a mess) โ€ข I merged my first PR without reading ๐˜ฆ๐˜ท๐˜ฆ๐˜ณ๐˜บ change end-to-end (too many diffs)โ€ฆ which probably means I need to tighten my testing discipline from here.

Want to Discuss This Topic?

Steve is always happy to have a direct conversation.