.NET/C# Developer — Product, Modernization & AI
Valsoft Corporation is seeking an experienced .NET/C# developer to join a small, high-autonomy team building a correspondence management platform used by enterprises and government organizations. This is not a ticket-taking role: you'll evaluate the platform, form strong opinions, and drive improvements to how it's built and how it feels to use.
You'll work in a mature .NET/C# codebase — ASP.NET MVC, Razor, jQuery, Kendo UI, Crystal Reports, relational databases — with a strong focus on incrementally modernizing legacy components and raising engineering standards. You'll also help evolve an AI-driven workflow engine that uses LLMs to turn unstructured correspondence into structured data. Part of our stack runs on Java, so some Java knowledge will be needed.
This is a highly collaborative role. You'll work side by side with the team every day, so being approachable, communicative, and easy to work with matters as much as your technical skill.
We operate AI-first. Daily, hands-on use of AI-assisted tools (Claude Code, Cursor, GitHub Copilot) is a core requirement — not to generate code blindly, but to design, implement, and critically review production-quality work, combined with your own technical judgment.
What you'll do
- Build and improve features and services in .NET/C#.
- Modernize legacy components incrementally — identify outdated patterns and propose concrete refactoring, with a realistic sense of what's worth changing and what isn't.
- Evaluate user workflows and interfaces, and reduce friction where the product doesn't serve users well.
- Write and maintain automated tests for the code you ship — unit and end-to-end (e.g., our existing *.spec.js E2E suite) — treating tests as part of every deliverable, not an afterthought.
- Contribute to the LLM workflow engine: understand how it uses LLMs, find limitations, and improve prompts, workflows, and data-processing logic for better accuracy, reliability, and performance.
- Integrate APIs, messaging, and third-party services.
- Take initiative — step into problems before they're assigned and drive them to done.
- Work closely with the team — share context early, ask and answer questions openly, and help others move forward.
What we're looking for
- Solid, real-world experience shipping applications in .NET/C#; comfortable reading and improving large existing codebases.
- Some working knowledge of Java, enough to understand and contribute to our Java-based services.
- Good grasp of API design, backend services, and relational databases.
- Comfort working in a legacy server-rendered stack (Razor/jQuery/Kendo) and improving it step by step.
- Habit of testing your own work: comfortable writing automated tests (unit + end-to-end) and treating a feature as "done" only when it's covered — including writing the first tests for modules that have little or no coverage today.
- Practical software-design and clean-code sense — and the judgment to know when to apply it.
- Strong communication and collaboration skills — a must-have. You work well side by side with others, are approachable, and keep the team in the loop.
- Fluent English (written and spoken) — a must-have.
- Mandatory: daily, hands-on use of AI-assisted dev tools to produce, review, and ship production code.
- A bias toward improving systems over accepting them as-is, and comfort working with limited direction.
How we work — definition of done
A change isn't done until it's tested. Every feature, fix, or refactor is expected to ship with the automated tests that prove it works and guard against regressions. In a small team without a separate QA function, developers own the quality of what they deliver.
Nice to have
- Experience with LLM-based systems / prompt engineering.
- Background in enterprise or government software (compliance, auditability).
- Front-end modernization experience (migrating legacy jQuery/server-rendered UIs).