""" Parent — Are You Ready? Spoiler: No. """ import gradio as gr import random REJECTIONS = [ "No. But here's the thing — nobody is. Your parents weren't ready either. They just showed up and figured it out, same as their parents, same as every parent back to the first person who looked at a baby and thought 'I have no idea what I'm doing.' The fact that you're even asking means you care more than most people who already did it. You're still not ready though.", "No. You listed some impressive stuff but none of it prepares you for the 3am version of yourself holding a screaming baby while Googling 'is this color poop normal.' Every skill you have will be useless for the first six months. After that, you'll develop new ones you never wanted, like identifying the exact pitch of a cry that means hunger vs. the one that means 'I dropped my sock and the world is ending.' You're not ready. Nobody told your parents that either.", "No. Financial stability? Great. Emotional maturity? Wonderful. Patience? Adorable that you think you have enough. A child will find the exact limit of every resource you think you have and then ask for a snack. You'll love it though. You'll be terrible at it and love it. That's the whole deal. But ready? No.", "No. And here's the secret nobody tells you — if you waited until you were ready, the human race would have ended 200,000 years ago. Readiness is a myth invented by people who already have kids and want to feel better about the fact that they weren't ready either. You're joining a long tradition of winging it. Welcome. You're not ready.", "No. But you asked an app, which means you're already overthinking it, which means you'll be the kind of parent who reads the back of a sunscreen bottle and Googles the ingredients. That kid is going to be fine. Overprotected, maybe. But fine. You're not ready though. The app has spoken.", "No. You want to know the real test? Imagine the worst day of your life. Now imagine handling it on four hours of sleep while someone asks you why the sky is blue eleven times. Still want to do it? Good. That's not readiness — that's stubbornness. Stubbornness is the actual prerequisite. You're still not ready.", "No. But consider this — a golden retriever is ready to be a parent the moment the puppies arrive and that dog eats shoes. The bar for biological readiness is 'alive and present.' Everything after that is extra credit. You're not ready, but you're already ahead of the retriever. Take the win.", "No. And the people who say they're ready are the ones you should worry about. Confidence about parenthood is just ignorance wearing a nice outfit. The best parents are the ones who know they're going to mess it up and show up anyway. You're not ready. That's the right answer. The wrong answer is 'yes.'", "No. Every generation of parents was less ready than they thought and more capable than they feared. You will be exhausted, confused, covered in something unidentifiable, and more in love than you've ever been in your life. All at the same time. Usually at 4am. You're not ready. Go for it.", "No. But here's what nobody mentions — your parents weren't ready and you turned out okay enough to ask an app about parenthood at whatever time it is right now. The cycle continues. You're not ready. The kid won't care.", "No. You mentioned love like it's a qualification. It's not. Love is the easy part. Love is what makes you stay up all night Googling rashes. The hard part is showing up on the days when love isn't enough — when you're exhausted and touched out and someone needs you anyway. That's not love. That's discipline wearing love's uniform. You'll learn the difference around month four. You're not ready.", "No. But the fact that you're sitting here running a cost-benefit analysis means you'll probably be fine. The worst parents are the ones who never questioned it. They just did it because that's what you do, and then they spent 18 years wondering why it was so hard. You're already past that. You're overthinking it, which is annoying, but it's the right kind of annoying. You're still not ready though.", "No. Here's something no one tells you — the first year isn't about the baby. It's about you finding out who you are when everything you relied on to feel like yourself is gone. Sleep, hobbies, spontaneity, the ability to finish a sentence. All of it, gone. What's left is the real you. Most people have never met that person. You will. You're not ready to meet them.", "No. You think patience is a skill you either have or don't. It's not. Patience is a muscle, and a child will work it until it tears and then heals back stronger. The version of patient you are right now is the tutorial level. Parenting is the boss fight. You'll get there. But right now your patience is a houseplant and you need it to be a redwood. You're not ready.", "No. And the books won't help as much as you think. Parenting books are written by people whose kids are old enough that they've forgotten the bad parts. It's survivorship bias in paperback form. The real manual is whatever your kid teaches you in real time, and that manual is different for every kid. You'll write it as you go. In crayon, probably. You're not ready.", "No. But here's the part that gets everyone — you don't become ready and then have a kid. You have a kid and then become ready, slowly, badly, one disaster at a time. Readiness isn't the entrance fee. It's the thing you earn after you've already been doing it for years. Asking if you're ready is like asking if you can swim before you've ever been in water. You're not ready. The water's warm though.", ] def evaluate(user_input): preamble = "" if user_input and user_input.strip(): preamble = f"**You said:** {user_input.strip()}\n\n**Verdict:** " else: preamble = "**Verdict:** " return preamble + random.choice(REJECTIONS) def evaluate_random(): return evaluate("") CUSTOM_CSS = """ @import url('https://fonts.googleapis.com/css2?family=Space+Mono:wght@400;700&family=Inter:wght@300;400;500;600&display=swap'); body, .gradio-container { background: #0a0a0f !important; font-family: 'Inter', sans-serif !important; color: #e8e6f0 !important; } footer { display: none !important; } .app-header { text-align: center; padding: 28px 20px 8px; } .app-header h1 { font-family: 'Space Mono', monospace; font-size: 2.6rem; font-weight: 700; background: linear-gradient(135deg, #f0d040, #f08040); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin: 0; } .app-header .sub { color: #6a6880; font-size: 0.88rem; margin-top: 6px; font-weight: 300; letter-spacing: 0.04em; } .app-visual { text-align: center; font-size: 5rem; padding: 12px 0 4px; filter: drop-shadow(0 0 20px rgba(240, 208, 64, 0.3)); } .input-box textarea { background: #12121f !important; border: 1px solid rgba(240, 208, 64, 0.25) !important; color: #e8e6f0 !important; font-family: 'Inter', sans-serif !important; border-radius: 12px !important; font-size: 0.95rem !important; } .input-box textarea::placeholder { color: #6a6880 !important; } .input-box textarea:focus { border-color: #f0d040 !important; box-shadow: 0 0 20px rgba(240, 208, 64, 0.15) !important; } .input-box label, .output-box label { color: #6a6880 !important; font-family: 'Space Mono', monospace !important; font-size: 0.75rem !important; letter-spacing: 0.05em !important; } button.primary { background: linear-gradient(135deg, #f0d040, #e0a030) !important; border: none !important; color: #0a0a0f !important; font-family: 'Space Mono', monospace !important; font-size: 1.1rem !important; font-weight: 700 !important; border-radius: 24px !important; padding: 12px 40px !important; box-shadow: 0 4px 20px rgba(240, 208, 64, 0.3) !important; } button.primary:hover { box-shadow: 0 4px 30px rgba(240, 208, 64, 0.5) !important; } button.secondary { background: transparent !important; border: 1px solid rgba(240, 208, 64, 0.3) !important; color: #f0d040 !important; font-family: 'Space Mono', monospace !important; font-size: 0.8rem !important; border-radius: 20px !important; } button.secondary:hover { background: rgba(240, 208, 64, 0.1) !important; } .output-box .prose { background: #12121f !important; border: 1px solid rgba(240, 208, 64, 0.15) !important; border-radius: 12px !important; padding: 24px !important; color: #e8e6f0 !important; font-size: 0.95rem !important; line-height: 1.7 !important; } .output-box .prose strong { color: #f0d040 !important; font-family: 'Space Mono', monospace !important; } .footer-text { text-align: center; padding: 20px; color: #6a6880; font-size: 0.65rem; font-weight: 300; letter-spacing: 0.05em; } .footer-text a { color: #f0d040; text-decoration: none; } """ with gr.Blocks(css=CUSTOM_CSS, title="Parent", theme=gr.themes.Base()) as demo: gr.HTML("""

Parent

Are you ready?
👶
""") with gr.Column(elem_classes="input-box"): user_input = gr.Textbox( label="Tell me why you think you're ready", placeholder="I have savings, a stable job, patience, a big house, I read parenting books...", lines=2, max_lines=3, ) with gr.Row(): go_btn = gr.Button("Am I ready?", variant="primary", size="lg") random_btn = gr.Button("Surprise me", variant="secondary", size="sm") with gr.Column(elem_classes="output-box"): output = gr.Markdown(label="") gr.Examples( examples=[ ["I have a stable job and savings"], ["I've read all the parenting books"], ["I'm patient and emotionally mature"], ["I have a big house and a yard"], ["my partner and I have been together 10 years"], ["I already have a dog so I know responsibility"], ], inputs=[user_input], ) go_btn.click(evaluate, [user_input], [output]) random_btn.click(evaluate_random, [], [output]) gr.HTML('') if __name__ == "__main__": demo.launch()