Alexa Returns Incorrect Intent

I have some 2 Alexa Intents setup to return my commute times for myself and my partner, if i ask alexa about my commute she returns the correct info. If i ask about my partners commute she returns info about my commute and not hers.

I cant see anything incorrect with my setup, can someone check over the below for me please?

Intent Schema - Amazon side:

{
  "intents": [
    {
      "intent": "DaveCommuteToWorkIntent"
    },
    {
      "intent": "CatCommuteToWorkIntent"
    }
  ]
}

Utterances - Amazon Side (note there is a return space between intents as per HASS documentation)

DaveCommuteToWorkIntent How long to get to Dave's work
DaveCommuteToWorkIntent What is Dave's commute
DaveCommuteToWorkIntent How long is Dave's commute
DaveCommuteToWorkIntent How is the traffic to Dave's Work
CatCommuteToWorkIntent How long to get to Cat's work
CatCommuteToWorkIntent What is Cat's commute
CatCommuteToWorkIntent How long is Cat's commute
CatCommuteToWorkIntent How is the traffic to Cat's Work

alexa.yaml:

intents:
  DaveCommuteToWorkIntent:
    speech:
      type: plaintext
      text: Commute time from home to Dave's work is currently {{ states.sensor.home_to_daves_work.state  }} minutes
  CatCommuteToWorkIntent:
    speech:
      type: plaintext
      text: Commute time from home to Cat's work is currently {{ states.sensor.home_to_cats_work.state  }} minutes

It could be that the uterances are similar enough that Alexa has trouble distinguishing them. As a test make them radically different and only have one for each and see if it works then.

Thanks, good shout. Ill try that later and report back.

I was hoping i could use a custom slot in the intent schema and then use a template in hass to select a response based on the user given although i dont know if that is doable.

Yes it is - I do something very similar for scenes and such.

Been playing with this and i have the following working via the Alexa dev tools, i need to test it in person. However does the template engine have a “like” condition. right now its using equals to so device name equals spoken name.

However people refer to themselves in the third sense e.g. what is daves commute rather than what is dave commute.

{% if states.device_tracker.davesiphone.name.lower() == User.lower() %}
            Commute time from home to Dave's work is currently {{ states.sensor.home_to_daves_work.state  }} minutes.