> ## Documentation Index
> Fetch the complete documentation index at: https://docs.replit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Watch the competition

> Create a weekly Routine that returns useful local research and launch-plan updates to your coffee shop Conversation.

export const RoutineWatchCover = () => <div className="chat-mkt" role="img" aria-label="A frosted recurring market watch with a schedule and research updates" style={{
  margin: "28px 0 42px",
  borderTop: 0,
  paddingTop: 0
}}>
    <div className="chat-use-case-visual" style={{
  aspectRatio: "auto",
  minHeight: "clamp(220px, 34vw, 320px)",
  overflow: "hidden",
  background: "radial-gradient(circle at 50% -18%, rgba(255,255,255,.82), transparent 42%), radial-gradient(circle at 4% 96%, rgba(255,184,146,.48), transparent 38%), linear-gradient(140deg, #ff764d, #ff3c00 60%, #c92d00)"
}}>
      <div aria-hidden="true" style={{
  position: "absolute",
  inset: 0,
  background: "linear-gradient(180deg, rgba(255,255,255,.14), rgba(255,255,255,0) 48%, rgba(111,24,0,.2))"
}} />
      <div aria-hidden="true" style={{
  position: "relative",
  zIndex: 1,
  display: "grid",
  gridTemplateColumns: "minmax(0, .9fr) minmax(0, 1.25fr)",
  gap: "clamp(12px, 2.5vw, 24px)",
  width: "min(720px, 84%)",
  minHeight: "inherit",
  alignItems: "center",
  margin: "auto"
}}>
        <div style={{
  display: "grid",
  placeItems: "center",
  aspectRatio: "1",
  border: "1px solid rgba(255,255,255,.6)",
  borderRadius: 24,
  background: "linear-gradient(180deg, rgba(255,255,255,.34), rgba(255,255,255,.12))",
  boxShadow: "0 18px 36px rgba(55,27,18,.2)",
  backdropFilter: "blur(6px)"
}}>
          <div style={{
  position: "relative",
  width: "44%",
  aspectRatio: "1",
  border: "2px solid rgba(255,255,255,.86)",
  borderRadius: 999
}}>
            <span style={{
  position: "absolute",
  width: "2px",
  height: "34%",
  left: "50%",
  top: "18%",
  transformOrigin: "bottom",
  transform: "translateX(-50%) rotate(22deg)",
  borderRadius: 99,
  background: "rgba(255,255,255,.9)"
}} />
            <span style={{
  position: "absolute",
  width: "2px",
  height: "26%",
  left: "50%",
  top: "25%",
  transformOrigin: "bottom",
  transform: "translateX(-50%) rotate(-72deg)",
  borderRadius: 99,
  background: "rgba(255,255,255,.9)"
}} />
          </div>
        </div>
        <div style={{
  display: "grid",
  gap: "clamp(9px, 1.6vw, 14px)"
}}>
          {["82%", "64%", "74%"].map((width, index) => <div key={width} style={{
  display: "grid",
  gridTemplateColumns: "18px minmax(0, 1fr)",
  alignItems: "center",
  gap: 10,
  padding: "clamp(10px, 1.6vw, 14px)",
  border: "1px solid rgba(255,255,255,.48)",
  borderRadius: 15,
  background: index === 0 ? "rgba(255,255,255,.3)" : "rgba(255,255,255,.13)",
  backdropFilter: "blur(5px)"
}}>
              <span style={{
  width: 18,
  height: 18,
  borderRadius: 6,
  background: index === 0 ? "rgba(255,255,255,.9)" : "rgba(255,255,255,.42)"
}} />
              <span style={{
  width,
  height: 7,
  borderRadius: 99,
  background: "rgba(255,255,255,.74)"
}} />
            </div>)}
        </div>
      </div>
    </div>
  </div>;

export const CoffeeShopScreenshotFrame = ({src, alt}) => <div style={{
  margin: "28px 0",
  overflow: "hidden",
  borderRadius: "24px",
  background: "radial-gradient(circle at 50% -18%, rgba(255,255,255,.82), transparent 42%), radial-gradient(circle at 4% 96%, rgba(255,184,146,.48), transparent 38%), linear-gradient(140deg, #ff764d, #ff3c00 60%, #c92d00)",
  boxShadow: "0 16px 32px rgba(112,36,13,.18)"
}}>
    <div style={{
  padding: "clamp(10px, 2vw, 18px)",
  background: "linear-gradient(180deg, rgba(255,255,255,.14), rgba(255,255,255,0) 48%, rgba(111,24,0,.2))"
}}>
      <a href={src} target="_blank" rel="noreferrer" aria-label={`Open ${alt} at full size`} style={{
  display: "block",
  overflow: "hidden",
  border: "1px solid rgba(255,255,255,.62)",
  borderRadius: "16px",
  background: "rgba(255,255,255,.96)",
  boxShadow: "0 12px 28px rgba(55,27,18,.2)",
  cursor: "zoom-in"
}}>
        <img src={src} alt={alt} style={{
  display: "block",
  width: "100%",
  height: "auto"
}} />
      </a>
    </div>
  </div>;

export const AiPrompt = ({children}) => {
  return <CodeBlock className="relative block max-w-full overflow-x-hidden font-sans !whitespace-pre-wrap !break-words" style={{
    overflowWrap: "anywhere",
    wordBreak: "break-word"
  }}>
      <div className="pr-7" style={{
    whiteSpace: "pre-wrap",
    overflowWrap: "anywhere",
    wordBreak: "break-word"
  }}>
        {children}
      </div>
    </CodeBlock>;
};

<RoutineWatchCover />

You have a launch plan and a chosen neighborhood model. But local events, nearby
coffee shops, and market conditions can change before you open.

Routines are recurring tasks that run on a schedule and return their results to
the same conversation. Create one to keep an eye on the local competition and
review the changes that could affect your plan.

## Create a local-market Routine

<Steps>
  <Step title="Write the recurring request">
    Ask Replit to monitor the information that matters to the café launch.

    <AiPrompt>
      Every Monday, review local events, nearby coffee shops, and changes that
      could affect my neighborhood café launch. Summarize what changed, explain
      why it matters, and recommend any updates to my launch plan in this
      Conversation.
    </AiPrompt>
  </Step>

  <Step title="Clarify the schedule and focus">
    Answer Replit's follow-up questions about when the Routine should run and
    what it should monitor. For example, choose Monday morning and ask it to
    watch the chosen neighborhood, comparable cafés, and local events.
  </Step>

  <Step title="Review and accept the Routine">
    Review the proposed instructions and schedule, then accept the Routine.
    Replit uses your device's time zone when you confirm it. You can also adjust
    the per-run budget before accepting.

    <CoffeeShopScreenshotFrame src="/images/coffee-shop-launch/review-routine.png" alt="Replit's routine approval screen showing a title, instructions, Monday schedule, per-run budget, and Create routine button" />
  </Step>

  <Step title="Review the result and refine the plan">
    Once you create the Routine, Replit confirms the title, schedule, budget,
    and what it will monitor. Each later result returns to this Conversation.

    <CoffeeShopScreenshotFrame src="/images/coffee-shop-launch/routine-created.png" alt="A created routine named Lausanne café launch watch, showing its Monday schedule, per-run budget, and the local changes it monitors" />

    Use each update to decide whether the location, menu, budget assumptions,
    or opening plan needs to change. Update or delete the Routine whenever your
    priorities change.
  </Step>
</Steps>

Learn more about [Routines](/chat/routines), including the complete setup and
management flow.

Next, learn about [conversations and projects](/home/conversations-and-projects).
