<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ashleygirl3723</title>
    <description>The latest articles on DEV Community by ashleygirl3723 (@ashleygirl3723).</description>
    <link>https://dev.to/ashleygirl3723</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4175675%2Fa7ac4c6d-2598-428a-8e54-647a63e4580b.jpg</url>
      <title>DEV Community: ashleygirl3723</title>
      <link>https://dev.to/ashleygirl3723</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ashleygirl3723"/>
    <language>en</language>
    <item>
      <title>The Lazy Python Tutor: I built a tutor for people who don't want a tutorial</title>
      <dc:creator>ashleygirl3723</dc:creator>
      <pubDate>Thu, 22 Oct 2026 13:55:21 +0000</pubDate>
      <link>https://dev.to/ashleygirl3723/the-lazy-python-tutor-i-built-a-tutor-for-people-who-dont-want-a-tutorial-2989</link>
      <guid>https://dev.to/ashleygirl3723/the-lazy-python-tutor-i-built-a-tutor-for-people-who-dont-want-a-tutorial-2989</guid>
      <description>&lt;p&gt;This is a submission for the Hacktoberfest 2026 DEV Challenge — Week 3: Slow and Steady.&lt;/p&gt;

&lt;p&gt;What I built&lt;br&gt;
The Lazy Python Tutor — ask any Python question, get a plain-English explanation first, then a short runnable example, then one tiny optional practice prompt. That's it. No 40-minute video. No 12 documentation tabs. No homework list.&lt;/p&gt;

&lt;p&gt;Live app: &lt;a href="https://lazy-py-tpvbo7rexyrv4af4lv64qb.streamlit.app/" rel="noopener noreferrer"&gt;https://lazy-py-tpvbo7rexyrv4af4lv64qb.streamlit.app/&lt;/a&gt;&lt;br&gt;
Repo: &lt;a href="https://github.com/ashleygirl3723/lazy-python-tutor" rel="noopener noreferrer"&gt;https://github.com/ashleygirl3723/lazy-python-tutor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Try asking:&lt;br&gt;
What is a variable?&lt;br&gt;
How do loops work?&lt;br&gt;
Why does my code say IndentationError? — paste your broken code and it names the most likely problem, shows the fixed version, and says what changed in one sentence.&lt;br&gt;
It remembers the conversation, so follow-ups build on what you already asked.&lt;/p&gt;

&lt;p&gt;Why I built this — honestly&lt;br&gt;
I'm learning Python myself, in a 30-day self-paced course, mostly on my laptop between caregiving shifts. I know exactly where beginners quit: not because Python is hard, but because every small question turns into a huge tutorial.&lt;br&gt;
"What does elif mean?" should not require watching half a course. I kept wishing I could just ask — in plain words, get a plain answer, see one tiny example, and move on with my day.&lt;br&gt;
So for "Slow and Steady" — build something with open-weight AI that rewards laziness — I built the tutor I wanted. Laziness here isn't cutting corners. It's respecting your time and energy. Slow and steady is literally how I'm learning: one small question at a time.&lt;br&gt;
The design enforces that in the system prompt, which is the whole brain of the app:&lt;br&gt;
Plain English first — no jargon without immediately explaining it&lt;br&gt;
Then a short example — usually under 10 lines, nothing extra&lt;br&gt;
Then one tiny practice prompt — labeled "Feeling ambitious? Try this:" — genuinely tiny, always optional&lt;br&gt;
Hard rules in that prompt: keep it under ~200 words plus code, never dump code without explaining it first, and if code is broken, name the one most likely problem — not a lecture.&lt;br&gt;
That last part matters to me personally. My most common mistakes are picky syntax things — capitalized If/Print (phone autocorrect loves that one), missing colons, missing indents, dropping the variable after elif. A good lazy tutor spots the one thing, fixes it kindly, and doesn't make you feel dumb for it.&lt;/p&gt;

