Skip to content

Instantly share code, notes, and snippets.

View pontusab's full-sized avatar
🦁

Pontus Abrahamsson pontusab

🦁
View GitHub Profile
@pontusab
pontusab / blah.sql
Last active September 13, 2024 14:09
Match
-- This SQL code defines functions for calculating similarity scores optimized for reconciliation
-- between transactions and inbox items (e.g., invoices). It focuses on high precision to avoid incorrect matches.
-- Function: calculate_name_similarity_score
-- Purpose: Calculates similarity score between transaction and inbox item names
-- Input: transaction_name (text), inbox_name (text)
-- Output: numeric (0 to 0.6)
create or replace function calculate_name_similarity_score(
transaction_name text,
inbox_name text
create or replace function get_profit (
team_id uuid,
date_from date,
date_to date,
currency text
) returns table (
date timestamp with time zone,
value numeric
) language plpgsql as $$
begin
@pontusab
pontusab / preview.tsx
Created March 12, 2024 18:51
Preview
"use client";
import { Button } from "@midday/ui/button";
import { Dialog, DialogContent, DialogTrigger } from "@midday/ui/dialog";
import { Icons } from "@midday/ui/icons";
import { Skeleton } from "@midday/ui/skeleton";
import { cn } from "@midday/ui/utils";
import { AnimatePresence, motion } from "framer-motion";
import { useEffect, useState } from "react";
import { Document, Page, pdfjs } from "react-pdf";
@pontusab
pontusab / import.ts
Last active March 14, 2024 13:30
Import background job
import crypto from "node:crypto";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { ChatOpenAI } from "@langchain/openai";
import { eventTrigger } from "@trigger.dev/sdk";
import { capitalCase } from "change-case";
import * as d3 from "d3-dsv";
import { CSVLoader } from "langchain/document_loaders/fs/csv";
import { TokenTextSplitter } from "langchain/text_splitter";
import { z } from "zod";
import { client, supabase } from "../client";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { ChatOpenAI } from "@langchain/openai";
import { eventTrigger } from "@trigger.dev/sdk";
import { capitalCase } from "change-case";
import * as d3 from "d3-dsv";
import { CSVLoader } from "langchain/document_loaders/fs/csv";
import { TokenTextSplitter } from "langchain/text_splitter";
import { z } from "zod";
import { client, supabase } from "../client";
import { Events, Jobs } from "../constants";
@pontusab
pontusab / process-job.ts
Created February 27, 2024 08:20
Process PDF
const completion = await io.openai.chat.completions.create("completion", {
model: "gpt-3.5-turbo",
messages: [
{
role: "system",
content:
"You are a invoice parser. From this invoice extract total amount, due date, issuer name, currency and transform currency value to currency code and return it as currency. Return the response in JSON format",
},
{
role: "user",
@pontusab
pontusab / cached-queries.ts
Created January 31, 2024 15:42
cached-queries.ts
export const getMetrics = async (params) => {
const supabase = createClient();
const user = await getUser();
const teamId = user?.data?.team_id;
if (!teamId) {
return null;
}
import { Novu } from "@novu/node";
const novu = new Novu(process.env.NOVU_API_KEY!);
const API_ENDPOINT = "https://api.novu.co/v1";
export enum TriggerEvents {
TransactionNew = "transaction_new",
}
type TriggerUser = {
"use client";
import { useNotifications } from "@/hooks/use-notifications";
import { Button } from "@midday/ui/button";
import { Icons } from "@midday/ui/icons";
import { Popover, PopoverContent, PopoverTrigger } from "@midday/ui/popover";
import { ScrollArea } from "@midday/ui/scroll-area";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@midday/ui/tabs";
import { formatDistanceToNow } from "date-fns";
import Link from "next/link";
import { createClient } from "@midday/supabase/client";
import { getUserQuery } from "@midday/supabase/queries";
import { HeadlessService } from "@novu/headless";
import { useCallback, useEffect, useRef, useState } from "react";
export function useNotifications() {
const supabase = createClient();
const [notifications, setNotifications] = useState([]);
const [subscriberId, setSubscriberId] = useState();
const headlessServiceRef = useRef<HeadlessService>();