This is where agile documentation / test driven development really helps.

TDD:

Your engineers go through and make a prototype that only just passes any unit test it is put through.

And then.... repeat.

Simple - its driven by people actually requiring small facts, like "Hey, a Job can't have two Addresses!".

Agile documentation:

Its a way of naming your tests so that it makes human readable documents when run through a tool like PHPUnit.

JobTest::testShouldNotHaveTwoAddresses() { ... }

JobTest::testShouldHaveOneAddress() { ... }

Generates

JobTest:

* Should not have two addresses

* Should have one address

Really simple, also.

You just require your engineers to set this up so that it runs hourly or nightly; and the mantra of each morning is: "Who broke it, let's fix it".

Throw a creative user interface designer or three on top of that, and your project will be fine.

If it isn't; take option 2; fire Larry - he's doin' it wrong.