&lt;p&gt;How it's built&lt;br&gt;
Streamlit chat interface, Python, deployed free on Streamlit Cloud — runs in any browser, phone included&lt;br&gt;
Open-weight models via OpenRouter's free tier — openrouter/free auto-router picks a working free open-weight model per call. No credit card, no paid API.&lt;br&gt;
One system prompt does the teaching — the tutor's personality, answer shape, and honesty rules all live in one readable block at the top of app.py. Anyone who forks this can retune the tutor by editing plain English, not code logic.&lt;br&gt;
Conversation memory via Streamlit session state — follow-ups keep context.&lt;br&gt;
Total running cost: $0.&lt;/p&gt;

&lt;p&gt;Why open innovation matters for this build&lt;br&gt;
I'm a caregiver learning to code on the side. I don't have a budget for AI APIs, and a learning tool that charges per question would teach me to stop asking questions — the exact opposite of learning.&lt;br&gt;
Open weights fix that:&lt;br&gt;
Asking is free. Every "wait, why?" costs nothing. A beginner can ask the dumb question, the follow-up, and the follow-up to the follow-up without a meter running. That's how slow-and-steady learning actually works.&lt;br&gt;
No one can pull the plug. If a closed provider raises prices, retires a model, or changes terms, a closed-API tutor dies on their schedule. With open weights + an open router, when one free model is busy, the request goes to another — the app keeps working.&lt;br&gt;
The tutor is forkable, not rented. The whole thing is one app.py and a prompt written in plain English. Another beginner can clone it, make it stricter, make it funnier, make it teach JavaScript instead — without asking anyone's permission. That's open innovation at the smallest, most personal scale: one learner's tool becomes the next learner's starting point.&lt;br&gt;
This is my Week 1 and Week 2 lesson too, now for the third time: the auto-router is what makes free actually reliable. Openness isn't one model — it's having many, so no single point of failure can take your tool away.&lt;/p&gt;

&lt;p&gt;What I'd do next&lt;br&gt;
A "explain my error" paste box with even simpler language for total first-week beginners&lt;br&gt;
Voice input — asking out loud is even lazier than typing, and helps on a phone&lt;br&gt;
A "review what I learned" button that turns your chat history into 5 tiny recap cards&lt;br&gt;
But the core promise is done: one question, one plain answer, one tiny example — back to your day. Slow and steady wins.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>J&amp;J Instant Estimate: an honest AI quote desk for a one-woman home-services business</title>
      <dc:creator>ashleygirl3723</dc:creator>
      <pubDate>Mon, 19 Oct 2026 01:38:50 +0000</pubDate>
      <link>https://dev.to/ashleygirl3723/jj-instant-estimate-an-honest-ai-quote-desk-for-a-one-woman-home-services-business-1fhn</link>
      <guid>https://dev.to/ashleygirl3723/jj-instant-estimate-an-honest-ai-quote-desk-for-a-one-woman-home-services-business-1fhn</guid>
      <description>&lt;p&gt;J&amp;amp;J Instant Estimate: an honest AI quote desk for a one-woman home-services business&lt;/p&gt;

&lt;p&gt;This is a submission for the Hacktoberfest 2026 DEV Challenge — Week 2: Side Hustle.&lt;/p&gt;

&lt;p&gt;What I built &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;J&amp;amp;J Instant Estimate&lt;/strong&gt; — a quote helper for my actual home-services business, J&amp;amp;J Home Services (cleaning, yard work, and appliance repair in Lebanon &amp;amp; Sweet Home, Oregon).&lt;/p&gt;

&lt;p&gt;A customer picks a service, answers a few questions, and gets an honest starting-price estimate. Then the AI writes it up in plain language and answers follow-up questions — "do you do move-outs?", "what's included in a deep clean?", "my dryer has no heat, what am I looking at?"&lt;/p&gt;

&lt;p&gt;The key design decision: &lt;strong&gt;the AI never does the math.&lt;/strong&gt; Every price is computed with plain Python straight from my real price sheet, so the model literally cannot misquote a number. The open-weight model only writes the friendly message and answers questions. Anything that doesn't fit the sheet — a 5+ bedroom home, a junk haul-off — routes to a free quote by call or text instead of a guessed number.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live app:&lt;/strong&gt; &lt;a href="https://jj-quote-apper-ttywjbfirlartq7nwgymtn.streamlit.app" rel="noopener noreferrer"&gt;https://jj-quote-apper-ttywjbfirlartq7nwgymtn.streamlit.app&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/ashleygirl3723/jj-quote-helper" rel="noopener noreferrer"&gt;https://github.com/ashleygirl3723/jj-quote-helper&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Who would pay for this
&lt;/h2&gt;

