Build a function that takes multiple choice inputs and creates randomly generated descriptions that make semantic sense.

Build a function that takes multiple choice inputs and creates randomly generated descriptions that make semantic sense.

Closed - This job posting has been filled and work has been completed.

Job Description

Property Description Generator:

Questions for Sales:
Q1) Type of property?
A1) Detached, Semi-detached, Terraced, Flat - Period Conversion, Flat - Block

Q2) Number of bedrooms?
A2) Studio, 1, 2, 3, 4, 5, 6, 7

Q3) Where is the property?
A3) UK Postcode

Q4) Asking price?
A4) Value in pounds sterling

Q5) Floor?
A5) B, G, 1, 2, 3 … 40

Q6) Lift?
A6) Yes/No

Q7) Rear garden?
A7) None, Balcony, Patio, Large

Q8) Parking?
A8) None, Drive, Single Garage, Double Garage

Q9) Heating?
A9) Electric, Gas, Oil

Q10) Last decorated?
A10) This year, 2012, 2011, 2010 or earlier.

Q11) Tenure?
A11) Freehold, leasehold

Q11a) Years left on leasehold?
A11a) Integer value

Q12) Service Charge and ground rent
A12) Value in pounds sterling

Q13) Why are you selling?
A13) Moving to a new area, Upscaling, Downscaling


Questions for lettings:
Q1) Type of property?
A1) Detached, Semi-detached, Terraced, Flat - Period Conversion, Flat - Block, Room to let

Q2) Number of bedrooms?
A2) Studio, 1, 2, 3, 4, 5, 6, 7

Q3) Where is the property?
A3) UK Postcode

Q4) Rental price?
A4) Value in pounds sterling, pcm

Q5) Floor?
A5) B, G, 1, 2, 3 … 40

Q6) Lift?
A6) Yes/No

Q7) Rear garden?
A7) None, Balcony, Patio, Large

Q8) Parking?
A8) None, Drive, Single Garage, Double Garage

Q9) Heating?
A9) Electric, Gas, Oil

Q10) Last decorated?
A10) This year, 2012, 2011, 2010 or earlier.

Q11) Move in date?
A11) dd/mm/yyyy

Q12) Furnished?
A12) Furnished, Unfurnished

Q13) Pets?
A13) Pets allowed, Caged pets only, No pets allowed

Q14) Deposit?
A14) 1month, 6 weeks, 2 months

Q15) Agent fees?
A15) Value in pounds sterling

Q16) Managed by?
Q16) Agent, Landlord

Q17) Garden?
A17) Small, Medium, Large

Q18) Bills included?
A18) Water, Council Tax, Energy, Telephone, Broadband, TV Licence


Spec
To create a javascript function genDescription() which takes in an object (info) and returns a string description. After all questions have been asked and answered, genDescription will be called and sent the object info, which is detailed below.
From this, the idea is to create a description of a property from the details below, constructing sentences out of the data received. It is important that these sentences are semantically correct and offer variation. If genDescription were to be called twice, with identical data, there should be a very low chance of returning the exact same string.
It is important that the description focuses on what the property offers, and not what it doesn't offer. I.e. We don't want to see 'no garden'. It's also important to have superlatives to describe features, e.g. 'A lovely two bedroom property situated in London' vs. 'Two bedroom in London'.
Pound sterling values should not be included in the description, and the dates should be description friendly, i.e. 'Available 6th September'/'Available early September'.

Thoughts
We tried an approach where we had a list of good stock descriptions picked out from websites and the function replaced the keywords in those descriptions from the answers, and whilst it works, we want more from it. This is the previous prototype: http://proppycock.com - what you produce has to be more dynamic that just stock descriptions with replaced superlatives.
We have in mind an approach that constructs stock phrases from the answers, thus allowing even more possible generations. It is important to maintain a balance between possibilities and a fluidity of sentence structure.

Object spec for sales:
{

address.display_address: "King Edward St, London, EC1A "

address.house_name_number: 2

address.postcode: "EC1A 1HQ"

address.town: "London"

details.bedrooms: 2

price.price: 368000

property_type: "detached"

ww_entrance_floor: "G"

ww_heating: "electric"

ww_last_decorated: 2012

ww_lift_access: "no"

ww_parking: "double"

ww_rear_garden: "patio"

ww_service_charge: 2000

ww_tenure: "leasehold"

ww_why_selling: "upscaling"

}


Object spec for lettings:

{

address.display_address: "Brushfield St, London, E1 "

address.house_name_number: 51

address.postcode: "E1 6AA"

address.town: "London"

date_available: "2013-11-01"

details.bedrooms: 0

details.internet_bill_inc: true

details.tv_license_inc: true

details.water_bill_inc: true

details.ww_council_tax_inc: true

details.ww_energy_bill_inc: true

details.ww_phone_bill_inc: true

price.price: 2800

property_type: "terraced"

ww_deposit: "6 weeks"

ww_entrance_floor: 1

ww_furnished: "furnished"

ww_heating: "gas"

ww_last_decorated: 2011

ww_lettings_agent_fees: 600

ww_lift_access: "yes"

ww_managed_by: "agent"

ww_parking: "none"

ww_pets: "caged"

ww_rear_garden: "large"

}


This project needs to be complete by 16 September 2013. Please respond with the date you think you could complete this by.