Thinh Ha's Extraordinary Software Crafters

Press on legacy code.

We build software to order, run a few SaaS products of our own, and use an AI-assisted refactoring engine to bring old codebases up to date without breaking what already works.

Every AI-proposed change is reviewed and merged by a human engineer.

@@ -41,4 +41,3 @@ src/orders/checkout.js → checkout.ts
✓ 38/38 characterization tests passing pass 3 of 5 · awaiting review

What we build

Three ways we work with you.

Most clients start with one and end up using two. A small team owns your project from the first call to production.

  • Software on demand

    Internal tools, customer portals, mobile apps and integrations, built around how your business actually runs. Fixed-scope sprints with a working demo every two weeks.

    Web · Mobile · APIs
  • Legacy modernization

    Upgrade the system nobody wants to touch. We map it, pin its behavior with tests, then refactor in small reviewed steps while it stays in production.

    AI-assisted
  • Our SaaS products

    A handful of focused products for small and mid-size teams, born from problems we kept solving for clients. Ask us what's live; we'll tell you if one already fits.

    Subscription
In active development · used on client work

The refactor engine.

An internal tool we're building to modernize old codebases faster. It reads the whole repository, proposes changes as small diffs, and proves each one against the system's current behavior before an engineer sees it.

The AI does the reading and the first draft. Our engineers make the decisions.

  1. Map

    Parse the codebase into a dependency graph: modules, database calls, dead code and the hot paths that carry real traffic. You get a readable report even if you stop here.

  2. Pin

    Generate characterization tests that record what the code does today, quirks included. These become the safety net for every later change.

  3. Propose

    The model drafts refactors one unit at a time: replace mysql_query with prepared statements, untangle callbacks, add types. Each diff stays small enough to read in a minute.

  4. Verify

    Every proposal runs against the pinned tests, the linter and a security scan. Anything that changes behavior is rejected automatically and sent back.

  5. Review and ship

    An engineer reviews, edits and merges. Changes go out behind feature flags in small batches, so rolling back is always one step.

AI roadmap

Where we're taking AI next.

We add AI where it saves our clients time or money and we can measure the result. Here is what's running, what's in trial and what we're researching.

In use

Codebase mapping and docs

Plain-language documentation generated from old code, so your team understands a system before anyone changes it.

Piloting

Automated refactoring

The refactor engine above, used on selected client projects with full engineer review on every merge.

Piloting

Test generation and QA

Model-written test suites for code that never had any, plus regression checks on every pull request.

Exploring

AI features in your product

Search, summaries, document extraction and assistants built into the software we deliver, with your data kept in your own cloud.


How we work

Rules we don't bend.

A human merges every change

AI drafts. Engineers decide. Nothing reaches your main branch without a named person approving it.

Your code stays yours

Client code is never used to train models. It is processed in isolated environments and deleted when the engagement ends, on request sooner.

Small steps, always shippable

No big-bang rewrites. The system keeps running while we work, and every step can be rolled back.

Start a project

Send us your oldest repo.

Tell us what you're running and what's hurting. We reply within two working days with a first read and a rough plan.