Faits :
A.
Par contrat de travail de durée indéterminée signé les 12 et 25 juin 2014, B._ (ci-après: l'employée) a été engagée par C._ AG en qualité de vendeuse pour sa "filiale" située à la gare de Neuchâtel, à compter du 1er juillet 2014. Le contrat prévoyait un temps d'essai de trois mois durant lequel il pouvait y être mis un terme en respectant un préavis de sept jours, puis un délai de congé d'un mois durant la première année de service. S'agissant du temps de travail, il était prévu un travail sur appel. Le salaire horaire brut s'élevait à 26 fr.25, comprenant les parts au treizième salaire, aux vacances (10,64%) et aux jours fériés (3,83%). Le contrat réservait la forme écrite pour le congé et toute modification.
Par courrier du 25 septembre 2014, C._ AG a résilié le contrat de travail avec effet au 30 septembre 2014.
L'employée a été engagée, oralement, par D._ à compter du 1er octobre 2014 comme vendeuse au point de vente C._ de Neuchâtel.
L'entreprise individuelle D._ - laquelle sera radiée le 22 août 2017 par suite de cessation d'exploitation - avait pour titulaire A._ (ci-après: l'employeur). Ce dernier avait été employé dès le 1er juillet 2014 par C._ AG en qualité de gérant de la filiale neuchâteloise, avant de reprendre l'exploitation de ce point de vente.
Le 28 octobre 2014, le prénommé a transmis à l'employée un SMS dont la teneur est la suivante: " bonsoir Mme. tu nous ramène[s] la clé et les habits S.T.P je te souhaite tout de bon pour ton parcour[s] professionnel et plein de succès dans la vie. merci". Par SMS du même jour, l'employée a répondu: "ça veut dire quoi ??". D'autres messages s'en sont suivis au sujet de la restitution des clés. Par lettre du 3 novembre 2014, l'employeur a "rappelé" à l'employée qu'elle ne faisait plus partie du personnel ("time [ recte team] de travail") et qu'elle devait restituer la clé de la succursale ainsi que les vêtements de travail, non sans lui souhaiter "tout de bon" pour son avenir professionnel. L'employée a fait opposition à son licenciement le 17 novembre 2014.
B.
A la suite de l'échec de la tentative de conciliation, B._ a, le 29 juin 2015, saisi le Tribunal civil du Littoral et du Val-de-Travers d'une demande tendant à ce que A._ soit condamné à lui verser un montant de 19'065 fr.40 - prétention ultérieurement ramenée à 15'664 fr.80 - à titre de salaire encore dû d'octobre à décembre 2014 et d'indemnité pour résiliation abusive. Le même jour, la Caisse cantonale neuchâteloise d'assurance-chômage a fait savoir qu'elle était subrogée aux droits de l'employée à concurrence des indemnités de chômage versées en novembre et décembre 2014.
Par jugement du 31 août 2016, le tribunal a condamné l'employeur à verser à l'employée un montant brut de 3'785 fr.50 plus intérêts, dont 3'400 fr.60 à créditer en faveur de la Caisse cantonale d'assurance-chômage. Il a considéré qu'un nouveau contrat de travail - non écrit - avait été conclu avec l'employeur à la suite de la résiliation du précédent contrat, qu'un temps d'essai d'une durée indéterminée avait été prévu, que celui-ci avait expiré au moment où l'employeur avait manifesté son intention de résilier le contrat de travail, que la résiliation était intervenue au début du mois de novembre - l'envoi d'un SMS n'étant pas suffisant -, que les rapports de travail avaient ainsi pris fin au 31 décembre 2014 et que le salaire dû pour novembre et décembre 2014 se calculait sur la base de ce que l'employée avait gagné en octobre 2014, soit 1'892 fr.75 mensuels bruts, indemnité pour les vacances incluse.
L'employeur a déposé un appel, suivi d'un appel joint de l'employée.
Par arrêt du 17 janvier 2019, la Cour d'appel civile du Tribunal cantonal du canton de Neuchâtel a rejeté l'appel - à l'exception de ce qui concernait l'assistance judiciaire requise par le défendeur en première instance, le dossier étant renvoyé au tribunal afin qu'il soit statué sur ce point - et a partiellement admis l'appel joint. Elle a condamné l'employeur à payer à l'employée la somme de 7'976 fr.05, sous déduction des charges légales et conventionnelles et du montant de 3'400 fr.60 dû à la Caisse cantonale d'assurance-chômage, ainsi que la somme de 5'000 fr. La cour cantonale a considéré que les rapports de travail précédemment noués entre l'employée et C._ AG avaient été transférés à l'employeur par l'effet de l'art. 333 al. 1 CO, nonobstant la résiliation intervenue le 25 septembre 2014, celle-ci visant à faire échec à cette disposition. Le contrat de travail avait été valablement résilié par lettre du 3 novembre 2014. L'employée avait dès lors droit au solde de son salaire pour le mois d'octobre 2014, soit 312 fr.25 bruts compte tenu du montant qui lui avait déjà été versé. En outre, le licenciement était intervenu avec effet immédiat et sans juste motif. L'employée avait ainsi droit à ce qu'elle aurait gagné si les rapports de travail avaient pris fin à l'échéance du délai de congé, soit jusqu'à fin décembre 2014 (7'663 fr.80 bruts calculés sur la base du salaire moyen de 3'891 fr.90 bruts). En sus, elle avait droit à une indemnité au sens de l'art. 337c al. 3 CO, fixée à 5'000 fr. compte tenu de son âge - 58 ans au moment des faits - susceptible de l'exposer à de grandes difficultés de réinsertion économique, de la courte durée des relations de travail et de la légèreté de la décision prise.
C.
A._ interjette un recours en matière civile. Il conclut en substance à la réforme de l'arrêt attaqué en ce sens que les conclusions de l'employée et celles de la Caisse cantonale d'assurance-chômage sont rejetées.
Par ailleurs, le recourant demande à être mis au bénéfice de l'assistance judiciaire.
L'employée a spontanément déposé une réponse au recours, concluant à ce qu'il soit déclaré irrecevable et subsidiairement à son rejet.
Sur requête de l'employeur, l'effet suspensif a été accordé au recours par ordonnance présidentielle du 27 mars 2019.
Considérant en droit :
1.
Interjeté par la partie qui a succombé dans ses conclusions libératoires et a donc qualité pour recourir (art. 76 al. 1 LTF), dirigé contre un arrêt final (art. 90 LTF) rendu en matière civile (art. 72 al. 1 LTF) par le tribunal supérieur désigné comme autorité cantonale de dernière instance, lequel a statué sur recours (art. 75 LTF), dans une contestation pécuniaire dont la valeur litigieuse atteint le seuil de 15'000 fr. requis pour les affaires de droit du travail (art. 74 al. 1 let. a LTF), le recours est recevable, puisqu'il a été déposé dans le délai (art. 100 al. 1 LTF) et la forme (art. 42 LTF) prévus par la loi.
2.
2.1. Le recours en matière civile peut être exercé pour violation du droit fédéral (art. 95 let. a LTF), y compris le droit constitutionnel (ATF 136 I 241 consid. 2.1 p. 247; 136 II 304 consid. 2.4 p. 313). Le Tribunal fédéral applique le droit d'office (art. 106 al. 1 LTF). Il n'est donc limité ni par les arguments soulevés dans le recours, ni par la motivation retenue par l'autorité précédente; il peut admettre un recours pour un autre motif que ceux qui ont été invoqués et il peut rejeter un recours en adoptant une argumentation différente de celle de l'autorité précédente (ATF 140 III 86 consid. 2 p. 89; 138 II 331 consid. 1.3 p. 336; 137 II 313 consid. 1.4; 135 III 397 consid. 1.4 p. 400). Compte tenu de l'exigence de motivation contenue à l'art. 42 al. 1 et 2 LTF, sous peine d'irrecevabilité (art. 108 al. 1 let. b LTF), le Tribunal fédéral n'examine en principe que les griefs invoqués, sauf en cas d'erreurs juridiques manifestes. Il n'est pas tenu de traiter, comme le ferait une autorité de première instance, toutes les questions juridiques qui se posent, lorsque celles-ci ne sont plus discutées devant lui (ATF 140 III 86 consid. 2, 115 consid. 2; 137 III 580 consid. 1.3). Par exception à la règle selon laquelle il applique le droit d'office, il n'examine la violation d'un droit constitutionnel que si le grief a été invoqué et motivé de façon détaillée (art. 106 al. 2 LTF; ATF 139 I 22 consid. 2.3; 137 III 580 consid. 1.3; 135 III 397 consid. 1.4 in fine).
2.2. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (art. 105 al. 1 LTF). Il ne peut rectifier ou compléter les constatations de l'autorité précédente que si elles sont manifestement inexactes ou découlent d'une violation du droit au sens de l'art. 95 LTF (art. 105 al. 2 LTF). "Manifestement inexactes" signifie ici "arbitraires" (ATF 141 IV 249 consid. 1.3.1 p. 253; 140 III 115 consid. 2 p. 117; 135 III 397 consid. 1.5). Encore faut-il que la correction du vice soit susceptible d'influer sur le sort de la cause (art. 97 al. 1 LTF).
La critique de l'état de fait retenu est soumise au principe strict de l'allégation énoncé par l'art. 106 al. 2 LTF (ATF 140 III 264 consid. 2.3 p. 266 et les références). La partie qui entend attaquer les faits constatés par l'autorité précédente doit expliquer clairement et de manière circonstanciée en quoi les conditions précitées seraient réalisées (ATF 140 III 16 consid. 1.3.1 p. 18 et les références). Si elle souhaite obtenir un complètement de l'état de fait, elle doit aussi démontrer, par des renvois précis aux pièces du dossier, qu'elle a présenté aux autorités précédentes en conformité avec les règles de procédure les faits juridiquement pertinents à cet égard et les moyens de preuve adéquats (ATF 140 III 86 consid. 2 p. 90). Si la critique ne satisfait pas à ces exigences, les allégations relatives à un état de fait qui s'écarterait de celui de la décision attaquée ne pourront pas être prises en considération (ATF 140 III 16 consid. 1.3.1 p. 18). Aucun fait nouveau ni preuve nouvelle ne peut être présenté à moins de résulter de la décision de l'autorité précédente (art. 99 al. 1 LTF).
Lorsqu'il prétend - au chiffre VI de son mémoire - rappeler les faits pertinents en s'écartant des constatations de l'arrêt attaqué et sans expliquer en quoi ces faits auraient été établis de manière arbitraire, le recourant méconnaît les principes qui précèdent. Il n'en sera pas tenu compte.
3.
Le recourant affirme avoir repris le point de vente que C._ AG exploitait à Neuchâtel et concède que l'art. 333 al. 1 CO constitue la clé de voûte du raisonnement. A le suivre, cette disposition ne s'appliquerait toutefois pas en l'espèce; en effet, les rapports de travail ne lui auraient pas été transférés puisque le contrat de travail de l'employée avait été valablement résilié par C._ AG pour le 30 septembre 2014, soit pour une date précédant la reprise de l'exploitation du point de vente par son entreprise individuelle.
3.1. La cour cantonale n'a pas méconnu cet état de fait, mais a considéré que le licenciement signifié le 24 septembre 2014 pour le 30 septembre 2014 suivant visait clairement à faire échec à l'art. 333 al. 1 CO qui est de droit impératif, de sorte qu'il ne déployait aucun effet.
Le recourant s'inscrit en faux contre cette appréciation et affirme que la résiliation notifiée par C._ AG était consécutive au mauvais comportement de l'employée. Les juges neuchâtelois auraient versé dans l'arbitraire en retenant le contraire. Pour étayer ses dires, le recourant se réfère à différentes pièces du dossier. Cependant, il n'indique pas dans quelle écriture il aurait allégué les faits qu'il prétend voir corrigés. Or, il n'appartient pas au Tribunal fédéral de les rechercher lui-même. En tout état de cause, les témoignages auxquels le recourant se réfère ne démontrent pas avec l'évidence qui eût été nécessaire l'inanité de l'appréciation à laquelle la cour cantonale s'est livrée, lorsqu'elle a vu dans la volonté de faire échec au transfert des rapports de travail le véritable motif de la résiliation.
3.2. Pour le reste, le raisonnement que le recourant développe sur la base de la prémisse - erronée - selon laquelle il y aurait deux contrats de travail successifs et bien distincts ne peut être suivi. Dans ce contexte également, l'employeur propose d'ailleurs une relecture des faits qui s'écarte notablement de ceux établis par l'autorité précédente, sans détailler le moins du monde ceux qu'il aurait allégués conformément aux exigences de procédure.
3.3. Sur le vu de ce qui précède, le recours ne peut qu'être rejeté, dans la mesure où il est recevable.
4.
Selon l'art. 64 al. 1 LTF, le Tribunal fédéral peut accorder l'assistance judiciaire à une partie à condition que celle-ci ne dispose pas de ressources suffisantes et que ses conclusions ne paraissent pas d'emblée vouées à l'échec. En l'occurrence, la procédure entreprise devant la cour de céans était dépourvue de chances de succès, ce qui entraîne le rejet de la demande d'assistance judiciaire du recourant, lequel prendra à sa charge les frais de la présente procédure (art. 66 al. 1 LTF).
L'employée intimée a droit à des dépens (art. 68 al. 1 et 2 LTF) pour sa détermination relative à la requête d'effet suspensif, mais non pour la réponse au fond qu'elle n'avait pas été invitée à déposer.
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire présentée par le recourant est rejetée.
3.
Les frais judiciaires, arrêtés à 500 fr., sont mis à la charge du recourant.
4.
Le recourant versera à l'intimée B._ une indemnité de 500 fr. à titre de dépens.
5.
Le présent arrêt est communiqué aux parties et à la Cour d'appel civile du Tribunal cantonal du canton de Neuchâtel.
Lausanne, le 20 décembre 2019
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Godat Zimmermann