{"slug": "kindred-a-private-ai-english-practice-partner-built-for-a-friend", "title": "Kindred: A Private AI English Practice Partner Built for a Friend", "summary": "A developer built Kindred, a private English practice partner for a friend preparing for job interviews, using a local Ollama instance running the open-weight Qwen3 4B model. The app offers three typed practice scenarios — job interviews, everyday conversation, and presentations — and prompts the model to give one positive observation, a gentle correction, and a follow-up question without assigning scores. The Node.js server has no third-party npm dependencies, keeps conversation history in memory, and includes automated tests for input validation and model failures.", "body_md": "*This is a submission for the [Hacktoberfest Weekend Challenge: Build for a Friend](https://dev.to/challenges/hacktoberfest-weekend-2026-10-01).*\n\n## \n  \n  \n  What I Built\n\nI built **Kindred**, a private English practice partner, for my friend to help her practice English for job interviews.\n\nThe goal is to give her a space to rehearse answers, learn from corrections, and try again at her own pace.\n\nKindred supports three practice scenarios:\n\n- Job interviews\n- Everyday English conversations\n- Presentations\n\nThe learner selects a scenario and types an answer. A local language model is prompted to respond with one positive observation, a gentle correction when useful, and a follow-up question.\n\nThe app does not assign scores. Its coaching prompt focuses on encouragement and practical feedback.\n\nLearners can clear the conversation or download it as a text file to review later. Kindred currently supports typed practice; it does not provide voice input or evaluate pronunciation.\n\nThere is also a clearly labeled scripted sample so visitors can explore the interface before installing a local model.\n\n## \n  \n  \n  What I Built\n\nI built **Kindred**, a private English practice partner, for my friend to help her practice English for job interviews.\n\nThe goal is to give her a space to rehearse answers, learn from corrections, and try again at her own pace.\n\nKindred supports three practice scenarios:\n\n- Job interviews\n- Everyday English conversations\n- Presentations\n\nThe learner selects a scenario and types an answer. A local language model is prompted to respond with one positive observation, a gentle correction when useful, and a follow-up question.\n\nThe app does not assign scores. Its coaching prompt focuses on encouragement and practical feedback.\n\nLearners can clear the conversation or download it as a text file to review later. Kindred currently supports typed practice; it does not provide voice input or evaluate pronunciation.\n\nThere is also a clearly labeled scripted sample so visitors can explore the interface before installing a local model.\n\n## \n  \n  \n  Demo\n\n[Watch Kindred in action](https://drive.google.com/file/d/11m28lsD_e2w4z1BG00_pCQ8AAxzUkOPC/view?usp=drive_link)\n\nTo run the project yourself, follow the setup instructions in the repository README. Live AI practice requires Ollama and a locally installed model.\n\nThe **Try sample** option uses scripted responses. The **Start practicing** option uses the local AI model.\n\n## \n  \n  \n  Code\n\n[View Kindred’s source code on GitHub](https://github.com/arm21-afk/kindred)\n\nThe application source is MIT licensed.\n\n## \n  \n  \n  How I Built It\n\nThe frontend uses **HTML, CSS, and JavaScript**. A **Node.js** server serves the interface and forwards validated conversation history to Ollama’s local chat API.\n\nThe application has no third-party npm dependencies.\n\nFor live feedback, Kindred uses **Ollama** with the **Qwen3 4B open-weight model**. The model runs on the same computer as the application.\n\nThe coaching prompt asks the model to:\n\n- Notice one specific thing the learner did well.\n- Offer one gentle correction and an improved sentence when useful.\n- Ask one short follow-up question.\n- Use plain English and avoid scores or shaming.\n\nModel responses are displayed as plain text. The app also limits message size and conversation length and reports connection errors when local inference is unavailable.\n\nConversation history stays in memory. Reloading or clearing the session removes it from the app, while downloading lets the learner keep a copy.\n\nThe repository includes automated server tests covering input validation, app serving, cross-origin rejection, and model failures using mocked responses. Those tests do not evaluate the quality of the model’s English coaching.\n\n## \n  \n  \n  Why Does Open Innovation Matter?\n\nEnglish interview practice can involve personal answers. Running an open-weight model locally allows the learner to practice without sending those answers to a hosted inference API.\n\nAfter Ollama and the model have been downloaded, the application can run without a cloud connection. It does not require a hosted AI account.\n\nOpen technology also makes the coaching experience adjustable. The coaching prompt is visible in the source, and the model can be changed through configuration. This gives me a way to adapt the app’s tone and try different models for the learner’s needs and available hardware.\n\nLocal inference still depends on the computer’s resources, and AI corrections can be imperfect. The benefit is control over the model, the coaching instructions, and where the conversation is processed.\n\nFor Kindred, open innovation makes a private and customizable practice partner possible.\n\n## \n  \n  \n  What Comes Next\n\nThe next step is to use my friend’s feedback to improve the practice experience, especially the interview questions and the clarity of corrections.\n\nI would also like to explore more specific interview scenarios while keeping the interface simple and the core practice experience local.\n\nTo run the project yourself, follow the setup instructions in the repository README. Live AI practice requires Ollama and a locally installed model.\n\nThe **Try sample** option uses scripted responses. The **Start practicing** option uses the local AI model.\n\n## \n  \n  \n  Code\n\n[View Kindred’s source code on GitHub](https://github.com/arm21-afk/kindred)\n\nThe application source is MIT licensed.\n\n## \n  \n  \n  How I Built It\n\nThe frontend uses **HTML, CSS, and JavaScript**. A **Node.js** server serves the interface and forwards validated conversation history to Ollama’s local chat API.\n\nThe application has no third-party npm dependencies.\n\nFor live feedback, Kindred uses **Ollama** with the **Qwen3 4B open-weight model**. The model runs on the same computer as the application.\n\nThe coaching prompt asks the model to:\n\n- Notice one specific thing the learner did well.\n- Offer one gentle correction and an improved sentence when useful.\n- Ask one short follow-up question.\n- Use plain English and avoid scores or shaming.\n\nModel responses are displayed as plain text. The app also limits message size and conversation length and reports connection errors when local inference is unavailable.\n\nConversation history stays in memory. Reloading or clearing the session removes it from the app, while downloading lets the learner keep a copy.\n\nThe repository includes automated server tests covering input validation, app serving, cross-origin rejection, and model failures using mocked responses. Those tests do not evaluate the quality of the model’s English coaching.\n\n## \n  \n  \n  Why Does Open Innovation Matter?\n\nEnglish interview practice can involve personal answers. Running an open-weight model locally allows the learner to practice without sending those answers to a hosted inference API.\n\nAfter Ollama and the model have been downloaded, the application can run without a cloud connection. It does not require a hosted AI account.\n\nOpen technology also makes the coaching experience adjustable. The coaching prompt is visible in the source, and the model can be changed through configuration. This gives me a way to adapt the app’s tone and try different models for the learner’s needs and available hardware.\n\nLocal inference still depends on the computer’s resources, and AI corrections can be imperfect. The benefit is control over the model, the coaching instructions, and where the conversation is processed.\n\nFor Kindred, open innovation makes a private and customizable practice partner possible.\n\n## \n  \n  \n  What Comes Next\n\nThe next step is to use my friend’s feedback to improve the practice experience, especially the interview questions and the clarity of corrections.\n\nI would also like to explore more specific interview scenarios while keeping the interface simple and the core practice experience local.", "url": "https://wpnews.pro/news/kindred-a-private-ai-english-practice-partner-built-for-a-friend", "canonical_source": "https://dev.to/arm210402/kindred-a-private-ai-english-practice-partner-built-for-a-friend-4n6l", "published_at": "2026-10-05 06:01:21+00:00", "updated_at": "2026-10-05 06:13:00.412403+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "natural-language-processing", "ai-products"], "entities": ["Kindred", "Ollama", "Qwen3 4B", "Node.js", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/kindred-a-private-ai-english-practice-partner-built-for-a-friend", "markdown": "https://wpnews.pro/news/kindred-a-private-ai-english-practice-partner-built-for-a-friend.md", "text": "https://wpnews.pro/news/kindred-a-private-ai-english-practice-partner-built-for-a-friend.txt", "jsonld": "https://wpnews.pro/news/kindred-a-private-ai-english-practice-partner-built-for-a-friend.jsonld"}}