The business
Lakeshore Freight, based in Chicago, Illinois, runs freight booking and tracking for 3,000 business customers. Its core platform, "Portside", is about 15 years old: 1.2 million lines across Java services, a TypeScript web app and SQL stored procedures.
The agent
The developer experience team is building an internal agent with the Claude Agent SDK. It uses the built-in tools (Read, Write, Edit, Bash, Grep, Glob) and two MCP servers:
| MCP server | Source | What it offers |
|---|---|---|
| Issue tracker | An existing community server | Search and read tickets |
portside-graph | Built in-house | Call graphs, type hierarchies and module dependencies for Portside |
What engineers ask the agent
- "How does a booking become an invoice?" (touches about 40 files in 6 modules)
- "Find every place that throws
RateLimitExceeded." - "Add tests to the pricing module." (about 9% line coverage today)
- "Rename this method everywhere." Some functions are re-exported through two or three wrapper modules.
What goes wrong today
- Asked to explain billing, the agent read all 30 files in the billing directory and ran out of context before answering.
- The agent prefers Grep over
portside-grapheven for call-graph questions, because the MCP tool's description is one line. - Edits fail in older files where the same boilerplate appears many times.
- Sessions that run for hours start giving vague answers ("the usual repository pattern") instead of naming the classes they found earlier.
- A crash halfway through a long investigation loses everything found so far.
People
| Stakeholder | Cares most about |
|---|---|
| Director of Engineering (sponsor) | Faster onboarding: new engineers productive in weeks, not months |
| Developer experience lead | An agent that is reliable on a codebase this size |
| Senior engineers | Answers that name real classes and files |