---
title: AstroSage Clone Features
description: 
url: https://miracuves.com/astrosage-clone/features
date_modified: 2026-09-07
author: miracuves
language: en_US
---

.mcv-asf{
    --crimson:#e8344f; --crimson-deep:#a70d2a; --crimson-hot:#d81b46; --crimson-light:#ff8090;
    --amber:#fbbf24; --black:#0a0a0a; --white:#ffffff; --paper:#faf8f8; --ink:#191419; --ink-dim:#6d666d;
    --line:rgba(11,11,16,0.1); --line-light:rgba(255,255,255,0.12);
    --card-bg:rgba(8,3,8,0.82);
    font-family:'Plus Jakarta Sans',Arial,sans-serif; color:var(--ink); background:var(--white); margin:0; padding:0;
  }
  .mcv-asf *{ box-sizing:border-box; }
  .mcv-asf h1,.mcv-asf h2,.mcv-asf h3{ font-family:'Plus Jakarta Sans',Arial,sans-serif; font-weight:800; margin:0; letter-spacing:-0.02em; line-height:1.12; }
  .mcv-asf p{ margin:0 0 14px; line-height:1.7; color:var(--ink); }
  .mcv-asf a{ color:var(--crimson-deep); text-decoration:none; }
  .mcv-asf .mono{ font-family:'JetBrains Mono',monospace; }
  .mcv-asf-wrap{ max-width:1180px; margin:0 auto; padding:0 24px; position:relative; z-index:2; }
  .mcv-asf-bleed{ position:relative; left:50%; right:50%; margin-left:-50vw; margin-right:-50vw; width:100vw; }

  .mcv-seo-ref{ background:#FFF7E0; border:2px dashed #C79A00; padding:18px 22px; font-family:Arial,sans-serif; font-size:13px; color:#4A3B00; max-width:1180px; margin:18px auto; border-radius:8px; }

  .mcv-asf-crumb{ display:flex; gap:8px; align-items:center; font-family:'JetBrains Mono',monospace; font-size:11.5px; color:rgba(255,255,255,.62); margin-bottom:20px; }
  .mcv-asf-crumb a{ color:rgba(255,255,255,.62); }
  .mcv-asf-crumb a:hover{ color:var(--crimson-light); }
  .mcv-asf-crumb span.sep{ opacity:.5; }
  .mcv-asf-crumb span.cur{ color:rgba(255,255,255,.75); }

  .mcv-asf-eyebrow{ display:inline-flex; align-items:center; gap:8px; padding:7px 16px; border-radius:100px; background:rgba(255,255,255,.06); border:1px solid var(--line-light); font-family:'JetBrains Mono',monospace; font-size:11.5px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:var(--crimson-light); margin-bottom:22px; }
  .mcv-asf-eyebrow .dot{ width:6px; height:6px; border-radius:50%; background:var(--crimson); }

  .mcv-asf-hero{ background:radial-gradient(ellipse 900px 500px at 85% -10%, rgba(232,52,79,.16), transparent), #0a0a0a; color:#fff; padding:56px 0 150px; position:relative; overflow:hidden; }
  .mcv-asf-hero .ring{ position:absolute; border:2px solid rgba(232,52,79,.18); border-radius:50%; pointer-events:none; }
  .mcv-asf-hero .ring1{ width:560px; height:560px; top:-260px; right:-200px; }
  .mcv-asf-hero .ring2{ width:340px; height:340px; bottom:-200px; right:120px; border-color:rgba(232,52,79,.1); }
  .mcv-asf-herogrid{ display:grid; grid-template-columns:1.1fr 0.9fr; gap:48px; align-items:center; }
  .mcv-asf-hero h1{ font-size:clamp(27px,3.9vw,44px); color:#fff; }
  .mcv-asf-hero h1 em{ font-style:normal; color:#ff8090; }
  .mcv-asf-hero p.sub{ font-size:16px; color:rgba(255,255,255,.68); max-width:600px; margin:20px 0 30px; }

  .mcv-asf a.mcv-asf-btn{ display:inline-flex; align-items:center; gap:8px; border-radius:12px; background:linear-gradient(160deg,#d81b46,#e6223f); color:#fff; font-weight:700; font-size:15px; padding:15px 28px; box-shadow:0 10px 30px rgba(232,52,79,.3); transition:transform .25s cubic-bezier(.2,.8,.2,1), box-shadow .25s; }
  .mcv-asf a.mcv-asf-btn:hover{ color:#fff; transform:translateY(-2px); box-shadow:0 14px 36px rgba(232,52,79,.42); text-decoration:none; }
  .mcv-asf a.mcv-asf-btn-outline{ display:inline-flex; align-items:center; border:2px solid rgba(255,255,255,.7); color:#fff; border-radius:12px; font-weight:700; font-size:15px; padding:13px 26px; margin-left:12px; transition:all .2s; }
  .mcv-asf a.mcv-asf-btn-outline:hover{ background:#fff; color:#191419; text-decoration:none; }

  .mcv-asf-trust{ display:flex; flex-wrap:wrap; gap:22px; margin-top:34px; padding-top:24px; border-top:1px solid var(--line-light); }
  .mcv-asf-trust-item{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:rgba(255,255,255,.6); }
  .mcv-asf-trust-item strong{ font-family:'JetBrains Mono',monospace; color:#fff; font-size:14px; }

  .mcv-asf-cardstack{ position:relative; height:340px; }
  .mcv-asf-fincard{ position:absolute; width:300px; height:180px; border-radius:18px; padding:22px; background:linear-gradient(150deg,#1c1418,#0d0709); border:1px solid var(--line-light); box-shadow:0 30px 70px rgba(0,0,0,.5); }
  .mcv-asf-fincard.c1{ top:0; left:10px; z-index:1; opacity:.5; transform:rotate(-6deg) scale(.92); }
  .mcv-asf-fincard.c2{ top:30px; left:40px; z-index:2; background:linear-gradient(150deg,#3a0a15,#160408 60%,#0a0a0a); border-color:rgba(232,52,79,.3); box-shadow:0 40px 90px rgba(0,0,0,.55), 0 0 60px -12px rgba(232,52,79,.35); }
  .mcv-asf-fincard .brand{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:rgba(255,255,255,.55); }
  .mcv-asf-fincard .chip{ width:34px; height:24px; border-radius:5px; background:linear-gradient(135deg,#ff8090,#e8344f); margin:22px 0 18px; }
  .mcv-asf-fincard .num{ font-family:'JetBrains Mono',monospace; font-size:15px; color:#fff; letter-spacing:.1em; }
  .mcv-asf-fincard .curr{ position:absolute; bottom:22px; right:22px; font-family:'JetBrains Mono',monospace; font-size:11px; color:#ff8090; }
  .mcv-asf-float{ position:absolute; background:rgba(8,3,8,0.82); border:1px solid var(--line-light); border-radius:14px; padding:12px 16px; box-shadow:0 16px 40px rgba(0,0,0,.35); z-index:3; }
  .mcv-asf-float .k2{ font-family:'JetBrains Mono',monospace; font-size:10px; color:#ff8090; text-transform:uppercase; letter-spacing:.08em; margin-bottom:3px; }
  .mcv-asf-float .v{ font-family:'JetBrains Mono',monospace; font-size:15px; color:#fff; font-weight:700; }
  .mcv-asf-float-1{ top:-10px; right:0; }
  .mcv-asf-float-2{ bottom:10px; left:0; }

  .mcv-asf-statbar{ margin-top:-72px; position:relative; z-index:3; }
  .mcv-asf-statbar .inner{ background:rgba(8,3,8,0.82); border:1px solid var(--line-light); border-radius:18px; box-shadow:0 24px 60px rgba(0,0,0,.35); padding:32px 20px; display:grid; grid-template-columns:repeat(4,1fr); }
  .mcv-asf-statbar .stat{ text-align:center; padding:0 12px; border-right:1px solid var(--line-light); }
  .mcv-asf-statbar .stat:last-child{ border-right:none; }
  .mcv-asf-statbar .num{ font-family:'JetBrains Mono',monospace; font-weight:700; font-size:22px; color:#ff8090; }
  .mcv-asf-statbar .lbl{ font-size:11.5px; color:rgba(255,255,255,.62); margin-top:6px; line-height:1.4; }

  .mcv-asf-section{ padding:100px 0 76px; }
  .mcv-asf-section.paper{ background:#faf8f8; }
  .mcv-asf-section.tight{ padding-top:76px; }
  .mcv-asf-head{ text-align:center; max-width:720px; margin:0 auto 48px; }
  .mcv-asf-head .kicker{ font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:#a70d2a; margin-bottom:12px; }
  .mcv-asf-head h2{ font-size:clamp(22px,3vw,34px); color:#191419; }
  .mcv-asf-head p{ color:#6d666d; margin-top:14px; }

  .mcv-asf-rolegrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-asf-rolecard{ background:#fff; border:1px solid var(--line); border-radius:18px; padding:28px 24px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
  .mcv-asf-rolecard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-asf-roleicon{ width:40px; height:40px; border-radius:10px; background:rgba(232,52,79,.12); border:1px solid rgba(232,52,79,.3); display:flex; align-items:center; justify-content:center; margin-bottom:16px; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:14px; color:#a70d2a; }
  .mcv-asf-rolecard h3{ font-size:17px; margin-bottom:12px; color:#191419; }
  .mcv-asf-rolecard ul{ margin:0; padding-left:18px; font-size:13.5px; color:#191419; }
  .mcv-asf-rolecard li{ margin-bottom:8px; line-height:1.5; }

  .mcv-asf-tablewrap{ overflow-x:auto; border-radius:16px; box-shadow:0 12px 34px rgba(0,0,0,.07); border:1px solid var(--line); }
  table.mcv-asf-table{ border-collapse:collapse; width:100%; min-width:680px; background:#fff; font-size:13.5px; }
  table.mcv-asf-table th{ background:#0a0a0a; color:#ffffff; text-align:left; padding:14px 16px; font-family:'JetBrains Mono',monospace; font-weight:600; font-size:12px; letter-spacing:.04em; text-transform:uppercase; }
  table.mcv-asf-table td{ padding:14px 16px; border-bottom:1px solid rgba(11,11,16,0.1); vertical-align:top; color:#191419; }
  table.mcv-asf-table td.hl{ background:rgba(232,52,79,.06); border-top:3px solid #e8344f; font-weight:600; color:#191419; }
  table.mcv-asf-table th.hl{ background:#e6223f; color:#ffffff; }
  table.mcv-asf-table tbody tr:hover td{ background:#f4f1f1; color:#191419; }
  table.mcv-asf-table tbody tr:hover td.hl{ background:rgba(232,52,79,.13); color:#191419; }
  table.mcv-asf-table tr:last-child td{ border-bottom:none; }
  .mcv-asf-note{ font-size:12.5px; color:#6d666d; margin-top:12px; }

  .mcv-asf-callout{ background:linear-gradient(135deg,#2B0710,#4A0F1E); color:#fff; border-radius:20px; padding:40px 44px; }
  .mcv-asf-callout h2,.mcv-asf-callout h3{ color:#fff; font-size:22px; margin-bottom:12px; }
  .mcv-asf-callout p{ color:rgba(255,255,255,.78); font-size:14.5px; margin:0; }

  .mcv-asf-honest{ background:#fff; border:1px solid var(--line); border-left:4px solid #fbbf24; border-radius:14px; padding:28px 30px; }
  .mcv-asf-honest h3{ font-size:17px; margin-bottom:14px; color:#191419; }
  .mcv-asf-honestgrid{ display:grid; grid-template-columns:1fr 1fr; gap:10px 28px; }
  .mcv-asf-honestgrid div{ font-size:13.5px; color:#191419; line-height:1.55; padding-left:18px; position:relative; }
  .mcv-asf-honestgrid div::before{ content:'!'; position:absolute; left:0; top:0; font-family:'JetBrains Mono',monospace; font-weight:700; color:#8a6100; }

  .mcv-asf-cs{ background:#fff; border:1px solid var(--line); border-radius:20px; padding:32px 34px; display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap; box-shadow:0 8px 24px rgba(0,0,0,.05); }
  .mcv-asf-cs-badge{ display:inline-flex; align-items:center; gap:7px; padding:6px 14px; border-radius:100px; background:rgba(232,52,79,.08); border:1px solid rgba(232,52,79,.25); font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:#a70d2a; margin-bottom:12px; }
  .mcv-asf-cs-badge .dot{ width:6px; height:6px; border-radius:50%; background:#e8344f; }
  .mcv-asf-cs-body{ flex:1; min-width:260px; }
  .mcv-asf-cs-body h3{ font-size:16.5px; margin-bottom:6px; color:#191419; }
  .mcv-asf-cs-body p{ color:#6d666d; font-size:13.5px; margin:0; max-width:460px; }
  .mcv-asf a.mcv-asf-cs-link{ font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; color:#a70d2a; white-space:nowrap; }

  .mcv-asf-faqgrid{ display:grid; grid-template-columns:1fr 1fr; gap:0 40px; max-width:1000px; margin:0 auto; }
  .mcv-asf-faq details{ border-bottom:1px solid var(--line); padding:18px 0; }
  .mcv-asf-faq summary{ font-family:'Plus Jakarta Sans',Arial,sans-serif; font-weight:700; font-size:15px; color:#191419; cursor:pointer; list-style:none; display:flex; justify-content:space-between; align-items:center; gap:16px; }
  .mcv-asf-faq summary::-webkit-details-marker{ display:none; }
  .mcv-asf-faq summary::after{ content:'+'; font-family:'JetBrains Mono',monospace; color:#a70d2a; font-size:20px; font-weight:700; flex:none; }
  .mcv-asf-faq details[open] summary::after{ content:'\2212'; }
  .mcv-asf-faq .a{ color:#6d666d; font-size:13.5px; margin-top:10px; line-height:1.65; }

  .mcv-asf-cta{ background:linear-gradient(120deg,#e6223f,#6e0e1f); color:#fff; padding:64px 0; position:relative; overflow:hidden; }
  .mcv-asf-cta .ring{ position:absolute; border:2px solid rgba(255,255,255,.14); border-radius:50%; width:360px; height:360px; top:-140px; right:-100px; }
  .mcv-asf-cta .flex{ display:flex; justify-content:space-between; align-items:center; gap:28px; flex-wrap:wrap; position:relative; z-index:2; }
  .mcv-asf-cta h2{ color:#fff; font-size:clamp(20px,2.6vw,28px); margin-bottom:8px; }
  .mcv-asf-cta p{ color:#ffffff; margin:0; max-width:460px; }
  .mcv-asf-cta a.mcv-asf-btn-outline{ border-color:#fff; }
  .mcv-asf-cta a.mcv-asf-btn{ background:#fff; box-shadow:0 10px 30px rgba(0,0,0,.2); }
  .mcv-asf-cta a.mcv-asf-btn,.mcv-asf-cta a.mcv-asf-btn:hover{ color:#a70d2a; }

  .mcv-asf-explore{ display:flex; flex-wrap:wrap; gap:10px; justify-content:center; }
  .mcv-asf a.mcv-asf-pill{ font-family:'JetBrains Mono',monospace; font-size:12.5px; font-weight:600; padding:10px 18px; border-radius:100px; border:1px solid var(--line); color:#191419; background:#fff; transition:all .2s; }
  .mcv-asf a.mcv-asf-pill:hover{ border-color:#e8344f; color:#a70d2a; text-decoration:none; }
  .mcv-asf a.mcv-asf-pill.cur{ background:#191419; color:#fff; border-color:#191419; }

  .mcv-asf-finalcta{ background:#0a0a0a; color:#fff; text-align:center; padding:96px 24px 64px; position:relative; overflow:hidden; }
  .mcv-asf-finalcta .ring{ position:absolute; border:1.5px solid rgba(232,52,79,.16); border-radius:50%; }
  .mcv-asf-finalcta .ring1{ width:480px; height:480px; top:-220px; left:-160px; }
  .mcv-asf-finalcta .ring2{ width:300px; height:300px; bottom:-180px; right:-90px; }
  .mcv-asf-finalcta .card{ background:rgba(8,3,8,0.82); border:1px solid var(--line-light); border-radius:24px; padding:56px 40px; max-width:720px; margin:0 auto; position:relative; z-index:2; }
  .mcv-asf-finalcta h2{ color:#fff; font-size:clamp(24px,3.2vw,34px); max-width:640px; margin:0 auto 14px; }
  .mcv-asf-finalcta p.sub{ color:rgba(255,255,255,.7); max-width:520px; margin:0 auto 30px; }
  .mcv-asf-footerbar{ max-width:1180px; margin:56px auto 0; padding-top:28px; border-top:1px solid var(--line-light); position:relative; z-index:2; }
  .mcv-asf-byline{ display:flex; flex-wrap:wrap; gap:6px 14px; align-items:center; font-family:'JetBrains Mono',monospace; font-size:11.5px; color:rgba(255,255,255,.55); border-bottom:1px solid rgba(255,255,255,.12); padding-bottom:16px; margin-bottom:12px; }
  .mcv-asf-byline strong{ color:#fff; font-weight:600; }
  .mcv-asf-byline .dotsep{ opacity:.4; }
  .mcv-asf-footermeta{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; font-family:'JetBrains Mono',monospace; font-size:11px; color:rgba(255,255,255,.55); }

  @media (max-width:900px){
    .mcv-asf-herogrid{ grid-template-columns:1fr; }
    .mcv-asf-statbar .inner{ grid-template-columns:repeat(2,1fr); gap:18px 0; }
    .mcv-asf-statbar .stat:nth-child(2){ border-right:none; }
    .mcv-asf-rolegrid{ grid-template-columns:1fr; }
    .mcv-asf-honestgrid{ grid-template-columns:1fr; }
    .mcv-asf-faqgrid{ grid-template-columns:1fr; }
    .mcv-asf-hero h1{ font-size:27px; }
    .mcv-asf-cta .flex{ flex-direction:column; align-items:flex-start; }
    .mcv-asf-cardstack{ height:260px; }
    .mcv-asf-fincard{ width:250px; height:150px; }
  }
  @media (prefers-reduced-motion: reduce){ .mcv-asf *{ animation:none !important; transition:none !important; } }
  /* --- components used by cost / company / business-model --- */
  .mcv-asf-pricecard{ background:linear-gradient(150deg,#3a0a15,#160408 60%,#0a0a0a); border:1px solid rgba(232,52,79,.3); border-radius:22px; padding:34px 32px; box-shadow:0 40px 90px rgba(0,0,0,.55), 0 0 60px -12px rgba(232,52,79,.35); }
  .mcv-asf-pricecard .plan{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:#ff8090; margin-bottom:14px; }
  .mcv-asf-pricecard .amt{ font-family:'JetBrains Mono',monospace; font-size:44px; font-weight:700; color:#fff; line-height:1; }
  .mcv-asf-pricecard .per{ font-size:13px; color:rgba(255,255,255,.6); margin-top:8px; }
  .mcv-asf-pricecard ul{ margin:22px 0 0; padding-left:18px; color:rgba(255,255,255,.78); font-size:13.5px; }
  .mcv-asf-pricecard li{ margin-bottom:8px; line-height:1.5; }
  .mcv-asf-drivers{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-asf-driver{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:18px; padding:26px 24px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
  .mcv-asf-driver:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-asf-driver h3{ font-size:16px; margin-bottom:10px; color:#191419; }
  .mcv-asf-driver p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-asf-steps{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
  .mcv-asf-step{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:16px; padding:24px 22px; }
  .mcv-asf-step .n{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:#a70d2a; margin-bottom:8px; }
  .mcv-asf-step h3{ font-size:15.5px; margin-bottom:8px; color:#191419; }
  .mcv-asf-step p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-asf-checkgrid{ display:grid; grid-template-columns:1fr 1fr; gap:16px 28px; }
  .mcv-asf-check{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:14px; padding:20px 22px; }
  .mcv-asf-check h3{ font-size:15px; margin-bottom:8px; color:#191419; }
  .mcv-asf-check p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-asf-flags{ display:grid; grid-template-columns:1fr 1fr; gap:14px 28px; }
  .mcv-asf-flag{ font-size:13.5px; color:#191419; line-height:1.55; padding-left:22px; position:relative; }
  .mcv-asf-flag::before{ content:'\2715'; position:absolute; left:0; top:0; font-family:'JetBrains Mono',monospace; font-weight:700; color:#a70d2a; }
  .mcv-asf-pt{ background:radial-gradient(ellipse 800px 400px at 20% 0%, rgba(232,52,79,.14), transparent), #0a0a0a; color:#fff; padding:92px 0 84px; }
  .mcv-asf-pt .mcv-asf-head h2{ color:#fff; }
  .mcv-asf-pt .mcv-asf-head p{ color:rgba(255,255,255,.68); }
  .mcv-asf-pt .mcv-asf-head .kicker{ color:#ff8090; }
  .mcv-asf-ptgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
  .mcv-asf-ptcard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:18px; padding:26px 24px; }
  .mcv-asf-ptcard h3{ font-size:15.5px; color:#fff; margin-bottom:10px; }
  .mcv-asf-ptcard p{ font-size:13.5px; color:rgba(255,255,255,.72); margin:0; }
  .mcv-asf-ptcard .tag{ display:inline-block; font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:#ff8090; border:1px solid rgba(232,52,79,.35); border-radius:100px; padding:3px 10px; margin-bottom:12px; }
  .mcv-asf-csbox{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:22px; padding:40px 42px; box-shadow:0 12px 34px rgba(0,0,0,.06); }
  .mcv-asf-csmeta{ display:flex; flex-wrap:wrap; gap:26px; margin:22px 0 26px; padding:20px 0; border-top:1px solid rgba(11,11,16,0.1); border-bottom:1px solid rgba(11,11,16,0.1); }
  .mcv-asf-csmeta div{ font-size:13px; color:#6d666d; }
  .mcv-asf-csmeta strong{ display:block; font-family:'JetBrains Mono',monospace; font-size:18px; color:#191419; margin-bottom:2px; }
  .mcv-asf-cscols{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px; }
  .mcv-asf-cscols h4{ font-size:13px; font-family:'JetBrains Mono',monospace; letter-spacing:.08em; text-transform:uppercase; color:#a70d2a; margin:0 0 10px; }
  .mcv-asf-cscols ul{ margin:0; padding-left:18px; font-size:13.5px; color:#191419; }
  .mcv-asf-cscols li{ margin-bottom:8px; line-height:1.5; }
  .mcv-asf-quote{ margin-top:28px; padding:24px 26px; background:#faf8f8; border-left:3px solid #e8344f; border-radius:0 12px 12px 0; }
  .mcv-asf-quote p{ font-size:15px; font-style:italic; color:#191419; margin:0 0 10px; }
  .mcv-asf-quote .who{ font-family:'JetBrains Mono',monospace; font-size:12px; color:#6d666d; font-style:normal; }
  .mcv-asf-revgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-asf-revcard{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:18px; padding:28px 24px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
  .mcv-asf-revcard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-asf-revcard .n{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:#a70d2a; margin-bottom:10px; }
  .mcv-asf-revcard h3{ font-size:16.5px; margin-bottom:10px; color:#191419; }
  .mcv-asf-revcard p{ font-size:13.5px; color:#6d666d; margin:0; }
  .mcv-asf-revcard .core{ display:inline-block; margin-top:14px; font-family:'JetBrains Mono',monospace; font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:#a70d2a; background:rgba(232,52,79,.08); border:1px solid rgba(232,52,79,.25); border-radius:100px; padding:3px 10px; }
  .mcv-asf-disclose{ background:#faf8f8; border:1px dashed rgba(11,11,16,0.1); border-radius:14px; padding:26px 28px; max-width:860px; margin:0 auto; }
  .mcv-asf-disclose h3{ font-size:16px; margin-bottom:10px; color:#191419; }
  .mcv-asf-disclose p{ font-size:13.5px; color:#6d666d; margin:0 0 10px; }
  .mcv-asf-disclose p:last-child{ margin-bottom:0; }
  .mcv-asf-callout .figs{ display:flex; flex-wrap:wrap; gap:32px; margin-top:22px; padding-top:20px; border-top:1px solid rgba(255,255,255,0.12); }
  .mcv-asf-callout .figs div{ font-size:12.5px; color:rgba(255,255,255,.65); }
  .mcv-asf-callout .figs strong{ display:block; font-family:'JetBrains Mono',monospace; font-size:20px; color:#fff; margin-bottom:3px; }
  @media (max-width:900px){
    .mcv-asf-drivers,.mcv-asf-steps,.mcv-asf-checkgrid,.mcv-asf-flags,.mcv-asf-ptgrid,.mcv-asf-cscols,.mcv-asf-revgrid{ grid-template-columns:1fr; }
    .mcv-asf-csbox{ padding:28px 24px; }
  }
  /* ===== components ported from the shipped reference bundle (instagram-clone) ===== */
  .mcv-asf-aside{ border-left:3px solid #e8344f; background:#faf8f8; border-radius:0 16px 16px 0; padding:32px 36px; }
  .mcv-asf-aside h3{ font-size:17px; margin-bottom:14px; color:#191419; }
  .mcv-asf-aside ul{ margin:0; padding:0; list-style:none; display:grid; grid-template-columns:1fr 1fr; gap:16px 32px; }
  .mcv-asf-aside li{ padding-left:18px; position:relative; font-size:14px; color:#191419; line-height:1.6; }
  .mcv-asf-aside li::before{ content:''; position:absolute; left:0; top:7px; width:7px; height:7px; background:#e8344f; transform:rotate(45deg); }
  .mcv-asf-aside li span{ color:#6d666d; display:block; font-size:12.5px; margin-top:2px; }
  .mcv-asf-flowrow{ display:grid; grid-template-columns:64px 1fr; gap:22px; padding:28px 0; border-bottom:1px solid rgba(11,11,16,0.1); align-items:start; }
  .mcv-asf-flowrow:last-child{ border-bottom:none; }
  .mcv-asf-flowrow h3{ font-size:18px; margin-bottom:8px; color:#191419; }
  .mcv-asf-flowrow p{ color:#6d666d; font-size:14.5px; margin:0; max-width:760px; }
  .mcv-asf-flownum{ width:56px; height:56px; border-radius:50%; border:1.5px solid rgba(11,11,16,0.1); display:flex; align-items:center; justify-content:center; font-family:'JetBrains Mono',monospace; font-weight:700; color:#a70d2a; font-size:16px; }
  .mcv-asf-icongrid{ display:grid; grid-template-columns:repeat(2,1fr); gap:20px; }
  .mcv-asf-iconitem{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:14px; padding:22px 24px; display:flex; gap:14px; align-items:flex-start; box-shadow:0 6px 18px rgba(0,0,0,.05); }
  .mcv-asf-iconitem h3{ font-size:15px; margin-bottom:6px; color:#191419; }
  .mcv-asf-iconitem p{ font-size:13px; color:#6d666d; margin:0; }
  .mcv-asf-icondot{ width:34px; height:34px; border-radius:10px; background:rgba(232,52,79,.12); border:1px solid rgba(232,52,79,.3); flex:none; display:flex; align-items:center; justify-content:center; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:14px; color:#a70d2a; }
  .mcv-asf-steprow{ display:flex; gap:24px; padding:22px 0; border-bottom:1px solid rgba(11,11,16,0.1); }
  .mcv-asf-steprow:last-child{ border-bottom:none; }
  .mcv-asf-step-num{ font-family:'JetBrains Mono',monospace; font-weight:700; font-size:15px; color:#a70d2a; flex:none; width:90px; padding-top:2px; }
  .mcv-asf-step-body h3{ font-size:17px; color:#191419; margin-bottom:6px; }
  .mcv-asf-step-body p{ font-size:14.5px; color:#6d666d; margin:0; }
  .mcv-asf-trustband{ background:#0a0a0a; color:#fff; padding:96px 0; position:relative; overflow:hidden; }
  .mcv-asf-trustband .ring{ position:absolute; border:1.5px solid rgba(232,52,79,.16); border-radius:50%; width:420px; height:420px; top:-160px; left:-140px; }
  .mcv-asf-trustband .head{ text-align:center; max-width:720px; margin:0 auto 44px; position:relative; z-index:2; }
  .mcv-asf-trustband .head .kicker{ font-family:'JetBrains Mono',monospace; font-size:12px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:#ff8090; margin-bottom:12px; }
  .mcv-asf-trustband .head h2{ color:#fff; font-size:clamp(22px,3vw,34px); }
  .mcv-asf-trustband .head p{ color:rgba(255,255,255,.68); margin-top:14px; }
  /* the band markup uses the prefixed head class, so scope the light colours to it explicitly -
     without this the h2 falls through to .mcv-asf-head h2 (#191419) and vanishes on the black band */
  .mcv-asf-trustband .mcv-asf-head h2{ color:#ffffff; font-size:clamp(22px,3vw,34px); }
  .mcv-asf-trustband .mcv-asf-head p{ color:rgba(255,255,255,0.68); }
  .mcv-asf-trustband .mcv-asf-head .kicker{ color:#ff8090; }
.mcv-asf-trustband .mcv-asf-note{ color:rgba(255,255,255,0.68); }
.mcv-asf-pt .mcv-asf-note{ color:rgba(255,255,255,0.68); }
  .mcv-asf-trustgrid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; position:relative; z-index:2; }
  .mcv-asf-trustcard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:16px; padding:26px 22px; }
  .mcv-asf-trustcard h3{ color:#fff; font-size:15px; margin-bottom:8px; }
  .mcv-asf-trustcard p{ color:rgba(255,255,255,.68); font-size:13px; margin:0; line-height:1.55; }
  .mcv-asf-trusticon{ width:38px; height:38px; border-radius:10px; background:rgba(232,52,79,.16); border:1px solid rgba(232,52,79,.4); display:flex; align-items:center; justify-content:center; margin-bottom:14px; }
  .mcv-asf-scorecard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:20px; padding:28px 26px; }
  .mcv-asf-scorecard .k{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:#ff8090; margin-bottom:16px; }
  .mcv-asf-scorerow{ display:flex; justify-content:space-between; align-items:center; padding:10px 0; border-bottom:1px solid rgba(255,255,255,0.12); }
  .mcv-asf-scorerow:last-child{ border-bottom:none; }
  .mcv-asf-scorerow .lbl2{ font-size:12.5px; color:rgba(255,255,255,.75); }
  .mcv-asf-scorerow .val{ font-family:'JetBrains Mono',monospace; font-size:13px; font-weight:700; color:#fff; }
  .mcv-asf-scorerow .val.good{ color:#ff8090; }
  /* scorecard is a DARK card sitting in a light section. Rows authored as
     **label**text inherit var(--ink) and vanish (1.13:1).
     Give them light ink and stack them; .lbl2/.val two-column rows are untouched. */
  .mcv-asf-scorerow{ flex-wrap:wrap; }
  .mcv-asf-scorecard > .mcv-asf-scorerow > strong{ flex:1 0 100%; color:#ffffff; font-size:14.5px; margin-bottom:4px; }
  .mcv-asf-scorecard > .mcv-asf-scorerow > span{ flex:1 0 100%; color:rgba(255,255,255,0.78); font-size:13px; line-height:1.62; }
  .mcv-asf-cs-top{ display:flex; justify-content:space-between; align-items:flex-start; gap:24px; flex-wrap:wrap; margin-bottom:28px; }
  .mcv-asf-cs-top p{ color:#6d666d; font-size:14.5px; max-width:480px; margin:0; }
  .mcv-asf-cs-meta{ text-align:right; font-size:13.5px; }
  .mcv-asf-cs-meta strong{ display:block; color:#191419; font-size:14.5px; }
  .mcv-asf-cs-meta .lbl{ font-family:'JetBrains Mono',monospace; font-size:10.5px; text-transform:uppercase; letter-spacing:.08em; color:#6d666d; margin:2px 0 12px; }
  .mcv-asf-cs-stats{ display:grid; grid-template-columns:repeat(3,1fr); border:1px solid rgba(11,11,16,0.1); border-radius:16px; margin-bottom:24px; overflow:hidden; }
  .mcv-asf-cs-stat{ text-align:center; padding:22px 12px; border-right:1px solid rgba(11,11,16,0.1); }
  .mcv-asf-cs-stat:last-child{ border-right:none; }
  .mcv-asf-cs-stat .v{ font-family:'JetBrains Mono',monospace; font-weight:700; font-size:26px; color:#a70d2a; }
  .mcv-asf-cs-stat .l{ font-size:12.5px; color:#6d666d; margin-top:4px; }
  .mcv-asf-cs-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px; }
  .mcv-asf-cs-box{ background:#faf8f8; border-radius:14px; padding:22px 24px; }
  .mcv-asf-cs-box .h{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:#6d666d; margin-bottom:12px; }
  .mcv-asf-cs-box ul{ margin:0; padding:0; list-style:none; display:grid; gap:8px; }
  .mcv-asf-cs-box li{ padding-left:16px; position:relative; font-size:13.5px; color:#191419; line-height:1.55; }
  .mcv-asf-cs-box li::before{ content:''; position:absolute; left:0; top:7px; width:6px; height:6px; background:#e8344f; transform:rotate(45deg); }
  .mcv-asf-cs-quote{ border-left:3px solid #e8344f; background:#faf8f8; border-radius:0 14px 14px 0; padding:22px 26px; margin-top:16px; display:flex; gap:16px; align-items:flex-start; }
  .mcv-asf-cs-quote p{ font-style:italic; font-size:15px; color:#191419; margin:0 0 10px; }
  .mcv-asf-cs-avatar{ width:38px; height:38px; border-radius:50%; background:#a70d2a; color:#fff; display:flex; align-items:center; justify-content:center; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:13px; flex:none; }
  .mcv-asf-cs-who strong{ display:block; font-size:13.5px; color:#191419; }
  .mcv-asf-cs-who span{ font-size:12.5px; color:#6d666d; }
  .mcv-asf-cs-foot{ margin-top:20px; padding-top:16px; border-top:1px solid rgba(11,11,16,0.1); font-size:12.5px; color:#6d666d; }
  .mcv-asf-mockwrap{ position:relative; }
  .mcv-asf-chartcard{ background:rgba(8,3,8,0.82); border:1px solid rgba(255,255,255,0.12); border-radius:20px; padding:28px 26px; position:relative; }
  .mcv-asf-chartcard .k{ font-family:'JetBrains Mono',monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:#ff8090; margin-bottom:18px; }
  .mcv-asf-chartcard .mcv-asf-barrow{ display:flex; align-items:center; gap:14px; height:auto; margin:0 0 14px; }
  .mcv-asf-chartcard .mcv-asf-barrow .l{ flex:0 0 140px; font-size:12.5px; line-height:1.35; color:rgba(255,255,255,.78); }
  .mcv-asf-chartcard .mcv-asf-barrow>.bar{ flex:1; height:8px; border-radius:999px; background:rgba(255,255,255,.10); overflow:hidden; }
  .mcv-asf-chartcard .mcv-asf-barrow>.bar>.mcv-asf-barcol{ height:8px; border-radius:999px; background:linear-gradient(90deg,#ff8090,#d81b46); }
  .mcv-asf-chartcard .note{ margin-top:18px; padding-top:14px; border-top:1px solid rgba(255,255,255,0.12); font-size:11.5px; line-height:1.5; color:rgba(255,255,255,.62); }
  .mcv-asf-seggrid{ display:grid; grid-template-columns:repeat(4,1fr); gap:20px; }
  .mcv-asf-segcard{ background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:16px; padding:26px 22px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; }
  .mcv-asf-segcard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-asf-segcard h3{ color:#191419; font-size:15.5px; margin-bottom:8px; }
  .mcv-asf-segcard p{ color:#6d666d; font-size:13px; margin:0; line-height:1.55; }
  .mcv-asf-segcard ul{ margin:12px 0 0; padding-left:17px; }
  .mcv-asf-segcard li{ color:#6d666d; font-size:12.5px; line-height:1.5; margin-bottom:6px; }
  .mcv-asf-segcard li:last-child{ margin-bottom:0; }
  .mcv-asf-segicon{ width:38px; height:38px; border-radius:10px; background:rgba(232,52,79,.12); border:1px solid rgba(232,52,79,.3); display:flex; align-items:center; justify-content:center; margin-bottom:14px; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:14px; color:#a70d2a; transition:background .3s; }
  .mcv-asf-modelgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
  .mcv-asf-modelcard{ position:relative; background:#fff; border:1px solid rgba(11,11,16,0.1); border-radius:18px; padding:26px 24px; box-shadow:0 6px 18px rgba(0,0,0,.05); transition:transform .3s cubic-bezier(.2,.8,.2,1), box-shadow .3s, border-color .3s; overflow:hidden; }
  .mcv-asf-modelcard:hover{ transform:translateY(-6px); box-shadow:0 20px 40px rgba(0,0,0,.09); border-color:#e8344f; }
  .mcv-asf-modelcard .ghost{ position:absolute; top:-4px; right:6px; font-family:'JetBrains Mono',monospace; font-weight:700; font-size:64px; color:#000; opacity:.045; line-height:1; }
  .mcv-asf-modelcard:hover .ghost{ color:#e8344f; opacity:.09; }
  .mcv-asf-modelcard .stage{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:#a70d2a; margin-bottom:10px; position:relative; }
  .mcv-asf-modelcard h3{ font-size:16.5px; margin-bottom:8px; position:relative; color:#191419; }
  .mcv-asf-modelcard p{ font-size:13.5px; color:#6d666d; margin:0; line-height:1.55; position:relative; }
  .mcv-asf-streamlist{ display:flex; flex-direction:column; gap:9px; }
  .mcv-asf-streamrow{ display:flex; align-items:center; gap:12px; padding:9px 12px; border:1px solid rgba(255,255,255,0.12); border-radius:10px; background:rgba(255,255,255,.03); }
  .mcv-asf-streamrow .n{ font-family:'JetBrains Mono',monospace; font-size:11px; font-weight:700; color:#ff8090; }
  .mcv-asf-streamrow .s{ font-size:13px; color:#fff; font-weight:600; }
  @media (max-width:900px){
    .mcv-asf-aside ul{ grid-template-columns:1fr; }
    .mcv-asf-flowrow{ grid-template-columns:48px 1fr; gap:16px; }
    .mcv-asf-flownum{ width:44px; height:44px; font-size:14px; }
    .mcv-asf-icongrid,.mcv-asf-cs-grid,.mcv-asf-modelgrid{ grid-template-columns:1fr; }
    .mcv-asf-trustgrid,.mcv-asf-seggrid{ grid-template-columns:1fr 1fr; }
    .mcv-asf-cs-stats{ grid-template-columns:1fr; }
    .mcv-asf-cs-stat{ border-right:none; border-bottom:1px solid rgba(11,11,16,0.1); }
    .mcv-asf-cs-stat:last-child{ border-bottom:none; }
    .mcv-asf-cs-top,.mcv-asf-steprow{ flex-direction:column; }
    .mcv-asf-cs-meta{ text-align:left; }
    .mcv-asf-chartcard .mcv-asf-barrow{ gap:10px; }
    .mcv-asf-chartcard .mcv-asf-barrow .l{ flex:0 0 104px; font-size:11.5px; }
  }
* + .mcv-asf-callout{ margin-top:22px; }
.mcv-asf-cta .mcv-asf-byline,.mcv-asf-cta .mcv-asf-footerbar{ color:#ffffff; }
.mcv-asf-cta .mcv-asf-byline .dotsep{ opacity:.65; }
.mcv-asf-trustband .kicker,.mcv-asf-pt .kicker{ color:var(--crimson-light); }
.mcv-asf-cta .kicker{ color:#ffffff; }
.mcv-asf-cta .mcv-asf-footermeta{ color:#ffffff; }
@media (max-width:560px){ .mcv-asf-trustgrid,.mcv-asf-seggrid{ grid-template-columns:1fr; } }

.mcv-asf-trustgrid{ grid-template-columns:repeat(3,1fr); }
@media (max-width:900px){ .mcv-asf-trustgrid{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .mcv-asf-trustgrid{ grid-template-columns:1fr; } }

    
    
      
        
          
            [Home](/)/[AstroSage Clone](/astrosage-clone/)/Features
          
          AstroSage Clone · Features
          
# AstroSage Clone Features: The Free Surface Is Generated

          
A portal competing on horoscopes has to publish every day, forever, and doing that by hand does not scale. Here the chart engines answer on demand and a scheduler writes the twelve-sign horoscopes across three cadences, so a small team can hold a large organic footprint without a content department behind it. Below is everything that ships, with every outside account named against the feature rather than implied away.

          [Request a Live Demo →](https://miracuves.com/schedule-consultation/)[Full Overview](/astrosage-clone/)
          
            **7** kundali report sections
            **12** sign pages, regenerated
            **6 days** to deploy
          
        
        
          The free halfGenerated, not authored
          
            What a Reader Gets Before Paying
            
              01Kundali, seven report sections
              02North and south chart styles
              03Guna milan with match report
              04Panchang by their location
              05Muhurta across six purposes
              06Horoscopes for all twelve signs
            
          
        
      
    
  

  
    
      
        170Database Tables
        12Zodiac Sign Pages
        298System Flags
        89Admin Console Pages
      
    
  

  
    
      
        By Role
        
## Feature Set by Role

        
Six people touch a content-led portal. All six read the same 170 table schema.

      
      
        
          01
          
### The First-Time Reader

          
Arrives from search for a birth chart and gets one: kundali with seven report sections in north or south chart style, guna milan matching with a full match report, panchang resolved against their location, a muhurta finder across six purposes, and their sign's horoscope. None of it asks for payment, because none of it is the product.

        
        
          02
          
### The Returning Reader

          
Comes back for the daily horoscope and finds a priced step next to it: the same chart as a downloadable PDF in three tiers, ten wallet-metered AI verticals, transit analysis, remedy reports and a remedy marketplace. A prepaid balance means the second purchase does not re-enter card details, which is where the habit forms.

        
        
          03
          
### The Editor

          
A blog desk carrying per-post reader analytics, a news feed, CMS pages served through a slug catch-all route, website FAQs and a help-centre tree with chat handoff, plus email templates and training videos. This is the surface that turns a calculator into a destination people return to rather than use once.

        
        
          04
          
### The Practitioner

          
KYC gating before the profile is publicly reachable, author profiles feeding the discovery grid, stories and blogs published under their own name, two-sided reviews with moderation and paid profile boosting. Per-minute chat, call and live streaming sit behind section flags for whenever supply is ready.

        
        
          05
          
### The Pricing Desk

          
One screen sets what every paid surface costs: the three report tiers, each of the ten AI verticals independently, the paid ask-a-question, remedy reports and the consultation rates. The boundary between what is free and what is not is a section flag, which means it is a decision you revisit against real behaviour.

        
        
          06
          
### The Operator

          
Eighty-nine admin menu pages across 151 Blade views behind team roles with per-page grants, so an editor can be given the blog desk and nothing else. Underneath sit 298 typed system flags in 47 groups covering section toggles, feature pricing, promos, referral caps, currency, language and provider selection.

        
      
      
The profession vocabulary is a single token reaching more than forty routes, so the same deployment can present as a tarot, numerology or vastu portal without a fork.

    
  

  
    
      
        Compare
        
## Clone vs Generic Script vs Building From Scratch

        
Most routes to an astrology portal hold up until somebody has to publish tomorrow's horoscopes.

      
      
        
| What decides it | Miracuves AstroSage Clone | Generic astrology script |
| --- | --- | --- |
| Time to a working portal | Six working days | Unknown, and largely do it yourself |
| Daily horoscope content | Generated across twelve signs on a scheduler | Written by hand, every day, forever |
| The free tool set | Kundali, matching, panchang, muhurta, transit | A birth chart, and a roadmap for the rest |
| First revenue | Paid PDF tiers, with no practitioner needed | Advertising, or nothing at all |
| The free and paid boundary | A section flag you move against real behaviour | Hard-coded, and a release to change |
| Content surface | Blog with reader analytics, news, CMS, help centre | A blog plugin, if that |
| Answering at volume | Ten metered AI verticals, priced independently | Nothing answers, and the visit ends |
| Source code | Full ownership, no runtime licence, no per-seat fee | Often limited, sometimes encrypted |

      
      
AstroSage itself is the reference for what this category looks like; it is not a product you can buy or self-host. The commercially useful comparison is the second column against the third, and against a custom build, which is covered on the [Development Cost](/astrosage-clone/development-cost/) page.

    
  

  
    
      
        End to End
        
## How It Works, End to End

        
The loop starts where the search traffic actually lands, and only asks for money once the reader has had something useful for nothing.

      
      
        Step 1
### They arrive for a free chart

The kundali form returns seven report sections in north or south chart style, computed against a chart API on demand rather than accumulating rows. That last detail is what keeps an unmonetized acquisition surface cheap to run at volume: cost scales with use rather than with stored history.

        Step 2
### The rest of the tool set is free too

Guna milan matching with a full match report, panchang resolved against the reader's geolocation, a muhurta finder across six purposes, and the twelve per-sign horoscope pages. None of it is gated, because a paywall in front of a calculator is what stops the traffic arriving in the first place.

        Step 3
### The scheduler keeps it fresh

Eight scheduled tasks regenerate the daily, weekly and yearly horoscopes across the twelve sign catalog, each sign with its own page. The heaviest recurring publishing job on the site runs without an editor, which is the whole reason a small team can hold this much indexed surface.

        Step 4
### The content desks build depth

A blog carrying per-post reader analytics, a news feed, CMS pages on a slug catch-all route, website FAQs and a help-centre tree with chat handoff. Practitioners publish stories and blogs under their own name, which feeds the discovery grid and gives the portal topical range the engines cannot produce.

        Step 5
### The first paid step is small

The same chart the reader already generated, offered as a downloadable PDF across three price tiers. It needs no practitioner on the other side, which is why it is the shortest distance between free traffic and first revenue, and usually the first transaction anyone on the portal ever makes.

        Step 6
### AI answers at any hour

Ten wallet-metered verticals behind one provider switch: counsellor personas, a master chatbot, tarot on a 78 card deck, numerology across Chaldean and Pythagorean systems, a vastu compass, vision reading, transit analysis, paid ask-a-question, the remedy engine and downloadable AI remedy reports. Each is priced independently.

        Step 7
### Diagnosis finds a destination

The remedy engine maps weak planets and doshas to remedies and the AstroMall sells them with GST-aware checkout, cart, coupons and a seven day return window. If and when practitioner supply exists, per-minute chat, call and live streaming switch on behind the same wallet.

      
      
Every step after the second is behind a section flag. A portal can launch on the free engine set alone and price nothing until the traffic justifies it.

    
  

  
    
      
        Justified
        
## Every Feature Earns Its Place

        
Each row is here because a content-led portal stops working without it, not because a competitor lists it.

      
      
        
| Module | Why it is in the base build |
| --- | --- |
| Scheduled horoscope generation | Twelve signs across three cadences is a publishing job no small team can sustain by hand. Generating it is the difference between a portal that survives and one that quietly stops updating. |
| Chart work computed, not stored | An anonymous free-tool visitor who generates a chart and leaves should not add a row you pay to keep. Bounded cost is what makes a large unmonetized surface affordable. |
| Three paid PDF tiers | The reader has already generated the chart and already trusts the output. Selling that same chart back as a report is the shortest priced step available, and it needs no supply side. |
| Per-post reader analytics | On an organic portal you cannot improve what you cannot see. Knowing which posts hold readers is what turns a content desk into an acquisition function. |
| Slug catch-all CMS | Landing pages, campaign pages and evergreen explainers need to live at arbitrary URLs without a developer. A catch-all route is what makes the operator self-sufficient. |
| Section flags on every surface | Where free ends and paid begins is the single most important number on this platform, and it should be a field you move after watching behaviour rather than a decision frozen at launch. |
| Ten independently priced AI verticals | A portal has far more readers than practitioners. AI is how anybody gets answered at all, and pricing each vertical separately is what lets you find which ones readers actually pay for. |
| Help-centre tree with chat handoff | Free tools generate support questions at the same volume they generate traffic. Answering them in a tree rather than an inbox is what keeps that volume from consuming the team. |

      
      
Underneath sit 8 scheduled tasks and 6 queue classes keeping regeneration, reminders and notification dispatch off the request path entirely.

    
  

  
    
      
        Stack
        
## The Technology Behind the Features

        
Deliberately unexotic, because a small team has to hold a large organic surface.

      
      
        **Astrology engines**A seven-section kundali in north and south chart styles from the same data, guna milan matching with full match reports, panchang resolved against reader geolocation, a muhurta finder across six distinct purposes, and transit analysis feeding the remedy engine.
        **Scheduled generation**Eight scheduled tasks spanning the content and reminder domains regenerate the twelve sign catalog daily, weekly and yearly, with six queue classes keeping dispatch off the request path. No editor is required for the recurring publishing job.
        **Content and publishing**A blog desk with per-post reader analytics, a news feed, CMS pages served through a slug catch-all route, website FAQs and a help-centre tree with chat handoff, plus email templates, training videos and practitioner-authored stories feeding the discovery grid.
        **Application core**Laravel 10 on PHP with MySQL 8, Blade templating and a Vite build: 170 tables reached through incremental migrations, 179 controllers against 133 models, roughly 191 reader routes and 552 admin routes, with bound parameters across every raw query fragment.
        **AI layer**One provider interface with vendor, model and key all held as system flags, so all ten verticals share a single switch between OpenAI and OpenRouter. The balance is checked and debited ahead of each call, and reading history is retained and exportable as PDF.
        **Configuration and storage**298 typed flags spread over 47 groups, the profession wording replaced across more than forty routes, 143 languages seeded with ten live app-side and five on web, five app design sets with dark mode, and a storage backend chosen per deployment across local, AWS, GCS and DigitalOcean.
      
      
The framework is the least interesting decision here, deliberately. What is worth looking at is the scheduler and the flag store: one renews the twelve-sign surface without an editor, the other holds the free and paid boundary as a form field.

    
  

  
    
    
      
        Honest Readiness
        
## What Is Not Included in the Base Package

        
Named here rather than discovered after the invoice.

      
      
        
          01
          
### Birth data is personal data

          
This point matters more on a content-led portal than on a marketplace: the free tools collect birth date, birth time and birth place from anonymous visitors at scale, and that is personal data whether or not anybody pays. The pre-launch hardening pass is what stands between a public form and a public incident.

        
        
          02
          
### There is no audit trail

          
No authentication-event log and no admin-action log exists, so who edited a price or opened a reader record cannot be reconstructed later. On a platform where an operator can move the free and paid boundary, that is worth closing early, and it is named here rather than left for a review to find.

        
        
          03
          
### The chart API is yours

          
The engines compute against an astrology chart API on demand rather than shipping their own ephemeris. That is what keeps the free surface cheap and bounded, but it means the account, the key and the ongoing cost are yours, and the engines are only as available as that provider is.

        
        
          04
          
### Payment verification covers three gateways

          
Twenty gateway configurations ship, and server-side payment verification is implemented today on Tap, Sadad and PhonePe. Those three are the template the rest are built against. We would rather write that than let a count of configurations imply the same count of verified integrations.

        
        
          05
          
### The CRM is five of twenty-five modules

          
Five have functional implementations: a Customer 360 timeline, nine computed behavioural tags, health metrics covering lifetime value, retention and churn, a recommendation engine and a centralized notification engine. Lead management, pipelines, tasks and campaigns have no tables, models or routes yet.

        
        
          06
          
### What is built is real

          
Seven-section kundali in two chart styles, guna milan, geolocated panchang, muhurta across six purposes, twelve sign pages on a scheduler, three paid PDF tiers, ten metered AI verticals, the blog, news, CMS and help-centre desks, an append-only wallet ledger, role-based access across all 89 admin pages, and both Android builds.

        
      
      
The remaining outside accounts are MSG91 for OTP, OpenAI or OpenRouter for the AI layer, Google Maps for geocoding the panchang, FCM and OneSignal for push, an RTC provider if you switch consultations on, and a merchant account per gateway. The full pre-launch list sits on the [Development Company](/astrosage-clone/development-company/#platform-trust) page.

    
  

  
    
      
        
          Development Company
          
### See how Miracuves compares to agencies and freelancers

          
The deployment process, a modelled reference deployment for a free-tool portal, the pre-launch hardening list, and the nine questions worth asking before you hire anyone - on the Development Company page.

        
        [See the comparison →](/astrosage-clone/development-company/)
      
    
  

  
    
      
        FAQ
        
## Frequently Asked Questions

      
      
        
          
            Which parts are actually free, and which are paid?
            Free by default: kundali generation with its seven report sections, north and south chart styles, guna milan matching with match reports, panchang resolved by geolocation, the muhurta finder across six purposes, and the daily, weekly and yearly horoscopes across all twelve signs. Paid by default: downloadable kundali PDF reports in three tiers, each of the ten AI verticals, the paid ask-a-question, transit analysis, remedy reports, the remedy marketplace and the consultation layer. Every one of those boundaries is a section flag you can move.
          
          
            Where does the horoscope content come from?
            The platform generates it. Eight scheduler tasks produce the daily, weekly and yearly horoscopes across the twelve sign catalog, each sign with its own page, so the largest recurring publishing job on the site runs without an editor. Alongside that sit the desks an operator does write in: a blog with per-post reader analytics, a news feed, CMS pages served through a slug catch-all route, website FAQs and a help-centre tree with chat handoff.
          
          
            Do I need astrologers to launch this?
            No, and that is the main practical difference between this configuration and a consultation marketplace. The free engine set, the twelve-sign content surface, the three paid PDF tiers, the ten AI verticals and the remedy marketplace all operate with no practitioner on the other side, which means the portal can earn before you have recruited anybody. The consultation layer sits behind section flags and switches on when your audience justifies it.
          
        
        
          
            How is this different from your Astrotalk Clone?
            They are the same software at the same price, and we would rather say that plainly than pretend otherwise. What differs is the problem each one is configured and written around. The Astrotalk Clone is built for an operator whose question is how to bill a consultation minute: metering, the commission waterfall, tax withholding and practitioner payouts. This page is built for an operator whose question is how to make existing free-tool traffic pay: the engine set, the twelve-sign content surface, the paid report tiers and the AI verticals, with consultation switched on later.
          
          
            What do the ten AI features actually do?
            They matter more on this configuration than on a consultation-led one, because they are how a portal with far more readers than practitioners answers anybody at all. Counsellor personas driven by system prompts the operator writes, a site-wide master chatbot, tarot across a 78 card deck with single and three card spreads, numerology in both Chaldean and Pythagorean systems returning gemstones and mantras, a vastu compass reading eight directions, vision reading from an uploaded photograph, transit analysis, paid ask-a-question, the remedy engine and downloadable AI remedy reports.
          
          
            Do I get the source code and both mobile apps?
            All of it transfers: the Laravel application, the reader portal, the practitioner portal, the JSON API, the back office, the 170 table schema with its migrations, and both Android builds with their own store listings and package names. It runs on your infrastructure, under your brand, against your own third-party accounts. The eleven documentation files come too, and on this configuration the ones buyers reach for first are usually the schema reference and the VAPT posture.
          
        
      
    
  

  
    
    
      
        
## Run the funnel demo, not the feature reel

Generate a free kundali without paying anything, then look at what the platform offers you next, and see the same reader appear in the operator console with their chart history against them.

        [Request a Live Demo](https://miracuves.com/schedule-consultation/)[Full Overview](/astrosage-clone/)
      
    
  

  
    
      
        Explore
        
## Explore the AstroSage Clone

      
      
        [Overview](/astrosage-clone/)
        [Features](/astrosage-clone/features/)
        [Development Cost](/astrosage-clone/development-cost/)
        [Development Company](/astrosage-clone/development-company/)
        [Business Model](/astrosage-clone/business-model/)
      
    
  

  
    
    
      
        
## The free tools are the marketing budget, not the product

        
A reader portal, a practitioner portal, a JSON API for both Android builds and an 89 page operations back office on one Laravel and MySQL core, with the full source on infrastructure you own.

        [Talk to Us →](https://miracuves.com/schedule-consultation/)
      
      
        
          **Written by the Miracuves Product Team**·
          Reviewed for accuracy·
          Last updated **September 7, 2026**
        
        
          Miracuves · AstroSage Clone Solution
          Feature set, stack and stated limitations cross-verified against the hub, 2026-09-07
        
      
    
  

				
				
				
				
						
					
			
						
				
					
  /* MIRACUVES - TRADEMARK / NON-AFFILIATION NOTICE (v3).
     Scoped under .mcv-tmn so it cannot collide with the hub connector (mcv-hubx-, mcv-hubxa-)
     or any block above it. Always the last block on the page, immediately before the footer.
     Structure is deliberate: one plain-language lead people actually read, then the three
     supporting positions split out so each is scannable rather than buried in a paragraph.
     Fonts are declared but not loaded: pages carrying the connector already have them, and the
     fallbacks are deliberate so this block never adds a render-blocking request. */
  .mcv-tmn{ font-family:'Plus Jakarta Sans',Arial,sans-serif; color:#191419; margin:0; padding:0; }
  .mcv-tmn *{ box-sizing:border-box; }
  .mcv-tmn-band{ background:#ffffff; padding:8px 0 76px; }
  .mcv-tmn-wrap{ max-width:1180px; margin:0 auto; padding:0 24px; }
  .mcv-tmn-box{ background:#faf8f8; border:1px solid rgba(11,11,16,0.13); border-left:4px solid #a70d2a; border-radius:12px; padding:34px 38px; box-shadow:0 1px 2px rgba(25,20,25,0.04), 0 10px 30px rgba(25,20,25,0.05); }
  .mcv-tmn-head{ display:flex; align-items:center; gap:11px; margin:0 0 18px; }
  .mcv-tmn-dot{ width:8px; height:8px; background:#a70d2a; transform:rotate(45deg); flex:0 0 auto; }
  .mcv-tmn .mcv-tmn-head span.mcv-tmn-kicker{ font-family:'JetBrains Mono',ui-monospace,monospace; font-size:13px; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:#a70d2a; }
  .mcv-tmn .mcv-tmn-box p.mcv-tmn-lead{ margin:0 0 24px; font-size:20px; line-height:1.5; font-weight:600; color:#191419; max-width:56ch; letter-spacing:-.01em; }
  .mcv-tmn .mcv-tmn-box b.mcv-tmn-brand{ color:#a70d2a; font-weight:700; }
  .mcv-tmn-cols{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px 36px; padding-top:24px; border-top:1px solid rgba(11,11,16,0.11); }
  .mcv-tmn .mcv-tmn-col span.mcv-tmn-lbl{ display:block; font-family:'JetBrains Mono',ui-monospace,monospace; font-size:10.5px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:#8a8085; margin:0 0 8px; }
  .mcv-tmn .mcv-tmn-col p{ margin:0; font-size:14px; line-height:1.7; color:#453d42; }
  .mcv-tmn-foot{ margin-top:26px; padding-top:18px; border-top:1px solid rgba(11,11,16,0.11); }
  .mcv-tmn .mcv-tmn-foot a{ font-family:'JetBrains Mono',ui-monospace,monospace; font-size:12px; font-weight:600; letter-spacing:.04em; color:#a70d2a; text-decoration:none; border-bottom:1px solid rgba(167,13,42,0.32); }
  .mcv-tmn .mcv-tmn-foot a:hover{ border-bottom-color:#a70d2a; }
  @media (max-width:900px){
    .mcv-tmn-cols{ grid-template-columns:1fr; gap:22px; }
    .mcv-tmn .mcv-tmn-box p.mcv-tmn-lead{ font-size:18px; }
  }
  @media (max-width:600px){
    .mcv-tmn-band{ padding:4px 0 48px; }
    .mcv-tmn-box{ padding:26px 22px; border-radius:10px; border-left-width:3px; }
    .mcv-tmn .mcv-tmn-box p.mcv-tmn-lead{ font-size:17px; line-height:1.45; margin-bottom:20px; }
    .mcv-tmn .mcv-tmn-head span.mcv-tmn-kicker{ font-size:12px; letter-spacing:.16em; }
  }

  
    
      
        Disclaimer
        
Miracuves is an independent software development company. We are not affiliated with, connected to, sponsored by, or endorsed by **AstroSage**.

        
          
            Why this name
            
“**AstroSage** Clone” is used descriptively. It is how the software industry refers to building a platform with functionality similar to AstroSage, and how clients search for it.

          
          
            Who built this
            
The entire design and codebase is built by our own team. The product contains no code, design, graphics, or content originating from the AstroSage website or applications.

          
          
            Trademarks
            
**AstroSage** and all other third-party names and marks are the property of their respective owners, referenced here solely to describe the category of software offered.

          
        
        [Read our full Legal Notice & Disclaimer →](/disclaimer/)
