← back to eloiduc__redflag-engine

Function bodies 106 total

All specs Real LLM only Function bodies
_parse_md_table function · python · L359-L370 (12 LOC)
Red Flag Engine/streamlit_app.py
def _parse_md_table(text: str) -> list[dict[str, str]]:
    """Parse a Markdown pipe table into a list of row dicts."""
    lines = [ln for ln in text.splitlines() if re.match(r"^\s*\|", ln)]
    if len(lines) < 3:
        return []
    headers = _split_pipe_row(lines[0])
    rows: list[dict[str, str]] = []
    for line in lines[2:]:
        cells = _split_pipe_row(line)
        if len(cells) == len(headers):
            rows.append(dict(zip(headers, cells)))
    return rows
_sev_style function · python · L373-L380 (8 LOC)
Red Flag Engine/streamlit_app.py
def _sev_style(val: str) -> str:
    return {
        "Critical":      "background-color: #4a0000; color: #ffaaaa",
        "High":          "background-color: #3a1800; color: #ffcc99",
        "Medium":        "background-color: #2a2000; color: #ffe680",
        "Low":           "background-color: #1a1a1a; color: #888888",
        "Informational": "background-color: #111111; color: #555555",
    }.get(val, "")
_change_style function · python · L383-L388 (6 LOC)
Red Flag Engine/streamlit_app.py
def _change_style(val: str) -> str:
    if "WORSENED"  in val: return "background-color: #4a0000; color: #ffaaaa"
    if "NEW"       in val: return "background-color: #001a40; color: #99bbff"
    if "IMPROVED"  in val: return "background-color: #001a0d; color: #66cc88"
    if "UNCHANGED" in val: return "background-color: #111111; color: #555555"
    return ""
page_dashboard function · python · L395-L451 (57 LOC)
Red Flag Engine/streamlit_app.py
def page_dashboard() -> None:
    st.header("Overview")

    reports = sorted(_OUTPUTS.glob("*.md"), key=lambda p: p.stat().st_mtime, reverse=True)
    if not reports:
        st.info("No reports found. Run a new analysis to get started.")
        return

    for row_start in range(0, len(reports), 3):
        cols = st.columns(3)
        for col, md_path in zip(cols, reports[row_start : row_start + 3]):
            meta = _parse_report_meta(md_path)
            with col:
                with st.container(border=True):
                    st.markdown(
                        f"<div style='font-size:15px;font-weight:600;letter-spacing:0.04em;"
                        f"color:#ddd'>{meta['company']}</div>"
                        f"<div style='font-size:10px;letter-spacing:0.06em;color:#3a3a3a;"
                        f"text-transform:uppercase;margin-bottom:10px'>"
                        f"{meta['now']} vs {meta['prev']}</div>",
                        unsafe_allow_html=True,
        
page_generate function · python · L458-L549 (92 LOC)
Red Flag Engine/streamlit_app.py
def page_generate() -> None:
    st.header("New Analysis")
    st.caption("Upload two earnings call transcripts to generate a comparative red-flag report.")

    with st.form("pipeline_form"):
        company = st.text_input(
            "Ticker",
            placeholder="BA",
            max_chars=10,
        )
        col1, col2 = st.columns(2)
        now_period  = col1.text_input("Current quarter", placeholder="2025Q4")
        prev_period = col2.text_input("Prior quarter",   placeholder="2025Q3")

        now_file = st.file_uploader(
            "Current quarter transcript (.txt or .pdf)",
            type=["txt", "pdf"],
        )
        prev_file = st.file_uploader(
            "Prior quarter transcript (.txt or .pdf)",
            type=["txt", "pdf"],
        )
        submitted = st.form_submit_button(
            "Run Analysis",
            use_container_width=True,
            type="primary",
        )

    if not submitted:
        return

    # ── Validation ─────────────
page_view function · python · L556-L886 (331 LOC)
Red Flag Engine/streamlit_app.py
def page_view() -> None:
    selected = st.session_state.get("selected_report")
    if not selected:
        st.info("Select a report from the Overview first.")
        st.stop()

    report_path = _OUTPUTS / selected
    if not report_path.exists():
        st.error(f"Report not found: {selected}")
        st.stop()

    content  = report_path.read_text(encoding="utf-8", errors="ignore")
    sections = _split_sections(content)

    # ── Header metrics ───────────────────────────────────────────────────────
    hdr        = sections.get("header", "")
    company_m  = re.search(r"\| Company \| \*\*(.+?)\*\* \|",           hdr)
    now_m      = re.search(r"\| Current quarter \| `(.+?)` \|",          hdr)
    prev_m     = re.search(r"\| Prior quarter \| `(.+?)` \|",            hdr)
    ts_m       = re.search(r"\| Generated \| (.+?) \|",                  hdr)
    total_m    = re.search(r"\| Total changes detected \| (\d+) \|",     hdr)
    high_m     = re.search(r"\| High / Critical \| \*\
‹ prevpage 3 / 3