&lt;p&gt;Me. That's the honest answer, and it's why I built it.&lt;/p&gt;

&lt;p&gt;I run J&amp;amp;J on the side of a full-time caregiving job. Every quote I write by hand is time I'm not working or resting. Lead response time is everything in home services — the business that answers first usually wins the job. A tool that gives a customer a real number in 60 seconds, at midnight, while I'm on shift, is worth more to me than any ad spend.&lt;/p&gt;

&lt;p&gt;Beyond me: there are thousands of one-person home-service businesses running on Facebook and word of mouth. They can't afford Housecall Pro or Jobber. A free, honest quoting tool they can clone and load with their own price sheet? That's a product.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First user:&lt;/strong&gt; me. I ran it the way a customer would — studio standard clean ($120) with inside-fridge ($25) and interior-windows ($40) add-ons, one-time visit: &lt;strong&gt;$185&lt;/strong&gt;. The math checked out against my price sheet, it disclosed the figure as a starting price, it picked up the "pets and heavy smokers" note without changing the price, and it ended with my booking line. It passed.&lt;/p&gt;




&lt;h2&gt;
  
  
  How it's built
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Streamlit&lt;/strong&gt; frontend, Python, deployed free on Streamlit Cloud&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open-weight models via OpenRouter's free tier&lt;/strong&gt; — &lt;code&gt;openrouter/free&lt;/code&gt; auto-router picks a working free open-weight model per call. Two lines of config, no paywall, no credit card.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic pricing layer&lt;/strong&gt; — the price sheet lives in the code as data; the AI receives computed numbers as facts. This is the whole trick: the model's job is tone and Q&amp;amp;A, never arithmetic.&lt;/li&gt;
&lt;li&gt;The system prompt carries the full price sheet as knowledge, with hard rules: never invent a price, always say "final quote confirmed before any work begins," always mention the $50 diagnostic credit on appliance repair, and the honest rule that if fixing costs more than half of new, we say so.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The whole stack costs &lt;strong&gt;$0&lt;/strong&gt;. That's not a footnote, it's the business case.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why open innovation matters for this build
&lt;/h2&gt;

&lt;p&gt;A quoting tool for a tiny business only works if it costs nothing to run. Closed AI APIs would put a meter on every customer question — I'd be paying per quote before I'd earned a dollar. That kills the tool for exactly the businesses that need it most.&lt;/p&gt;

&lt;p&gt;Open weights change the math completely:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Zero marginal cost.&lt;/strong&gt; Every estimate, every follow-up question, every "what's included?" costs me nothing. A one-woman business can run an AI quoting desk 24/7 for free. That was impossible two years ago.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No one can take it away.&lt;/strong&gt; If a closed provider changes pricing or kills a model, my quoting tool breaks on someone else's schedule. Open weights + an open router mean the app keeps working no matter what any single company decides.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The knowledge stays mine.&lt;/strong&gt; My price sheet is my business. Running it through an open model via a free router means I'm not training someone else's product on my livelihood to get a quote bot.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Last week taught me that "open" with a hidden toll booth isn't open (a credit-walled "free" tier, rotting model IDs). The auto-router approach is what actually held up: when one free model congests, the request goes to another. Resilience through openness, again.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'd do next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Photo upload: customer sends a photo of the oven / yard / broken dryer, AI describes what it sees to pre-fill the form (with the same honesty rules — "can't tell from this photo" is always an allowed answer)&lt;/li&gt;
&lt;li&gt;Spanish version — a real share of my service area&lt;/li&gt;
&lt;li&gt;"Text me this quote" — SMS the written estimate via a free-tier gateway&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the core is done: honest numbers, friendly words, zero cost. That's the whole business.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
