Add the onion and cook until well softened.
Turn the heat to medium. Add the garlic ginger paste and the green chili and cook, stirring constantly, until it stops sputtering.
Turn down the heat and add the spice mix. This is the critical step. Stir it constantly for 30 seconds. If it starts to darken lift the pan off the heat. You want the spice mix to cook in the oil but not burn.
Turn the heat up to medium high. This is important. The heat is what drives Indian restaurant flavour. Maillard reaction magic. You have to love food science! As you become more comfortable with this technique try pushing it. Add the diluted tomato paste and stir until bubbles form (the oil will likely separate). This takes around 30 seconds to one minute depending on the heat.
Add 3 oz of curry base. Stir until bubbles form (little craters really), around 30 seconds. Think lively boil. Watch the edges of the pan. The curry can stick here. Sticking is OK. Just scrape it back into the base. Burning is bad.
Now add 6 oz of curry base and stir briefly. Let it cook until the bubbles form again. This takes 1-2 minutes.
Add the rest of the curry base and let cook until the bubbles form.
Turn the heat down to low. Add the chicken, almond flour and sugar. Stir and simmer until the chicken is just done. This takes about another 5-6 minutes depending on how much you pre-cooked the chicken. Sneak a peek if you need to. Cut into a piece to see if it's done.
Let the curry simmer for about 5 minutes. If it gets too thick add a bit more curry base. Don't add water.
Remove from heat. Add the cream and butter if using.
Garnish with a bit of chopped fresh cilantro and green chili if you like. Serve.