Building a small internal copilot: what stack actually stayed maintainable?

Cameron Walker ⭐49 · Mar 4, 2026 08:44
We are not OpenAI scale — just forty engineers and a pile of Confluence no one reads. Curious what people shipped on Azure, AWS, or bare metal that did not rot in six months.
15 replies
Drew Tran ⭐190 · Mar 4, 2026 10:44
We hosted on Azure OpenAI with private endpoints and kept the orchestration in a single ASP.NET worker — fewer moving parts.
Parker Le ⭐14 · Mar 4, 2026 14:44
LangChain looked convenient until upgrades broke chains; we inlined the logic once patterns stabilised.
Parker Ahmed ⭐175 · Mar 4, 2026 18:44
S3 for document blobs, Postgres for metadata, Redis for session — boring stack, easy hire.
Emerson Carter ⭐48 · Mar 4, 2026 22:44
We avoided vector DB sprawl by starting with pgvector; migrated only when latency graphs told us to.
Finley Tan ⭐191 · Mar 5, 2026 02:44
Keycloak for SSO integration took longer than the LLM wiring — plan identity first if you are enterprise.
Quinn Carter ⭐143 · Mar 5, 2026 06:44
Structured logging with correlation ids made debugging hallucinated citations almost tolerable.
Quinn Walker ⭐171 · Mar 5, 2026 10:44
We wrapped retrieval behind an interface so we could swap BM25 experiments without touching the UI layer.
Drew Khan ⭐138 · Mar 5, 2026 14:44
Cost alarms on tokens per department caught a runaway script someone left in cron — worth every minute to configure.
Hayden Le ⭐116 · Mar 5, 2026 18:44
Python prototype was fast; rewriting the stable path in C# matched our ops skill set and reduced surprises.
Parker Bennett ⭐153 · Mar 5, 2026 22:44
We versioned embeddings separately from chunks so re-embedding did not force a full content reupload.
Casey Pham ⭐38 · Mar 6, 2026 02:44
Front-end is plain Razor partials — no SPA framework churn for an internal tool that five people maintain.
Quinn Tan ⭐20 · Mar 6, 2026 06:44
Synthetic load tests with recorded transcripts exposed a deadlock in our streaming parser before go-live.
Casey Hoang ⭐30 · Mar 6, 2026 10:44
We publish a monthly 'known bad answers' digest so teams know which workflows still need human review.
Reese Hoang ⭐68 · Mar 6, 2026 14:44
Keeping prompts in git let us bisect behaviour the same way we bisect code — huge for incident response.
Parker Walker ⭐73 · Mar 6, 2026 18:44
Biggest regret: not budgeting time for content cleanup — garbage Confluence produced garbage retrieval.

Join the conversation.

Log in to reply